低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)
高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表 2是对应的一部分温度值。第九个字节是冗余检验字节。
|
表5: DS18B20暂存寄存器分布 |
|
寄存器内容
|
字节地址 |
|
温度值低位 (LS Byte) |
0 |
|
温度值高位 (MS Byte) |
1 |
|
高温限值(TH) |
2 |
|
低温限值(TL) |
3 |
|
配置寄存器 |
4 |
|
保留 |
5 |
|
保留 |
6 |
|
保留 |
7 |
|
CRC校验值 |
8 | |
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
|
表6: ROM指令表 |
|
|
约定代码 |
功 能 |
|
读ROM |
33H |
读DS1820温度传感器ROM中的编码(即64位地址) |
|
符合 ROM
|
55H |
发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。 |
|
搜索 ROM
|
0FOH |
用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。 |
|
跳过 ROM
|
0CCH |
忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。
|
|
告警搜索命令
|
0ECH |
执行后只有温度超过设定值上限或下限的片子才做出响应。
| |
|
表6: RAM指令表 |
|
|
约定代码 |
功 能 |
|
温度变换 |
44H |
启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。 |
|
读暂存器
|
0BEH
|
|
|
写暂存器
|
4EH
|
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 |
|
复制暂存器
|
48H
|
将RAM中第3 、4字节的内容复制到EEPROM中。
|
|
重调 EEPROM
|
0B8H
|
将EEPROM中内容恢复到RAM中的第3 、4字节。
|
|
读供电方式 |
0B4H |
读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。
| |