程序:
#include "math.h"
const float Rp=10000.0; //10K const float T2 = (273.15 25.0); //T2 const float Bx = 3950.0; //B const float Ka = 273.15; float temp;
while(1) { temp = 1/(log(Rt/Rp)/Bx (1/T2)); temp = (temp - Ka 0.5)*10; LCD_ShowxNum(86,150,temp,5,16,0x80); //显示温度 }
拆分每一步如下:
float Get_Temp(void)
{
float Rt;
float temp;
Rt = Get_TempResistor(); //获得电阻值
//like this R=5000, T2=273.15 25,B=3470, RT=5000*EXP(3470*(1/T1-1/(273.15 25)),
temp = Rt/Rp;
temp = log(temp); //ln(Rt/Rp)
temp/=Bx; //ln(Rt/Rp)/B
temp =(1/T2); //ln(Rt/Rp)/B (1/T2)
temp = 1/(temp);
temp-=Ka;
temp =0.5; //加0.5误差矫正
return temp;
}