将AD转换结果换算成NTC的温度值的keil程序
时间: 2024-02-16 18:59:43 浏览: 140
STM32编写的NTC温度采集程序
5星 · 资源好评率100%
以下是将AD转换结果换算成NTC温度值的Keil程序:
```c
#include <reg51.h>
#define R_REF 10000 //参考电阻值为10kΩ
#define R_NTC 10000 //NTC电阻值为10kΩ
#define B_VALUE 3950 //B值为3950
float temp; //存储温度值
unsigned int adc_value; //存储ADC转换结果
//函数声明
void delay(unsigned int t);
void ADC_Init();
unsigned int Get_ADC_Result();
void main()
{
ADC_Init(); //初始化ADC
while(1)
{
adc_value = Get_ADC_Result(); //获取ADC转换结果
temp = log((float)R_REF*(1024-adc_value)/adc_value/R_NTC)/B_VALUE+(1.0/298.15); //计算温度值
temp = 1.0/temp-273.15; //转换为摄氏度
//在这里将温度值temp输出到串口或LCD等显示设备上
delay(1000); //延时1秒
}
}
//延时函数
void delay(unsigned int t)
{
unsigned int i, j;
for(i=0; i<t; i++)
{
for(j=0; j<120; j++);
}
}
//ADC初始化函数
void ADC_Init()
{
ADCON0 = 0x01; //开启ADC,选择ADC通道为AN0
ADCON1 = 0x80; //设置ADC输入时钟为Fosc/32
}
//获取ADC转换结果函数
unsigned int Get_ADC_Result()
{
unsigned int adc_result;
ADCON0 |= 0x04; //启动ADC转换
while(ADCON0 & 0x04); //等待ADC转换完成
adc_result = ADRESH;
adc_result = (adc_result << 8) | ADRESL;
return adc_result; //返回ADC转换结果
}
```
说明:
该程序首先通过ADC模块获取NTC电阻的电压值,然后根据公式计算出NTC电阻的电阻值,再利用公式计算出NTC的温度值,并转换为摄氏度。最后将温度值输出到串口或LCD等显示设备上。
需要注意的是,该程序中的NTC电阻值、参考电阻值和B值需要根据实际电路进行修改。
阅读全文