楼主的程序基本没有问题,关键是参考的程序MCU时钟与楼主选用的不同导致时序误差而产生读取错误。
![]()
|
TN=TH*16+TL/16; //实际温度值=(TH*256+TL)/16,即:TH*16+TL/16 //这样得出的是温度的整数部分,小数部分被丢弃了 TD=(TL%16)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整, //这样得到的是温度小数部分的第一位数字(保留1位小数) 改成这个试试: TN=TH<<=8|TL; TN=TN*0.0625*1000+0.5; TD=TN%10;TN=TN/10; 另外,以上程序都不会处理零下的温度。 |