温度采集报警系统_第1页
温度采集报警系统_第2页
温度采集报警系统_第3页
温度采集报警系统_第4页
温度采集报警系统_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕毕业业设设计计(论论文文) 题题 目目: 温度采集报警系统 英文题目英文题目: 学生姓名学生姓名: 班班 级级: 指导教师指导教师: 专专 业业: 自动化 二二零零 06 年年 06 月月 摘要摘要 该系统主要叙述了一种运用 1wire 结构的数字温度传感器 ds18b20 设计 温度采集报警系统的设计方案。 该系统由硬件和软件两部分组成,硬件部分。包括以单片机为主控的电路 模块,以 ds18b20 为主的传感器采集模块,报警模块,键盘输入模块和显示输 出模块。通过单片机对温度传感器的读取,实时采集数据,从而来监控环境的 温度,并根据实际的需要来设定高低温界限来实现高温和低温报警。该系统与

2、以往的温度采集报警系统不同,因为它采用了新一代的一线口温度传感器 ds18b20,独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系 统的构建引入全新概念,给人们带来了更方便控制,更利于人们的使用。它和 单片机的连接的硬件电路更简单,实时性良好,有良好的人机界面可以应用在 药液发酵控制、大棚种植、食品保鲜等控制系统中。 关键词关键词: 1-wire bus;ds18b20;单片机 abstractabstract this system is a design about the application of the 1-wire digital temperature sensor

3、ds18b20. that system is constitute by the hardware and software two parts。include the electric circuit mold piece that controls for the lord with a machine, regard ds18b20 as principle of spread the feeling machine to collect the mold piece, report to the police the mold piece, the keyboard importat

4、ion mold piece and show the exportation mold piece. the environmental temperature is controlled by gathering the temperature data through the microprocessor in real time. and it sends a warning signal of lower or higher temperature according to the virtual situation.that system collects with former

5、temperature to report to the police the system dissimilarity, because it adopts a temperature of the new generation to spread the feeling machine ds18b20, special and the characteristics of the economy, use door can easily the set sets up to spread the feeling machine network, in order to measure th

6、e system to set up to lead into the all new concept, brought the more convenient control to the people, more benefit in the peoples usage. the scheme could have application in the liquid medicine ferment control 、shed planting and food fresh control systems. keywordskeywords 1-wire bus;ds18b20;micro

7、processor 目目 录录 绪论.1 1ds18b20 的介绍 .2 11 ds18b20 的内部结构.2 1.2 ds18b20 的温度转化.3 1.3 ds18b20 的存储器.4 1.3.1 ds18b20 的暂存存储器.4 1.3.2 ds18b20 的配置寄存器.5 1.4 ds18b20 的操作命令.5 1.4.1 ds18b20 的 rom 命令.5 1.4.2 ds18b20 的功能命令.6 1.5 ds18b20 的读写时序.7 1.5.1 ds18b20 的初始化时序.7 1.5.2 ds18b20 的写时序.8 1.5.3 ds18b20 的读时序.8 1.6 ds1

8、8b20 的供电模式.9 1.7 ds18b20 使用中注意事项.9 2. 硬件设计.10 2.1 最小系统板块 .10 211 at89c51 简介.11 212 复位电路及晶振电路简介 .13 2.2 温度传感器 .14 2.3 串口显示电路 .14 231 74ls164 简介.14 232 串口显示电路 .15 2.4 扩展部分 .15 2.4.1 4*4 按键电路.16 3. 软件设计.18 3.1 软件框图 .18 3.2 ds18b20 的控制程序.18 3.2.1 ds18b20 的初始化程序.18 3.2.2 ds18b20 的单字节的写和读子程序.19 3.2.3 ds18

9、b20 的分辨率设置子程序.21 3.3 系统的程序设计 .22 331 主程序分段程序 .22 总结.35 致谢.35 参考文献.36 附录.36 绪论绪论 随着计算机的应用渗透到社会的各行各业,各种不同的应用层次对实现作 业的智能化,自动化和集成化提出了一定的要求。传统靠人控制的温度测控系 统,外围电路比较复杂,测量精度较低,分辨力不高,需要进行温度校准,而 且它们的体积较大,使用不够方便,更重要的是参数的整定需要有其他仪表的 参与,外界设施多,成本高,因而越来越适应不了社会的要求。在对多类型、 多通道信号同时进行检测和控制中,传统的测控系统能力有限。如何将计算机 与各种设备设施结合,简化

10、人工操作并实现自动控制,满足社会的需求,成为 一个很迫切的问题。 环境的温度、湿度、压强等都是影响工农业生产的比较重要的因素。例如, 储存粮食的仓库中的温度、湿度的正常与否将直接影响到粮食可以储存的时间 以及粮食的质量,如果仓库中的温度、湿度没有控制好就会给国家带来重大的 损失。再如,北方昼夜温差较大而且干燥,如果没有对大棚进行恒温恒湿控制 的话,在夜间温度降低或者大棚内的湿度太低,将会对大棚内的作物的生长产 生不良影响,造成作物的减产、失收。在酿造业中,环境稍微有点变化就会有 副产品制造出来,降低了产品质量,因此酵池中的温度、压强更要进行精确的 控制 如此多的环境参数的测量和控制是一项重复和

11、烦琐的工作,使用人工的方 式来进行长期的测量和控制,非常容易出现失误从而造成不必要的损失。因此 本文以温度的监测为例介绍一种使用 1-wrie 结构器件(ds18b20)的温度监控 系统。 dallas 半导体公司的数字化温度传感器 ds1820 是世界上第一片支持 “一 线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地 组建传感器网络,为测量系统的构建引入全新概念。目前智能控制系统越来越 走进人们的生活了,不管是在工用还是在民用方面都受到了人们的重视,数字 式的温度传感器 18b20 的出现,给人们带来了更方便控制,更利于人们的使用, 它和单片机的连接的硬件电路更简单,有

12、良好的人机界面,有巨大的实用价值! 通过利用 ds1820 作为温度传感器,基于单片机 at89c51 而设计的温度采集 报警系统,可以实现实时采集数据,进行对温度的测控。并可以通过键盘预设 高温和低温界限,与采集的温度进行比较而发出报警信号。此系统实时性良好, 有良好的人机界面可以应用在药液发酵控制、大棚种植、食品保鲜等控制系统 中。 1 1ds18b20ds18b20 的介绍的介绍 ds18b20 支持“一线总线”接口,测量温度范围为-55c +125c,在-10 +85c 范围内,精度为0.5c。现场温度直接以“一线总线”的数字方式传 输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温

13、度测量,如:环境 控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产 品支持 3v 5.5v 的电压范围,使系统设计更灵活、方便。而且新一代产品更 便宜,体积更小。 ds18b20 可以程序设定 9 12 位的分辨率,精度为0.5c。可选更小的 封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在 eeprom 中,掉电后依然保存。ds18b20 的性能是新一代产品中最好的!性能价 格比也非常出色!继“一线总线”的早期产品后,ds18b20 开辟了温度传感器 技术的新概念。ds18b20 使电压、特性及封装有更多的选择,让我们可以构建 适合自己的经济的测温系统

14、。1 1 11 1 ds18b20ds18b20 的内部结构的内部结构 ds18b20 的管脚排列如图 1:dq 为数字信号输入/输出端;gnd 为电源地; vdd 为外接供电电源输入端(在寄生电源接线方式时接地) 。2 图图 1 1 ds18b20ds18b20 的管脚的管脚 1 2 3 dallas ds18b20 gnd dqvdd 1 2 3 ds18b20 to-92封装底视图 ds18b20z 8脚soic封装 1 8 2 7 3 6 4 5 nc dq vdd nc nc gnd nc nc ds18b20 内部结构主要由四部分组成:64 位光刻 rom、温度传感器、非挥 发的温

15、度报警触发器 th 和 tl、配置寄存器。rom 中的 64 位序列号是出厂前被 光刻好的,它可以看作是该 ds18b20 的地址序列码,每个 ds18b20 的 64 位序列 号均不相同。64 位 rom 的排的循环冗余校验码(crc=x8x5x41)。rom 的 作用是使每一个 ds18b20 都各不相同,这样就可以实现一根总线上挂接多个 ds18b20 的目的。内部结构2如图 2。 1.21.2 ds18b20ds18b20 的温度转化的温度转化 ds18b20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用 16 位符号扩展的二进制补码读数形式提供,以 0.0625/lsb

16、 形式表达,其中 s 为 符号位。见表 1: 表表 1 1 温度的二进制补码形式温度的二进制补码形式 bit 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0 lsls bytebyte 3 2 2 2 1 2 0 2 1 2 2 2 3 2 4 2 bit 15bit 14bit 13bit 12bit 11bit 10bit 9bit 8 msms bytebytes ss ss ss ss s 6 2 5 2 4 2 这是 12 位转化后得到的 12 位数据,存储在 18b20 的两个 8 比特的 ram 中, 二进制中的前面 5 位是符号位,如果测得的温度大于

17、0,这 5 位为 0,只要将测 到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到 的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。 例如+125的数字输出为 07d0h,+25.0625的数字输出为 0191h,- 25.0625的数字输出为 ff6fh,-55的数字输出为 fc90h。3见表 2: 表表 2 2 温度的转化温度的转化 1250000 0111 1101 000007d0h 850000 0101 0101 00000550h 25.06250000 0001 1001 00010191h 10.1250000 0000 10

18、10 001000a2h 0.50000 0000 0000 10000008h 00000 0000 0000 00000000h -0.51111 1111 1111 1000ffffh -10.1251111 1111 0101 1110ff5eh -25.06251111 1110 0110 1111fe6fh -551111 1100 1001 0000fc90h 1.31.3 ds18b20ds18b20 的存储器的存储器 ds18b20 温度传感器的内部存储器包括一个高速暂存 ram 和一个非易失性 的可电擦除的 eeprom,后者存放高温度和低温度触发器 th、tl 和结构寄存

19、器。 1.3.11.3.1 ds18b20ds18b20 的暂存存储器的暂存存储器 寄存器内部字节地址 温度最低位字节0 温度最高位字节1 高温限值2 低温限值3 保留4 保留5 计数剩余值6 每度计数值7 crc 校验8 表表 3 3 ds18b20ds18b20 的暂存寄存器分布的暂存寄存器分布 暂存存储器包含了 8 个连续字节,前两个字节是测得的温度信息,第一个 字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字 节是 th、tl 的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字 节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第 九个字节是

20、冗余检验字节。见表 3。 1.3.21.3.2 ds18b20ds18b20 的配置寄存器的配置寄存器 该字节的分布见表 4。 表表 4 4 ds18b20ds18b20 的配置寄存器的配置寄存器 tmr1r211111 低五位一直都是 1 ,tm 是测试模式位,用于设置 ds18b20 在工作模式还是 在测试模式。在 ds18b20 出厂时该位被设置为 0,一般不要去改动。r1 和 r0 用 来设置分辨率,如表 54所示:(ds18b20 出厂时被设置为 12 位) 表表 5 5 ds18b20ds18b20 的配置寄存器的配置寄存器分辨率的设置分辨率的设置 r1r0分辨率温度最大转化时间

21、009 位93.75ms 0110 位187.5ms 1011 位375ms 1112 位750ms 1.41.4 ds18b20ds18b20 的操作命令的操作命令 根据 ds18b20 的通讯协议,主机控制 ds18b20 完成温度转换必须经过三个步 骤:每一次读写之前都要对 ds18b20 进行复位,复位成功后发送一条 rom 指令, 最后发送 ram 指令,这样才能对 ds18b20 进行预定的操作。复位要求主 cpu 将 数据线下拉 500 微秒,然后释放,ds18b20 收到信号后等待 1660 微秒左右, 后发出 60240 微秒的存在低脉冲,主 cpu 收到此信号表示复位成功。

22、 1.4.11.4.1 ds18b20ds18b20 的的 romrom 命令命令 在进行完初始化命令之后,主机就可以通过发出rom命令对1-wire器件进行 操作了。1-wire器件的rom命令包括:搜索命令(f0) 、读rom命令(33) 、跳跃 rom命令(cc) 、匹配rom命令(55) 、报警搜索命令(ec)等,如表6所示。不同 的1-wire器件会稍微有所不同。 表表6 6 ds18b20ds18b20的的romrom指令指令 指令约定代码功能 读 rom33h读 18b20 的编码(即读 64 位地址) 符合 rom55h 发出此命令之后,接着发出 64 位 rom 编码,访问单

23、线 总线与读编码相应的 ds18b20,使之做出响应,该为 下一步对 ds18b20 进行操作作好准备 搜索 rom0f0h 用与确定挂在同一总线上 ds18b20 的个数和识别 64 位 地址,为操作各器件做好准备。 跳过 ram0cch 忽略 64 位 rom 地址,直接向 ds18b20 发温度转化命令, 适用单片机工作 告警搜索命令0ech 执行后,只有温度超过设定值上限或下限时,片子才 做出响应 对于多节点的系统,在对1-wire器件进行操作之前必须要对总线上所有的 器件进行搜索,读出它们的64位的id码。有了这个64位的id码才能够对不同的 器件进行操作。由于1-wire器件的id

24、码是刻在芯片内部的,用眼睛是无法看出 来的,因此主机必须通过某种合适的算法把64位的id码给读出来。这个算法实 际上是一个“二叉树”算法。在得到了器件的64位id码后就可以通过匹配命令 (55)后面跟随的64位id码来选择总线上相应器件进行操作,而总线上其他的 器件则不会做出响应。 对于单节点的系统,可以通过读rom命令(33)把1-wire器件的64位id码给 读出来。如果在多节点的系统中使用该命令则会由于所有的器件都响应这个命 令而发生数据冲突。其实在单节点的系统中可以使用跳跃rom命令(cc)而不用 通过匹配rom命令(55)写入64位id码,直接对总线上的器件进行操作。5 1.4.21

25、.4.2 ds18b20ds18b20 的功能命令的功能命令 不同的 1-wire 器件的功能命令是不同的。在使用时应注意以下几种情况: (1)在温度转换和复制暂存器数据至eeprom期间,主机必须在单总线上允许 强上拉。并且在此期间,总线上不能进行其它数据传输; (2)通过发出复位脉冲,主机能够在任何时候中断数据传输; 写“0”时间片 60tx“0”120us 恢复 1us 写”1“时间片 ds18b20采样 min typ max 15us 15us30us ds18b20采样 min typ max 15us 15us30us 1us (3)在复位脉冲发出前,必须写入全部的三个字节 ds

26、18b20 的功能命令和使用方法见表 76: 表表 7 7 ds18b20ds18b20 的功能命令字的功能命令字 指令约定代码功能 温度变换44h 启动 ds18b20 进行温度转换,转换时间最长为 500ms, 典型值为 200ms,结果存于内部 ram 中 读暂存器0beh读内部 ram9 字节内容 写暂存器4eh 发出向内部 ram 的第 3、4 字节,写上、下限温度数据 命令,紧跟着该命令之后,是传送两字节的数据 重调 2 e pram0b8h将中的内容复制到 ram 中的第 3、4 字节 2 e pram 复制暂存器48h将 ram 中第 3、4 字节的内容复制到中 2 e pra

27、m 读供电方式0b4h 读 ds18b20 的供电模式,寄生提供时 ds18b20 发送 0, 外接电源供电 ds18b20 发送 1 1.51.5 ds18b20ds18b20 的读写时序的读写时序 ds18b20的一线工作协议流程是:初始化rom操作指令存储器操作指令 数据传输。其工作时序包括初始化时序、写时序和读时序,它的读写分4种类 型:分别是写1、写0、读1、读0。 1.5.11.5.1 ds18b20ds18b20 的初始化时序的初始化时序 对1-wire器件的所有操作都是从初始化开始的,初始化过程由主机的复位 脉冲和1-wire器件的应答脉冲组成。对1-wire器件的复位脉冲实际

28、上是主机通 过拉低总线来实现的,主机通过拉低总线480um以后再把总线拉高使总线上所有 1-wire器件复位,总线上1-wire器件接到复位脉冲后便通过拉低总线告诉主机 1-wire器件已经准备就绪。7如图3所示: 主机发复位脉冲 480tx“0”960us 主机接收存在信号至少480us 15-60us 等待 ds18b20发脉冲 60-240us vcc gnd 图图3 3 ds18b20ds18b20的初始化时序的初始化时序 1.5.21.5.2 ds18b20ds18b20 的写时序的写时序 写时序起始于单片机拉低总线。产生写1时序的方式:单片机在拉低总线后, 接着必须在15us之内释

29、放总线,由5k上拉电阻将总线拉至高电平;而产生写0时 序的方式:在单片机拉低总线后,只需在整个时序期间保持低电平即可(至少 60us)。在写时序起始后15-60us期间,单总线器件采样总线电平状态。如果在 此期间采样为高电平,则逻辑1被写入该器件;如果为0则写入逻辑0。具体情况 如图47所示: 图图4 4 ds18b20ds18b20的写时序的写时序 1.5.31.5.3 ds18b20ds18b20 的读时序的读时序 单总线器件仅在单片机发出读时序时,才向主机传输数据,所以,在主机 发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时 序至少需要60us,且在两次独立的读时序

30、之间至少需要1us的恢复时间。每个读 时序都由主机发起至少拉低总线1us。在主机发起读时序之后,单总线器件才开 始在总线上发送0或1。若从机发送1,则保持总线为高电平;若发送0,则拉低 总线。当发送0时,从机在该时序结束后释放总线,由上拉电阻将总线拉回至空 闲高电平状态。从机发出的数据在起始时序之后,保持有效时间15us,因而, 主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。 如图57所示: 图图5 5 ds18b20ds18b20的读时序的读时序 主机读“0”时间片主机读“1”时间片1us 总线采样总线采样 15us15us15us30us 1us vcc 1-w

31、ire bus gnd mcs-51 p1.0 +3v-+5.5v +3v-+5.5v ds18b20 gndvdd i/o 4.7k mcs-51 p1.0 +3v-+5.5v ds18b20 vdd 外接电源+3v-+5.5v gnd i/o 外接其他的一线装置 4.7k 1.61.6 ds18b20ds18b20 的供电模式的供电模式 以mcs51系列单片机为例,画出了ds18b20与微处理器的典型连接。图 6(a)中ds18b20采用寄生电源方式,其vdd和gnd端均接地,图6(b)中 ds18b20采用外接电源方式,其vdd端用3v5.5v电源供电8。 (a a)寄生电源供电方式)寄

32、生电源供电方式 (b b)外接电源供电方式)外接电源供电方式 图图6 6 ds18b20ds18b20的供电方式的供电方式 1.71.7 ds18b20ds18b20 使用中注意事项使用中注意事项 ds18b20 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等 优点,但在实际应用中也应注意以下几方面的问题: (1)较小的硬件开销需要相对复杂的软件进行补偿,由于 ds1820 与微处理 器间采用串行数据传送,因此,在对 ds18b20 进行读写编程时,必须严格的保 证读写时序,否则将无法读取测温结果。在使用 pl/m、c 等高级语言进行系统 程序设计时,对 ds1820 操作部分最好采

33、用汇编语言实现。 (2)在 ds1820 的有关资料中均未提及单总线上所挂 ds18b20 数量问题,容 易使人误认为可以挂任意多个 ds18b20,在实际应用中并非如此。当单总线上 所挂 ds18b20 超过 8 个时,就需要解决微处理器的总线驱动问题,这一点在进 行多点测温系统设计时要加以注意。 (3)连接 ds18b20 的总线电缆是有长度限制的。试验中,当采用普通信号电 缆传输长度超过 50m 时,读取的测温数据将发生错误。当将总线电缆改为双绞 线带屏蔽电缆时,正常通讯距离可达 150m,当采用每米绞合次数更多的双绞线 带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容

34、使 信号波形产生畸变造成的。因此,在用 ds18b20 进行长距离测温系统设计时要 充分考虑总线分布电容和阻抗匹配问题。 (4)在ds18b20测温程序设计中,向ds18b20发出温度转换命令后,程序总要 等待ds18b20的返回信号,一旦某个ds18b20接触不好或断线,当程序读该 ds18b20时,将没有返回信号,程序进入死循环。9 2.2. 硬件设计硬件设计 利用ds18b20做的温度控制器的硬件电路很简单,它大大的简化了设计电路, 节约了成本。主要是由51最小系统板、按键电路、显示电路、温度传感器、报 警电路等组成。如图7所示: 图图7 7 硬件框图硬件框图 2.12.1 最小系统板最

35、小系统板块块 所谓的51最小系统板就是保证51单片机能正常工作的最基本的电路,它们 主要就是晶振电路和复位电路。(如图8所示) 图图8 8 5151最小系统板最小系统板 2 21 11 1 at89c51at89c51 简介简介 我选用的是at89c51微处理器。at89c51是一种带4k字节闪烁可编程可擦 除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器。该器件采用atmel高密度非 易失存储器制造技术制造,与工业标准的mcs-51 指令集和输出管脚相兼容。 由于将多功能8位cpu

36、和闪烁存储器组合在单个芯片中,at89c51是一种高效微 控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 其引脚定 义如下图: at89c51at89c51的引脚定义的引脚定义 管脚说明: vcc:供电电压。 gnd:接地。 p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当 p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器, 它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口, 当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口

37、缓冲器能接收 输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外 部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校 验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输 出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输 入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部 上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取 时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对 外部八位地址数据存储器

38、进行读写时,p2口输出其特殊功能寄存器的内容。p2 口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门 电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入, 由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些特殊功能口,如下表所示: p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断0) p3.3 /int1(外部中断1) p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入)

39、 p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电 平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址 的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以 不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对 外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale

40、只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如 果微处理器在外部执行状态ale禁止,置位无效。 psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信 号将不出现。 ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h- ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为 reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引 脚也用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入

41、及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 振荡器特性: xtal1和xtal2分别为反向放大器的输入和输出。该反向放大器可以配置为 片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件, xtal2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部 时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 芯片擦除: 整个perom阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持 ale管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在 任何非空存储字节被重复编程以前,该操作必须被执行。此外,at89c51设有

42、稳 态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。 在闲置模式下,cpu停止工作。但ram,定时器,计数器,串口和中断系统仍在 工作。在掉电模式下,保存ram的内容并且冻结振荡器,禁止所用其他芯片功能, 直到下一个硬件复位为止。 212 复位电路及晶振电路简介 在这里我是用最简单的上电复位电路,它的抗干扰性能不是很好,但是它 是最简单、最常用的一种复位电路,所谓上电复位,是指计算机上电瞬间,要 在rst引脚上出现宽度大10ms的正脉冲,使计算机进入复位状态。 晶振是采用最常用的12m的10。在石英晶体两个管脚加交变电场时,它将 会产生一定频率的机械变形,而这种机械振动又

43、会产生交变电场,称为压电效 应。当交变电场的频率为某一特定值时,振幅骤然增大,产生共振,称之为压 电振荡。这一特定频率就是石英晶体的固有频率。石英晶体的谐振频率由石英 晶体的结晶方向和外形尺寸所决定,具有极高的频率稳定性。 2.22.2 温度传感器温度传感器 在该系统中,用外接5v电源的方式给ds18b20供电,它的数据线接到了51单 片机p1.0口,直接和单片机通信。但是根据ds18b20的特性,在它的dq端要接一 个上拉电阻。如图96所示 图图9 9 温度传感器温度传感器 2.32.3 串口显示电路串口显示电路 2 23 31 1 74ls16474ls164 简介简介 74ls164是一

44、个串行输入并行输出的移位寄存器。并带有清除端。 其中; q1q8 并行输出端 。 a,b串行输入端。 mr 清除端, 为0时,输出清零。 cp 时钟输入端。74ls164为普通的ttl电路,价格低,并且键值读入、显示驱动均 可使用该芯片完成。74ls164输出(q0-q7)作为led的段驱动时,只能连接共阳 数码管。多片74ls164连接时,低位的q7要与高位的a、b端相连,这样才能实现 多片移位。 74ls16474ls164引脚定义引脚定义 74ls16474ls164逻辑表定义逻辑表定义 232 串口显示电路 单片机并行i/o口数量总是有限的,有时并行口需作其他更重要的用途,一 般也不会

45、用数量众多的并行i/o口专门用来驱动显示电路,能否用89c51的串行 通信口加上少量i/o及扩展芯片用于显示电路呢?答案是肯定的。 89c51的串行通信口是一个功能强大的通信口,而且是相当好用的通信口, 用于显示驱动电路再合适不过了,下面我就根据这种需要设计一个用两个串行 通信口线加上两根普通i/o口,设计一个4位led显示电路。当然只要再加上两根 i/o口线即可轻易实现8位led的显示电路。在显示电路上,我选择了用廉价易得 的74ls164来组成的串口显示,它同动态显示相比,大大的节省了单片机的i/o 口,节省了资源,便于系统的扩展。 图图1010 串口显示电路串口显示电路 应用74ls16

46、4时,a,b两端并接后接受单片机送来的串行数据,在串行输入 的整个过程中,并行输出端的状态将不断变化。74ls164清除端平时应置高电平, 串行仍在时钟脉冲上升沿时实现。 2.42.4 扩展部分扩展部分 现在的智能控制越来越要求具有良好的人机界面,需要和人直接的对话, 能提供给人们有用、易懂的信息。因此在该系统上增加了按键电路和报警电路。 2.4.1 4*4 按键电路 图图 1111 4*44*4 按键电路按键电路 在微型机系统中,键盘是一种最常用的外设,它由多个开关组合而成。当 在键盘上压一个键是,等于在压下一个开关。根据功能的需要,我选择了 4*4 的矩阵键盘,分别定义它们为 0、1、2、

47、3、4、5、6、7、8、9 十个数字键和 +(上限报警温度设置键) 、-(下限报警温度设置键) 、#(确定键)三个功能键。 每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。 行线接 p2 口的低四位,列线接入 p2 口的高四位。矩阵的行线和列线分别通过 两并行接口和 cpu 通信。每个按键的状态同样需变成数字量“0”和“1” ,开 关的一端(列线)通过电阻接 vcc,而接地是通过程序输出数字“0”实现的。 键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什 么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码, 使按键逐行动态接地,另一个并行口

48、输入按键状态,由行扫描值和回馈信号共 同形成键编码而识别按键,通过软件查表,查出该键的功能。在进入上限报警 温度设置或者是下限报警温度设置模式时,用户可以通过键盘输入 0 99的任意温度上限值和下限值。8如图 11 所示。 图 12 报警电路 该系统的主要功能就是监测环境的实时温度,我们不可能一天都去看着显 示,因此当环境温度超过我们所设定值的时候就要一个报警提醒,我们通常都 采用声光报警,在这里只用了一个红色的 led 和一个蓝色的 led 来模拟高温和 低温报警。8如图 12 所示。 (图 13 为系统的整体电路图) 图 13 系统整体电路图 3.3. 软件设计软件设计 3.13.1 软件

49、框图软件框图 该系统的程序框图如图 14 所 示: 对与该系统的程序来说,要比 其他的温度传感器要复杂一些,主 要就是对 ds18b20 的控制。下面分 别来介绍一下: 3.23.2 ds18b20ds18b20 的控制程序的控制程序 3.2.13.2.1 ds18b20ds18b20 的初始化程序的初始化程序 对于 ds18b20 来说,它的初 始化是很重要的,没有初始化,它 根本就不能工作。初始化过程由主 机的复位脉冲和 1-wire 器件的应 答脉冲组成。对 1-wire 器件的复 位脉冲实际上是主机通过拉低总线 来实现的,主机通过拉低总线 480um 以后再把总线拉高使总线上 所有 1

50、-wire 器件复位,总线上 1- wire 器件接到复位脉冲后便通过 拉低总线告诉主机 1-wire 器件已 经准备就绪。5下面是它的初始化 子程序: init_1820: setb p2.2 nop clr p2.2 ;主机发出延时 537 微秒的复位低脉冲 mov r1,#3 tsr1:mov r0,#107 djnz r0,$ djnz r1,tsr1 setb p2.2 ;然后拉高数据线 nop nop nop mov r0,#25h tsr2: jnb p2.2,tsr3 ;等待 ds18b20 回应 djnz r0,tsr2 ljmp tsr4 ; 延时 tsr3: setb f

51、lag1 ; 置标志位,表示 ds1820 存在 clr p1.7 ;检查到 ds18b20 就点亮 p1.7led ljmp tsr5 tsr4: clr flag1 ; 清标志位,表示 ds1820 不存在 clr p1.1 ljmp tsr7 tsr5: mov r0,#117 tsr6: djnz r0,tsr6 ; 时序要求延时一段时间 tsr7: setb p2.2 ret 3.2.23.2.2 ds18b20ds18b20 的单字节的写和读子程序的单字节的写和读子程序 写时序起始于单片机拉低总线。产生写 1 时序的方式:单片机在拉低总线 后,接着必须在 15us 之内释放总线,由

52、 5k 上拉电阻将总线拉至高电平;而产 生写 0 时序的方式:在单片机拉低总线后,只需在整个时序期间保持低电平即 可(至少 60us)。在写时序起始后 15-60us 期间,单总线器件采样总线电平状 态。如果在此期间采样为高电平,则逻辑 1 被写入该器件;如果为 0 则写入逻 辑 0。5 r write_1820: mov r2,#8 ;一共 8 位数据 clr c wr1: clr p2.2 mov r3,#5 djnz r3,$ rrc a mov p2.2,c mov r3,#21 djnz r3,$ setb p2.2 nop djnz r2,wr1 setb p2.2 ret 单总线

53、器件仅在单片机发出读时序时,才向主机传输数据,所以,在主机 发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时 序至少需要 60us,且在两次独立的读时序之间至少需要 1us 的恢复时间。每个 读时序都由主机发起至少拉低总线 1us。在主机发起读时序之后,单总线器件 才开始在总线上发送 0 或 1。若从机发送 1,则保持总线为高电平;若发送 0, 则拉低总线。当发送 0 时,从机在该时序结束后释放总线,由上拉电阻将总线 拉回至空闲高电平状态。从机发出的数据在起始时序之后,保持有效时间 15us,因而,主机在读时序期间必须释放总线,并且在时序起始后的 15us 之内 采样总线状

54、态。 read_18200: mov r4,#2 ; 将温度高位和低位从 ds18b20 中读出 mov r1,#29h ; 低位存入 29h(temper_l),高位存入 28h(temper_h) re00: mov r2,#8 ;数据一共有 8 位 re01: clr c setb p2.2 nop nop clr p2.2 nop nop nop setb p2.2 mov r3,#9 re10: djnz r3,re10 mov c,p2.2 mov r3,#23 re20: djnz r3,re20 rrc a djnz r2,re01 mov r1,a dec r1 djnz r

55、4,re00 ret 3.2.33.2.3 ds18b20ds18b20 的分辨率设置子程序的分辨率设置子程序 分辨率的设置是配置寄存器中的 r1 和 r0 用来决定的。6 display: mov a,29h ; 将 29h 中的十六进制数转换成 10 进制 mov b,#10 ; 10 进制/10=10 进制 div ab mov b_bit,a ; 十位在 a mov a_bit,b ;个位在 b mov dptr,#numtab ;指定查表启始地址 mov r0,#4 dpl1: mov r1,#250 ;显示 1000 次 dplop: mov a,a_bit ;取个位数 movc

56、a,a+dptr ;查个位数的 7 段代码 mov p0,a ;送出个位的 7 段代码 clr p2.7 ;开个位显示 acall d1ms ;显示 1ms setb p2.7 mov a,b_bit ;取十位数 movc a,a+dptr ;查十位数的 7 段代码 mov p0,a ;送出十位的 7 段代码 clr p2.6 ;开十位显示 acall d1ms ;显示 1ms setb p2.6 djnz r1,dplop ;100 次没完循环 djnz r0,dpl1 ;4 个 100 次没完循环 ret ;1ms 延时 d1ms: mov r7,#80 djnz r7,$ ret 3.3

57、 系统的程序设计 温度主程序的主要功能是负责温度的实时显示,读出并处理温度传感器的 测量温度值,温度测量每一秒进行一次。连续读出被测温度值,并在数码管上 显示当前温度值。 3 331 主程序分段程序 main: lcall init_1820 ;调用复位 ds18b20 子程序 main1: lcall get_temper ;调用读温度子程序 lcall formula ;通过公式计算,小数点后显示两位 lcall bcd lcall display ;调用串口显示子程序 lcall delay500 ;延时 0.5 秒 lcall delay500 ;延时 0.5 秒 lcall dela

58、y500 ;延时 0.5 秒 ajmp main1 ds18b20复位初始化程序:初始化过程由主机的复位脉冲和1-wire器件的应答脉 冲组成。对1-wire器件的复位脉冲实际上是主机通过拉低总线来实现的,主机 通过拉低总线480um以后再把总线拉高使总线上所有1-wire器件复位,总线上1- wire器件接到复位脉冲后便通过拉低总线告诉主机1-wire器件已经准备就绪。 init_1820: setb wddata nop clr wddata ;主机发出延时 540 微秒的复位低脉冲 mov r0,#36 lcall delay setb wddata ;然后拉高数据线 nop nop m

59、ov r0,#36 tsr2: jnb wddata,tsr3 ;等待 ds18b20 回应 djnz r0,tsr2 ljmp tsr4 ; 延时 tsr3: setb flag1 ; 置标志位,表示 ds1820 存在 ljmp tsr5 tsr4: clr flag1 ; 清标志位,表示 ds1820 不存在 ljmp tsr7 tsr5: mov r0,#06bh tsr6: djnz r0,tsr6 ;复位成功!时序要求延时一段时间 tsr7: setb wddata ret 读出转换后的温度值:先复位 ds18b20,跳过 rom 匹配,发出温度转换命令, 等待 ad 转换结束后,

60、准备读温度前仍要先复位,跳过 rom 匹配,发出读温度命 令,最后将读出的九个字节数据保存到 60h-68h。 get_temper: setb wddata ; 定时入口 lcall init_1820 ;先复位 ds18b20 jb flag1,tss2 ret ; 判断 ds1820 是否存在?若 ds18b20 不存在则返 回 tss2: mov a,#0cch ; 跳过 rom 匹配 lcall write_1820 mov a,#44h ; 发出温度转换命令 lcall write_1820 mov r0,#50 ;等待 ad 转换结束,12 位的话 750 微秒. lcall d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论