`发完上个帖子后,想着把串口部分也加上。搞完之后发现液晶不是很稳定,搞来搞去问题依然存在,感觉是线材接触不良,所以决定改用杜邦线连接,改造完之后,液晶显示就稳定了。
结合着之前串口的使用,在上次的基础上,增加通过按下板卡上蓝色按键,把采集到的电压值通过串口发送到终端的功能。
主程序
- #include "bsp.h" /* 底层硬件驱动 */
- uint8_t KeyCode; /* 按键代码 */
- uint16_t AD_Val;
- float temp1, temp2, temp3;
- uint8_t Txbuffer1[74] = "Welcome to Use Voltage Meter!
- Press User Butten To Get Voltage Value :)
- ";
- uint8_t Txbuffer2[30] = "The Current Voltage is 0.00V
- ";
- uint8_t Txbuffer3[30] = "****************************
- ";
- int main(void)
- {
- bsp_Init(); /* 硬件初始化 */
- LCD_Write_String(0, 0, "Voltage Meter");
- LCD_Write_String(0, 1, "Voltage is 0.00V");
- USART_DMA_TxConfig((uint32_t *)Txbuffer1, 74);
- GPIO_ToggleBits(GPIOB, GPIO_Pin_7);
- while(1)
- {
- if(Buf_Ok)
- {
- AD_Val = ADC1_DMA_Buf1[ 0] + ADC1_DMA_Buf1[ 1] + ADC1_DMA_Buf1[ 2] + ADC1_DMA_Buf1[3] + ADC1_DMA_Buf1[ 4] + ADC1_DMA_Buf1[ 5] + ADC1_DMA_Buf1[ 6] + ADC1_DMA_Buf1[7];
- Buf_Ok = 0;
- temp1 = (AD_Val >> 3) * (3.3 / 4095);
- Txbuffer2[23] = (uint8_t)temp1 + 0x30;
- LCD_Write_Char(11, 1, Txbuffer2[23]);
- Delay(40);
- temp2 = (temp1 - ((int)temp1)) * 10;
- Txbuffer2[25] = (uint8_t)temp2 + 0x30;
- LCD_Write_Char(13, 1, Txbuffer2[25]);
- Delay(40);
- temp3 = (temp2 - (int)temp2) * 10;
- Txbuffer2[26] = (uint8_t)temp3 + 0x30;
- LCD_Write_Char(14, 1, Txbuffer2[26]);
- Delay(40);
- }
-
- KeyCode = bsp_GetKey();
- if (KeyCode != KEY_NONE)
- {
- switch (KeyCode)
- {
- case UserButton_Down:
- USART_DMA_TxConfig((uint32_t *)Txbuffer3, 30);
-
- GPIO_ToggleBits(GPIOB, GPIO_Pin_7);
- break;
- case UserButton_Up:
- USART_DMA_TxConfig((uint32_t *)Txbuffer2, 30);
- break;
- default:
- /* 其它的键值不处理 */
- break;
- }
- }
- }
- }
`