微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > ADC的使用(2)

ADC的使用(2)

时间:10-02 整理:3721RD 点击:
发完上个帖子后,想着把串口部分也加上。搞完之后发现液晶不是很稳定,搞来搞去问题依然存在,感觉是线材接触不良,所以决定改用杜邦线连接,改造完之后,液晶显示就稳定了。


结合着之前串口的使用,在上次的基础上,增加通过按下板卡上蓝色按键,把采集到的电压值通过串口发送到终端的功能。


主程序

  1. #include "bsp.h"                        /* 底层硬件驱动 */

  2. uint8_t KeyCode;                /* 按键代码 */
  3. uint16_t AD_Val;
  4. float temp1, temp2, temp3;
  5. uint8_t Txbuffer1[74] = "Welcome to Use Voltage Meter!\r\nPress User Butten To Get Voltage Value :)\r\n";
  6. uint8_t Txbuffer2[30] = "The Current Voltage is 0.00V\r\n";
  7. uint8_t Txbuffer3[30] = "****************************\r\n";

  8. int main(void)
  9. {
  10.         bsp_Init();                /* 硬件初始化 */
  11.         LCD_Write_String(0, 0, "Voltage Meter");
  12.         LCD_Write_String(0, 1, "Voltage is 0.00V");
  13.         USART_DMA_TxConfig((uint32_t *)Txbuffer1, 74);
  14.         GPIO_ToggleBits(GPIOB, GPIO_Pin_7);
  15.         while(1)
  16.         {
  17.                 if(Buf_Ok)
  18.                 {
  19.                         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];
  20.                         Buf_Ok = 0;
  21.                         temp1 = (AD_Val >> 3) * (3.3 / 4095);
  22.                         Txbuffer2[23] = (uint8_t)temp1 + 0x30;
  23.                         LCD_Write_Char(11, 1, Txbuffer2[23]);
  24.                         Delay(40);
  25.                         temp2 = (temp1 - ((int)temp1)) * 10;
  26.                         Txbuffer2[25] = (uint8_t)temp2 + 0x30;                       
  27.                         LCD_Write_Char(13, 1, Txbuffer2[25]);
  28.                         Delay(40);                       
  29.                         temp3 = (temp2 - (int)temp2) * 10;
  30.                         Txbuffer2[26] = (uint8_t)temp3 + 0x30;
  31.                         LCD_Write_Char(14, 1, Txbuffer2[26]);
  32.                         Delay(40);
  33.                 }
  34.                
  35.                 KeyCode = bsp_GetKey();
  36.                 if (KeyCode != KEY_NONE)
  37.                 {
  38.                         switch (KeyCode)
  39.                         {
  40.                                 case UserButton_Down:
  41.                                         USART_DMA_TxConfig((uint32_t *)Txbuffer3, 30);
  42.                                        
  43.                                         GPIO_ToggleBits(GPIOB, GPIO_Pin_7);
  44.                                         break;
  45.                                 case UserButton_Up:
  46.                                         USART_DMA_TxConfig((uint32_t *)Txbuffer2, 30);       
  47.                                         break;
  48.                                 default:
  49.                                         /* 其它的键值不处理 */
  50.                                         break;
  51.                         }
  52.                 }                               
  53.         }
  54. }

复制代码


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top