//ad值最大4096
//下偏rntc=(4096*上偏电阻)/4096-ad
//上偏ntc=(4096-ad)*上偏电阻/ad
查表法 放阻值表
tmp[50]={,,,,,10000,,,,,,};//0~49度
//1000对应25度
//输人电阻值返回温度
//返回值为三位整数,方便数码管显示
u16 get_Temperature(u16 ntc)
{
u16 i,tmpL,tmpH;
u16 t,ftmp; //温度整数和小数
if(ntc<10000)//如果小于25度向前查
for(i=25;i>0;i--)//25是数组下标表示25度
{
if(ntc>tmp[i])
{
tmpL=tmp[i];//实测阻值的前后温度
tmpH=tmp[i+1];//用于计算小数点位
t=i; //得到对应温度
i=0;//退出循环否则i--为0
}
// ftmp=(ntc- tmpL) *10/( tmpH- tmpL);
}
else //向后查
for(i=25;i<50;i++)
{
if( ntc<tmp[i])
{
tmpH=tmp[i];//注意哪个是高
tmpL=tmp[i-1];
t=i;
i=50;//退出循环
}
}
//计算小数 *10取整数
ftmp=(ntc- tmpL) *10/( tmpH- tmpL);
t=t*10+ftmp;
return t;
}
没有电脑的日子太难过了,纯手机端手打代码,看资料来灵感就写一
段,查表从中间向两头查,效率肯定高一点,欢迎测试!
|