基于STC89C52单片机温度控制电路设计毕业论文.doc_第1页
基于STC89C52单片机温度控制电路设计毕业论文.doc_第2页
基于STC89C52单片机温度控制电路设计毕业论文.doc_第3页
基于STC89C52单片机温度控制电路设计毕业论文.doc_第4页
基于STC89C52单片机温度控制电路设计毕业论文.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

本科生毕业论文 设计 题目 基于温度传感器的单片机温控电路设计基于温度传感器的单片机温控电路设计 基于温度传感器的单片机温控电路设计 摘 要 随着微处理器和大规模集成电路的发展 及其在测试控制技术方面的广泛应用 仪器 设备的智能化已成为自动化技术发展方向 数据采集与温度检测的自动化将取代传统的 方法 本设计采用 STC89C52 型号的单片机 数字温度传感器采用美国 DALASS 公司的 1 Wire 器件 DS18B20 即单总线器件 DS18B20 与单片机组成一个测温系统 当系统上电 时 温度传感器就会读出当前环境的温度 并在 LED 数码显示管上显示出当前的温度 该测温系统的测温范围为 40 110 按此要求设计硬件和软件以实现这一功能 关键词 单片机 温度传感器 DS18B20 测量电子线路 温度 ABSTRACT Along with the microprocessor and large scale integrated circuit and in the test control technology is widely used and the intelligent instrument and equipment has become automation technology development direction data acquisition and temperature automatic testing would replace the traditional method This design uses the STC89C52 type of single chip microcomputer digital temperature sensor using the American DALASS company 1 Wire device DS18B20 namely single bus device DS18B20 and consists of a single chip microcomputer temperature measurement system when the system is powered on temperature sensors will read the current environment temperature and in display tube LED digital showed on the current temperature the temperature measurement system of measuring temperature range for 40 110 according to this design requirement for hardware and software to achieve this function Keywords single chip microcomputer temperature sensor DS18B20 measurement circuit temperature 目 录 一 绪论 1 1 1 课题研究背景及意义 1 1 2 国内外研究现状 2 1 3 研究内容 2 二 系统硬件设计 3 2 1 总体设计方案 3 2 1 1 设计思路 3 2 1 2 设计方框图 3 2 2 单片机介绍 3 2 2 1 STC 单片机结构介绍 4 2 2 2 STC 单片机引脚介绍 6 2 3 DS18B20 数字温度传感器介绍 9 2 3 1 功能介绍 9 2 3 2 内部存储器介绍 10 2 4 显示模块设计 13 2 4 1 LED 数码管结构 14 2 4 2 共阳数码管数字编码 14 2 5 按键电路的设计 14 2 5 1 判键及其接口电路设计 15 2 5 2 键盘的工作方式 16 2 6 报警装置电路设计 16 2 7 系统整体硬件电路 16 三 系统软件设计 18 3 1 温度控制系统原理框图 18 3 1 1 读温度子程序 18 3 1 2 温度转换子程序 19 3 1 3 计算温度子程序 20 3 1 4 温度显示子程序 21 四 总结与展望 22 参考文献 23 附 录 24 一 绪论 1 1 课题研究背景及意义 目前温度控制系统在很多场合都得到广泛的应用 因此在国内外发展非常迅速 并 在智能化 环境自适应 参数自动调整等方面取得显著成果 当前在工业上温度控制系 统一般采用智能调节 国产调节器温度控制效果不是很理想 分辨率和精度都不高 但 性价比高 国外调节器虽然价格较贵 但是分辨率和精度较高 在各行业中广泛应用的 温度控制器及仪器仪表 都是由美国 德国等国家生产出来的 性能优异 它们主要具 有如下的特点 一是在复杂的温度控制系统中能够适应于大惯性 大滞后的控制 二是 在受控系统数学模型难以建立的情况下 得到控制 三是在受控系统中 能够被控制过 程很复杂且参数时变的温度控制系统控制 五是温度控制系统普遍具有参数自检功能 借助计算机技术 能控制对象和参数 并且具有特性进行自动调整的功能等特点 1 温度测控包括两个方面 温度测量和温度控制 近年来 在理论上温度的测量技术 发展比较完善 但目前仍然有许多问题需要去解决 比如在实际测控中 如何能实时地 对温度进行快速采样 同时确保采集来的数据进行正确的传输 并能精确控制所测的温 度场 在温度的测量技术中 有一种简单 可靠 低廉 测量精度较高的测量方法叫做 接触式测温 它在早期就发展起来 一般能将环境的真实温度测量出来 但是难以对运 动的物体和热容量小的物体进行精确测量 主要是因为检测元件热惯性的影响 响应的 时间长 在腐蚀性介质中 超高温度环境下也不适用 另外还有一种能够对运动的物体 和热容量小的物体进行测量的方法叫非接触式测温 它通过温度场辐射出来的能量 进 行测量 响应速度快 对测量的温度场不产生破坏 但是也存在一些缺点 仪表所显示 的值一般只能代表物体表面的温度 测温仪器结构复杂 价格昂贵等 2 因此 在温度测 控中 要根据所需对象选择恰到好处的测控方法 传感器技术是现代信息技术的三大基础 属于现代信息技术前沿的尖端技术 温度 传感器使用的数量高居各类传感器之首 被应用于各种领域中 如工业生产 高科技研 究和日常生活等 温度传感器技术的应用与研究 其发展历程大致经过了以下三个阶段 1 常见的分布式温度传感器 2 模拟集成温度传感器 3 智能温度传感器 从 20 世纪末以来 国际上推出的智能温度传感器精度高 分辨力高 采用的都是 9 12 位 A D 转换器 分辨力一般可高达 0 5 0 0625 3 目前新型的温度传感器正由 模拟式走向数字式 分立式走向高集成 智能化 网络化 当前被广泛应用的 DS18B20 型智能温度传感器由美国 DALLAS 半导体公司研制 它能输出 12 位二进制数据 分辨力 高 达到 0 0625 测量温度的精度已经达到 0 2 1 2 国内外研究现状 在上个世纪 70 年代 国外的一些国家已经开始对温度测控技术进行研究了 最早采 用的是模拟式组合仪表 将现场采集到的信息进行显示 加工和控制 直到 80 年代末才 出现分立式控制系统 目前温度测控技术在一些发达国家发展非常迅猛 由半自动化向 着完全自动化 无人化的方向发展 在上个世纪 80 年代 我国才开始对温度测控技术进行研究 起步晚 跟那些发达国 家相比较 技术上还有着很大差距 我国的科技人员吸收发达国家的温度测控技术 仅 限于控制温度的单项环境因子 对一些复杂的环境因子控制 还难以实现 多参数综合 控制系统目前还不成熟 单参数单回路的系统只能使用单片机来控制 在实际生产中配 套能力差 产业化程度不高 对环境水平控制的严重滞后等问题仍然在困扰着我们 温 度测控现状要想达到工厂化的水平 还任重道远 1 3 研究内容 本文设计是以单片机为核心 实现温度实时测控和显示 确定电路中的一些主要参 数 了解温度控制电路的结构 工作原理 对该控制电路性能进行测试 主要内容 1 硬件部分设计 以 STC89C52 单片机作为处理器来处理数据 DS18B20 温度传感器进行温度采集 八段数码管作为显示模块 利用键盘完成对温度测控 2 软件部分设计 软件部分的设计采用模块化思想 主要有五个大的模块 主控制程序 温度显示子 程序 读温度子程序 温度转换子程序 计算温度子程序 二 系统硬件设计 2 1 总体设计方案 2 1 1 设计思路 1 本设计是用来测控温度的 可以利用热敏电阻的感温效应 将被测温度变化的模 拟信号 电压或电流的采集过来 首先进行放大和滤波后 再通过 A D 转换 将得到的 数字量送往单片机中去处理 用数码管将被测得的温度值显示出来 但是这种电路的设 计需要用到放大滤波电路 A D 转换电路 感温电路等一系列模拟电路 设计起来较麻烦 2 本设计采用单片机做处理器 可以考虑使用温度传感器 采用由达拉斯公司研制 的 DS18B20 型温度传感器 此传感器可以将被测的温度直接读取出来 并进行转换 这 样就很容易满足设计要求 从上面的两种方案 可以很容易看出来 虽然方案 2 软件部分设计复杂点 但是电 路比较简单且精度高 故采用方案 2 图 2 1 总体方框图 2 1 2 设计方框图 据设计的需求 分析单片机的工作原理 可以大体得出来温度控制电路设计的总体方 框图如图 2 1 所示 主处理器采用 STC89C52 单片机 温度采集部分采用 DS18B20 型温 度传感器 用 4 位 LED 显示数码管作为显示部分 用来将温度显示出来 系统硬件电路 部分由四大模块组成 温度采集模块 温度显示模块 设置模块和单片机最小系统模块 单 片 机 最 小 系 统 显示模块 采集模块 设置模块 2 2 单片机介绍 单片机是计算机制造技术发展的产物 其应用于很多场合 发展迅猛 1971 年 Intel 公司研制出来 4004 的 4 位微处理器不久 在 1974 年 12 月 Fairchild 仙童 公司立即研 制出了 8 位的单片机 即 F8 单片机的门户就这样被打开了 直到上世纪 70 年代末 单片机应用技术才被引入中国 开始被我国的科学研究人员 探索 到 80 年代 单片机终于广泛应用于各种行业 在 1978 年 Zilog 公司推出了 Z8 单 片机 不久我国工业界的主流就是这种单片机 直到 90 年代初 我国在某些领域使用的 单片机开始向 Intel 生产的 MCS 51 系列单片机靠拢 如工业领域 在短短至今二十几年的时间里 单片机经过了 4 位机 8 位机 16 位机 32 位机几 个大的发展阶段 虽然没有像微处理器那样不断突破 但是目前 8 位机仍然是工业控制 领域的主流机型 近几年单片机的内部结构变的是愈加完美了 在原有的集成结构上不 断创新 越来越多的外围电路和外设接口被集成于单片机内部结构中 硬件电路的设计 变得更加简单了 微控制器 MicroController 体系结构的设计已逐渐被建立起来 其发展 过程大致分为下面的几个阶段 第一阶段 单片机的探索阶段 第二阶段 单片机的完善阶段 第三阶段 单片机的高性能阶段 第四阶段 单片机的全面发展阶段 单片机就是将微处理器 存储器和各种输入输出接口 放在一块芯片上集成得来 自问世以来 广泛应用于自动检测与控制 智能仪表 机电一体化 工业控制等各个方 面 单片机本身就是一种计算机系统 如果在外围加上一些接口电路 就可以构成某些 特定的应用系统 单片机的几种主要应用系统分为 1 最小系统 外围电路只配有晶振 复位电路 电源 只能运用于简单的一些控制 2 最小功耗系统 在系统正常运行的情 况下 使得系统消耗的功耗达到最小 3 典型应用系统 为了使各种系统能够正常运行 所设计的必要硬件结构系统 4 5 以单片机为核心处理器件构成的应用系统有着许多优点 1 功能齐全 可靠性好 抗干扰的能力较强 2 使用起来简单方便 可以被普及使用 3 发展迅猛 有着广阔的前景 4 比较容易就能嵌入到各种应用系统中 2 2 1 STC 单片机结构介绍 STC89C52 单片机是一种 8 位微控制器 特点是低功耗 有高性能 CMOS 同时内置 8K 字节可编程 Flash 存储器 芯片内拥有十分灵巧的 8 位微处理器和在系统可编程 Flash 使得 STC89C52 单片机提供为许多较灵活 十分有效的解决方案 主要在工农业 控制系统中 STC89C52 的标准功能如下 8k 字节 Flash 256 字节 RAM 32 位 I O 接 口线 看门狗定时器 2 个数据指针 三个 16 位定时器 计数器 一个 6 向量的中断结构 全双工串行口 另外 STC89C52 可降至 0Hz 静态逻辑操作 支持 2 种工作软件 用来选 择节电模式 当工作在空闲模式下 微处理器就会停止工作 允许随机存储器 定时器 计数器 串口 中断继续工作 在掉电的时候 随机存储器中的内容会被保存起来 振 荡器被冻结 单片机停止一切内外部工作 直到下一个中断或硬件复位为止 最高运作 频率 35Mhz 6T 12T 可选 1 引脚结构 见图 2 2 图 2 2 单片机引脚结构 2 内部结构 见图 2 3 时钟电路ROM EPROM Flash 4KB RAM 128B SFR 21 个 定时器 计数器 CPU 总线控制中断系统 5 个中断源 2 个优先级 串行口 全双工 1 个 4 个并行口 Vss Vcc P0 P1 P2 P3 RST EA ALE PSEN XTAL1XTAL2 图 2 3 内部结构 2 2 2 STC 单片机引脚介绍 RST 复位输入 在高电平状态时有效 当单片机有脉冲信号时 在这个引脚加上持 续时间超过2个机器周期的高电平状态时 就可以完成复位操作 一般在正常运行状态时 此引脚应该是低电平状态 PSEN 片外程序存储器的读选通信号 当单片机在读片外程序存储器时 这个引脚 的读片外部程序存储器选通信号应该是负跳沿脉冲 此引脚接外部程序存储的OE端时 访问外部RAM PSEN信号是处在无效状态 EA VPP 为访问外部程序存储器允许控制端 当EA的引脚接入低电平时 对程序 存储器的操作 只能是读取外部程序存储器中的数据 所寻地址的范围是为0000H到 FFFFH 如果需要执行内部程序指令 EA应该接入高电平 P0口 8位 漏极开路的双向I O口 当89C52扩展外部存储器及I O接口芯片时 P0口 作为地址总线及数据总线的分时复用端口 P0口也可以作为通用的I O口使用 但需加上 拉电阻 这时为准双向口 当P0口用来做普通的I O接口输入时 应该先向该端口的输出 锁存器写1 P0口可以用来驱动8个LS型的TTL负载 P1口 8位 准双向的输入输出接口 它的内部中有上拉电阻 P1口是专门为用户使 用的准双向I O口 当用来做普通的I O口输入时 应该首先向端口的输出锁存器写入 1 P1口可以用来驱动4个LS型的TTL负载 此外 P1 0和P1 2分别作定时器 计数器2的外 部计数输入 P1 0 T2 和时器 计数器2的触发输入 P1 1 T2EX 具体如下表2 1所示 当单 片机进行Flash固化编程时 P1口同时接收低8位地址 P2口 8位 准双向的输入输出接口 它的内部中有上拉电阻 当89C52扩展外部存 储器及I O接口时 P2口可输出高8位地址 P2口也可作为普通的I O口使用 当用来做普 通的I O口输入时 应该首先向端口的输出锁存器写入1 P2口也可以用来驱动4个LS型的 TTL负载 表2 1 P1口功能 引脚号第二功能说明 P1 0T2定时器 计速器 T2 的外部计数输入 时钟输出 P1 1T2EX定时器 计速器 T2 的捕捉 重载触发信号和方向控制 P1 5MOSI在系统编程用 P1 6MISO在系统编程用 P1 7SCK在系统编程用 P3口 8位 准双向的输入输出接口 它的内部中也有上拉电阻 P3口可以用来做为 常用的I O口 当作为通用的I O口输入时 应该首先向端口的输出锁存器写入1 P3口也 可以用来驱动4个LS型的TTL负载 P3口还能向用户提供一些第二功能 P3口也可以用来 作为STC89C52的一些特殊功能的接口 如下表2 2所示 当单片机进行Flash固化编程时 P3口同时也接收一些外部控制信号 4 表2 2 P3口功能 引脚号第二功能说明 P3 0RXD串行数据输入口 P3 1TXD串行数据输出口 P3 2INT0外部中断 0 输入 P3 3INT1外部中断 1 输入 P3 4T0定时器 0 外部计数输入 P3 5T1定时器 1 外部计数输入 P3 6WR外部数据存储器写选通输出 P3 7RD外部数据存储器读选通输出 ALE PROG 在芯片访问外部存储器时 有时候需要对地址或者数据进行所存操作 该引脚的功能正是与锁存相对应 在软件编程方面也可以利用该功能进行便捷的操作 当单片机进行Flash固化编程时 此引脚对于输入编程脉冲有作用 时钟引脚 XTAL1 反向振荡放大器的输入 XTAL2 来自反向振荡器的输出 如图2 4所示 STC89C52单片机有一个反相放大器 用来构成内部振荡器 一般会 选石英晶体振荡器作为外接振荡源 此电路在加电过后会在XTAL2引脚上产生一个正弦 波时钟信号 其振荡频率主要由外接的石英晶振的频率决定 电路中的两个电容C1 C2 的作用有两个 一是用来帮助振荡器起振 二是用来微调晶体振荡器的频率 电容 C1 C2的典型值为30pF 图2 4 自激振荡器原理图 定时器0和定时器1 在STC89C52单片机中 定时器0和定时器1的定时方式与89C51一样 定时器2 是一个自动恢复初始值的18位定时 计数器 既能做定时器 又可以做计 数器 定时器2有2个8位寄存器 TH2和TL2 TL2为常数缓冲器 当TL2计数发生溢出时 在溢出标志位TF2置 1 的同时 自动将TH2的初始值送到TL2中 使得TL2得以从初始 值处重新计数 中断 STC89C52有5个中断源 两个外部中断 INT0和INT1 两个定时中断和一个串行口 中断 如果外部中断请求0时 请求信号由引脚INT0输入 IE0为它的中断请求标志位 如果外部中断请求1 请求信号引脚由INT1输入 IE1为它的中断请求标志位 定时器 计数器T0计数溢出中断请求 中断请求标志位为TF0 定时器 计数器T1计数溢出中断请 求 中断请求标志位为TF1 串行口中断请求是用来发送中断或接受中断 标志位为TI或 RI 上述的中断请求标志位分别由特殊功能寄存器TCON和SCON相应的位锁存 如下表 2 3为中断允许控制寄存器功能 5 VCC 接 5V电源 GND 接地 表2 3 中断允许控制寄存器 符号位地址功能 EAIE 7中断总允许控制位 EA 0 中断总禁止 EA 1 各中断有各自的 控制位设定 IE 6预留 ET2IE 5定时器 2 中断允许控制位 ESIE 4串行口中断允许控制位 ET1IE 3定时器 1 中断允许控制位 EX1IE 2外部中断 1 允许控制位 ET0IE 1定时器 0 中断允许控制位 EX0IE 0外部中断 0 允许控制位 2 3 DS18B20 数字温度传感器介绍 2 3 1 功能介绍 DS18B20 这款型号的温度传感器是由 DALLAS 半导体公司研制出来的 它是一种在 旧的结构基础上改进而来的智能温度传感器 传统的温度传感器是由热敏电阻作为主要 元件的器件 改进后的传感器能够直接读出被测物体的温度 并且在实际的的操作中可 通过软件编程来实现其他相对复杂的功能 DS18B20 提供 9 位温度读数 用来显示器件 的温度数值 6 特性 与单片机相互通讯时只要一根接口线就行了 实现双工通讯功能 用来测量温度的范围是 55 125 分辨率为0 5 几个DS18B20可以挂在一条的总线上 但是数量不能超过8个 工作电源3 5V DC 在测量温度时 不要任何多余的元件 直接测出温度 可以一次读出9位温度数字值 把温度转化成为数字量 只需要1秒左右的时间 用户可以自己设置温度上下限的告警值 2 3 2 内部存储器介绍 图2 5的方框图表示DS18B20的内部结构 1 64位激光lasered ROM 2 温度灵敏元件 3 非易失性温度告警触发器TH和TL 64 位 ROM 和 单 线 接 口 存储器与控制逻辑 高 速 缓 存 高温触发器 TH 配置寄存器 低温触发器 TL 温度传感器 8 位 CRC 发生 器 C Vdd 图 2 5 DS18B20 内部结构 如果一根总线上有多个DS18B20器件 那么可以只选出一个DS18B20指定 还可以给 连接在总线上的处理器指出存在多少个器件及其类型 在接单个总线的时候 ROM操作 在未开始之前 还不可以使用器件内部的操作系统 处理器首先必须提供五种ROM操作 命令之一 1 Read ROM 读ROM 2 Match ROM 符合ROM 3 Search ROM 搜索ROM 4 Skip ROM 跳过ROM 或5 Alarm Search 告警搜索 上述的命令都是对每一个温度 传感器器件进行操作 操作的部分是64位激光ROM部分 DS18B20中的温度传感部分是用来测量被测物体的温度 下面用一个测得的12位温度 值转化为例 用2个字节16位有符号的二进制补码形式来提供数值 以0 0625 LSB的形 式表达出来 S是用来表示符号位 如下表2 4 表2 4 DS18B2012位温度数据 bit7bit6bit5bit4bit3bit2bit1bit0 LS Byte232221202 12 22 32 4 bit15bit14bit13bit12bit11bit10bit9bit8 MS ByteSSSSS262524 表2 4是将12位温度值经过转换后得到的数据 是12位 将转换后得到的数据存储在 DS18B20的两个数据存储器中 字节的前面5位是符号位 用来判断测到的温度的正负 如果测到被测物体的温度值大于0 那么高字节前面的5位都是0 只要将测来的数值用来 与0 0625相乘 就能得到实际的温度 如果测到被测物体的温度值小于0 那么高字节前 面的5位都是1 将测到的数值来取反加1 再与0 0625相乘 就可以能够得到实际的温度 如下表2 5为DS18B20的温度 数据转换关系 表 2 5 DS18B20 的温度 数据关系 TEMPERATUREDIGITAL OUTPUT BINARY DIGITAL OUTPUT HEX 125 0000 0111 1101 000007D0h 85 0000 0101 0101 00000550h 25 0625 0000 0001 1001 00010191h 10 125 0000 0000 1010 001000A2h 0 5 0000 0000 0000 10000008h 0 0000 0000 0000 00000000 h 0 5 1111 1111 1111 1000FFF8h 10 125 1111 1111 0101 1110FF5Eh 25 0625 1111 1110 0110 1111FE6Fh 55 1111 1100 1001 0000FC90h 温度传感部分采集转化后得来的数据 一般是放到 DS18B20 的暂存存储器中 DS18B20 的暂存存储器有 8 个字节 字节的区域是连续的 前面两个字节是用来保存测来 的温度信息 第一个字节放入的是 DS18B20 测来的温度值的低八位内容 第二个字节放 入的是 DS18B20 测得的温度值的高八位部分 第三个和第四个字节是设置温度告警的上 限与下限的易失性保存 第五个字节是结构寄存器的易失性保存 当这三个字节在上电 复位状态时 字节中的内容都会被刷新 第六 七 八个字节用于内部温度数值的计算 第九字节是用来检查冗余字节 如下表 2 6 为暂存寄存器的分布 表 2 6 DS18B20 暂存寄存器分布 寄存器内容字节地址 温度最低数字位 温度最低数字位 高温限值 低温限值 保留 保留 计数剩余值 每度计数值 CRC 校验 0 1 2 3 4 5 6 7 8 ROM操作命令 如果处理器检测到总线挂有温度传感器 便发出传感器ROM中的的五种操作命令之 一 所有的操作命令都是一个字节 Read ROM 读ROM 33h 此命令是允许连接总线上的处理器读取DS18B20的8位产品系列编号 唯一的48位产 品序列号以及8位的冗余校验码 Match ROM 符合ROM 55h 在与ROM中的命令匹配后 继续以64位的ROM数据序列 允许连接在总线上的处理 器对多个DS18B20中某个特定的传感器 进行读写 Skip ROM 跳过ROM CCh 此命令是用来寻找与64位ROM中的序列号相匹配的DS18B20地址 这样才能响应后 面的操作命令 所有的与64位ROM序列号不匹配的外挂传感器 都将等待复位脉冲的到 来 earch ROM 搜索ROM F0h 此命令允许总线上的处理器使用一种消去elimination处理命令 来识别总线上所有外 挂器件的64位序列号 7 2 4 显示模块设计 LED 显示数码管一般正向压降的都是 1 5 2V 额定电流为 10mA 通过最大的电流 为 40mA 8 根据各种不同管接线的方式 可将数码管分成共阴极型和共阳极型 根据要 求 本设计采用 4 位共阳 LED 数码管 从 P0 口输出段码 列扫描用 P0 口来实现 下图 2 6 中数码管采用的是 8 位七段共阳数码管 其中 A DP 段分别接到单片机的 P0 口 由 单片机输出的 P0 口数据来决定段码值 位选码 1 2 3 4 分别接到单片机的 P2 4 P2 5 P2 6 P2 7 由单片机来决定当前该显示的是哪一位 在图中还有 8 个电阻 连接在 P0 口上 用作 P0 口的上拉电阻 保证 P0 口没有数据输出时候处于高电平状态 2 4 1 LED 数码管结构 图 2 6 LED 共阳数码管结构 2 4 2 共阳数码管数字编码 共阳数码管数字编码见下表 2 7 表 2 7 共阳数码管数字编码 显示 数字 共阳极字段码 0C0H 1F9H 2A4H 3B0H 499H 592H 682H 7F8H 880H 990H 2 5 按键电路的设计 键盘实际是就是很多案件的一种组合 按键的按下与否形成一个高低电平 主控芯 片 CPU 通过高低电平来识别所需信号 进而使程序进行下一步的操作 键盘操作的软硬 件的设计有以下几个方面的问题 对于此设计来说我们要准确的显示我们所要对应的信 息 每按一次按键要显示所要显示的信息 这按键是主要用来控制温度而设计的 这样 比键盘操作方便 也比较实惠 按键电路采用中断模式 当有按键按下时 系统产生中 断 CPU 响应中断后 开始计数 即查询键号 通过软件来实现该键号所对应键的功能键 盘的大体设置为 K1 为温度控制的上下限 K2 K3 用来控制温度的加减 如果 K1 没按 下 则温度在上限控制状态 如果 K1 按下 则温度在下限控制状态 其电路图如下图 2 7 所示 图 2 7 按键电路 2 5 1 判键及其接口电路设计 键盘之所以能够对系统进行操作是因为键盘的按下会产生一个电平上的变化 电平 的变化进而影响整个系统的操作 如果系统规定高电平表示断开 反之低电平则表示闭 合 通过芯片对电平的高低状态监测以及软件编写的配合可确认键按下与否 由于按键是认为操作 对按键的按下与否把我并不是非常准确 有时按键信号的传 递也会受到其他操作的影响使得信号之间产生串扰 所以为了确保按键是按下与否的识 别情况 我要考虑进行按键防抖的操作 对于防抖操作有两种方式 一种是硬件的防抖 一种是软件的防抖 硬件消除抖动可采取双稳态电路或滤波消抖电路 软件消抖是是指 当程序在运行中检测到按键是低电平的时候并不急于向下继续运行 而是在软件延时一 定程序后对该引脚的电平再次进行检测 看是否还处在低电平状态 若还是 则判断为 有按键按下 软件消抖的方法效果可以接受 同时也节省了硬件消抖的开销 此设计中 由于按键较少 我选择的是软件消抖 当按键较多时 按键之间容易产生串扰 采用硬 件消抖法会更好一点 按键是要连接到硬件电路上的 其接口设计也有两种方法 独立式按键和矩阵式键 盘 独立式按键顾名思义就是每个按键式相互独立 每个按键都通过一根线与主控芯片 或者硬件电路中的相对应引脚进行连接 这种方法在操作上更加简便 不需要考虑太多 的电路设计因素 对于简单的电路设计适用 任何事物有利有弊 弊端就是该方案对 I O 资源比较浪费 对于大的系统来说 往往会导致引脚的不够用 矩阵键盘就是通过 行线与列线的交叉点来安排按键的位置 这种方法适用于按键数量较多的电路 通过对 行线与列线的分布扫描来判断是哪一个按键按下 根据扫描的结果以及之前准备的组合 表来判断具体按下的按键 8 2 5 2 键盘的工作方式 键盘的工作方式主要有三种 编程扫描 定时扫描和中断扫描 当 CPU 在忙于各种 各样工作时 如何怎样去处理键盘的输入 这主要取决于键盘的工作方式 键盘扫描只 是 CPU 的各种工作任务的一种而已 编程扫描时 CPU 会去反复扫描键盘 当用户有命令或者数据输入时 响应键盘的 输入请求 这种扫描方式一般当单片机不工作时 才调用子程序 直到 CPU 返回重新扫 描键盘为止 定时扫描工作方式通常是利用单片机内的定时器产生 10ms 定时中断 单 片机响应定时器溢出中断后 对键盘反复进行扫描 如果发现有按键按下时 并且能够 识别出这个按下的键 就会执行与之相对应处理程序 9 中断扫描在没有按键按下时 如果有键按下时就会产生中断 由中断程序识别并执行 2 6 报警装置电路设计 本设计中的报警装置电路用到了发光二级管 三极管 100 欧姆的电阻 将发光二级 管的一端接地 另一端接三极管的发射极 三极管的基极通过 100 欧姆的电阻接在三极 管的 P3 7 引脚 三极管的集电极接 5V 的电源 其电路图如图 2 8 所示 图 2 8 报警装置电路图 2 7 系统整体硬件电路 系统整体硬件电路包括 传感器数据采集电路 温度显示电路 单片机主控电路等 通过 Protel99se 可画出如图 2 9 所示的电路图 9 10 11 三 系统软件设计 3 1 温度控制系统原理框图 主控制程序的主要是用来实时控制当前所要测控的环境温度 并读出由 DS18B20 测 量的经过处理的当前环境的温度值 同时检查温度是否在限度之内 否则报警 同时调 整温度值 其主控制程序流程图如 3 1 所示 Y 发温度转换命令 发 DS18B20 复位命令 发跳过读序列号命令 读取操作 CRC 校验 9 字节完 CRC 校验正 确 移入温度暂存器 结束 N N Y 图 2 9 温度控制电路原理 开始 STC89C52 初始化 DS18B20 初始化 温度是否到 达设定限度 温度显示 结束 红灯亮 温度在显 示范围内 Y N Y N 发 DS18B20 复位命令 发跳过读序列号命令 发温度转换开始命令 结束 图3 1 主程序流程图 图3 2 读温度流程图 3 1 1 读温度子程序 读温度子程序的功能主要是用来将随机存储器中的 9 个字节读出 在读出字节时侯 需要进行冗余码校验 在校验到有错误的时侯 所测得的温度数据就会不进行改写 其 读温度子程序流程图如 3 2 所示 3 1 2 温度转换子程序 温度转换命令子程序的功能主要是用来发送温度开始转换命令 让温度转换自动进 行 其温度转换命令子程序流程图如 3 3 所示 图 3 3 温度转换流程图 3 1 3 计算温度子程序 计算温度子程序的功能主要将随机存储器中的温度数值读取出来 将取得的温度数 值的每一位经过计算分别取出来 放入指定的字节中 并进行温度值数正负的判定 计 算温度子程序流程图如 3 4 所示 开始 温度零下 温度值取补码置 标志 取出小数位的温度值 取出整数位的温度值 结束 置 标志 N Y 3 1 4 温度显示子程序 温度显示子程序的功能主要是对显示数据寄存器中的数据反复进行刷新操作 如果 最高位显示是 0 时的时候 就将符号显示位立即移入下一位字节中 温度显示子程序流 程图如 3 5 所示 图 3 4 计算温度流程图 图 3 4 计算温度流程图 温度数据移入显示寄存器 十位数 0 百位数 0 十位数显示符号百 位数不显示 百位数显示数据 不显示符号 结束 N N Y Y 四 总结与展望 1 本次基于单片机温控电路的温度传感器的设计经过了整体分析 模块化分析 整 体与模块的仿真分析这样三个步骤 实现了温度的显示以及报警显示功能 2 在写温度传感器的驱动时一定要处理好时序问题 3 本次设计可以说达到了预期的要求 但尚有需要改进的地方 随着温度采集现场 的复杂程度加大 如果依然用一个传感器来采集温度 必然反映不了真实的现场情况 这时一个很好的解决办法就是在总线上挂多个传感器 实行多路采集并且还可以加上时 钟控制电路 实现实时温度控制 4 通过本次论文设计 让我进一步了解了使用单片机控制温度的工作原理和作用 也更深一层地懂得了程序模块化设计的重要性 同时对单片机学习板的操作有了进一步 的了解 熟悉掌握了 Keil 的文本编程设计方法和 Protues 的仿真 图 3 5 温度显示数据刷新流程图 目前 国内外温度控制系统及仪表正朝着高精度 智能化 小型化等方面快速发展 现如今计算机的高速数据处理能力 和它丰富的利用资源 以及强大的逻辑功能 能够 根据自己设计的实际需求进行灵活的资源采集分配 适当的增加或者减少其控制信号 输出的路数 这样就能够合理的设置温度控制的范围与路数 给以后的实际应用提供了 可靠的 有力的控制系统解决方案 参考文献 1 刘娟 梁卫文 程莉等 单片机 C 语言与 Protues 仿真技能实训 北京 中国电力出版社 2010 119 176 2 李平 杜涛 罗和平等 单片机应用开发与实践 北京 机械工程出版社 2008 178 188 3 郑阿奇 王绮红 张春良等 Protel 实用教程 北京 电子工业出版社 2010 72 121 4 常敏 王涵 范红波等 51 单片机应用程序开发与实践 北京 电子工业出版社 2009 235 252 5 张培仁 孙占辉 张欣等 基于 C 语言编程 MCS 51 单片机原理与应用 北京 清华大学出版社 2002 268 277 296 299 6 刘春恰 数字温度传感器 DS18B20 测温的应用 电器时代 2010 10 116 117 7 Morrison D Single Component Isolates Data And Power J Power Electronics Technology 2006 32 3 54 54 8 Takahashi K etc Full color LEDdisplay panel fabricated on 8 silicon microreflector J IEEE Cat No 97CH36021 1997 7 8 9 赵福按 电子电路设计与实践 M 山东 山东科学出版社 2001 110 118 10 陈金平 电子系统设计 M 北京 国防工业出版社 2007 18 30 11 康华光 电子技术基础 数字部分 北京 高等教育出版社 1998 140 160 附 录 仿真结果 设置温度上限为 38 度 温度下限为 6 度 1 如下仿真图 1 所示 此时温度为 4 度 低于下限温度 报警灯亮 实现报警 仿真图 1 下限报警 2 如下仿真图 2 所示 此时温度为 40 度 超过上限温度 报警灯亮 实现报警 仿真图 2 上下报警 3 如下仿真图 3 所示 此时温度为 29 度 在所设范围内 报警灯没亮 说明温度 正常 仿真图 3 正常工作 温度控制系统C语言程序 include define uint unsigned int define uchar unsigned char sbit p34 P2 4 sbit p35 P2 5 sbit p36 P2 6 sbit dp P0 7 sbit p37 P2 7 sbit DQ P2 2 定义 DS18B20 总线 I O sbit SET P3 1 定义选择报调整警温度上限和下限 1 为上限 0 为下限 sbit LING P2 0 定义闪烁 signed char m 温度值全局变量 bit sign 0 外部中断状态标志 signed char shangxian 38 上限报警温度 默认值为 38 signed char xiaxian 5 下限报警温度 默认值为 5 ucharcode LEDData 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 xff 0 xbf 延时子程序 void Delay uint i while i 初始化 DS18B20 void Init DS18B20 void unsigned char x 0 DQ 1 Delay 8 稍做延时 DQ 0 单片机将 DQ 拉低 Delay 80 精确延时 大于 480us DQ 1 拉高总线 Delay 14 x DQ 稍做延时后 如果 x 0 则初始化成功 x 1 则初始化失败 Delay 20 读一个字节 unsigned char ReadOneChar void unsigned char i 0 unsigned char dat 0 for i 8 i 0 i DQ 0 给脉冲信号 dat 1 DQ 1 给脉冲信号 if DQ dat 0 x80 Delay 4 return dat 写一个字节 void WriteOneChar unsigned char dat unsigned char i 0 for i 8 i 0 i DQ 0 DQ dat Delay 5 DQ 1 dat 1 void Tmpchange void 发送温度转换命令 Init DS18B20 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneChar 0 x44 启动温度转换 读取温度 unsigned int ReadTemperature void unsigned char a 0 unsigned char b 0 unsigned int t 0 float tt 0 Tmpchange Init DS18B20 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneChar 0 xBE 读取温度寄存器 a ReadOneChar 读低 8 位 b ReadOneChar 读高 8 位 t b t shangxian m xiaxian LING 1 温度不在范围内报警 else LING 0 p34 0 p35 0 p36 0 p37 0 P0 LEDData d 显示小数点后两位 p34 1 p35 0 p36 0 p37 0 Delay 300 p34 0 p35 0 p36 0 p37 0 P0 LEDData c 显示小数点后一位 p34 0 p35 1 p36 0 p37 0 Delay 300 p34 0 p35 0 p36 0 p37 0 P0 LEDData b 显示个位 dp 0 p34 0 p35 0 p36 1 p37 0 Delay 300 p34 0 p35 0 p36 0 p37 0 P0 LEDData a 显示十位 p34 0 p35 0 p36 0 p37 1 Delay 300 p34 0 p35 0 p36 0 p37 0 关闭显示 disptiaozheng uchar f g j k f shangxian 10 g shangxian 10 j xiaxian 10 k xiaxian 10 p34 0 p35 0 p36 0 p37 0 P0 0 xc0 显示 0 p34 1 p35 0 p36 0 p37 0 Delay 200 p34 0 p35 0 p36 0 p37 0 P0 0 xc0 显示 0 p34 0 p35 1 p36 0 p37 0 Delay 200 p34 0 p35 0 p36 0 p37 0 if SET 1 P0 LEDData g dp 0 显示上限温度个位 else P0 LEDData k dp 0 p34 0 p35 0 p36 1 p37 0 Delay 200 p34 0 p35 0 p36 0 p37 0 if SET 1 P0 LEDData f 显示上限温度十位 else if f 0 P0 0 x00 不显示下限温度十位 else P0 LEDData j 显示下限温度十位 p34 0 p35 0 p36 0 p37 1 Delay 200 p34 0 p35 0 p36 0 p37 0 关闭显示 Delay 20 外部中断 0 服务程序 void int0 void interrupt 0 EX0 0 关外部中断 0 sign 1 if SET 1 shangxian else xiaxian Delay 500 EX0 1 外部中断 1 服务程序 void int1 void interrupt 2 EX1 0 关外部中断 0 sign 1 if SET 1 shangxian else xiaxian Delay 500 EX1 1 主函数 void main void uint z IT0 1 IT1 1 EX0 1 EX1 1 EA 1 ReadTemperature LING 0 for z 0 z 100 z Disp init while 1 Disp Temperature if sign 1 for z 0 z 300 z disptiaozheng sign 0 袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇袄芈蒇袇螀芇蕿蚀

温馨提示

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

评论

0/150

提交评论