DS18B20采用单总线方式和Mega8单片机相连,即DS18B20的1引脚和3引脚接地,2引脚通过一只240 Ω的电阻接至Mega8的PB7引脚,同时将PB7引脚采用一只4.7 kΩ的电阻上拉至VCC。
单总线即只用一根信号线,既供电,又传输数据,而且数据传输是双向的,单总线具有"线与"功能,连接方便,便于扩展。
由于DS18B20采用 CMOS技术,耗电量很小,从总线上"偷"一点电保存到DS18B20内的电容中就可供给器件工作。串联240 Ω电阻的目的是防止有缺陷的程序损坏DS18B20,如果没有正确地采用OC(集电极开路)或OD(漏极开路)结构驱动DS18B20,而是选择推挽方式,DS18B20可能被烧坏。 2.1 DS18B20的控制时序.
由于DS18B20是采用一根I/O总线读写数据,因此,DS18B20对读写数据位有严格的时序要求。DS18B20遵循相应的通信协议从而保证数据传输的正确性和完整性。该通信协议定义了多种信号时序:初始化时序、读时序、写时序。所有时序都是将单片机作为主机,DS18B20作为从机。每一次命令和数据传输都是从主机启动写时序开始,如果要求从机回送数据,在写命令后,主机需启动读时序接收数据。所有的读、写时序至少需要60μs,且每两个独立的时序之间至少需要1μs的恢复时间。数据和命令的传输都足低位优先。
DS18B20的复位时序包括主机发出的复位脉冲和从机发出的应答脉冲。上机通过拉低单总线并保持至少480μs产十复位脉冲,然后由主机释放总线,进入接收模式。主机释放总线时,会产生一个由低电半跳变为高电平的上升沿,DS18B20检测到该上升沿后,延时15μs~60μs,接着DS18B20通过拉低总线60μs~240μs产生应答脉冲。主机接收到DB18B20的应答脉冲后就开始对DS18B20进行ROM命令和功能命令操作。DS18B20的复位时序如图2所示。
DS18B20的读时序分为读0时序和读1时序。DS18B20的读时序是主机将单总线拉为低电平,在15μs之内释放单总线,以便使DS18B20将数据传输到单总线上。若DS18B20发送1,总线保持高电平,若发送0,则总线为低电平。由于DS18B20发送数据后保持15μs有效时间,因此,主机在读时序时必须释放总线,且保持15μs的采样总线状态,以便接收DS18B20发送数据。DS18B20的读时序如图3所示。
DS18B20的写时序仍然分为写0时序和写1时序。但DS18B20写0时序和写1时序的要求不同。DS18B20写0时序时,单总线需要被拉低至少60μs,保证DS18B20能够在15μs~45μs能够正确地采样I/O总线上的"0"电平;DS18B20写1时序时,单总线被拉低,并在15μs内释放单总线。DS18B20的写时序如图4所示。
2.2 DS18B20的控制命令
DS18B20具有下面控制命令,如表1所示。
单片机向DS18B20发送这些控制命令,完成相应操作。例如,向DS18B20发送0x44命令,则DS18B20开始启动温度转换。
3 软件设计
Mega8单片机对DS18B20的控制严格遵循单总线的复位及读、写时序要求,同时,需要写入必要的控制字控制DS18B20完成相应工作。当写入0x44控制字启动DS18B20温度转换后,需要等待至少800 ms,在这个时间段内DS18B20完成温度的采集和A/D转换,此时读取的数据才是正确的。软件程序流程图如图5所示。
主程序如下所示:
4 结束语
DS18B20集温度测量、A/D转换于一体,具有体积小、动态范围宽、测量精度高、单总线结构等特点。经试验,基于Mega8单片机和DS18B20的温度测量仪,设计简单,控制方便,测量准确,测温范围宽,完全可以取代水银温度计和热敏电阻测量。利用单总线具有很强的扩展性,还可以组建多点的温度检测网络。因此,基于Mega8单片机和DS18B20的温度测量仪,具有广泛的应用前景。