DSI8B20内部主要由4部分组成: 64 位激光ROM、温度传感器、非易失性温度报警
触发器TH和TL、配置寄存器等。其内部结构图如图1所示。

DS18B20内部结构

(1) 64位激光ROM
激光ROM存储器中存放的是64位序列号,出厂前已经被光刻好,它可以看作是
DS 18B20的地址序列号。光刻ROM作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上接多个DS18B20的目的。
(2)暂存器
暂存器由9个字节组成,其分配表如表1所示。

表1 DS18B20暂存器的分布

字节序号功能
0温度转换后的低字节
1温度转换后的高字节
2温度触发器TH
3低温度触发器TL
4配置寄存器
5,6,7保留
8CRC校验寄存器

DS l8B20中的温度传感器可完成对温度的测量,当温度转换命令发出后,转换后的温度值以补码形式存放在暂存器的第0和第I 个字节中。按12位分辨率量化时,对应的温度增量的单位值是0.0625"C。温度值用16位符号扩展的二进制补码形式存放,高字节的前5位都是符号位,低字节的最后4位表示实际温度的小数部分,中间的7位表示实际温度的整数部分。如表2所示。

表2 DS18B20 的温度值格式表

D7D6D5D4D3D2D1D0
低字节232221202-12-22-32-4
D7D6D5D4D3D2D1D0
高字节SSSSS262524

付号位标识实际温度的止负,即温度大于0C时,S=0,将所测得的温度值来以0.0625即可得实际温度值。若所测温度小于0C时,S=1, 则应将所测得的温度值先按位取反再加1后,再乘以0.0625才能得到实际的负温度值。
注意:负数的温度值由于以补码形式存放,所以将高字节的D7-D3这5个符号位不变, .
将高字节的D2-D0和低字节的D7-D0 - -共13位按位取反,再在低字节的D0位加1,得到
的数字再乘以0.0625才能得到实际的温度数值,加上符号就是负温度值。
如:读取的温度值0xFFD811111 I11 1101 10002,先判断正负,高5位为1,表明温
度为负值;再取补码,5个符号位不变,余下位取反加1得到111 1 000 001010002;将高
5位变为符号“-”,余下的0000010 10002 转换为|进制数得到40,再乘以0.0625得到
2.5,得温度值为-2.5C。.
在测量精度要求不高的场合下,如果仅需得到实际温度的整数部分,那么只需读取高
字节中的低4位和低字节的高4位,刚好得到的就是整数部分。表3列出了部分实际温度与DS18B20所测温度值的对应关系。

表3 DS18B20的部分温度数据表

温度/℃16位二进制编码十六进制表示
+1250000 0111 1101 00000x07D0
+550000 0011 0111 00000x0370
+15.6250000 0000 1111 10100x00FA
+2.50000 0000 0010 10000x0028
00000 0000 0000 00000x0000
-2.51111 1111 1101 10000xFFD8
-15.6251111 1111 0000 01100xFF06
-551111 1100 1001 00000xFC90

(3)非易失性温度报警触发器TH和TL
高温触发器和低温触发器分别存放温度报警的上限值TH和下限值TL;DS18B20完成
温度转换后,就把转换后的温度值T与温度报警的上限值TH和下限值TL做比较,若
T>TH或T<TL,则把该器件的告警标志位置位,并对处理器发出的告警搜索命令做出响应。

(4)配置寄存器
配置寄存器用于确定温度值的数字转换分辨率,该字节各位的意义如表4所示。
表4

表4 DS18B20的配置寄存器的位

D7D6D5D4D3D2D1D0
TMR1R011111

其中,低五位都为1,TM是测试位,用于设置DS18B20是在工作模式还是在测试模式。R1和R0用来设置分辨率,DS18B20 的默认值是12位的分辨率。如表5所示。

表5 温度值分辨率设置表

R1R0分辨率/位温度最大转换时间/ms
00993.75
0110187.5
1011275.00
1112750.00

被岁月冰封的一簇火苗,等待理想把它融化、燃烧。