在分布式测温系统中应用了大量的新型传感器DS18B20,DS18B20是单总线数字温度传感器其硬件接线简单,但时序非常复杂。要实现温度的正确读取,既要有对DS18B20的ROM操作命令,又有一些功能命令。这些命令的执行,既有一定顺序,又有特定含义。都需要基于数字温度传感器初始化时序、写时序和读时序,按照严格的时序配合才能完成温度正确采集与读取。因此要想正确使用单总线数字温度传感器,必须分析其时序关系,并且基于时序编制正确程序。单总线数字温度传感器时序分析与应用研究具有及其重要意义。
2.数字温度传感器时序
DS18B20与单片机只通过一条数据线连接,所以其数据的传输方式为串行方式。为了正确读取温度值,必须严格按照时序配合关系,进行程序编制。DS18B20有严格的通信协议来保证数据传输的正确性和完整性。通信协议规定了总线上的多种信号的时序。如:复位脉冲、响应脉冲、写0、写1、读0和读1等信号的时序。DS18B20是在严格的时序控制下进行正常操作的。换句话讲,就是用较为复杂的软件来换取简单的硬件接口。因此要正确使用DS18B20,就必须了解其初始化时序、写时序和读时序。
2.1 数字温度传感器初始化时序
初始化时序有时也称复位时序,它是数据线上所有传输过程的开始。整个初始化过程由主设备发出的复位脉冲和DS18B20的响应脉冲组成。在主设备初始化的过程中,主设备通过拉低数据线至少480μS ,DS18B20即认为是接收到一个初始化脉冲,接着主设备释放数据线,在数据线上上拉电阻的作用下,数据线电平被拉高,并且主设备进入接收模式。在DS18B20检测到上升沿后,延时15~60μS ,接着通过拉低总线60~240μS以产生应答脉冲。初始化时序如图2所示。图1是图2、图3和图4的线型示意图。
图1 线型示意图
图2 初始化时序
在分布式测温系统中CPU采用AT89S52,温度读取的初始化程序如下所示:
DAT BIT P1.0
INI10: SETB DAT
MOV R2, #185
INI11: CLR DAT
DJNZ R2, INI11 ; 复位脉冲时间600us
SETB DAT ; 释放数据线
MOV R2, #28
INI12: DJNZ R2, INI12 ; 等待60us
CLR C
ORL C, DAT ; 有无应答低电平
JC INI10 ; 若无应答,初始化失败
MOV R6, #40
INI13: ORL C, DAT
JC INI14 ; 数据线变高。初始化成功
DJNZ R6, INI13 ; 低电平最多240us
SJMP INI10 ; 低电平持续大于240us,失败
INI14: MOV R2, #222
INI15: DJNZ R2, INI15 ; 应答信号至少要持续480us
RET
2.2 数字温度传感器写时序
写时序包括写“0”时序和写“1”时序。写“1”时序用于主设备向DS18B20写入1,写“0”时序用于主设备向DS18B20写入0。无论是哪种写时序都至少需要60μS ,且在两次独立的写时序之间至少需要1μS的恢复时间。两种写时序均起始于主设备拉低数据线电平。对于写“1”时序,主设备在拉低数据线之后,紧接着必须在15μS之内释放数据线,由上拉电阻将数据线拉至高电平;而对于写“0”时序,在主设备拉低数据线后,只需在整个时序内保持低电平即可至少60μS。在写时序开始后的15~60μS期间内,DS18B20读取数据线电平状态。如果此期间数据线为高电平 ,则对器件写入逻辑1,否则写入逻辑0。写时序如图3所示。