上位机下位机温度检测.doc_第1页
上位机下位机温度检测.doc_第2页
上位机下位机温度检测.doc_第3页
上位机下位机温度检测.doc_第4页
上位机下位机温度检测.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1 天津理工大学理学院 专业设计 论文 专 业 班级 设计题目 基于单片机的温度检测 学生姓名 学号 指导教师 2012 年 12 月 13 日 2 1 1 摘要 摘要 本文介绍了一种基于本文介绍了一种基于 AT89C51AT89C51 单片机与单片机与 PCPC 机串口通信的温度控制系统 用机串口通信的温度控制系统 用 单片机作下位机完成温度数据的采集和执行单片机作下位机完成温度数据的采集和执行 PCPC 机发出的控制执行命令机发出的控制执行命令 用用 PCPC 机机 作上位机接收单片机发送的数据作上位机接收单片机发送的数据 进行数据处理进行数据处理 向单片机发送控制命令 四位向单片机发送控制命令 四位 一体共阴数码管实时显示当前温度 一体共阴数码管实时显示当前温度 PCPC 机与单片机采甪串行通信机与单片机采甪串行通信 可实现温度可实现温度 检测和采集并处理数据的人机友好界面 创新之处采用虚拟仪器技术 利用检测和采集并处理数据的人机友好界面 创新之处采用虚拟仪器技术 利用 LabVIEWLabVIEW 软件编写相应上位机软件 控制各采集模块进行温度采集 串口的数软件编写相应上位机软件 控制各采集模块进行温度采集 串口的数 据传输 然后对数据处理和现实 据传输 然后对数据处理和现实 关键词 关键词 AT89C51AT89C51 单片机单片机 PC PC 机机 串行通信 串行通信 LabVIEW LabVIEW 数据采集数据采集 3 目录 一 引论 5 二 设计目的 6 2 1 设计目的 6 2 2 系统实现功能 6 三 系统总体方案设计 7 3 1 系统总体设计框图 7 3 2 系统硬件设计方案 7 3 3 系统软件设计方案 8 四 系统各个模块设计 8 4 2 显示电路 8 4 3 串行通信电路 9 4 4 DS18B20 温度传感器电 路 9 4 5 电源电 路 11 4 6 单片机与 PC 机串口连接电 路 11 五 系统软件设 计 12 5 1 单片机软件设计 13 4 5 2 上位机软件设 计 15 六 系统调试 17 七 结论 17 八 参考文献 18 九 附录 19 附录一 温度测试子程序流程图 19 附录二 系统总体电路 图 20 附录三 单片机程序 20 5 一 引论 随着时代的进步和发展 单片机技术已经普及到我们生活 工作 科研 各个领域 已经成为一种比较成熟的技术 温度是工业生产中主要的被控参数 之一 有些工艺过程对其温度的控制效果直接影响着产品的质量 许多化学反 应的工艺过程必须在适当的温度下才能正常进行 炼油过程中 原油必须在不 同的温度和压力条件下进行分馏才能得到汽油 柴油 煤油等产品 没有合适 的温度环境 许多电子设备就不能正常工作 还有比如在观察用药剂前后病人 体温随时间的变化情况 临床一般都采用水银或电子温度计 隔一段时间测量 一次并手工记录结果 这种传统方式给病人带来了很多不便 也加大了护理工 作量 更为欠缺的是测量时间间隔不够短 在体温变化率较高的情况下 容易 造成处理不当或不足 达不到最理想的疾病控制与治疗效果 传统的温度记录仪通常采用的是人工记录或普通记录仪用墨水在记录纸上 绘制曲线 其体积庞大 精度低 墨水易堵塞 费时费力 无纸温度记录仪产 生 并因为其更准确地数据记录 更方便的数据存储 更便捷的数据分析功能 所占市场份额逐年猛增 近年来推出的带 usb 接口的无纸记录仪更是极大的方 便了数据的下载和保存 因此可见 设计出一款测量温度并自动记录下数据的温度记录仪是多么重 要 用单片机做成的产品外围元件很少 能实现的功能却很广 广泛应用于工 业 农业等 兼于此 特用单片机设计此电路 单片机发展的三个阶段 1 第一阶段 1976 1978 单片机的控索阶段 以 Intel 公司的 MCS 48 为代表 MCS 48 的推出是在工控领域的控索 参与这一控索的公司还有 Motorola Zilog 等 都取得了满意的效果 这就是 SCM 的诞生年代 单机 片 一词即由此而来 2 第二阶段 1978 1982 单片机的完善阶段 Intel 公司在 MCS 48 基 6 础上推出了完善的 典型的单片机系列 MCS 51 它在以下几个方面奠定了典 型的通用总线型单片机体系结构 完善的外部总线 MCS 51 设置了经典的 8 位单片机的总线结构 包括 8 位数 据总线 16 位地址总线 控制总线及具有很多机通信功能的串行通信接口 CPU 外围功能单元的集中管理模式 体现工控特性的位地址空间及位操作方式 指令系统趋于丰富和完善 并且增加了许多突出控制功能的指令 3 第三阶段 1982 1990 8 位单片机的巩固发展及 16 位单片机的推出阶 段 也是单片机向微控制器发展的阶段 Intel 公司推出的 MCS 96 系列单 片机 将一些用于测控系统的模数转换器 程序运行监视器 脉宽调制器等纳 在实时检测和自动控制的单片机应用系统中 单片机往往是作为一个核心部件 来使用 仅单片机方面知识是不够的 还应根据具体硬件结构 以及针对具体 应用对象特点的软件结合 加以完善 DS18B20 是美国 DALLAS 公司生产的数字 温度传感器芯片 具有结构简单 体积小 功耗小 抗干扰能力强 使用方便 等优点 本文设计的一种温度控制系统 用 STC89C51 单片机作为温控器 选用 DS18B20 数字温度传感器 单片机与上位机之间通过 MAX232 串口进行通信 对 测试点温度采集 实时显示 数据处理 本文使用 AT89S52 单片机作为温度测量和传输的主控芯片 温度传感器采 用单总线方式的集成数字温度传感 DS18B20 由 AT89S52 和 DS18B20 组成温度 测量单元 一个模块放置在一个位置实现单点测量 采集得到的数据利用单片 机经串口通讯的方式传输至计算机的串口 计算机上位机软件采用基于图形化 编辑语言的 LabVIEW 的串口单点温度测量 二 设计目的 2 1 设计目的 1 了解电子系统的设计方法 巩固和提高学过的基础理论和专业知识 2 学习 DS18B20 数字温度传感器的测温原理 3 掌握串口通信协议及其编程方法 4 增强对单片机的认识 掌握分析处理问题的方法 进行调试 计算等基本 技能的训练 达到具有一定程度的实际工作能力 5 学会用 Protel 进行电路原理图和 PCB 图的绘制 6 学习用 Proteus 仿真软件进行电路设计和仿真 2 2 系统实现功能 7 1 内容及要求 研究基于单片机的低功耗温度记录仪 可以以一定的时间间隔连续记录系 统温度 并提供通讯接口将温度数据上传到 PC 机 利用 labview 编制 PC 示例 程序 2 主要技术指标 1 温度测量范围 0 70 系统实现低功耗运行 2 温度记录数不少于 200 条 3 提供 PC 机通讯接口 4 PC 机软件实现对温度数据分析 统计和处理 三 系统总体方案设计 3 1 系统总体构成框图如下 AT89C51 PC 机 RS232 数码管显示恒压电源 晶振电路 复位电路 DS18B20 温度传感器 图 1 系统总体构成框图 3 2 系统硬件设计方案 1 利用 AT89C51 自身强大的功能和优异的可扩展性 配上四位一体数码管 8 和按键等少量外围电路 就能搭建合适本次实验的小系统 从而大大缩短设计 流程 把设计的重点放在温度探测单元 串行通信协议两个部分 2 现在 PC 机提供的 COM1 COM2 是采用 RS 232 借口标准的 而 RS 232 是 用正负电压来表示逻辑状态 与 TTL 以高低电平来表示逻辑状态的规定不同 因此 为了能够同计算机借口或终端的 TTL 器件 如单片机 连接 必须在 RS 232 与 TTL 电路之间进行电平和逻辑关系的变换 变换电路选用有德州仪器 公司 TL 推出的一款兼容 RS 232 标准的芯片 MAX232 该器件包含 2 个驱动器 2 个接收器和一个电压发生器电路提供 TIA EIA 232 F 电平转换成 5V TTL CMOS 电平 每一个发送器将 TTL CMOS 电平转换成 TIA EIA 232 F 电平 3 3 系统软件设计方案 单片机软件设计 单片机程序由主程序和中断子程序组成的 主程序负责对来自上位机的命 令进行解析并执行读温度值 存储温度值 输出控制等等 中断服务程序只负 责单片机和上位机之间的数据发送与接收 上位机程序设计 由单片机采集的测试点实时温度 通过 MAX232 传输到上位机 PC 实现与 单片机串行通信 在上位机中 完成温度传感器 64 位激光 ROM 读取并显示 实 时温度数据显示 数据存储 曲线绘制 历史数据查询 其中在数据查询功能 中 设计了时间查询 温度查询等功能 四 系统各个模块设计 4 1 显示电路 数码管显示电路部分如图 9 图 2 4 2 串行通信电路 图 3 MAX232 串口通信电路图 9 孔串口接头 4 3 DS18B20 温度传感器电路 其引脚排列及内部结构框图以及测温原理图如下所示 10 图 4 引脚排列 数字温度传感器 DS18B20 内部结构 图 5 电路连接如下图 11 图 6 4 4 恒压电源电路 图 7 4 5 单片机与 PC 机串口连接电路 12 图8 RS232引脚图 图 9 上位机和下位机的接线方法 五 系统软件设计 5 1 单片机软件设计 13 初始化 向 DS1820 读一字节 向 DS1820 写一字节 读取温度及转换 显示温度 图 10 DS18B20 存储器映像图 图 11 DS18B20 存储器映像图 暂存存贮器是按 8 位字节存储器来组织的 头两个字节包含测得温度信息 第三和第四个字节是 TH 和 TL 的易失性拷贝 在每一次上电复位时被刷新 接着的一个字节是芯片配置字节 第六到第八个字节是保留字节 第九个字 节 它可用 Read Scratchpad 读暂存存贮器 命令读出 该字节包含一个 循环冗余校验 CRC 字节 它是前面所有 8 个字节的 CRC 值 总线 CRC 可以 使用一个移位寄存器和 异或 XOR 门组成的多项式产生器来产生 DS18B20 中 SEARCH ROM 命令的搜索算法 一 ROM 搜索原理搜索原理 14 根据单线总线协议 当主机发出搜索 ROM 命令后 从机应答时从 64 位 ROM 码的最低位开始 先发送原码 然后发送该位的补码 之后主机写入 1 位数据 ROM 码最低位与此数据相同的 DS18B20 继续应答 反之则不再应答 如此循环 读 2 位 写 1 位 的过程 直至读到一个完整 ROM 码为止 然后复位总线 进行下一次搜索 下面对读 写进行具体分析 二 ROM 搜索策略搜索策略 根据上述 ROM 搜索原理的描述 树形搜索策略图如下图 其中圆形节点内 所示即为对应位的 ROM 码 由图可知 只有遇到读两位为 00 才会出现分叉 这也是搜索的关键所在 每一次搜索由根 即开始节点 沿树的一条路径进行 直到叶子 最后一位 ROM 码 读回一个 ROM 码 为了确保每次搜索所选路径不 同 必须对所经过的分叉进行记录 三 具体流程规则具体流程规则 1 复位总线 发送 ROM 搜索命令 2 按读两位 写一位的方式进行 寻找 00 读码 在读到 00 之前若为 10 或 01 直接记录对应位 ROM 码 并写入该码 若为 11 退出搜索 3 第一次搜索中读到 00 时 先全部写 0 选择 ROM 码为 0 的路径 将最高 00 读码 即图中最接近叶子 位置记录并保存下来为 最高 00 位 4 之后每次搜索中 遇到 00 读码后 比较此位与 最高 00 位 的位置 若在 最高 00 位 之前 则一律写上一次搜索在此位置写入的值 若位置相同 则写 1 若在之后则写 0 在每一次搜索完成后 要将 最高 00 位 更新 为本次搜索中写 0 的最高 00 读码位置 这也是最为重要的一步 5 当 最高 00 位 更新为 0 即已到树的根部 则表明已搜索完全部 ROM 码 过程结束 15 开始 001110 01 01 1 0 00 10 01 11 0010 011100 10 01 11 000111 1 01 01 0 起始发搜索命令 读两位 写一位 读两位 写一位 图 12 具体流程规则 16 5 2 上位机软件设计 前面版 图 13 前面板各个部分的具体功能介绍如下 1 温度记录表和温度实时显示框 用于记录温度 必要时可以生成 Excel 表格 永久保存 2 VSIA 配置控件的前面板显示部分和采集次数显示控件 可以直观的知道进 行温度采集的次数 3 操作框 可以进行端口选择 设置报警温度的上限和下限值 可以停止程序 运行 程序运行前 首先要选择下位机的连接端口 才可以从下位机读取温 度检测数据 4 时间显示框 显示当前的实时时间 5 温度波形图表 直观显示温度变化曲线 6 温度报警指示灯 当温度大于上限设定值时 温度过高灯变红 当温度小于 下限设定值时 温度过低灯变红 当温度处于上限制和下限值之间时 表明 温度正常 两个指示灯均为绿色 7 实时温度表 用于检测温度变化 17 程序框图 图 14 下面介绍一下程序框图中各个重要位置的作用 1 欢迎词部分 出现欢迎对话框 表明 VSIA 部分的下位机初始化已经完成 点击确定即开始检测温度数据 2 时间显示部分 用于在前面板显示当前系统时间 3 系统延时 减缓系统的运行速度 减少上位机部分 CPU 和内存的使用率 4 将 VISA 读取的字符串转换为数字 从 VISA 缓冲区中读取的是字符串 在这 部分中分别从偏移量 第一个字节 第二个字节 第三个字节 位置截取三 个子字符串 ASC 码 将子字符串送入转换子 VI 中分别得到三个十六进 制数字 再通过字符串整合控件 将三个十六进制数字整合成一个十六进制 数值 5 摄氏温度计算部分 将得到的十六进制数送到数值转换控件中 将其转换为 十进制数 得到的结果乘以 DS18B20 的精度 0 0625 得到的数值即为当前 环境下的摄氏温度 6 创建表格控件 将得到的温度数值和系统时间在该控件内进行整合 然后按 照指定格式显示表格 7 温度检测报警系统 实时温度值与温度设定值比较 当布尔量为 F 时 绿灯 亮 当布尔量为 T 时红灯亮 实现实时报警功能 18 六 系统调试 硬件调试首先检查电路的焊接是否正确 然后可用万用表测试或通电检测 硬件调试主要是针对主控板中单片机模块和外部输入 输出模块进行调试 这 一部分硬件调试主要分成两大块 上电前的调试和上电后的调试 在电路安装焊接前 首先是对元器件的检测 对 AT89C51 DS18B20 在未接 电路时是不能检测其好坏的 对于其他器件则可利用万用表进行测量 电阻的 测量 用万用表的欧姆档测量 1 上电前的调试 在上电前 必须确保电路中不存在断路或短路情况 这一工作是整个调试 工作的第一步 也是非常重要的一个步骤 在这部分调试中主要使用的工具是 万用表 用来完成检测电路中是否存在断路或者短路情况等 只要将一个表笔 固定在电源端或接地端 另仪表笔接其他连接点 指针偏转到 0 刻度就是通路 的 通过万用表的检测 没有发现短路和断路的地方了 电路基本正常后再进行 下一步调试 2 上电后的调试 在确保硬件电路正常 无异常情况 断路或短路 方可上电调试 上电调试 的目的是检验电路是否接错 同时还要检验原理是否正确 在本设计中 上电调试主要是检测单片机部分与外部输入 输出电路是否 接对 本次调试需要通过软硬件联调来实现 由于 DS18B20 与单片机采用串行 数据传送 因此 对 DS18B20 进行读 写编程时必须严格地保证读 写时序 否 则将无法读取测量结果 本程序采用单片机 C 语言编写 用 Keil C51 编译器编 程调试 七 结论 首先 通过这次应用系统设计 在很大程度上提高了自己的独立思考能力 和单片机的专业知识 也深刻了解写一篇应用系统的步骤和格式 有过这样的 19 一次训练 相信在接下来的日子我们都会了 而且会做得更好 我所写的系统主要根据目前节省能源的发展趋势和国内实际的应用特点和 要求 系统以单片机AT89C51为核心部件 采用了自动化的结构形式 实现对温 度的检测 记录与数据处理 利用C语言编制 运行程序该系统的主要特点是 1 适用性强 利用LabVIEW 友好的人机界面 用户只需对界面参数进行设 置并启动系统正常运行便可实现对温度的测量 记录与数据处理 2 将单片机以及温度传感器引入对温度的分析和处理中 单片机控制决策 无需建立被控对象的数学模型 系统的鲁棒性强 适合对非线性 时变 滞后 系统的控制 对温度测量系统采用单片机控制非常适合 3 系统成本低廉 操作非常简单 可扩展性强 只要稍加改变 即可增加 其他使用功能 通过对本设计的思考 更加加深了对单片机的认识 熟练了单片机的编程 更对当前的温度传感器有了更深刻的认识与了解 但是由于此系统依赖温度传 感器 因而对温度传感器的稳定性 线性等诸多方面有着严格的要求 但是传 感器的性能越好 相对而言其价格也就越高 因而在此设计中 温度传感器我 个人觉的还是存在遗憾 其次 由于采用了C语言 所以其编程过程复杂不易查 错 最后由于时间紧迫 本设计还有诸多地方需要改进 比如改用RS 485串行 接口或是网线 实现远距离操作 八 参考文献 1 李仁发 肖玲 吴强 数字逻辑设计 第四版 人民邮电出版社 2006 05 2 51 单片机学习网 3 单片机学习网 4 单片机 C 语言应用程序设计 第四版 马忠梅主编 北京航空航天大学出 版社 5 单片机开发与典型工程项目实例详解 边海龙 孙永奎编著 电子工业 出版社 6 51 单片机 C 语言教程 入门 提高 开发 拓展全攻略 郭天祥 编著 电子工业出版社 2009 20 九 附录 附录 1 温度测试子程序流程图 初始化DS18B20 匹配 ROM 命令 发一个DS18B20序列号 等待 1U S 读当前DS18B20温度 开始 所有DS18B20 都访问完毕 存在一个 DS18B20 发搜索ROM 命令 读并存储当前DS18B20序列号 跳过 ROM 命令 初始化DS18B20 温度转换命令 初始化DS18B20 Y Y N NY Y N N 初始化DS18B20 匹配 ROM 命令 发一个DS18B20序列号 等待 1ms转换结束 读当前DS18B20温度 开始 所有DS18B20 都访问完毕 存在一个 DS18B20 发搜索 ROM 命令 读并存储当前DS18B20序列号 跳过 ROM 命令 初始化DS18B20 初始化DS18B20 N N N NY Y Y Y 21 附录 2 总体电路图 附录 3 单片机程序 include include 22 define uchar unsigned char bit Tflag 温度正负标志 sbit DQ P3 7 温度输入口 sbit DIN P0 7 LED 小数点控制 uchar code ditab 16 0 x00 0 x01 0 x01 0 x02 0 x03 0 x03 0 x04 0 x04 0 x05 0 x06 0 x06 0 x0 7 0 x08 0 x08 0 x09 0 x09 温度小数部分用查表法 unsigned char code dispcode 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x00 0 x40 共 阴 led 段码表 0 x40 负 unsigned char dispbitcode 0 xfe 0 xfd 0 xfb 0 xf7 uchar data temp data 2 0 x00 0 x00 读出温度暂放 unsigned char dispbuf 5 0 0 0 0 0 void digitalshow unsigned char a3 unsigned char a2 unsigned char a1 unsigned char a0 unsigned char i dispbuf 0 a0 dispbuf 1 a1 dispbuf 2 a2 dispbuf 3 a3 for i 0 i 4 i P2 0 xff 关闭所有显示 P0 dispcode dispbuf i P2 dispbitcode i 23 if i 1 DIN 1 该程序为总线上只有一个器件 毫秒延时 11 059 Mhz void dmsec unsigned int count unsigned int i 1ms 延时 while count for i 0 i 125 i void Delay unsigned int num 延时函数 while num 复位脉冲 void tmreset void DQ 0 Delay 90 精确延时 大于 480us DQ 1 Delay 4 90 4 可以小范围变化 24 存在脉冲 void tmpre void while DQ while DQ Delay 4 读一个位 bit tmrbit void unsigned int i bit dat DQ 0 i i 大概 1us DQ 1 i i dat DQ Delay 8 return dat 读一个比特 unsigned char tmrbyte void unsigned char i j dat dat 0 for i 1 i 8 i 25 j tmrbit dat j 1 return dat 写一个比特 void tmwbyte unsigned char dat unsigned int i unsigned char j bit testb for j 1 j 1 从低位开始 if testb Write 1 DQ 0 先拉低 i i 1us DQ 1 Dela

温馨提示

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

评论

0/150

提交评论