分布式测温中传感器时序与温度读取研究
时间:12-06
来源:互联网
点击:
3.初始化以及读写时序应用
3.1温度采集程序设计
单总线数字温度传感器DS18B20要完成温度的采集需要按顺序完成如下几个步骤:初始化、跳过ROM匹配、启动转换、等待转换完成、初始化、匹配ROM、读便笺式存储器、CRC校验、温度格式转换、保存温度值以及显示等其他处理。按照此步骤,程序设计时首先就要按照初始化时序执行2.1所介绍的初始化程序INI10,其次要将跳过ROM匹配命令(代码为CCH)写入到DS18B20中,此时需根据2.2所介绍的数字温度传感器写时序编写对DS18B20一个写入字节程序WRITE,将跳过ROM匹配命令写入DS18B20。为了完成温度启动转换,需要将启动转换命令写入DS18B20中。用延时750ms等待转换完成。随后再按照初始化时序执行本文中2.1所介绍的初始化程序INI10,用写入一个字节程序将匹配ROM命令(代码为55H)写入到DS18B20中。为了完成读便笺式存储器操作,需要先结合数字温度传感器写时序将读便笺式存储器命令(代码为BEH)写入到DS18B20中,再用温度传感器读时序编写的读一个字节程序READ,连续读取DS18B20便笺式存储器中9个字节的内容。由此可见,要想实现温度正确采集,需要结合上述所介绍的初始化时序、温度传感器写时序和温度传感器读时序,才可以将所需的命令写入与读出。完成温度的正确读取。
3.2温度传感器序列号读取程序设计
每个单总线数字温度传感器DS18B20出厂时都有唯一的一个64位序列号,在使用温度传感器之前,需事先将每个温度传感器逐一挂接在I/O口如P1.0上,再读取温度传感器的序列号。当I/O口上挂接一个温度传感器DS18B20时,可以用读ROM命令完成64位序列号的读取。程序设计思路是首先将读ROM命令(代码为33H)送入累加器A中,随后调用写入一个字节程序WRITE,然后调用读64位序列号程序DXLH。在写入一个字节程序WRITE中,置循环次数为8,再调用写入一位子程序,严格按照时序关系,执行传感器写时序,循环8次写完一个字节。在读64位序列号程序DXLH中,置内部RAM首地址为30H,置循环次数为8,调用读一个字节程序READ,将读取数据存放在内部RAM中。循环8次读完8个字节即64位序列号。读出的64位序列号将存放到内部RAM30H~37H单元中。读一个字节程序READ如下所示。
READ:MOVR6,#8;循环次数为8
SETBDAT;读出一位程序,执行传感器读时序
NOP
NOP
RD11:CLRDAT
MOVR4,#4
NOP;持续低电平2us
SETBDAT;释放数据线
RD12:DJNZR4,RD12;等待8us
MOVC,DAT;读入一位
RRCA;将读入数据移入累加器A
MOVR5,#28
RD13:DJNZR5,RD13;保证一个读周期持续60us
DJNZR6,RD11;循环8次读一个字节
SETBDAT
RET
上述程序执行完毕,可将温度传感器的64位序列号存放在单片机内部RAM30H~37H单元中。
4.分布式测温系统中温度显示
分布式测温系统中,采用液晶显示可以实现房间号的显示,实际温度的显示,报警上限值的显示以及报警发生时的时间。还可以循环显示多个房间的实际温度和上限值。如图5所示。

图5分布式测温系统中对应房间温度以及报警上限显示
5.结束语
正确读取多个单总线数字温度传感器DS18B20的温度在分布式测温系统中是非常重要的。由于在程序设计时必须根据严格的时序关系,因此本文作者创新点是详细阐述了初始化时序、读写时序等复杂逻辑关系,设计了正确的温度序列号读取程序和温度读写程序并能够进行液晶显示。由于单总线数字温度传感器DS18B20各个功能的实现是通过各种ROM命令与操作功能命令实现的,这些命令一环扣着一环,每个环都是一个时序的集合。在进行程序调试时,不能像调试其它程序一样用单步执行来进行跟踪,因此对错误查找和程序优化带来了很大的难度。在遇到程序运行出错时,只能够根据错误现象来分析、推测、修改和再运行来解决,而不能直接定位。文中所介绍的单总线数字温度传感器DS18B20程序设计思路与方法,目前已较好地应用于分布式测温系统中,并且满足一定精度要求。
3.1温度采集程序设计
单总线数字温度传感器DS18B20要完成温度的采集需要按顺序完成如下几个步骤:初始化、跳过ROM匹配、启动转换、等待转换完成、初始化、匹配ROM、读便笺式存储器、CRC校验、温度格式转换、保存温度值以及显示等其他处理。按照此步骤,程序设计时首先就要按照初始化时序执行2.1所介绍的初始化程序INI10,其次要将跳过ROM匹配命令(代码为CCH)写入到DS18B20中,此时需根据2.2所介绍的数字温度传感器写时序编写对DS18B20一个写入字节程序WRITE,将跳过ROM匹配命令写入DS18B20。为了完成温度启动转换,需要将启动转换命令写入DS18B20中。用延时750ms等待转换完成。随后再按照初始化时序执行本文中2.1所介绍的初始化程序INI10,用写入一个字节程序将匹配ROM命令(代码为55H)写入到DS18B20中。为了完成读便笺式存储器操作,需要先结合数字温度传感器写时序将读便笺式存储器命令(代码为BEH)写入到DS18B20中,再用温度传感器读时序编写的读一个字节程序READ,连续读取DS18B20便笺式存储器中9个字节的内容。由此可见,要想实现温度正确采集,需要结合上述所介绍的初始化时序、温度传感器写时序和温度传感器读时序,才可以将所需的命令写入与读出。完成温度的正确读取。
3.2温度传感器序列号读取程序设计
每个单总线数字温度传感器DS18B20出厂时都有唯一的一个64位序列号,在使用温度传感器之前,需事先将每个温度传感器逐一挂接在I/O口如P1.0上,再读取温度传感器的序列号。当I/O口上挂接一个温度传感器DS18B20时,可以用读ROM命令完成64位序列号的读取。程序设计思路是首先将读ROM命令(代码为33H)送入累加器A中,随后调用写入一个字节程序WRITE,然后调用读64位序列号程序DXLH。在写入一个字节程序WRITE中,置循环次数为8,再调用写入一位子程序,严格按照时序关系,执行传感器写时序,循环8次写完一个字节。在读64位序列号程序DXLH中,置内部RAM首地址为30H,置循环次数为8,调用读一个字节程序READ,将读取数据存放在内部RAM中。循环8次读完8个字节即64位序列号。读出的64位序列号将存放到内部RAM30H~37H单元中。读一个字节程序READ如下所示。
READ:MOVR6,#8;循环次数为8
SETBDAT;读出一位程序,执行传感器读时序
NOP
NOP
RD11:CLRDAT
MOVR4,#4
NOP;持续低电平2us
SETBDAT;释放数据线
RD12:DJNZR4,RD12;等待8us
MOVC,DAT;读入一位
RRCA;将读入数据移入累加器A
MOVR5,#28
RD13:DJNZR5,RD13;保证一个读周期持续60us
DJNZR6,RD11;循环8次读一个字节
SETBDAT
RET
上述程序执行完毕,可将温度传感器的64位序列号存放在单片机内部RAM30H~37H单元中。
4.分布式测温系统中温度显示
分布式测温系统中,采用液晶显示可以实现房间号的显示,实际温度的显示,报警上限值的显示以及报警发生时的时间。还可以循环显示多个房间的实际温度和上限值。如图5所示。

图5分布式测温系统中对应房间温度以及报警上限显示
5.结束语
正确读取多个单总线数字温度传感器DS18B20的温度在分布式测温系统中是非常重要的。由于在程序设计时必须根据严格的时序关系,因此本文作者创新点是详细阐述了初始化时序、读写时序等复杂逻辑关系,设计了正确的温度序列号读取程序和温度读写程序并能够进行液晶显示。由于单总线数字温度传感器DS18B20各个功能的实现是通过各种ROM命令与操作功能命令实现的,这些命令一环扣着一环,每个环都是一个时序的集合。在进行程序调试时,不能像调试其它程序一样用单步执行来进行跟踪,因此对错误查找和程序优化带来了很大的难度。在遇到程序运行出错时,只能够根据错误现象来分析、推测、修改和再运行来解决,而不能直接定位。文中所介绍的单总线数字温度传感器DS18B20程序设计思路与方法,目前已较好地应用于分布式测温系统中,并且满足一定精度要求。
- 多核及虚拟化技术在工业和安全领域的应用(05-23)
- 基于ARM核的AT75C220及其在指纹识别系统中的应用(05-24)
- 基于音频信号的轴承故障诊断方法(03-17)
- 采用信号调理IC驱动应变片电桥传感器(05-26)
- 基于nRF2401智能无线火灾监控系统设计(04-01)
- 家居安防无线监控报警系统(04-02)
