| #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;
 
 }
 
 
 |