温度传感器的读写时序原理跟红外遥控差不多,关于宋老师的lesson16_2例程的DS18B20.c的代码这里我们就不讲解了,
《手把手教你学51单片机》文档第16章都已讲解明白。我们要讲解的是温度数值的转换如何在液晶屏上显示出来。
1.大于等于0度的转换
首先我们知道大于等于0度的时候,临时存取没有转换过的16位的变量的数值只需要乘以0.0625就是转换出来的实际温度了。
看到以下表格就知道,0x07D0=2000,实际温度就是2000*0.0625=+125度。
假如temp是unsigned int型变量用来存取没有转换过的临时温度,那么我们再定义一个float型的变量temp_float。
我们把temp强制转换成float类型,这样“temp_float=(float)temp*0.0625”就是实际的温度了。
我们要想把实际温度显示在液晶屏上该如何做呢?
假如我们要显示的范围只需保留一位小数即可,那么要显示像19.2度这样,我们要做的是把temp_float再乘以10.0,
然后又强制转换回来“temp=(u16)temp_float;”让temp存取192这个unsigned int类型的数据。
我们定义一个数组str。
str[0]='0'+( (temp/100)%10 );
str[1]='0'+( (temp/10)