17.2.4 温度转换操作

DS18S20通过温度转换命令启动一次温度测量,测量结果存放在高速暂存器中,占有暂存器的字节0(LSB)和字节1(MSB)。DS18S20完成一次温度转换的时间为750ms。由于DS18S20可以测量正负温度,因此测量数据是以16位带符号位扩展的二进制补码形式存放的。单总线主机使用读暂存器命令可以把高速暂存器中的测量结果读出。

DS18S20为9位数字温度分辨率,精度为0.5˚C,其温度数据格式如图17.6所示。DS18S20的温度与数据对应关系如表17.1所示。所有数据都是以最低有效位(LSB)在前的方式进行读写的。图中,S表示符号位。当S为0时,表示正的温度值;当S为1时,表示负的温度值。

17.2.4 温度转换操作 - 图1

17.2.4 温度转换操作 - 图2

图 17.6 DS18S20温度寄存器的数据格式

提示温度以二进制补码形式表示,对于正数,不需要对数据进行处理就可得到正确的温度,对于负数,需要按位取反再加1,则可得到十进制的温度。

虽然DS18S20的精度为±0.5˚C,但是其提供了另外一种方法可以得到更高的精度。操作步骤如下。

(1)从高速暂存器读取字节0和字节1中的温度值,并去除最低有效位,即从读取的值中舍弃0.5˚C位,将该值记为“TEMP_READ”。

(2)读取高速暂存器的字节6,记为“COUNT_REMAIN”。

(3)读取高速暂存器的字节7,记为“COUNT_PER_C”。

则扩展精度的温度值如下所示。

17.2.4 温度转换操作 - 图3

DS18S20可以设置温度报警,其温度报警触发器TH和TL各由一个EEPROM字节构成。单总线主机对TH和TL的读取需要通过高速暂存器,而对TH和TL的写操作则直接使用写存储器命令即可。每完成一次温度转换后,DS18S20自动将测量的温度值温度报警限TH和TL中的值进行比较。如果温度值超出设置的范围,则置位其内部的报警标志。当报警标志被置位时,DS18S20将会响应单总线主机的报警搜索命令。这样便可以实现多个DS18S20并联分布式温度测量。