[APM32F4] 【APM32F402R Micro-EVB开发板测评】+NTC温度检测与波形绘制

[复制链接]
jinglixixi 发表于 2025-8-23 11:26 | 显示全部楼层 |阅读模式
在多通道数据采集的基础上,通过添加NTC温度感知器件即可实现温度检测及波形绘制功能。
为简化设计的这里仅以一个温度检测点为例加以介绍,在实际应用中,由于温度滞后现象的存在,是会采用多点温度检测的。
实现多通道数据采集及波形绘制的主程序为:
  1. int main(void)
  2. {
  3.           BOARD_TFT_Config();
  4.           tft_Init();
  5.           LCD_Clear(RED);
  6.           BACK_COLOR=RED;
  7.           POINT_COLOR=YELLOW;
  8.           LCD_ShowString(120,10,"APM32F402");
  9.           POINT_COLOR=WHITE;
  10.       LCD_DrawLine(0, 30, 319, 30);
  11.           LCD_DrawLine(0, 210, 319, 210);
  12.           LCD_Fill(0,31,319,209,BLACK);
  13.           BACK_COLOR=BLACK;
  14.           POINT_COLOR=YELLOW;
  15.           BACK_COLOR=RED;
  16.           LCD_ShowString(10,220,"ch0:      mV");
  17.           LCD_ShowString(110,220,"ch1:      mV");
  18.           LCD_ShowString(210,220,"ch2:      C");
  19.       ADC_Init();
  20.           ii=1;
  21.           sp1=0;
  22.           sp2=0;
  23.           sp3=0;
  24.           while (1)
  25.       {
  26.            ADC_MultiChannelPolling();                       
  27.           Delay(1000);
  28.     }
  29. }

经程序的编译与下载,其运行效果如图2所示。
5078168a933b1a0d30.png
1 显示屏连接

2315468a933e06b5e5.png
2 波形绘制
实现NTC温度检测及波形绘制的功能函数为:
  1. void ADC_MultiChannelPolling(void)
  2. {
  3.     float voltage;
  4.     uint8_t index;
  5.         uint32_t k,V,u;
  6.     for (index = 0; index < ADC_CH_SIZE; index++)
  7.     {
  8.             voltage = (adcData[index] * 3300.0) / 4095.0;
  9.                     u=voltage;
  10.                         k=voltagev*180/3300;
  11.                     if(k>180) sj=180;
  12.                     else sj=k;       
  13.                         if(index ==0)  
  14.                         {
  15.                                           POINT_COLOR=WHITE;
  16.                                           LCD_ShowNum(50,220,voltage,4);
  17.                                           POINT_COLOR=GREEN;
  18.                                           LCD_DrawLine(2+4*(ii-1),200-sp1, 2+4*ii,200-sj);
  19.                               sp1=sj;
  20.                         }
  21.                         if(index ==1)
  22.                         {               
  23.                                           POINT_COLOR=WHITE;
  24.                                           LCD_ShowNum(150,220,voltage,4);
  25.                                           POINT_COLOR=BLUE;
  26.                                           LCD_DrawLine(2+4*(ii-1),200-sp2, 2+4*ii,200-sj);
  27.                               sp2=sj;                                  
  28.                         }
  29.                         if(index ==2)
  30.                         {
  31.                                           POINT_COLOR=WHITE;                                       
  32.                                           V=0;
  33.                           if((u<=1644) && (u>1268))
  34.                       V=10+(1644-u)/37;
  35.                       if((u<=1268) && (u>947))
  36.                       V=20+(1268-u)/32;
  37.                       if((u<=947) && (u>692))
  38.                       V=30+(947-u)/25;
  39.                                           LCD_ShowNum(250,220,V,4);
  40.                                           V=V*2;
  41.                                           POINT_COLOR=RED;
  42.                                           LCD_DrawLine(2+4*(ii-1),200-sp3-1, 2+4*ii,200-V-1);
  43.                               sp3=V;
  44.                                           ii=ii+1;                                       
  45.                                           if(ii>79)
  46.                                           {
  47.                                                         ii=1;
  48.                                                         LCD_Fill(0,31,319,209,BLACK);
  49.                                 POINT_COLOR=WHITE;                                        
  50.                                           }
  51.                           }
  52.     }
  53. }

在连接NTC温感器件的情况下,检测与波形绘制相关如图4所示。
2854568a9345b38fa0.png
3 连接NTC检测模块

8004768a9349237bca.png
4 升温测试


永恒的一瞥 发表于 2025-8-25 14:36 | 显示全部楼层
好厉害啊!
要怎么实现这个动态曲线啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部