数字显示温度计的设计与研究论文(5)

2019-04-01 22:36

依然能够保证温度量精度。

由于DS18B20 只有一根数据线,因此它和主机(单片机)通信是需要串行通信,而AT89S51 有两个串行端口,所以可以不用软件来模拟实现。经过单线接口访问DS18B20 必须遵循如下协议:初始化、ROM 操作命令、存储器操作命令和控制操作。要使传感器工作,一切处理均严格按照时序。

主机发送(Tx)--复位脉冲(最短为480μs 的低电平信号)。接着主机便释放此线并进入接收方式(Rx)。总线经过4.7K的上拉电阻被拉至高电平状态。在检测到I/O 引脚上的上升沿之后,DS18B20 等待15~60μs,并且接着发送脉冲(60~240μs 的低电平信号)。然后以存在复位脉冲表示DS18B20 已经准备好发送或接收,然后给出正确的ROM 命令和存储操作命令的数据。DS18B20 通过使用时间片来读出和写入数据,时间片用于处理数据位和进行何种指定操作的命令。它有写时间片和读时间片两种:

写时间片:当主机把数据线从逻辑高电平拉至逻辑低电平时,产生写时间片。有两种类型的写时间片:写1 时间片和写0 时间片。所有时间片必须有60 微秒的持续期,在各写周期之间必须有最短为1微秒的恢复时间.

读时间片:从DS18B20 读数据时,使用读时间片。当主机把数据线从逻辑高电平拉至逻辑低电平时产生读时间片。数据线在逻辑低电平必须保持至少1 微秒;来自DS18B20 的输出数据在时间下降沿之后的15 微秒内有效。为了读出从读时间片开始算起15微秒的状态,主机必须停止把引脚驱动拉至低电平。在时间片结束时,I/O 引脚经过外部拉电阻拉回高电平,所有读时间片的最短持续期为60 微秒,包括两个读周期间至少1μs 的恢复时间。

一旦主机检测到DS18B20 的存在,它便可以发送一个器件ROM 操作命令。所有ROM 操作命令均为8位长。

所有的串行通讯,读写每一个bit 位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的DS18B20 芯片来说,访问每个器件都要遵守下列命令序列:首先是初始化;其次执行ROM 命令;最后就是执行功能命令(ROM 命令和功能命令后面以表格形式给出)。如果出现序列混乱,则单总线器件不会响应主机。当然,搜索ROM命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。

17

基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机,且准备就绪。

在主机检测到应答脉冲后,就可以发出ROM 命令。这些命令与各个从机设备的唯一64 位ROM 代码相关。在主机发出ROM命令,以访问某个指定的DS18B20,接着就可以发出DS18B20支持的某个功能命令。这些命令允许主机写入或读出DS18B20便笺式RAM、启动温度转换。软件实现DS18B20的工作严格遵守单总线协议:

(1)主机首先发出一个复位脉冲,信号线上的DS18B20 器件被复位。

(2)接着主机发送ROM命令,程序开始读取单个在线的芯片ROM编码并保存在单片机数据存储器中,把用到的DS18B20 的ROM 编码离线读出,最后用一个二维数组保存ROM 编码,数据保存在X25043中。

(3)系统工作时,把读取了编码的DS18B20 挂在总线上。发温度转换命令,再总线复位。

(4)然后就可以从刚才的二维数组匹配在线的温度传感器,随后发温度读取命令就可以获得对应的度值了。

在主机初始化过程,主机通过拉低单总线至少480us,来产生复位脉冲。接着,主机释放总线,并进入接收模式。当总线被释放后,上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时15~60us,接着通过拉低总线60~240us,以产生应答脉冲。

写时序均起始于主机拉低总线,产生写1 时序的方式:主机在拉低总线后,接着必须在15us之内释放总线。产生写0 时序的方式:在主机拉低总线后,只需在整个时序期间保持低电平即可(至少60us)。在写字节程序中的写一个bit 位的时候,没有按照通常的分别写0时序和写1 时序,而是把两者结合起来,当主机拉低总线后在15us 之内将要写的位c 给DO:如果c 是高电平满足15us 内释放总线的要求,如果c是低电平,则DO=c这条语句仍然是把总线拉在低电平,最后都通过延时58us 完成一个写时序(写时序0或写时序1)过程。

写时间时序:当主机把数据从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙,写1 时间隙和写0 时间隙。所有写时间隙必须最少持续60μs,包括两个写周期至少1μs 的恢复时间。I/O线电平变低后,DS18B20 在一个15μs 到

18

60μs 的窗口内对I/O 线采样。如果线上事高电平,就是写1,如果是低电平,就是写0。主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15μs 内允许数据线拉到高电平。主机要生成一个写0 时间隙,必须把数据线拉到低电平并保存60μs。

每个读时隙都由主机发起,至少拉低总线1us,在主机发起读时序之后,单总线器件才开始在总线上发送0 或1。所有读时序至少需要60us。

读时间时序:当从DS18B20 读数据时,主机生成读时间隙。当主机把数据从高电平拉到低电平时,写时间隙开始,数据线必须保持至少1μs;从DS18B20输出的数据在读时间隙的下降沿出现后15μs 内有效。

因此,主机在读时间隙开始后必须把I/O 脚驱动拉为的电平保持15μs,以读取I/O 脚状态。在读时间隙的结尾,I/O 引脚将被外部上拉电阻拉到高电平。所有读时间隙必须最少60μs,包括两个读周期至少1μs的恢复时间。

复位时序:复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60 微秒左右,后发出60~240 微秒的存在低脉冲,主CPU 收到此信号表示复位成功。

5.4 温度报警电路

本设计采软件处理报警,利用有源蜂鸣器进行报警输出,采用直流供电。当所测温度超过获低于所预设的温度时,数据口相应拉高电平,报警输出。(也可采用发光二级管报警电路,如过需要报警,则只需将相应位置1,当参数判断完毕后,再看报警模型单元ALARM 的内容是否与预设一样,如不一样,则发光报警)报警电路硬件连接见图 5.10。

+5v

R7 sperker 1K GND

19

图 5.10蜂鸣器电路连接图

20

第6章 软件设计

6.1 概述

整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。

6.2 主程序模块

主程序需要调用4 个子程序,分别为数码管显示程序,温度测试及处理子程序,报警子程序,中断设定子程序。各模块程序功能如下:

●数码管显示程序:向数码的显示送数,控制系统的显示部分。

●温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。 ●报警子程序:进行温度上下限判断及报警输出。 ●中断设定程序:实现设定上下限报警功能。

21


数字显示温度计的设计与研究论文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:[王文珂]导航考研英语写作讲义

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: