8位产品类型标号 DSl8B20的48位自身序列号 8位CRC码 单片机写入DS18B20的所有命令均为8位长,对ROM操作 的命令见表11-3 表11-3Ds18B20的部分命令 命令功能 命令代码 读DS18B20中RO的编码(即64位地址) 33H 匹配RO,发出此命令之后,接着发出姓4位编码,访间与该编码对应的Ds18B 55H 并使其做出响应,为下一步对其进行读写做准备(总线上有多个Ds18B20时使用) 搜索ROM(单片机识别所有的Ds18B20的64位编码) FOH 跳过读序列号的操作(总线上仅有1个Ds18B20时使用) H
17 单片机写入DS18B20的所有命令均为8位长,对ROM操作 的命令见表11-3
下面介绍表113中命令的用法。当主机需要对多个单总线上 的某一DS18B20进行操作时,首先应将主机逐个与DS18B20挂 接,读出其序列号(命令代码为33H);然后再将所有的 DS18B20挂接到总线上,单片机发出匹配ROM命令(55H), 紧接着主机提供的64位序列号之后的操作就是针对该DS18B20 的。 如果主机只对一个DS18B20进行操作,就不需要读取ROM编 码以及匹配ROM编码,只要使用跳过读ROM序列号(cCH)命 令,就可按表11-4执行如下温度转换和读取命令
18 下面介绍表11-3中命令的用法。当主机需要对多个单总线上 的某一DS18B20进行操作时,首先应将主机逐个与DS18B20挂 接,读出其序列号(命令代码为33H);然后再将所有的 DS18B20挂接到总线上,单片机发出匹配ROM命令(55H), 紧接着主机提供的64位序列号之后的操作就是针对该DS18B20 的。 如果主机只对一个DS18B20进行操作,就不需要读取ROM编 码以及匹配ROM编码,只要使用跳过读ROM序列号(CCH)命 令,就可按表11-4执行如下温度转换和读取命令
表11-4Ds18E20的部分命令 命令功能 命令代码 启动温度转换 44H 读取暂存器中的温度数据 BEH 将温度上下限数据写入片内RAM的第3、4字节(TH、TL) 4EH 把片内RAM的第3、4字节的数据复制到暂存器TH与TL中 48H 将EPRM第3、4字节的数据恢复到片内RAM中的第3、4字节 BaH 读供电方式,寄生供电时,DS18B20发送0:外部电源供电,DS18B20发送1 B4H 报警搜索,只有温度超过设定的上下限的芯片才做响应 ECH
19
1112单总线DS18B20温度测量系统的设计 【例11-1】利用DS18B20和LED数码管实现单总线温度 测量系统,原理仿真电路如图11-3所示。DS18B20的测量 范围是-55~128℃C。本例由于只接有两只数码管,所以显 示的数值为00~99。读者通过本例应掌握Ds18B20的特性 以及单片机MO实现单总线协议的方法。 在 Proteus环境下进行虚拟仿真时,用手动调整 DS18B20的温度值,即用鼠标单击DS18B20图标上的“↑” 或“↓”来改变温度,注意手动调节温度的同时,LED数码 管上会显示出与Ds18B20窗口相同的2位温度数值,表示测 量结果正确
20 11.1.2 单总线DS18B20温度测量系统的设计 【例11-1】利用DS18B20和LED数码管实现单总线温度 测量系统,原理仿真电路如图11-3所示。DS18B20的测量 范围是−55~128℃。本例由于只接有两只数码管,所以显 示的数值为00~99。读者通过本例应掌握DS18B20的特性 以及单片机I/O实现单总线协议的方法。 在Proteus环境下进行虚拟仿真时,用手动调整 DS18B20的温度值,即用鼠标单击DS18B20图标上的“↑” 或“↓”来改变温度,注意手动调节温度的同时,LED数码 管上会显示出与DS18B20窗口相同的2位温度数值,表示测 量结果正确。 20
XTAL1 POO/AD ■■■ ABCDEFG DP 12 PO1/AD1 ■■■2 XTAL2 P0202b3A4 PO3/AD3 6■ PO. 5/AD5 PO. 6/AD6 QG P07 P22A10 P23A11 P2 4/A12 Q2 P25A13 2N5551 P26/A1 P102 P3. 0RXD P1.1丌2E P1.2/ECI P1.3/CEXO P34丌T0 R7 4.7K BD./CEX4 VCC 240 AT89C51 Ds1820 图113单总线DS18B20温度测量与显示系统
图 21 11-3 单总线DS18B20温度测量与显示系统