找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3087|回复: 1
收起左侧

stm32 ntc温度测试程序

[复制链接]
ID:387298 发表于 2020-3-25 10:54 | 显示全部楼层 |阅读模式
关于stm32温度采集   采用ADC采集NTC热敏电阻   通过led显示

单片机源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"
  6. #include "adc.h"
  7. #include "dma.h"
  8. #define ADC1_DR_Address    ((u32)0x40012400+0x4c)       
  9. volatile u16 adc_value[6];

  10. float temp;





  11. //ntc函数


  12. //温度对应
  13. const static float ntc[21]=
  14.    {1628.0369,1607.9082,1573.5637,1518.3742,1435.5667,1332.3733,1179.6867,1016.9468,
  15.     848.4260,688.30238,546.84645,428.67342,333.80328,260.01129,203.26611,159.43124,
  16.           125.75058,100.03476,80.186094,64.863774,52.957916};        //-20~80对应的mV值
  17.          
  18. //通过ad值去计算温度               
  19. float ntc_proc(long ad_data)
  20. {float mid,t;
  21. unsigned char i;
  22. mid = ad_data;
  23. mid = mid * 0.8058608058608059;//计算对应的电压值(mV)3300*ADC_value/4095   ADC是12位精度   3300/4095=0.8058608058608059
  24. for(i=1;i<21;i++)
  25.    {if(mid>ntc[i])
  26.       break;
  27.    }
  28. t = (i - 4) * 100 - (mid-ntc[i]) / (ntc[i-1]-ntc[i]) * 100;
  29. return t;      
  30. }


  31. //主函数



  32. int main(void)
  33. {                                                       
  34.   Stm32_Clock_Init(9);        //系统时钟设置
  35.         uart_init(72,115200);        //串口初始化为115200
  36.         delay_init(72);                            //延时初始化
  37.        
  38.         MYDMA_Config(DMA1_Channel1,ADC1_DR_Address ,(u32) adc_value,6);
  39.         printf("\r\n DMA_Init成功 \r\n");       
  40.   
  41.         Adc_Init();                                  //ADC初始化       
  42.         printf("\r\n Adc_Init成功 \r\n");

  43. //  ADC1->CR2|=1<<8;       //开启DMA传输       
  44. //        printf("\r\n 开启adc_DMA \r\n");
  45.        

  46.        
  47.         while(1)
  48.         {
  49.         temp=ntc_proc(adc_value[0]);       
  50.         printf("\r\n AD值 %d  \r\n",adc_value[0]);
  51.         printf("\r\n 温度值 %f  \r\n",temp);
  52.         //printf("\r\n AD值 %d %d %d %d %d %d \r\n",adc_value[0],adc_value[1],adc_value[2],adc_value[3],adc_value[4],adc_value[5]);
  53.         }
  54. }
复制代码

所有资料51hei提供下载:
stm32 ntc温度测试程序.7z (128.21 KB, 下载次数: 88)


回复

使用道具 举报

ID:1 发表于 2020-3-26 00:42 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表