void wendu_zhuanhuan() //温度转换(AD转温度)
{
//volatile int wendu_a1,wendu_a2,wendu_a3; //温度用,AD值,温度值,小数
unsigned char zhuan_a1;
unsigned int zhuan_b1,zhuan_b2,zhuan_b3;
if (wendu_a1>3864) {wendu_a2=-21; return;} //超过量程(显示---)
else if (wendu_a1 <395) {wendu_a2=121; return;} //超过量程(显示---)
for(zhuan_a1 =0;zhuan_a1 <140;zhuan_a1 ++) //141个(-20--120)
{
if(wendu_a1 >=wdu1[zhuan_a1]) //一个一个的比较
{
wendu_a2 =zhuan_a1; //温度值
wendu_a2 -=20; //偏移20
if((zhuan_a1 >19)||(zhuan_a1 <119)) //0-99之间0.1处理
{
zhuan_b1 =wdu1[zhuan_a1];
zhuan_b2 =wdu1[zhuan_a1 +1];
zhuan_b1 =zhuan_b1 -zhuan_b2; //两个数之间的差(缩小10倍就是0.1度)
zhuan_b3 =wendu_a1 -wdu1[zhuan_a1]; //大于整数的部分
zhuan_b3 *=10; //大于整数的部分(除数放大10倍)
wendu_a3 =zhuan_b3 /zhuan_b1; //求得小数部分
wendu_a3 =9 -wendu_a3; //倒数(大变小)
// if(wendu_a3 >9) {wendu_a3=9;} //限制小数不能大于9
}
return;
}
}
}
|