3.2.2 子程序
温度转换命令子程序主要是发送温度转换开始命令。在发送匹配ROM命令后,紧跟着发送要进行测温的DS18B20的64位ROM序列(这个序列号一般由厂方提供或通过实验的方式获得)。采用12位分辨率,转换时间约为750ms。其程序流程图如图3.1所示。
图3.1 温度转换命令子程序流程图
(1)读出温度子程序
读出温度子程序主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3.2所示。
(2)计算温度子程序
从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符的显示。在系统采用12位转换精度,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。
通过观察可以发现一个十进制值和二进制值之间有很明显的关系。低字节的高半字节乘以0.0625恰好就是原整数。因此,把二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就恰好是温度值的百、十、个位值;剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。小数部分因为是半个字节,所以二进制值范围是0~F,转换成十进制小数值就是0.0625的倍数。这样需要4位的数码管来显示小数部分,实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃。其程序流程图如图3.3所示。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页