基于单片机的论文控制毕业论文.doc_第1页
基于单片机的论文控制毕业论文.doc_第2页
基于单片机的论文控制毕业论文.doc_第3页
基于单片机的论文控制毕业论文.doc_第4页
基于单片机的论文控制毕业论文.doc_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

西安邮电学院毕业论文 2 基于单片机的论文控基于单片机的论文控 制毕业论文制毕业论文 目录 摘 要 II ABSTRACT III 引 言 I 第一章 智能温度传感器 DS18B20 2 1 1 一线总线器件工作原理 2 1 1 1 一线总线 1 Wire Bus 技术简介 2 1 1 2 一线总线工作原理 2 1 2 一线总线协议简介 3 1 3 一线总线智能温度传感器 DS18B20 5 1 3 1 DS18B20 综述 5 1 3 2 DS18B20 工作过程及时序 8 a 初始化 8 b ROM 操作命令 8 c 存储器操作命令 10 d 读 写时间片 11 1 3 3 测量温度运用 12 1 3 4 64 位 ROM 的 CRC 码 13 1 3 5 温度数据的计算处理方法 14 第二章 技术解决方案及系统的设计实现 16 2 1 现场应用分析 16 2 2 系统总体设计技术解决方案 16 2 3 系统硬件电路设计 18 2 4 软件设计 20 2 4 1 主程序 20 2 4 2 读出温度子程序 21 2 4 3 温度转换命令子程序 22 2 4 4 计算温度子程序 22 2 4 5 显示数据刷新子程序 23 2 4 6 传感器读写程序 23 第三章 调试 性能分析 26 西安邮电学院毕业论文 3 结 论 28 致 谢 29 参考文献 30 附录 程序清单 31 译 文 41 摘摘 要要 温度是一种最基本的环境参数 人们的生活与环境的温度息息相关 在工 业生产过程中需要实时测量温度 在农业生产中也离不开温度的测量 因此研 究温度的测量方法和装置具有重要的意义 测量温度的关键是温度传感器 温 度传感器的发展经历了三个发展阶段 传统的分立式温度传感器 模拟集 成温度传感器 智能集成温度传感器 目前 国际上新型温度传感器正从模 拟式向数字式 从集成化向智能化 网络化的方向飞速发展 采用理论探讨与 实际开发相结合的方法 仔细研究了美国 DALLAS 公司开发的一线总线技术及 其通信协议 本课题主要研究智能集成温度传感器 DS18B20 的结构特征及控制 方法 并对以此传感器 89C2051 单片机为控制器构成的温度采集系统 该装 置适用于人们的日常生活和工 农业生产的温度测量 并具有一定的报警功能 关键词关键词 一线总线 单片机 数字温度传感器 西安邮电学院毕业论文 4 第一章第一章 智能温度传感器智能温度传感器 DS18B20DS18B20 一线总线 1 Wire Bus 技术采用单根信号线 既传输时钟 又传输数据 且数据传输是双向的 其线路简单 硬件开销少 成本低廉 软件设计更方便 因此具有无可比拟的优势 1 11 1 一线总线器件工作原理一线总线器件工作原理 1 1 11 1 1 一线总线一线总线 1 Wire 1 Wire Bus Bus 技术简介技术简介 目前 常用的微机与外设串行总线主要有我们熟知的 I C 总线 SPI 总线 2 SCI 总线等等 其中 I C 总线是以同步串行 2 线方式进行通信 一条时钟线 一 2 条数据线 SPI 总线是以同步串行 3 线方式进行通信 一条时钟线 一条数据 输入线 一条数据输出线 SCI 总线是以异步方式进行通信 一条数据输入线 一条数据输出线 这些总线至少需要有两条或两条以上的信号线 近年来 美 国的达拉斯半导体公司 DALLAS SEMI CONDUCTOR 推出了一线总线 1 Wire Bus 技术 与上述的总线不同 它采用单根信号线 既传输时钟 又传输数据 而 且数据传输是双向的 其具有线路简单 减少硬件开销 成本低廉 便于总线 的扩展和维护等优点 一线总线适用于单个主机系统 能够控制一个或多个从机设备 主机可以 是微控制器 从机则是一线总线器件 它们之间的数据交换只通过一条信号线 当只有一个从机设备时 系统可按单节点系统操作 当有多个从机设备时 则 系统按多节点系统操作 1 1 21 1 2 一线总线工作原理一线总线工作原理 顾名思义 一线总线只有一根数据线 系统中的数据交换 控制都在这根 线上完成 设备 主机或从机 通过一个漏极开路或三态端口连至该数据线 这 样允许设备不发送数据时释放总线 以便其他设备使用 其内部等效电路如下 西安邮电学院毕业论文 5 图 2 2 所示 一线总线要求外接一个约 4 7 千欧姆的上拉电阻 这样 当总线闲置时 其状态为高电平 主机和从机之间的通信总体上说是通过以下 3 个步骤完成的 初始化 1 wire 器件 识别 1 wire 器件 交换数据 由于二者是主从结构 只 有主机呼叫从机时 从机才能应答 因此主机访问 1 wire 器件都必须严格遵循 一线总线命令序列 初始化 ROM 命令 功能命令 如果出现顺序混乱 1 wire 器件就不会响应主机 搜索 ROM 命令 报警搜索命令除外 通信信号方式要求 所有的一线总线器件要求遵循严格的通信协议 以保证数据的完整性 1 21 2 一线总线协议简介一线总线协议简介 一线总线系统网络的主机和从机之间 遵循一线总线协议进行通信 目前大多数传感器系统是采用放大 传输 数 模变换这种处理模式 这种 模式中传输的方式采用并口或采用串口 这两种方式一般要占用数根数据 控制 线 限制了单片机使用功能的扩展 一线总线协议就解决了这种问题 数字式传感器的核心之一就是采用什么 协议能最大限度的高速安全的传输数据 另外就是如何更好的节省硬件资源 一线总线协议通过一根总线实现主设备对从设备的控制 主设备往往是微控器等 一线总线器件在采用这种工作方式时就充当着从设备的作用 由于只有一根线 并且没有译码功能 所以这些器件是一线总线系统唯一的从设备 所有的数据 和命令都在这根总线上传送 数据和命令字节传送顺序是从低位到高位 为了使其它的设备也能使用这根线 一线总线协议通过一个三态门转换传 输状态 使得每一个设备在不传送数据时空出该数据线给其它设备 因为一线 总线在外部有一个上拉电阻 所以在总线空闲时是高电平 为保证信号的完整 性 一线总线协议定义了以下几种信号 复位脉冲 存在脉冲 读写 0 或 1 除 西安邮电学院毕业论文 6 存在脉冲外 其它的信号均由主设备发出 如上图 2 3 所示 RX 和 TX 分别是内部数据的发送和接收端 外界的环境 量变化引起敏感膜的变化 产生的电信号被编码成数字量 存储在专用寄存器 当中 经由 DQ 端读入到单片机当中 主设备给低电平并保持 480 us 就空出总线并进入接收模式 RX 此时上拉 电阻器使总线为高电平 即空闲状态 一旦一线总线器件检测到这一上升沿 就会等待 15 60us 并给出存在脉冲使总线保持 60 240us 的低电平 而写操作 均在读 写时隙之间进行 在每个时隙中 系统只传送一个二进制位 1 Wire 协议定义的几种信号类型 复位脉冲 应答脉冲 写 0 写 1 读 0 和读 1 时序 组成了所有总线上传输的信号 也就是说 所有的一线总线命令 序列 初始化 ROM 命令 功能命令 都是由这些基本的信号类型组成的 这些 信号 除了应答脉冲外 都是由主机发出 并且发送的所有命令和数据都是字 节的低位在前 另外 初始化时序同时包括主机发出的复位脉冲和从机发出的 应答脉冲 主机通过拉低一线总线至少 480us 以产生 TX 复位脉冲 然后主机 释放总线 并进入 Rx 接收模式 当主机释放总线时 总线由低电平跳变为高电 平时产生一个上升沿 一线总线器件检测到这上升沿后 延时 15 60us 接着 一线总线器件通过拉低总线 60 240us 以产生应答脉冲 主机接收到从机应答 脉冲后 说明有一线总线器件在线 然后主机就可以开始对从机进行 ROM 命令 和功能命令操作 综上所述 在一线总线上进行数据传输时 一线总线器件和主机之间必须 遵循严格的读时序和写 1 写 0 时序 在每一个时序中 总线只能传输一位数 据 所有的读 写时序至少需要 60us 且每两个独立的时序之间至少需要 lus 的恢复时间 读 写时序均起始于主机拉低总线 在写时序中 主机拉低总线 西安邮电学院毕业论文 7 后在 l5us 之内释放总线 向一线总线器件写 1 若主机拉低总线后 保持至少 60us 的低电平 则向一线总线器件写 0 一线总线器件仅在主机发出读时序时 才向主机传输数据 所以 当主机向一线总线器件发出读数据命令后 必须马 上产生读时序 以便一线总线器件能传输数据 在主机发出读时序之后 一线 总线器件才开始在总线上发送 0 或 1 若一线总线器件发送 1 则保持总线高电 平 若发送 0 则拉低总线 一线总线器件发送数据之后 保持有效时间 15us 因而 主机在读时序期间必须释放总线 并且必须在 15us 之内采样 从 而接收到从机发送的一位数据 1 31 3 一线总线智能温度传感器一线总线智能温度传感器 DS18B20DS18B20 1 3 11 3 1 DS18B20DS18B20 综述综述 DS18B20 是由美国 DALLAS 公司提供的一种一线总线系统的数字温度传感器 它可提供二进制 9 12 位温度信息 经过一线总线接口送入主机处理器 因此 从主机到 DS18B20 仅需一条线进行通信 DS18B20 可以采用两种方式供电 一种 是采用电源供电方式 此时 DS18B20 的脚接地 2 脚作为信号线 3 脚接电源 另一种是寄生电源供电方式 当 DS18B20 处于写存储器操作和温度 A D 转换操 作时 总线上必须有强的上拉 上拉开启时间最大为 10us 当采用寄生电源供 电方式时 VDD 和 GND 端均接地 图 1 DS18B20 实物 表 1 1 DS18B20 引脚说明表 西安邮电学院毕业论文 8 DS18B20 的测量范围从 55 到 125 分辨率可达到 0 0625 可在 1 秒 典型值 内把温度变换成数字 同时每一个 DS18B20 在出厂时已经给定了唯 一的 64 位长的序号 在一定数量范围内可将任意多个 DS18B20 连接在同一条总 线上 构成主从结构的多点测温传感器网络 该序号值存放在 DS18B20 内部的 ROM 只读存贮器 中 低 8 位是产品类型编码 DS18B20 编码均为 10H 中间 48 位是每个器件唯一的序号 高 8 位是前面 56 位的 CRC 循环冗余校验 码 如表 1 4 所示 表 1 4 64 位 ROM 码 8 位检验 CRC48 位序列号8 位工厂代码 10H MSB LSB MSB LSB MSB LSB DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性的 可电擦除的 EERAM 高速暂存的结构为 8 字节的存储器 结构如下表 2 5 表 1 5 高速暂存 RAM 结构图 TM R1R0 11 1 1 1 头 2 个字节包含测得的温度信息 第 3 和第 4 字节是 TH 和 TL 的拷贝 是易失 的 每次上电复位时被刷新 第 5 个字节为配置寄存器 它的内容用于确定温 度值的数字转换分辨率 DS18B20 工作时按此寄存器中的分辨率将温度转换为 相应精度的数值 该字节各位的定义如图 2 6 所示 低 5 位一直为 1 TM 是测 试模式位 用于设置 DS18B20 在工作模式还是在测试模式 在 DS18B20 出厂时 该位被设置为 0 用户不要去改动 R1 和 R0 决定温度转换的精度位数 即用 来设置分辨率 定义方法见下表 1 6 表 1 6 DS18B20 分辨率的定义规定 R1R0 分辨率 位温度最大转换时间 ms 00993 75 0110187 5 1011375 1112750 由表 1 6 可见 DS18B20 温度转换的时间比较长 而且设定的分辨率越高 所需要的温度数据转换时间就越长 因此 在实际应用中要将分辨率和转换时 西安邮电学院毕业论文 9 间权衡考虑 高速暂存 RAM 的第 6 7 8 字节保留未用 表现为全逻辑 1 第 9 字节读 出前面所有 8 字节的 CRC 码 可用来检验数据 从而保证通信数据的正确性 当 DS18B20 接收到温度转换命令后 开始启动转换 转换完成后的温度值 就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1 2 字节 单片机可以通过单线接口读出该数据 读数据时低位在先 高位在后 数据格 式以 0 0625 C LSB 形式表示 温度值格式如下图 1 7 所示 0 LS 字节 MS 字节 SSSSS2 6 2 5 2 4 图 1 7 温度数据值格式 表 1 8 ROM 字节 温度 LSB1 字节 温度 MSB2 字节 TH 用户字节 1 3 字节 TL 用户字节 2 4 字节 配置寄存器5 字节 保留 6 字节 保留 7 字节 保留 8 字节 CRC 9 字节 TH 用户字节 1 2 3 2 2 21 2 0 2 1 2 2 2 3 2 4 西安邮电学院毕业论文 10 TH 用户字节 2 EEROM DS18B20 完成温度转换后 就把测得的温度值与 RAM 中的 TH TL 字节内容 作比较 若 T TH 或 T TL 则将该器件内的报警标志位置位 并对主机发出 的报警搜索命令作出响应 因此 可用多只 DS18B20 同时测量温度并进行报警 搜索 在 64 位 ROM 的最高有效字节中存储有循环冗余检验码 CRC 主机根据 ROM 的前 56 位来计算 CRC 值 并和存入 DS18B20 的 CRC 值作比较 以判断主机 收到的 ROM 数据是否正确 1 3 21 3 2 DS18B20DS18B20 工作过程及时序工作过程及时序 由于 DS18B20 单线通信功能是分时完成的 它有严格的时隙概念 因此读 写时序很重要 系统对 DS18B20 的各种操作必须按协议进行 DS18B20 工作过程中的协议如下 1 初始化 2 ROM 操作命令 3 存储器操作命令 4 处理数据 下面进行详细介绍 a a 初始化初始化 一线总线上的所有处理均从初始化开始 初始化序列包括总线主机发出一 个复位脉冲 接着由从机器件向总线发出存在脉冲 具体时序图如下图 2 9 西安邮电学院毕业论文 11 b b ROMROM 操作命令操作命令 一旦总线主机检测到从属器件的存在 它便可以发出某个 ROM 操作命令 所有 ROM 操作命令均为 8 位长 这些命令列表如下表 1 10 表 1 10 ROM 操作命令 指令说明代码总线操作 READ ROM 读 ROM 33H DS18B20 发 ROM 码 MATCH ROM 匹配 ROM 55H 主机发送 ROM 码 SKIP ROM 跳过 ROM 0CCH 主机发出存储器命令 SEARCH ROM 搜索 ROM 0F0H 所有 DS18B20 发出第一位 与 ALARM SEARCH 告警搜索 0ECH DS18B20 发送 0 或 1 READ ROM 33H 这个命令允许总线控制器读到DS18B20的8位系列编码 惟一的序列号和8位CRC 码 只有在总线上存在单只DS18B20的时候才能使用这个命令 如果总线上有不 止一个从机 当所有的从机试图同时传送信号时就会发生数据冲突 漏极开路 连在一起形成相 与 的效果 MATCH ROM 55H 这个是匹配ROM命令 后跟64位ROM序列 让总线控制器在多点总线上定位一只 特定的DS18B20 只有和64位ROM序列完全匹配的DS18B20才能响应随后的德存储 器操作 所有和64位ROM序列不匹配的从机都将等待复位脉冲 这条在总线上由 单个或多个器件时都可以使用 SKIP ROM 0CCH 这条命令允许总线控制器不用提供 64 位 ROM 编码就使用存储器操作命令 在单 点总线情况下 可以节省时间 如果总线上不止一个从机 在 SKIP ROM 命令之 后跟着发一条读命令 由于多个从机同时传送信号 总线上就会发生数据冲突 漏极开路下拉效果相当于相 与 SEARCH ROM 0F0H 当一个系统初次开启时 总线控制器可能并不知道单线总线上有多少器件或它 们的64位ROM编码 搜索ROM命令允许总线控制器用排除法识别总线上的所有从 机的64位编码 西安邮电学院毕业论文 12 ALARM SEARCH 0ECH 这条命令的流程和SEARCH ROM相同 然而 只有在最近一次的测温后遇到符合 报警条件的情况 DS18B20才会响应这条命令 报警条件定义为温度高于TH或低 于TL 只要DS18B20不掉电 报警状态将一直保持 直到再一次测得的温度值达 不到报警条件 DS1820 的 ROM 操作命令设置 不但能够帮助实现 一主多从 的温度检测 网络 同时由于 SKIP ROM 命令的设置 在加快系统运行周期方面也具有独特的 优势 主机在进入操作程序前必须接入 DS18B20 用 ROM 命令建立与目标 DS18B20 的通信 当主机需要对众多在线 DS18B20 中的某一个进行操作时 首先要发出 匹配 ROM 命令 55H 紧接着主机提供 位序列 包括该 DS18B20 的 48 位序列号 之后的操作就是只针对该 DS18B20 的了 而所谓 SKIP ROM 命令 包括紧随其后 的寄存器操作是对所有总线上的 DS18B20 的 程序中如果先有 SKIP ROM 命令 然后执行 CONVERT T 命令 即是启动所有 DS18B20 进行温度变换 之后通过 MATCH ROM 再逐一地读回每个 DS18B20 的温 度 数据 在 DS18B20 组成的测温系统中 主机在发出 SKIP ROM 命令之后再发出统 一的温度转换启动码 44H 就可以实现所有 DS18B20 的同时进行温度转换 再 经过 1 2s 后 就能用很少的时间去逐一读取 这种方式使得系统时运行周期小 于传统方式 传统方式中由于采取公用的放大电路和 A D 转换器 只能让传感器的测量 结果逐一转换 因此 当通道数越多 这种省时的优势就越明显 c c 存储器操作命令存储器操作命令 表 1 11 存储器操作命令 指令说明代码总线操作 CONVERT T 启动温度转换 44H 总线释放等待 1 2 秒 READ SCRATCHPAD 从暂存存储器读字节 BEH DS18B20 发出存储器内数据 WRITE SCRATCHPAD 写字节入 TH TL 4EH 主机向存储器发送数据 COPY SCRATCHPAD 存储器内容复制入 E2 48H DS18B20 复制忙 状态 RECALL E2 E2内容重调入存储器 B8H DS18B20 读数据忙 状态 READ POWER SUPPLY 检测 DS18B20 供电方 式 B4H 读电源 CONVERT T 44H 西安邮电学院毕业论文 13 这条命令启动一次温度转换而无需其他数据 温度转换命令被执行 而后 DS18B20保持等待状态 如果总线控制器在这条命令之后跟着发出时间间隙 而 DS18B20又忙于做时间转换的话 DS18B20将在总线上输出0 若温度转换完成 则输出1 如果使用寄生电源 总线控制器必须在发出这条命令后立即启动强上 拉 并保持500ms以上时间 READ SCRATCHPAD BEH 这个命令读取暂存器scratchpad 的内容 读取将从第一个字节开始 一直进行 下去 直到第九 CRC 字节读完 如果不想读完所有的字节 控制器可以在任 何时间发出复位命令来中止读取 WRITE SCRATCHPAD 4EH 这个命令向DS18B20的暂存器TH和Tl中写入数据 可以在任何时刻发出复位命令 来中止写入 COPY SCRATCHPAD 48H 这个命令把暂存器的内容拷贝到DS18B20的E2ROM存储器里 即把温度报警触发 字节存入非易失性存储器里 如果总线控制器在这条命令之后跟着发出读时间 隙 而DS18B20又忙于把暂存器拷贝到E2存储器 DS18B20就会输出一个0 如果 拷贝结束的话 DS18B20则输出1 如果使用寄生电源 总线控制器必须在这条 命令发出后立即启动强上拉并最少保持10ms RECALL E 0B8H 2 这条命令把报警触发器的值拷贝回暂存器 这种拷贝操作在DS18B20上电时自动 执行 这样器件一上电暂存器马上就存在有效的数据了 若在这条命令发出之 后发出读数据隙 器件会输出温度转换忙的标识 0为忙 1为完成 READ POWER SUPPLY 0B4H 若把这条命令发给DS18B20后发出读时间隙 器件会返回它的电源模式 0为寄 生电源 1为外部电源 d d 读读 写时间片写时间片 系统通过使用时间片 time slots 来读出和写入 DS18B20 的数据 时间片 用于处理数据位和指定进行何种操作的命令字 时间片可分为读时间片和写时 间片 西安邮电学院毕业论文 14 写时间片 WRITE TIME SLOTS 当主机总线自起始时刻拉至低电平时 就产生写时间隙 从起始时刻开始 15us 之内 应将所需传送的位送到总线上 DS18B20 在起始时刻后 15 60us 间 对总线采样 若低电平写入的位是 0 若高电平写入的位是 1 两个时间片 的时间间隙应大于 lus 读时间片 READ TIME SLOTS 当主机总线自起始时刻拉至低电平时 总线只须保持低电平 15us 之后 释 放外部拉高产生读时间隙 主机采样应在 1 15us 以内 在初始时刻后的 15us 之内必须完成读位 并在采样完成后的 60 120us 内释放总线 1 3 31 3 3 测量温度运用测量温度运用 DS18B20 通过使用在板 on board 温度测量专利技术来测量温度 温度测 量电路的方框图见下图 1 14 所示 图 1 14 测量温度电路原理图 图中低温度系数晶振的振荡频率受温度的影响很小 用于产生固定频率的 脉冲信号送给减法计数器 1 高温度系数晶振随温度变化其振荡频率明显改变 所产生的信号作为减法计数器 2 的脉冲输入 图中还隐含着计数门 当计数门 打开时 DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数 进而完成 温度测量 计数门的开启时间由高温度系数振荡器来决定 每次测量前 首先 将 55 C 所对应的一个基数分别置入减法计数器 1 温度寄存器中 减法计数器 0 1 和温度寄存器被预置在 55 C 所对应的一个基数值 0 西安邮电学院毕业论文 15 减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数 当减法计 数器 1 的预置值减到 0 时 温度寄存器的值将加 1 减法计数器 1 的预置值将 重新被装入 减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计 数 如此循环直到减法计数器 2 计数到 0 时 停止温度寄存器的累加 此时温 度寄存器中的数值就是所测温度值 图中的斜率累加器用于补偿和修正测温过 程中的非线形性 其输出用于修正减法计数器的预置值 只要计数门仍未关闭 就重复上述过程 直到温度寄存器值达到被测温度值 此计算在 DS18B20 内部完成 以提供 0 0625 的分辨率 温度读数以 16 位带符号扩展的二进制补码读数形式提供 表 1 16 DS18B20 温度与测得值对应表 温度 C 0 二进制表示十六进制表示 1250000 0111 1101 000007D0H 85 0000 0101 0101 00000550H 25 06250000 0001 1001 00010191H 10 1250000 0000 1010 0010 00A2H 0 50000 0000 0000 1000 0008H 00000 0000 0000 00000000H 0 5 1111 1111 1111 1000FFF8H 10 1251111 1111 0101 1110FF5EH 25 06251111 1110 0110 1111 FE6FH 55 1111 1100 1001 0000 FC90H 温度数据在单线接口上串行发送 DS18B20 可以以 0 5 的增量值在 55 125 C 的范围内测量温度 0 从 DS18B20 传送出的温度数据就是下面公式中的 TEMP READ 值 公式中的 COUNT REMAIN 是门开通期停止之后计数剩余 COUNT PER C 是在该温度处每 一摄氏度的计数个数 用户可以使用下式计算实际温度 西安邮电学院毕业论文 16 1 3 41 3 4 6464 位位 ROMROM 的的 CRCCRC 码码 如下图 2 15 所示 每一 DS18B20 的 ROM 编码最后的 8 位是开始 56 位 CRC 总线上的主机可以根据 ROM 的前 56 位计算机 CRC 的值 并把它与存贮在 DS18B20 内的 CRC 值进行比较 以判断 ROM 的数据是否已被主机正确地接收 CRC 的等效多项式函数为 DS18B20 也利用与上述相同的多项式函数 产生一个 8 位 CRC 值并把此值 提供给总线的主机 以确认数据字节的传送 在使用 CRC 来确认数据传送的每 一种情况中 总线主机必须使用上面给出的多项式函数计算 CRC 的值 并把计 算所得的值或者与 DS18B20 中的 8 位 CRC 值比较 或者与 DS18B20 中计算得到 的 8 位 CRC 值比较 CRC 值的比较和是否继续操作都由总线主机来决定 当存 储在 DS18B20 内或由 DS18B20 计算得到的 CRC 值与总线主机产生的值不相符合 时 在 DS18B20 内没有电路来阻止命令序列的继续执行 1 3 51 3 5 温度数据的计算处理方法温度数据的计算处理方法 从 DS18B20 读取出的二进制值必须先转换成十进制值 才能用于字符的显 示 因为 DS18B20 的转换精度为 9 12 位可选的 为了提高精度采用 12 位 在 采用 12 位转换精度时 温度寄存器里的值是以 0 0625 为步进的 即温度值为 温度寄存器里的二进制值乘以 0 0625 就是实际的十进制温度值 通过观察表 2 16 可以发现一个十进制值和二进制值之间有明显的关系 就是把二进制的高 字节的低半字节和低字节的高半字节组成一个字节 这个字节的二进制值化为 十进制值后 就是温度值的百 十 个位值 而剩下的低字节的低半字节化成 十进制后 就是温度值的小数部分 小数部分因为是半个字节 所以二进制范 西安邮电学院毕业论文 17 围是 0 F 转换成十进制小数值就是 0 0625 的倍数 0 15 倍 这样需要 4 位数 码管来显示小数部分 实际应用不必这么高的精度 采用 1 位数码管来显示小 数 可以精确到 0 1 下表就是二进制和十进制的近似对应关系表 1 17 二 进 制 0 123456789ABCDEF 十 进 制 0011233455667889 表 1 17 二进制与十进制数据近似对应关系 西安邮电学院毕业论文 18 第二章第二章 技术解决方案及系统的设计实现技术解决方案及系统的设计实现 以往温度监测设备中采用的传感器都是模拟式传感器 如热敏电阻 热电 偶 AD590 等 故数据采集系统的硬件设置少不了需要高放大倍数 抗干扰能力强 的数据运算放大器及 AID 转换器 经过上述器件的处理 温度模拟信号才能以 数字信息的形式送入单片机处理 DS18B20 是美国 DALLAS 公司推出的一种新型的数字温度传感器 在上一个 章节中己经有了详细的介绍 由该数字温度传感器和单片机共同组成新型温度 报警系统 将具有很多由传统方式组成的系统所不具备的优点 设计本系统的最终目标 就是运用于实际的温度监测场合 因此 无论技 术上如何尝试 都应该以满足实际的应用需要为原则 那么 究竟本系统在设 计上应该注意哪些问题 注意哪些环节 设置何种功能 也同时就成为研究工作一 开始必须明确的问题 2 12 1 现场应用分析现场应用分析 因为只有一个 DS18B20 传感器 这就省去了地址查询 DS18B20 本身具有 阈值报警功能 当测量的温度值超出主机所设定的上限值或者下限值时 DS18B20 就会向总线发送报警信号 此时正在监听总线的主机将得知报警信息 该功能的设置使我们在系统设计时增加了手段和实现方法 由于我国普遍采用的是摄氏温度计量方法 因此最后的测量结果 也应当 直观明确地以人们更为习惯的十进制摄氏温度显示 2 22 2 系统总体设计技术解决方案系统总体设计技术解决方案 按照系统设计功能的要求 确定系统由四个模块组成 主控制器 测温电 路 显示电路及报警电路 温度采集系统总体电路结构框图如下图 2 1 西安邮电学院毕业论文 19 图 2 1 温度采集系统总体电路结构框图 DS18B20 的所有功能 操作均是在单片机控制下进行的 线上接有若干个 DS 18B20 传感器 即可进行多点的温度采集 值得注意的是所有的命令码均以 串行方式通过一线总线输出到 DS18B20 读出的数字温度值也以串行方式输入到 单片机 并存入数据缓存 主控制器 单片机选型 由于采用智能化的数字温度传感器省去了 A D 转换电路和信号放大电路等 外围电路 只需要从一个 I 0 口引脚引出一条总线就可以连接这个传感器 构 成一个温度采集系统 单片机 AT89C2051 具有低电压供电和小体积等特点 两个端口刚好满足电 路系统的设计需要 很适合便携手持式产品的设计使用 系统可用二节电池供 电 LED 数码显示及报警 为了使监测结果显示地更加直观 本系统使用 4 个的 10 引脚的共阳数码显 示管 以及相应的驱动电路组成显示模块 从 P1 口输出段码 列扫描用 P3 0 P3 3 口来实现 列驱动用 9012 三极管 本设计报警的实现采用蜂鸣器 西安邮电学院毕业论文 20 2 32 3 系统硬件电路设计系统硬件电路设计 本系统的硬件 主要由三个部分组成 基于 AT89C2051 单片机及其外围电路 的主机控制单元 智能温度传感器 DS18B20 的测温电路 LED 数字显示及其驱 动电路和报警电路 电路原理图如下图 2 2 图 2 2 电路原理图 下面对该电路图进行简要的说明 基于 AT89C2051 单片机及其外围电路的主机控制单元 AT89C2051 单片机功能强 I O 口 2 个 但是其内部的数据暂存存储器空间 比较小 只有 128 个字节 而 DS18B20 的 ROM 码有 64 位 也就是说 记录一个 ROM 码要占据 8 个字节的数据暂存存储器空间 再加上用于搜索 温度值存储 指针等操作所必须额外分配的存储器空间 实际上 AT89C2051 单片机内部已经 没有多少富余了 本课题的重点在于数字温度传感器及其一线总线技术的应用 研究 因此 没有使用外扩 RAM 的方法来扩大一线总线网络的规模 相信 即 便本系统由于某种原因需要对一线总线网络进行扩展 无论是选择单片机换型 或者选择外扩 RAM 实现它们都应没有太大的障碍 AT89C2051 具有 2 个 I O 口 它们分别是 P1 口和 P3 口 利用了其中的 2 西安邮电学院毕业论文 21 个 I O 口 与本系统其它部分连接 分别实现了不同的功能 P1 口输出段码 P3 口的 P3 0 P3 1 P3 2 P3 3 分别用于四位数码管的 使能端 控制着温度显示的小数位 个位 十位 和百位 P3 7 连接 DS18B20 的输出端 单片机的时钟信号通常有两种产生方式 一是内部时钟方式 二是外部时 钟方式 本次设计采用内部时钟 内部时钟的具体实现方案是 在 80C51 单片 机内部有一振荡电路 只要在单片机的 XTAL1 和 XTAL2 引脚外接石英晶体 简 称晶振 就构成了自激振荡器并在单片机内部产生时钟脉冲信号 电容器 C1 和 C2 的作用是稳定频率和快速起振 电容值为 30pF 晶振为 12MHz 复位是使单片机或系统中的其它部件处于某种确定的初始状态 单片机的 工作就是从复位开始的 在实际应用中 复位操作有两种基本形式 一种是上 电复位 另一钟是上电与按键均有效的复位 本设计采用上电复位 上电复位 要求接通电源后 单片机自动实现复位操作 开机瞬间 RST 引脚获得高电平 随着电容 C 的充电 RST 引脚的高电平将逐渐下降 RST 引脚的高电平只要能 保持足够的时间 2 个机器周期 单片机就可以进行复位操作 LED 数字动态显示及其驱动报警电路 所谓动态显示 就是一位一位的轮流点亮显示器的各个位 扫描 对于显 示器的每一位而言 每隔一段时间点亮一次 虽然在同一时刻只有一位显示器 在工作 点亮 但由于人眼的视觉暂留效应和发光二极管熄灭时的余辉 我们 看到的却是多个字符 同时 显示 单片机内部 RAM 设置了 4 个显示缓冲单元 70H 74H 存放欲显示的字符数据 P3 0 P3 1 P3 2 P3 3 输出总是有一位 为低电平 以选中相应的字位 P1 口输出相应位的显示字符段数据 使该位显 示出相应字符 其它位为暗 依次改变 P3 口输出低电平的位及 P1 口输出对应 的段数据 4 位 LED 显示器就可以显示出缓冲器中字符数据所确定的字符 报警的具体实现方案是 由单片机 P3 5 口输出低电平 经由 74LS04 反相 器 再经过三极管放大 从而驱动蜂鸣器发声来实现 报警温度的设计由软件 实现 可根据实际情况来修改 在数码管线驱动能力方面采用了锁存器 74LS244 把当前的状态锁存起来 使单片机送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变 化 直到解除锁定 这样就可以实现亮度较高较稳定的显示 西安邮电学院毕业论文 22 2 2 4 4 软件设计计 本系统所有的代码都是用汇编语言编写 系统程序主要包括主程序 读出温度子程序 温度转换命令子程序 计算 温度子程序 显示数据刷新子程序等等 2 4 12 4 1 主程序主程序 主程序的主要功能是负责温度的实时显示 读出并处理 DS18B20 的测量温 度值 温度测量每 1s 进行一次 其程序流程图见下 2 3 初始化 调用显示子程序 1S到 初次上电 读出温度值 温度计算处理 显示数据刷新 发温度转换开始命令 Y N Y N 图 2 3 主程序流程图 西安邮电学院毕业论文 23 2 4 22 4 2 读出温度子程序读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节 在读出时需进行 CRC 校验 校验有错时不进行温度数据的改写 其程序流程如下图 2 4 发DS18B20复位命令 发跳过ROM命令 发读取温度命令 读取操作 CRC校验 9字节完 CRC校验正确 移入温度暂存器 结束 Y Y N N 图 2 4 读出温度子程序流程图 西安邮电学院毕业论文 24 2 4 32 4 3 温度转换命令子程序温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令 当采用 12 位分辨率时转 换时间约为 750ms 在本程序设计中采用 1s 显示程序延时法等待转换的完成 温度转换命令子程序流程图如下 2 5 发DS1B20复位命令 发跳过ROM命令 发温度转换开始命令 结束 图 2 5 温度转换命令子程序 2 4 42 4 4 计算温度子程序计算温度子程序 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算 并进行温度值正 负的判定 其流程图如下图 2 6 开始 温度零下 温度值取补码置 标志 置 标志 计算小数位温度BCD值 计算整数位温度BCD值 结束 Y N 图 2 6 计算温度子程序 西安邮电学院毕业论文 25 2 4 52 4 5 显示数据刷新子程序显示数据刷新子程序 显示数据刷新子程序主要是对现实缓冲器中的显示数据进行刷新操作 当 最高显示位为 0 时将符号位移入下一位 程序流程图如下图 2 7 温度数据移入显示寄存器 十位数0 百位数0 十位数显示符号 百位数不显示 百位数显示数据 不显示符号 结束 Y Y N N 图 2 7 显示数据刷新子程序 2 4 62 4 6 传感器读写程序传感器读写程序 读 DS18B20 的程序 从 DS18B20 中读出一个字节的数据 READDS1820 MOV R7 08H SETB TEMPDIN NOP NOP READDS1820LOOP CLR TEMPDIN NOP NOP NOP SETB TEMPDIN MOV R6 07H DELAY 15us DJNZ R6 MOV C TEMPDIN MOV R6 3CH DELAY 120us 西安邮电学院毕业论文 26 DJNZ R6 RRC A SETB TEMPDIN DJNZ R7 READDS1820LOOP MOV R6 3CH DELAY 120us DJNZ R6 RET 写 DS18B20 的程序 从 DS18B20 中写一个字节的数据 WRITEDS1820 MOV R7 08H SETB TEMPDIN NOP NOP WRITEDS1820LOP CLR TEMPDIN MOV R6 07H DELAY 15us DJNZ R6 RRC A MOV TEMPDIN C MOV R6 34H DELAY 104us DJNZ R6 SETB TEMPDIN DJNZ R7 WRITEDS1820LOP RET 为了增加程序的可移植性 WRITEDS1820 和 READDS1820 子程序都以特殊功 能寄存器 A 作为目标寄存器 开始调用 WRITEDS1820 子程序之前 必须把目标 值写入 A 寄存器 在目标值写入 A 寄存器后 需马上调用 WRITEDS1820 子程序 以防止由于插入了其它的操作导致 A 寄存器里的数值被改写 这在主程序调用 WRITEDS1820 子程序的时候 需特别注意 READDS1820 子程序则是将读出的目标值环移写入 A 寄存器 在将 A 寄存器 里的值转存入其它存储空间之前 不要对 A 寄存器进行任何写或者是置 0 置 1 的操作 否则 从总线上读回来的结果会因为中途插入了其它操作 变成一 个错误的值 因此在调用 READDS1820 子程序之后 应该马上将 A 寄存器里的值 写入系统分配的固定的存储空间里 防止数据遭到破坏 这在主程序调用 READDS1820 子程序时 也需特别注意 以 WRITEDS1820 和 READDS1820 两条子程序为基础 实现了一线总线网络通 信协议中的双向通信 这两条子程序构成了通信协议程序软件的基础 基于 WRITEDS1820 子程序 一线总线通信协议中的所有 ROM 命令 存储器 命令都可以方便地实现了 也就是实现了从主机 AT89C2051 单片机到从机 DS18B20 数字温度传感器方向的通信 西安邮电学院毕业论文 27 只需要将命令相应的代码写入 A 寄存器 然后调用执行 WRITEDS1820 子程 序 就可以实现了该命令的发送 例如只需要 MOV A BEH LCALL WRITEDS1820 这两条语句就实现了对 READ SCRATCHPAD 命令 BEH 的传输 基于 READDS1820 子程序 一线总线通信协议中所有从机 DS18B20 对主机 AT89C2051 单片机的数据传输也全部方便地实现了 也就是实现了从 DS18B20 到主机 AT89C2051 单片机方向的通信 例如 LCALL READSCRATCHPAD LCALL READDS1820 MOV 78H A 只用这三条语句就实现了对 DS18B20 测量温度值的读取 操作结果存储在 数字暂存存储器一个字节的存储空间里 地址为 78H 西安邮电学院毕业论文 28 第三章第三章 调试 性能分析调试 性能分析 系统的调试以程序为主 硬件调试比较简单 首先检查电路的连接是否正 确 然后可用万用表测试或通电检测 软件调试可以先编写显示程序并进行硬 件的正确性检验 然后分别进行主程序 读出温度子程序 温度转换命令子程 序 计算温度子程序 显示数据刷新等子程序的编程及调试 由于 DS18B20 与 单片机采用串行数据传送 因此 对 DS18B20 进行读写编程时必须严格的保证 读写时序 否则将无法读取测量结果 本程序采用单片机汇编编写 软件调试 到能显示温度值 而且在有温度变化时 例如用手去接触 显示温度能改变就 基本完成 系统指标性能测试相关试验介绍 1 稳定性测试 2 系统带电频繁插拔 DS18B20 测试 3 系统温度测量响应时长测试 4 报警测试 测试试验的结果及结论 1 本系统经过一段时间的连续运行测试 工作正常 证明本系统在稳定性方 面表现优异 2 系统带电频繁插拔 DS18B20 没有出现死机的现象 证明系统具有一定 的抗意外故障能力 但在频繁插拔过程中出现了短暂的温度显示错误的现象 经过一个温度监测周期后即恢复正常 这说明在总线上带电插拔 DS18B20 会对 总线上的数据传输造成干扰 但短暂的温度显示错误会很快消失 对系统没有 造成不良影响 3 系统可以在不超过 2 秒的时间里准确地测量出待测物体的实际温度值 因 此认为系统在响应时间上能够满足要求 4 设计能容易达到的报警温度 例如用手触摸就可以达到 看蜂鸣器是否 报警 结果表明超过设置的温度蜂鸣器就会报警 证明本次设计的报警部分成 功 在上述各项测试中 本系统表现良好 达到了本课题预期设定的目标 本系统最终达成了本课题设计的目标 基于 DS18B20 的测温系统也在某些 方面表现出一线总线技术的优势 比如说具有电路简单 测温精度高 连接方 便 占用线路少等等优点 但是 也应该看到 一线总线技术仍有不足 也力图在设计中努力克服它们 1 较小的硬件开销需要相对复杂的软件进行补偿 由于 DS18B20 与微处理 西安邮电学院毕业论文 29 器间采用串行数据传输 因此 在对 DS18B20 进行读写编程时 必须严格地保 证读 写时序 否则 将无法进行正常通信 在这里使用汇编语言编写软件程 序 以期严格保证协议的读 写时序正确 2 DS18B20 工作时电流高达 1 5mA 总线上挂接点数较多且同时进行转换 时 要考虑增加总线驱动 可用单片机端口在温度转换时导通一个 MOSFET 供 电 3 连接 DS18B20 的总线电缆是有长度限制的 因此在用 DS18B20 进行长距 离测温系统设计时 要充分考虑总线分布电容和阻抗匹配等问题 4 在 DS18B20 测温程序设计中 向 DS18B20 发出温度转换命令后 程序总 要等待 DS18B20 的返回信号 一旦某个 DS18B20 接触不好或断线 当程序读 到该 DS18B20 时 就没有返回信号 程序进入死循环 这一点进行 DS18B20 硬件连接和软件设计时要给与一定的重视 西安邮电学院毕业论文 30 结结 论论 使用 DS18B20 的测温系统电路简单 应用方便灵活 在常温测量中有较大 优势 应用前景广阔 如在工业 空调系统 智能楼宇等领域的温度测量中可 以有广泛的应用 作为新型的通信协议 1 Wire Bus 协议和 1 Wire 网络己经在很多方面表 现出特有的优势 已经成为一种非常有发展潜力和广阔应用前景的通信协议 由于温度传感器逐渐向着数字化 智能化的方向发展 目前基于温度探测 的监控或者报警系统也产生了深刻的变化 电路设计得更简单 也部分简化了 软件的编写 另外 无论是响应速度 系统运

温馨提示

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

评论

0/150

提交评论