首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
分布式测温中传感器时序与温度读取研究
来源:本站整理  作者:佚名  2009-02-24 10:27:56




     
图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,且在两次独立的读时序之间至少需要1μS的恢复时间。每个读时序都由主设备发起,先使数据线为高电平,然后拉低数据线至少1μS,再释放数据线。在主设备发出读时序之后,DS18B20开始在数据线上发送数据0或1。若其发送1,则保持数据线为高电平。若发送0,则DS18B20拉低数据线,在该时序结束后释放数据线。DS18B20发出的数据在起始时序之后15μS内保证可靠有效。因而主设备在读时序期间必须释放数据线,并且要在时序开始后的15μS之内读取数据线状态。写时序如图4所示。

  
图4    数字温度传感器读时序

读一位程序如下所示:
RE11:   SETB  DAT            ; 使数据线为高电平
          NOP
          NOP
          CLR  DAT             ; 高电平持续2us后拉低数据线
          MOV  R4, #4
          NOP     ; 持续低电平2us
          SETB  DAT  ; 释放数据线
RE12:   DJNZ  R4, RE12 ; 等待8us
MOV  C, DAT     ; 读入一位
          MOV  R5, #28
RE13:   DJNZ  R5, RE13 ; 保证一个读周期持续60us
          SETB  DAT            ; 使数据线为高电平
          RET

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位序列号将存放到内部RAM 30H ~ 37H单元中。读一个字节程序READ如下所示。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:48,667.97000 毫秒