(3)读时序,当单片机从DS18B20读取数据时,产生读时序。 此时单片机将数据线DQ的电平从高拉到低使读时序被初始化。 如果在此后的15s内,单片机在数据线上采样到低电平,则从 DS18B20读的是“0”;如果在此后的15s内,单片机在数据线 上采样到高电平,则从DS18B20读的是“1”。 3.DS18B20的命令 DS18B20片内都有唯一的64位光刻ROM编码,出厂时已刻 好。它是DS18B20的地址序列码,目的是使每个DS18B20的地 址都不相同,这样就可实现在一根总线上挂接多个DS18B20的 目的。64位光刻ROM的各位定义如下: 16
16 (3)读时序,当单片机从DS18B20读取数据时,产生读时序。 此时单片机将数据线DQ的电平从高拉到低使读时序被初始化。 如果在此后的15µs内,单片机在数据线上采样到低电平,则从 DS18B20读的是“0”;如果在此后的15µs内,单片机在数据线 上采样到高电平,则从DS18B20读的是“1”。 3. DS18B20的命令 DS18B20片内都有唯一的64位光刻ROM编码,出厂时已刻 好。它是DS18B20的地址序列码,目的是使每个DS18B20的地 址都不相同,这样就可实现在一根总线上挂接多个DS18B20的 目的。64位光刻ROM的各位定义如下:
8位产品类型标号 DS18B20的48位自身序列号 8位CRC码 单片机写入DS18B20的所有命令均为8位长,对ROM操作 的命令见表11-3。 表11-3DS18B20的部分命令 命令功能 命令代码 读DS18B20中0M的编码(即64位地址) 33H 匹配0弧,发出此命令之后,接着发出64位编码,访问与该编码对应的DS18B20 55H 并使其做出响应,为下一步对其进行读写做准备(总线上有多个DS18B20时使用) 搜索0M(单片机识别所有的DS18B20的64位编码) FOH 跳过读序列号的操作(总线上仅有1个DS18B20时使用) CCH 17
17 单片机写入DS18B20的所有命令均为8位长,对ROM操作 的命令见表11-3
下面介绍表11-3中命令的用法。当主机需要对多个单总线上 的某一DS18B20进行操作时,首先应将主机逐个与DS18B20挂 接,读出其序列号(命令代码为33H);然后再将所有的 DS18B20挂接到总线上,单片机发出匹配ROM命令(55H), 紧接着主机提供的64位序列号之后的操作就是针对该DS18B20 的。 如果主机只对一个DS18B20进行操作,就不需要读取ROM编 码以及匹配ROM编码,只要使用跳过读ROM序列号(CCH)命 令,就可按表11-4执行如下温度转换和读取命令。 18
18 下面介绍表11-3中命令的用法。当主机需要对多个单总线上 的某一DS18B20进行操作时,首先应将主机逐个与DS18B20挂 接,读出其序列号(命令代码为33H);然后再将所有的 DS18B20挂接到总线上,单片机发出匹配ROM命令(55H), 紧接着主机提供的64位序列号之后的操作就是针对该DS18B20 的。 如果主机只对一个DS18B20进行操作,就不需要读取ROM编 码以及匹配ROM编码,只要使用跳过读ROM序列号(CCH)命 令,就可按表11-4执行如下温度转换和读取命令
表11-4DS18B20的部分命令 命令功能 命令代码 启动温度转换 44H 读取暂存器中的温度数据 BEH 将温度上下限数据写入片内RAM的第3、4字节(TH、TL) 4EH 把片内RAM的第3、4字节的数据复制到暂存器TH与TL中 48H 将E'PROM第3、4字节的数据恢复到片内RAM中的第3、4字节 B8H 读供电方式,寄生供电时,DS18B20发送0:外部电源供电,DS18B20发送1 B4H 报警搜索,只有温度超过设定的上下限的芯片才做响应 ECH 19
19
11.1.2单总线DS18B20温度测量系统的设计 【例11-1】利用DS18B20和LED数码管实现单总线温度 测量系统,原理仿真电路如图11-3所示。DS18B20的测量 范围是-55~128℃。本例由于只接有两只数码管,所以显 示的数值为00~99。读者通过本例应掌握DS18B20的特性 以及单片机O实现单总线协议的方法。 在Proteus环境下进行虚拟仿真时,用手动调整 DS18B20的温度值,即用鼠标单击DS18B20图标上的“个” 或“”来改变温度,注意手动调节温度的同时,LED数码 管上会显示出与DS18B20窗口相同的2位温度数值,表示测 量结果正确。 20
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