阅读本文之前请先找到DS18B20的中文手册
DS18B20数据手册-中文版 - 知乎 (zhihu.com)
下面先对DS18B20简单进行一些介绍:
学校课程设计中常见的DS18B20的引脚一般为3脚封装,如下图左侧所示:
可以看到,DS18B20的引脚为GND,DQ,VDD。其中GND与VDD的引脚分别接地线和电源就好了,而DQ线是主要的数据传输口,它可以接在P1-P6端口的引脚上,因为数据传输主要靠拉高或者拉低电平,再由单片机判断高低电平,所以接哪个口都可以。
DS18B20测量完温度后会将数据存在温度寄存器中,储存的格式如下:
可以看到,高五位是S,即SIGN,符号位,而低11位用来储存数据,DS18B20的精度逐渐调低时,由BIT0到高位会逐渐未定义(即BIT0未定义时,精度会下降,精度再下降的话,就是BIT1未定义,因为BIT0-BIT3负责记录小数点后的数据)。这里需要注意的是,温度寄存器的数据同样在DS18B20的ScratchPad中,关于ScratchPad是什么,接下来我会详细讲解。
DS18B20的具体操作:
DS18B20存储温度数据时是分两位字节存储的,两字节16位数据中,高五位为符号位,低十一位为数据位。因此,读取DS18B20的数据需要连续进行两次读一字节的操作,先读低八位,后读高八位。在发送读ScratchPad指令后,传感器会由低到高传送共9字节的数据,我们只需要读取两字节即可读出数据。ScratchPad中默认的字节顺序如下: