- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式测温中传感器时序与温度读取研究 (1)
2009-02-27 10:12:45???作者:王捷 孙德辉???来源:微计算机信息
关键字:写时序 读时序 温度传感器 温度采集
1.引言
在分布式测温系统中应用了大量的新型传感器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所示。
图3?数字温度传感器写时序
写一位程序如下所示。程序中DAT为I/O口P1.0。
WIR11:?SETB?DAT?;?拉高电平
MOV?R4,?#5
NOP
CLR?DAT?;?高电平持续2us后拉低
WIR12:?DJNZ?R4,?WIR12?;?等待10微秒
MOV?DAT,?C?;?发送1位
MOV?R4,?#23
WIR13:?DJNZ?R4,?WIR13?;?保证写时间大于60us
SETB?DAT
RET
2.3?温度传感器读时序
DS18B20只有在检测到主设备启动读时序后才向主设备传输数据。所以一般在主设备发送了读数据命令后,必须马上产生读时序,以便DS18B20能够传输数据。所有的读时序都至少需要60μS,且在两次独立的读时序之间至
文档评论(0)