标题:
stm32 ntc温度测试程序
[打印本页]
作者:
mr.zhang2018
时间:
2020-3-25 10:54
标题:
stm32 ntc温度测试程序
关于stm32温度采集 采用ADC采集NTC热敏电阻 通过led显示
单片机源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "adc.h"
#include "dma.h"
#define ADC1_DR_Address ((u32)0x40012400+0x4c)
volatile u16 adc_value[6];
float temp;
//ntc函数
//温度对应
const static float ntc[21]=
{1628.0369,1607.9082,1573.5637,1518.3742,1435.5667,1332.3733,1179.6867,1016.9468,
848.4260,688.30238,546.84645,428.67342,333.80328,260.01129,203.26611,159.43124,
125.75058,100.03476,80.186094,64.863774,52.957916}; //-20~80对应的mV值
//通过ad值去计算温度
float ntc_proc(long ad_data)
{float mid,t;
unsigned char i;
mid = ad_data;
mid = mid * 0.8058608058608059;//计算对应的电压值(mV)3300*ADC_value/4095 ADC是12位精度 3300/4095=0.8058608058608059
for(i=1;i<21;i++)
{if(mid>ntc[i])
break;
}
t = (i - 4) * 100 - (mid-ntc[i]) / (ntc[i-1]-ntc[i]) * 100;
return t;
}
//主函数
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,115200); //串口初始化为115200
delay_init(72); //延时初始化
MYDMA_Config(DMA1_Channel1,ADC1_DR_Address ,(u32) adc_value,6);
printf("\r\n DMA_Init成功 \r\n");
Adc_Init(); //ADC初始化
printf("\r\n Adc_Init成功 \r\n");
// ADC1->CR2|=1<<8; //开启DMA传输
// printf("\r\n 开启adc_DMA \r\n");
while(1)
{
temp=ntc_proc(adc_value[0]);
printf("\r\n AD值 %d \r\n",adc_value[0]);
printf("\r\n 温度值 %f \r\n",temp);
//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]);
}
}
复制代码
所有资料51hei提供下载:
stm32 ntc温度测试程序.7z
(128.21 KB, 下载次数: 88)
2020-3-25 16:02 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2020-3-26 00:42
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1