单片机可调温度控制器毕业论文.doc_第1页
单片机可调温度控制器毕业论文.doc_第2页
单片机可调温度控制器毕业论文.doc_第3页
单片机可调温度控制器毕业论文.doc_第4页
单片机可调温度控制器毕业论文.doc_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

单片机可调温度控制器单片机可调温度控制器 毕业论文毕业论文 目 录 1 绪 论 1 2 单片机简介 2 2 1 单片机介绍 2 2 2 常用单片机及兼容机 2 3 系统方案的论证 3 3 1 各模块电路的方案选择及论证 3 3 1 1 控制器模块 3 3 1 2 温度采集模块 4 3 1 3 键盘与显示模块 4 3 2 系统各模块的最终方案 5 4 系统的硬件介绍及设计 6 4 1 AT89S52 芯片概述 6 4 1 1 AT89S52 的引脚及功能 6 4 1 2 AT89S52 的中央处理器 8 4 1 3 AT89S52 的时钟及复位电路 9 4 2 单总线数字式温度计 DS18B20 介绍 11 4 2 1 DS18B20 性能特点 11 4 2 2 DS18B20 引脚结构 11 4 2 3 DS18B20 工作原理及应用 12 4 3 显示模块介绍及设计 12 4 3 1 LED 发光原理 13 4 3 2 数码管介绍 13 4 4 键盘设计方案 15 4 5 声音报警电路设计 15 5 系统软件介绍及设计 16 5 1 系统软件设计原则 16 5 2 程序流程图介绍 16 5 2 1 程序流程图的作用 16 5 2 2 绘制流程图的步骤 16 5 2 3 流程图的绘制软件 17 5 3 系统程序流程图 17 5 4 系统软件的实现 18 5 4 1 DS18B20 驱动程序 19 5 4 2 按键驱动程序和按键处理程序 20 结 论 22 致 谢 23 参 考 文 献 24 附录 I 硬件电路图 25 附录 II 系统程序 26 毕业设计说明书 论文 缩写稿 43 The Abbreviation Version of the Thesis of Undergraduates 47 单片机的可调温度控制器 1 1 绪 论 目前单片机渗透到我们生活的各个领域 几乎很难找到哪个领域没有单片机的踪 迹 20 世纪末 电子技术获得了飞速的发展 在其推动下 基于单片机的现代电子产 品几乎渗透了社会的各个领域 有力地推动了社会生产力的发展和社会信息化程度的 提高 同时也使现代电子产品性能进一步提高 产品更新换代的节奏也越来越快 基 于单片机的发展趋势 本设计以单片机为核心制作了一个可调温度控制系统 本次设计运用 AT89S52 单片机作为主控芯片 配合 DS18B20 温度传感器 显示 电路 输出控制电路 故障报警电路等组成 设计了一种智能温度控制系统 本设计 完成后 能够实现以下功能 通过串口键盘随机进行一个温度值的设置 通过温度传 感器 DS18B20 将模拟量转换为数字量并将其显示在 LED 上 将测量值与设定值通过 单片机进行比较 若高于所设定温度红色发光二极管发光并伴有蜂鸣器的蜂鸣 低于 设定温度绿色发光二极管发光并伴有蜂鸣 并最终调整温度以符合温度设定值 在设计时 按照设计的要求 从可靠性 经济性 安全性三个方面进行考虑 通 过设计方案的比较 确定出来一套即经济又可行的方案 本次设计是对所学知识的综合运用 把理论知识和实践相结合 在本次设计与检 验过程中遇到了许多实际问题 比如单片机及其电子元器件的市场选择 不熟悉 Keil 和 Proteus 软件的使用方法 不熟悉焊接技巧 可能会发生漏焊 虚焊现象 如何系统 的最佳外观效果等 所有的这些问题 我们都通过查阅资料 咨询老师一一解决了 为设计的成功提供了保障 本文通过方案确认 介绍了设计中所用到的芯片 以及主控芯片的辅助模块的讲 解 通过清晰的程序流程图 给程序的理解提供了方向 还介绍了程序调试软件和硬 件调试软件 最后对本设计的实物制作做了一个概述 2 单片机简介 2 2 单片机简介 2 1 单片机介绍 单片机是指一个集成在一块芯片上的完整计算机系统 尽管他的大部分功能集成 在一块小芯片上 但是它具有一个完整计算机所需要的大部分部件 CPU 内存 内 部和外部总线系统 目前大部分还会具有外存 同时集成诸如通讯接口 定时器 实 时时钟等外围设备 而现在最强大的单片机系统甚至可以将声音 图像 网络 复杂 的输入输出系统集成在一块芯片上 单片机也被称为微控制器 Microcontroller 是因为它最早被用在工业控制领域 单片机由芯片内仅有 CPU 的专用处理器发展而来 最早的设计理念是通过将大量外围 设备和 CPU 集成在一个芯片中 使计算机系统更小 更容易集成进复杂的而对体积要 求严格的控制设备当中 INTEL 的 Z80 是最早按照这种思想设计出的处理器 从此以 后 单片机和专用处理器的发展便分道扬镳 它是一种在线式实时控制计算机 在线式就是现场控制 需要的是有较强的抗干 扰能力 较低的成本 这也是和离线式计算机的 比如家用 PC 的主要区别 单片机是靠程序的 并且可以修改 通过不同的程序实现不同的功能 尤其是特 殊的独特的一些功能 这是别的器件需要费很大力气才能做到的 有些则是花大力气 也很难做到的 2 2 常用单片机及兼容机 MCS 51 系列单片机及其兼容机在国内拥有广泛的用户 这与 Intel 8 位单片机是最 早引入我国的有关 MCS 51 的硬件结构也决定了其指令系统不会发生变化 所以设计 人员可以较容易地对不同公司的单片机产品进行选型 他们只需将重点放在芯片内部 资源的比较上 目前 在国内市场上 Intel 公司生产的 MCS 51 系列单片机已少见 代之以其他 公司生产的 MCS 51 系列兼容单片机 这些公司主要有 Phillips Dallas SIEMENS AMD Atmel NEC HARRIS WinBond YHUNDAI ADI 等 其中又以 Philips Dallas Atmel WinBond YHUNDAI ADI 等公司占有 市场份额最大 以上各公司开发的 MCS 51 系列兼容单片机各具特色 它们的内部资 源差异很大 在对原来 MCS 51 内核的改进上也不尽相同 每个公司都在其中加入了 本公司的特有技术 例如拥有很大用户群的 Atmel 公司生产的 MCS 51 系列兼容单片 机 AT89 系列单片机 就在原有 MCS 51 内核中加入了该公司的 FLASH 存储器技 术 经过市场的调查 基于本课题的设计要求 考虑其可靠性 经济性 本设计选择 单片机的可调温度控制器 3 ATMEl 公司的 AT89S52 芯片 3 系统方案的论证 根据题目要求系统模块分可以划分为 温度测量模块 显示电路模块 报警模块 控制模块 系统总体设计框图如图 3 1 所示 为实现各模块的功能 分别做了几种不 同的设计方案并进行了论证 显示电路测温部分 键盘输入报 警 控 制 部 分 AT89S52 AT89S52 图 3 1 系统总体设计框图 3 1 各模块电路的方案选择及论证 3 1 1 控制器模块 根据题目要求 控制器主要用于对温度测量信号的接受和处理 控制电热丝和风 扇使控制对象满足设计要求 控制显示电路对温度值实时显示以及控制键盘实现对温 度值的设定等 对控制器的选择有以下三种方案 方案一 采用模拟运算放大器组成 PID 控制系统 对于水温控制是足够的 但要 附加显示 温度设定等功能 要附加许多电路 稍显麻烦 方案二 采用 FPGA 作为系统控制器 FPGA 功能强大 可以实现各种复杂的逻 辑功能 规模大 密度高 它将所有器件集成在一块芯片上 减少了体积 提高了稳 定性 并且可应用 EDA 软件仿真 调试 易于进行功能扩展 FPGA 采用并行的 I O 口方式 提高了系统的处理速度 适合作为大规模实时系统控制核心 由温度传感器 送来的温度信号 经 FPGA 程序对其进行处理 控制加热装置动作 但由于本设计对 数据处理的速度要求不高 FPGA 的高速处理的优势得不到充分体现 并且其成本偏 高 引脚较多 硬件电路布线复杂 方案三 采用 ATMEL 公司的 AT89S52 作为系统控制器 单片机算术运算功能强 软件编程灵活 自由度大 可用软件编程实现各种算法和逻辑控制 AT89S52 是一种 低功耗 高性能 CMOS8 位微控制器 具有 8K 在系统可编程 Flash 存储器 使得 2 单片机简介 4 AT89S52 为众多嵌入式控制应用系统提供高灵活 超有效的解决方案 并且其具有体 积小 技术成熟和成本低等优点 单片机的可调温度控制器 5 3 1 2 温度采集模块 温度信号为模拟信号 本设计要对温度进行控制和显示 所以要把模拟量转换为 数字量 该温度采集模块有以下三种方案 方案一 利用热电阻传感器作为感温元件 热电阻随温度变化而变化 用仪表测 量出热电阻的阻值变化 从而得到与电阻值相应的温度值 最常用的的是铂电阻传感 器 铂电阻在氧化介质中 甚至在高温的条件下其物理 化学性质不变 由铂电阻阻 值的变化经小信号变送器 XTR101 将铂电阻随温度变化的转换为 4 20mA 线形变化电 路 再将电流信号转化为电压信号 送到 A D 转换器 ADC0809 即将模拟信号转 换为数字信号 该方案线性度优于 0 01 方案二 采用温度传感器 AD590 AD590 具有较高精度和重复性 良好的非线性 保证 0 1 的测量精度 加上软件非线性补偿可以实现高精度测量 AD590 将温度转 化为电流信号 因此要加相应的调理电路 将电流信号转化为电压信号 送入 8 为 A D 转换器 可以获得 255 级的精度 方案三 采用数字温度传感器 DS18B20 DS18B20 为数字式温度传感器 无需其 他外加电路 直接输出数字量 可直接与单片机通信 读取测温数据 电路简单 如 图 3 2 所示 图 3 2 DS18B20 测温电路 3 1 3 键盘与显示模块 对键盘和显示模块有下面两种方案 方案一 采用液晶显示屏和通用矩阵键盘 液晶显示屏 LCD 具有功耗小 轻 薄短小无辐射危险 平面直角显示以及影象稳定不闪烁 可视面积大 画面效果好 抗干扰能力强等特点 但由于只需显示三位温度值 信息量比较少 且由于液晶是以 点阵的模式显示各种符号 需要利用控制芯片创建字符库 编程工作量大 控制器资 6 3 系统方案论证 源占用较多 其成本也偏高 方案二 采用三位 LED 七段数码管分别显示温度的十位 个位和小数位 按键采 用单列 3 按键进行温度设定 数码管具有 低能耗 低损耗 寿命长 耐老化 对外 界环境要求较低 同时数码管采用 BCD 编码显示数字 程序编译容易 资源占用较少 3 2 系统各模块的最终方案 根据以上分析 结合器件和设备等因素 确定如下方案 1 采用 AT89S52 单片机作为控制器 分别对温度采集 LED 显示 温度设定等 进行控制 2 温度测量模块采用数字温度传感器 DS18B20 DS18B20 与传统的热敏电阻相 比 他能够直接读出被测温度并且可根据实际要求通过简单的编程实现 9 12 位的数 字值读数方式 并且从 DS18B20 读出的信息或写入 DS18B20 的信息仅需要一根口线 单线接口 读写 因而使用 DS18B20 可使系统结构更趋简单 可靠性更高 他在测 温精度 转换时间 传输距离 分辨率等方面带来了令人满意的效果 3 显示用 LED 数码管显示实时温度值 用三个单键实现温度值的设定 本系统 中 采用了数码管的动态显示 节省单片机的内部资源 系统的基本框图如图 3 3 所示 CPU AT89S52 首先写入命令给 DS18B20 然 后 DS18B20 开始转换数据 转换后通过 AT89S52 来处理数据 数据处理后的结果就 显示到数码管上 另外由键盘设定温度值送到单片机 单片机通过数据处理发出温度 控制信息到继电器 DS18B20 可以被编程 所以箭头是双向的 AT89S52 AT89S52 AT89S52 LED 数码管DS18B20 键盘输入报警 图 3 3 系统基本框图 单片机的可调温度控制器 7 4 系统的硬件介绍及设计 4 1 AT89S52 芯片概述 AT89S52 是一种低功耗 高性能 CMOS8 位微控制器 具有 8K 在系统可编程 Flash 存储器 使用 Atmel 公司高密度非易失性存储器技术制造 与工业 80C51 产品 指令和引脚完全兼容 片上 Flash 允许程序存储器在系统可编程 亦适于常规编程器 在单芯片上 拥有灵巧的 8 位 CPU 和在系统可编程 Flash 使得 AT89S52 为众多嵌入 式控制应用系统提供高灵活 超有效的解决方案 AT89S52 具有以下标准功能 8k 字 节 Flash 256 字节 RAM 32 位 I O 口线 看门狗定时器 2 个数据指针 三个 16 位 定时器 计数器 一个 6 向量 2 级中断结构 全双工串行口 片内晶振及时钟电路 另 外 AT89S52 可降至 0Hz 静态逻辑操作 支持 2 种软件可选择节电模式 空闲模式下 CPU 停止工作 允许 RAM 定时器 计数器 串口 中断继续工作 掉电保护方式下 RAM 内容被保存 振荡器被冻结 单片机一切工作停止 直到下一个中断或硬件复位 为止 4 1 1 AT89S52 的引脚及功能 AT89S52 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 T2 P1 0 T2EX P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 RST RXD P3 0 TXD P3 1 INTO P3 2 INT1 P3 3 T0 P3 4 T1 P3 5 WR P3 6 RD P3 7 XTAL2 XTAL1 GND VCC P0 0 AD0 P0 1 AD1 P0 2 AD2 P0 3 AD3 P0 4 AD4 P0 5 AD5 P0 6 AD6 P0 7 AD7 EA VPP ALE PROG PESN P2 7 A15 P2 6 A14 P2 5 A13 P2 4 A12 P2 3 A11 P2 2 A10 P2 1 A9 P2 0 A8 8 4 系统的硬件介绍及设计 图 4 1 AT89S52 引脚 1 电源及时钟引脚 VCC 电源 GND 地 XTAL1 振荡器反相放大器和内部时钟发生电路的输入端 XTAL2 振荡器反相放大器的输出端 2 控制引脚 RST 复位输入晶振工作时 RST 脚持续 2 个机器周期高电平将使单片机复位 看门狗计时完成后 RST 脚输出 96 个晶振周期的高电平 特殊寄存器 AUXR 地址 8EH 上的 DISRTO 位可以使此功能无效 DISRTO 默认状态下 复位高电平有效 ALE PROG 地址锁存控制信号 ALE 是访问外部程序存储器时 锁存低 8 位地址 的输出脉冲 在 Flash 编程时 此引脚 PROG 也用作编程输入脉冲 在一般情况下 ALE 以晶振六分之一的固定频率输出脉冲 可用来作为外部定时器或时钟使用 然而 特别强调 在每次访问外部数据存储器时 ALE 脉冲将会跳过 如果需要 通过将地 址为 8EH 的 SFR 的第 0 位置 1 ALE 操作将无效 这一位置 1 ALE 仅在执行 MOVX 或 MOVC 指令时有效 否则 ALE 将被微弱拉高 这个 ALE 使能标志位 地址 为 8EH 的 SFR 的第 0 位 的设置对微控制器处于外部执行模式下无效 PSEN 外部程序存储器选通信号 PSEN 是外部程序存储器选通信号 当 AT89S52 从外部程序存储器执行外部代码时 PSEN 在每个机器周期被激活两次 而在访问外部 数据存储器时 PSEN 将不被激活 EA VPP 访问外部程序存储器控制信号 为使能从 0000H 到 FFFFH 的外部程序 存储器读取指令 EA 必须接 GND 为了执行内部程序指令 EA 应该接 VCC 在 Flash 编程期间 EA 也接收 12 伏 VPP 电压 3 I O 口 P0 口 P0 口是一个 8 位漏极开路的双向 I O 口 作为输出口 每位能驱动 8 个 TTL 逻辑电平 对 P0 端口写 1 时 引脚用作高阻抗输入 当访问外部程序和数据 存储器时 P0 口也被作为低 8 位地址 数据复用 在这种模式下 P0 具有内部上拉电 阻 在 Flash 编程时 P0 口也用来接收指令字节 在程序校验时 输出指令字节 程 序校验时 需要外部上拉电阻 P1 口 P1 口是一个具有内部上拉电阻的 8 位双向 I O 口 P1 输出缓冲器能驱动 4 个 TTL 逻辑电平 对 P1 端口写 1 时 内部上拉电阻把端口拉高 此时可以作为输 入口使用 作为输入使用时 被外部拉低的引脚由于内部电阻的原因 将输出电流 IIL 此 外 P1 0 和 P1 2 分别作定时器 计数器 2 的外部计数输入 P1 0 T2 和时器 计数器 2 的触 发输入 P1 1 T2EX 具体如下表所示 在 Flash 编程和校验时 P1 口接收低 8 位地址 单片机的可调温度控制器 9 字节 表 4 1 P1 口第二功能 引脚号第二功能 P1 0T2 定时器 计数器 T2 的外部计数输入 时钟输出 P1 1T2EX 定时器 计数器 T2 的捕捉 重载触发信号和方向控制 P1 5MOSI 在系统编程使用 P1 6MISO 在系统编程使用 P1 7SCK 在系统编程使用 P2 口 P2 口是一个具有内部上拉电阻的 8 位双向 I O 口 P2 输出缓冲器能驱动 4 个 TTL 逻辑电平 对 P2 端口写 1 时 内部上拉电阻把端口拉高 此时可以作为 输入口使用 作为输入使用时 被外部拉低的引脚由于内部电阻的原因 将输出电流 IIL 在访问外部程序存储器或用 16 位地址读取外部数据存储器时 P2 口送出高八位 地址 在这种应用中 P2 口使用很强的内部上拉发送 1 在使用 8 位地址 如 MOVX RI 访问外部数据存储器时 P2 口输出 P2 锁存器的内容 在 Flash 编程和校验时 P2 口也接收高 8 位地址字节和一些控制信号 P3 口 P3 口是一个具有内部上拉电阻的 8 位双向 I O 口 P2 输出缓冲器能驱动 4 个 TTL 逻辑电平 对 P3 端口写 1 时 内部上拉电阻把端口拉高 此时可以作为 输入口使用 作为输入使用时 被外部拉低的引脚由于内部电阻的原因 将输出电流 IIL P3 口亦作为 AT89S52 特殊功能 第二功能 使用 如下表所示 在 Flash 编程和校 验时 P3 口也接收一些控制信号 表 4 2 P3 口第二功能 引脚号第二功能 P3 0RXD 串行输入 P3 1TXD 串行输出 P3 2INT0 外部中断 0 P3 3INT0 外部中断 1 P3 4T0 定时器 0 外部输入 P3 5T1 定时器 1 外部输入 P3 6WR 外部数据存储器写选通 P3 7RD 外部数据存储器读选通 10 4 系统的硬件介绍及设计 4 1 2 AT89S52 的中央处理器 单片机的中央处理器 CPU 其内部的核心部件 它决定了单片机的主要功能特性 由运算器 定时控制部件和专用寄存器三大部分组成 1 运算器 运算器包括算术逻辑单元 ALU 布尔处理器 累加器 A 寄存器 B 暂存器和程 序状态字 PSW 等许多部件 它以算术逻辑单元 ALU 为核心 功能是实现数据的算术 逻辑运算 位变量处理和数据传输操作 单片机的 ALU 功能十分强 它不仅可对 8 位变量进行逻辑 与 或 异或 循环 求补 清零等基本操作 还可以进行加 减 乘 除等基本运算 为了乘除运 算的需要 设置了 B 寄存器 在执行乘法运算指令时 用来存放其中一个乘数和乘积 的高 8 位数 在执行除法运算指令时 B 中存入除数及余数 单片机指令系统中的布 尔指令集 存储器中的位地址空间与 CPU 中的位操作构成了片内的布尔功能系统 它 可对位 bit 变量进行布尔处理 如置位 清零 求补 测试转移及逻辑 与 或 等 操作 在程序实现对位的操作时 它借用了程序状态标志位 PSW 中的一个进位标志 Cy 来作为位操作的 累加器 运算部件中的累加器 ACC 是一个 8 位的累加器 ACC 也可简写为 A 从功能上看 它与一般微机的累加器相比较没有什么特别之处 但需要说明的是 ACC 的进位标志 Cy 就是布尔处理器进行位操作的一个累加器 单片机的程序状态 PSW 是一个 8 位寄存器 它包含了程序的状态信息 2 控制部件 控制部件是单片机的神经中枢 它包括时钟电路 复位电路 指令寄存器 译码 以及信息传送控制部件 它以主振频率为基准发出 CPU 的时序 对指令进行译码 然 后发出各种控制信号 完成一系列定时控制的微操作 用来控制单片机各部分的运行 其中有一些控制信号线能简化应用系统外围控制逻辑 如控制地址锁存的地址锁存信 号 ALE 控制片外程序存储器运行的片内外存储器选择信号 EA 以及片外取指信号 PSEN 3 专用寄存器 专用寄存器组也称为特殊功能寄存器 主要用与表示当前要执行的指令的内存地 址 存放操作数和知识指令执行后的状态等 它是任何一台计算机的 CPU 不可缺少的 组成部件 4 1 3 AT89S52 的时钟及复位电路 时钟电路用于产生单片机工作时所需的时钟信号 单片机本身就时一个复杂的同 步时序电路 为保证同步工作放肆的实现 单片机应在唯一的时钟信号控制下 严格 单片机的可调温度控制器 11 地按时序执行指令进行功能工作 而时序所研究的时指令执行中各个信号的关系 在 执行指令时 CPU 首先要到程序存储器中取出需要执行的指令操作码 并由时序电路 产生一系列控制信号去完成指令所规定的操作 单片机除了内部时钟方式 图 4 2 外 还可以采用引入外部时钟的振荡方式 图 4 3 单片机复位电路有多种 根据应用的要求 复位操作通常由两种基本形式 上电 自动复位 手动开关复位 影响单片机系统运行稳定性的因素可大体分为外因和内因 两部分 外因是射频干扰 它是以空间电磁场的形式传递在机器内部的导体 引线或零 件引脚 感生出相应的干扰 可通过电磁屏蔽和合理的布线 器件布局衰减该类干扰 电 源线或电源内部产生的干扰 它是通过电源线或电源内的部件耦合或直接传导 可通 过电源滤波 隔离等措施来衰减该类干扰 内因是振荡源的稳定性 主要由起振时间 频率稳定度和占空比稳定度决定 起振时间可由电路参数整定稳定度受振荡器类型温度 和电压等参数影响复位电路的可靠性 XTAL2 XTAL1 GND C1 C2 AT89S52 GND XTAL1 XTAL2 AT89S52 图 4 2 内部振荡电路 图 4 3 外部振荡电路 1 上电自动复位 上电自动复位要求接通电源后 自动实现复位操作 对于 NMOS 型单片机 在 RST 复位端接一个电容至 VCC 和一个电阻接地 就能实现上电自动复位 如图 4 4 所 示 对于 CMOS 型单片机 只要接一个电容至 VCC 即可 在加电瞬间 电容通过电 阻充电 就在 RST 端出现一定时间的高电平 只要高电平持续时间足够长 就可使单 片机有效复位 RST 端在加电时应保持的高电平时间包括 VCC 的上升时间和振荡器的 起振时间 振荡器的起振时间于频率有关 10MHz 晶振时约位 1ms 1MHz 晶振时约 为 10ms 所以一般为了可靠复位 RST 在上电时应保持 20ms 以上的高电平 RC 时间 12 4 系统的硬件介绍及设计 常熟越大 上电视 RST 端的高电平时间越长 2 手动开关复位 本设计选择手动开关复位 要求在电源接通的条件下 在单片机运行期间 如果 发生死机 用按钮开关操作使单片机复位 常用的手动开关复位电路如图 4 5 所示 上电后 由于电容充电 使得 RST 持续 一段高电平时间 当单片机已在运行之中时 按下复位键也能是 RST 持续一段时间的 高电平 从而实现上电且开关复位的操作 通常选择 C 10 30 F R 10 1K VCC RST VCC R RST 图 4 4 上电自动复位 图 4 5 手动开关复位 4 2 单总线数字式温度计 DS18B20 介绍 Dallas 半导体公司的数字化传感器 DS18B20 是世界上第一片支持 一线总线 接 口的温度传感器 即单总线器件 一线总线独特而且具有线路简单 体积小的特点 使用户可轻松地组建传感网络 为测量系统的构建引入全新概念 现场温度直接以 一线总线 的数字方式传输 大大提高了系统的抗干扰性 图 4 6 DS18B20 的管脚排列图 4 2 1 DS18B20 性能特点 独特的单线接口方式 DS18B20 在与微处理器连接时仅需要一条口线即可实现微 处理器与 DS18B20 的双向通讯 测温范围 55 125 固有测温分辨率 0 5 工作电源 3 5V DC 单片机的可调温度控制器 13 在使用中不需要任何外围元件 测量结果以 9 12 位数字量方式串行传送 4 2 2 DS18B20 引脚结构 GND 电压地 DQ 单数据总线 VDD 电源电压 4 2 3 DS18B20 工作原理及应用 DS18B20 的温度检测与数据输出全集成与一个芯片之上 从而抗干扰能力更强 其一个工作周期可分为两个部分 即温度检测和数据处理 DS18B20 共有三种形态的存储器资源 它们分别是 ROM 只读存储器 用于存 放 DS18B20ID 编码 其前 8 位是单线系列编码 后面 48 位是芯片唯一的序列号哦 最后 8 位是以上 56 位的 CRC 码 冗余校验 数据在出产是设置不由用户更改 DS18B20 共 64 位 ROM RAM 数据暂存器 用于内部计算和数据存取 数据在掉电后丢失 DS18B20 共 9 个字节 RAM 每个字节为 8 位 第 1 2 个字节是温度转换后的数据信息 第 3 4 个 字节是用户 EEPROM 常用于温度报警值存储 的镜像 在上电复位时其值将被刷新 第 5 个字节则是用户第 3 个 EEPROM 的镜像 第 6 7 8 个字节为计数寄存器 是为 了让那个用户得到更高的温度分辨率而设计的 同样也是内部温度转换 计算的暂存 单元 第 9 个字节为前 8 个字节 的 CRC 码 EEPROM 非易失性记忆体 用于存放长 期需要保存的数据 上下限温度报警值和校验数据 DS18B20 共 3 位 EEPROM 并在 RAM 都存在镜像 方便操作 4 3 显示模块介绍及设计 LED Light Emitting Diode 发光二极管 简称 LED 是一种能够将电能转化为可 见光的固态的半导体器件 它可以直接把电转化为光 该系统的显示电路见图 4 7 14 4 系统的硬件介绍及设计 图 4 7 数码管显示电路 4 3 1 LED 发光原理 LED 的心脏是一个半导体的晶片 晶片的一端附在一个支架上 一端是负极 另 一端连接电源的正极使整个晶片被环氧树脂封装起来 半导体晶片由两部分组成 一 部分是 P 型半导体 在它里面空穴占主导地位 另一端是 N 型半导体 在这边主要是 电子 但这两种半导体连接起来的时候 它们之间就形成一个 P N 结 当电流通过 导线作用于这个晶片的时候 电子就会被推向 P 区 在 P 区里电子跟空穴复合 然后 就会以光子的形式发出能量 这就是 LED 发光的原理 光的波长也就是光的颜色 是由形成 P N 结的材料决定的 它是一种通过控制半 导体发光二极管的显示方式 用来显示文字 图形 图像 动画 行情 视频 录像 信号等各种信息的显示屏幕 LED 可以作为显示屏 在计算机控制下 显示色彩变化 万千的视频和图片 故 LED 是一种能够将电能转化为可见光的半导体 此外 LED 可分为共阴极和共阳极两种 如图 4 8 所示 a b c d e f g dp G a b c d e f g dp 5V 单片机的可调温度控制器 15 a 共阴极 b 共阳极 图 4 8 LED 显示结构 4 3 2 数码管介绍 由 LED 组成的数码管其发光原理也一样 数码管按段数分为七段数码管和八段数 码管 八段数码管比七段数码管多一个发光二极管单元 多一个小数点显示 按能显示 多少个 8 可分为 1 位 2 位 4 位等数码管 本次设计中为了外观整齐 提高焊接 的可靠性 选择 4 位数码管 按发光二极管单元连接方式分为共阳极数码管和共阴极数码管 共阳数码管是指 将所有发光二极管的阳极接到一起形成公共阳极 COM 的数码管 共阳数码管在应用 时应将公共极 COM 接到 5V 当某一字段发光二极管的阴极为低电平时 相应字段就 点亮 当某一字段的阴极为高电平时 相应字段就不亮 共阴数码管是指将所有发光 二极管的阴极接到一起形成公共阴极 COM 的数码管 共阴数码管在应用时应将公共 极 COM 接到地线 GND 上 当某一字段发光二极管的阳极为高电平时 相应字段就点 亮 当某一字段的阳极为低电平时 相应字段就不亮 常用数码显示字形段码如下表 4 3 所示 通常显示字符段码顺序排列 存放在存 储器中的固定区域 构成段码表 当要显示某字符时 可根据地址查表 表 4 3 7 段 LED 数码管显示字型表 显示字符共阴极字符码共阳极字符码显示字符共阴极字符码共阳极字符码 03FHC0HC39HC6H 106HF9HD5EHA1H 25BHA4HE79H86H 34FHB0HF71H8EH 466H99HP73H8CH 56DH92HU3EHC1H 67DH82HT31HCEH 707HF8HY6EH91H 87FH80HH76H89H 96FH90HL38HC7H A77H88H不显示00HFFH B7CH83H 数码管要正常显示 就要用驱动电路来驱动数码管的各个段码 从而显示出我们 要的数字 因此根据数码管的驱动方式的不同 可以分为静态式和动态式两类 16 4 系统的硬件介绍及设计 1 静态显示驱动 静态驱动也称直流驱动 静态驱动是指每个数码管的每一个段码都由一个单片机 的 I O 端口进行驱动 或者使用如 BCD 码二 十进制译码器译码进行驱动 静态驱动 的优点是编程简单 显示亮度高 缺点是占用 I O 端口多 实际应用时必须增加译码 驱动器进行驱动 增加了硬件电路的复杂性 2 动态显示驱动 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一 动态驱动是 将所有数码管的 8 个显示笔划 a b c d e f g dp 的同名端连在一起 另外 为每个数码管的公共极 COM 增加位选通控制电路 位选通由各自独立的 I O 线控制 当单片机输出字形码时 所有数码管都接收到相同的字形码 但究竟是那个数码管会 显示出字形 取决于单片机对位选通 COM 端电路的控制 所以我们只要将需要显示的 数码管的选通控制打开 该位就显示出字形 没有选通的数码管就不会亮 通过分时 轮流控制各个数码管的的 COM 端 就使各个数码管轮流受控显示 这就是动态驱动 在轮流显示过程中 每位数码管的点亮时间为 1 2ms 由于人的视觉暂留现象及 发光二极管的余辉效应 尽管实际上各位数码管并非同时点亮 但只要扫描的速度足 够快 给人的印象就是一组稳定的显示数据 不会有闪烁感 动态显示的效果和静态 显示是一样的 能够节省大量的 I O 端口 而且功耗更低 4 4 键盘设计方案 独立式按键是直接用 I O 口线构成的单个按键电路 其特点是每个按键单独占用 一根 I O 口线 每个按键的工作不会影响其它 I O 口线的状态 所以本设计采用的是独 立按键式键盘 方案如下图所示 图 4 9 本设计中独立按键式键盘结构 单片机的可调温度控制器 17 4 5 声音报警电路设计 声音报警电路通过驱动蜂鸣器发声实现 当其接通 5V 的电压会发出蜂鸣叫声 原 理图如图 4 10 PNP 型三极管驱动蜂鸣器 当 P2 4 输出高电平时蜂鸣器发声 图 4 10 报警电路 18 5 系统的软件介绍及设计 5 系统软件介绍及设计 进行系统软件设计的重要性毋庸赘述 因为它是一个必不可少的部分 5 1 系统软件设计原则 应用系统中的应用软件是根据系统功能要求设计的 应可靠实现系统的各种功能 在本系统中 软件设计要求做到以下几点 1 软件结构清晰 简捷 流程合理 2 各功能程序实现模块化 子程序化 这样 即便于调试 连接 修改 3 程序存储区 数据存储区要合理规划 既能节约内存容量 又使操作方便 4 运行状态实现标志化管理 各个功能程序运行状态 运行结果以及运行要求都 要设置状态标志以便查询 程序的转移 运行 控制都可通过状态标志条件来控制 5 经过调试修改后的程序应进行规范化 除去修改的痕迹 以便于交流和借鉴 也为以后的软件模块化 标准化打下基础 6 实现全面软件抗干扰设计 软件抗干扰是单片机应用系统提高可靠性的有利措 施 5 2 程序流程图介绍 流程图是流经一个系统的信息流 观点流或部件流的图形代表 在企业中 流程 图主要用来说明某一过程 这种过程既可以是生产线上的工艺流程 也可以是完成一 项任务必需的管理过程 例如 一张流程图能够成为解释某个零件的制造工序 甚至组织决策制定程序的 方式之一 这些过程的各个阶段均用图形块表示 不同图形块之间以箭头相连 代表 它们在系统内的流动方向 下一步何去何从 要取决于上一步的结果 典型做法是用 是 或 否 的逻辑分支加以判断 流程图是揭示和掌握封闭系统运动状况的有效方式 作为诊断工具 它能够辅助 决策制定 让管理者清楚地知道 问题可能出在什么地方 从而确定出可供选择的行 动方案 5 2 1 程序流程图的作用 程序流程图是人们对解决问题的方法 思路或算法的一种描述 流程图的优点 1 采用简单规范的符号 画法简单 2 结构清晰 逻辑性强 3 便于描述 容易理解 5 2 2 绘制流程图的步骤 为了便于识别 绘制流程图的习惯做法是 一般用椭圆表示 开始 与 结束 行动 单片机的可调温度控制器 19 方案普通工作环节用矩形表示 问题判断或判定 审核 审批 评审 环节用菱形表示 箭头代表工作流方向 流程图实例图 输入输出为平行四边形 5 2 3 流程图的绘制软件 Visual graph 专业图形系统 此系统为图形控件 在 NET 开发平台下可以灵活应 用 delphi 中也可以使用 简单易用 业内应用较广泛 Visio 是当今最优秀的绘图软件之一 它将强大的功能和易用性完美结合 可广泛 应用于电子 机械 通信 建筑 软件设计和企业管理等众多领域 5 3 系统程序流程图 在主程序中 当系统上电完成定义寄存器等初始化操作后 首先判断是否要调整 温度设定值 也就是判断四个按键是否有按下 若有按键按下则修改对应的温度上下 限值 执行设置键 选择键 上限加 上限减 下限加 下限减的操作 之后主程序 将调用子程序 读取转换结果 并将转换结果换算成摄氏的温度值 在这之后 程序 将比较采集的温度值是否高于上限设定值或低于下限设定值 温度值若低于下限则启 动暖风机给温室加热 若高于上限值则停止暖风机的运行 最后主程序将调用显示子 程序 将上限设定值 当前温度值和下限温度值刷新 再判断有无按键按下 开始下 一个循环周期的工作 系统程序流程图如图 5 1 所示 读温度 读报警温度设定 判断是否超限 报警 开始 初始化 启动 DS18B20 LED 显示 图 5 1 系统程序流程图 20 5 系统的软件介绍及设计 5 4 系统软件的实现 对于 51 系列单片机 现有四种语言支持 即汇编 PL M C 和 BASIC BASIC 通常附在 PC 机上 是初学编程的第一种语言 一个新变量名定义之后可在程序中作变 量使用 非常易学 根据解释的行可以找到错误而不是当程序执行完才能显示出来 BASIC 由于逐行解释自然很慢 每一行必须在执行时转换成机器代码 需要花费许多 时间不能做到实时性 BASIC 为简化使用变量 所有变量都用浮点值 BASIC 是用于 要求编程简单而对编程效率和运行速度要求不高的场合 当前已经很少使用此语言了 PL M 是 Intel 从 8080 微处理器开始为其系列产品开发的编程语言 它很像 PASCAL 是一种结构化语言 但它使用关键字去定义结构 PL M 编译器好像汇编器 一样可产生紧凑代码 PL M 总是来说是 高级汇编语言 可详细控制着代码的生 成 但对 51 系列 PL M 不支持复杂的算术运算 浮点变量而无丰富的库函数支持 C 语言是一种源于编写 UNIX 操作系统的语言 它是一种结构化语言 可产生压 缩代码 C 可以进行许多机器级函数控制而不用汇编语言 与汇编相比 有如下优点 对单片机的指令系统不要求了解 仅要求对 51 的存储器结构有初步了解 寄存器分配 不同存储器的寻址及数据类型等细节可由编译器管理程序有规范的结构 可分为不同 的函数 这种方式可使程序结构化将可变的选择与特殊操作组合在一起的能力 改善 了程序的可读性编程及程序调试时间显著缩短 从而提高效率 提供的库包含许多标 准子程序 具有较强的数据处理能力 将已编好程序容易的植入新程序 因为它具有 方便的模块化编程技术 C 语言作为一种非常方便的语言而得到广泛的支持 C 语言 程序本身并不依赖于机器硬件系统 基本上不做修改就可根据单片机的不同较快的移 植过来 C51 的汇编非常像其他汇编语言 简单实用 指令系统比第一代微处理器要强一 些 51 的不同存储区域使其复杂一些 但是利用汇编语言指令就可以充分利用片内 RAM 资源 充分利用单片机内部的一些特殊规定 充分利用单片机的一切资源 因为 单片机资源的利用效率高 同时汇编语言是最接近机器语言的 因而代码的执行率高 在本系统中 由于单片机内部的运算量不大 而汇编语言简单 执行率高 已经能够 满足系统需求 所以选择汇编语言来编写相应代码 C 语言是一种结构化语言 它层次清晰 便于按模块化方式组织程序 易于调试 和维护 C 语言的表现能力和处理能力极强 它不仅具有丰富的运算符和数据类型 便于实现各类复杂的数据结构 它还可以直接访问内存的物理地址 进行位 bit 一级的 操作 由于 C 语言实现了对硬件的编程操作 因此 C 语言集高级语言和低级语言的功 能于一体 既可用于系统软件的开发 也适合于应用软件的开发 同时 C 语言是一种通用的程序设计语言 其代码率高 数据类型及运算符丰富 单片机的可调温度控制器 21 并具有良好的程序结构 适应于各种应用的程序设计 是目前工程项目中使用较为广 泛的单片机编程语言 单片机的 C 语言采用 C51 编译器 简称 C51 有 C51 产生的目标代码短 运行速 度高 所需存储空间小 符合 C 语言的 ANSI 标准 生成的代码遵循 Intel 目标文件格 式 而且可与 A51 汇编语言或 PL M51 语言目标代码混合使用 和汇编语言一样 C 语言源程序经过 C51 编译器编译 L51 或 BL51 连接 定位后 生成 BIN 和 HEX 的目标文件 本部分程序就是采用 C 语言编写的 程序调试软件仍 然是前面提到的 Keil C51 编译器 5 4 1 DS18B20 驱动程序 DS18B20 的一线工作协议流程是 初始化 ROM 操作指令 存储器操作指令 数 据传输 其工作时序包括初始化时序 写时序和读时序 故主机控制 DS18B20 完成温 度转换必须经过三个步骤 每一次读写之前都要对 DS18B20 进行复位 复位成功后发 送一条 ROM 指令 最后发送 RAM 指令 这样才能对 DS18B20 进行预定的操作 复 位要求主 CPU 将数据线下拉 480 微秒 然后释放 DS18B20 收到信号后等待 16 60 微秒左右 后发出 60 240 微秒的存在低脉冲 主 CPU 收到此信号表示复位成功 读 温度程序主要部分如下 INIT 1820 SETBDQ 是 DS18B20 复位初始化子程序 NOP CLRDQ 主机发出延时 537 微秒的复位低脉冲 MOVR1 3 TSR1 MOVR0 107 DJNZR0 DJNZR1 TSR1 SETBDQ 然后拉高数据线 NOP NOP NOP MOVR0 25H TSR2 NB DQ TSR3 等待 DS18B20 回应 DJNZR0 SR2 LJMPTSR4 延时 TSR3 SETBFLAG1 置标志位 表示 DS18B20 存在 LJMPTSR5 TSR4 CLRFLAG1 清标志位 表示 DS18B20 不存在 22 5 系统的软件介绍及设计 LJMPTSR7 TSR5 MOVR0 117 TSR6 DJNZR0 TSR6 时序要求延时一段时间 TSR7 SETBDQ RET GET TEMPER SETB DQ 读出转换后的温度值 LCALL INIT 1820 先复位 DS18B20 JB FLAG1 TSS2 RET 判断 DS1820 是否存在 若 DS18B20 不存在则返回 TSS2 MOVA 0CCH DS18B20 已经被检测到 跳过 ROM 匹配 LCALL WRITE 1820 MOVA 44H 发出温度转换命令 LCALL WRITE 1820 LCALL DISPLAY 这里通过调用显示子程序实现延时一段时间 等待 AD 转换 结束 12 位的话 750 微秒 LCALL INIT 1820 准备读温度前先复位 MOVA 0CCH 跳过 ROM 匹配 LCALL WRITE 1820 MOVA 0BEH 发出读温度命令 LCALL WRITE 1820 LCALL READ 18200 读出的温度数据保存到 35H 36H RET 5 4 2 按键驱动程序和按键处理程序 按键扫描同样由定时器 1 中断控制 并进行四个按键处理操作 INT0 CLREX0 中断程序 入口 进入中断后 暂时关闭中断 LCALL BAOCUN MOVTH0 18H 延时 1MS 程序 MOVTL0 0CCH SETBET0 SETBTR0 SETBEX0 LCALL HUANYUAN CPLP2 6 RETI 单片机的可调温度控制器 23 LCALL BAOCUN 保存重要参数 CLRBELL 按下键后 要响一下 作题示用 LCALL DELAY125 延时 CLRP2 7 开指示灯 2 JNBP3 2 如果你不松开按键则不往下执行 SETBBELL 蜂鸣器关声音 SETBP2 7 松手后 关闭指示灯 2 CLRP2 6 编程状态时 LED1 灯亮 LCALL DELAY1S 延时 1S SETBP2 6 关指示灯 1 MOVC1 0 默认设置温度上限 INT0 1 JB P3 2 INT0 2 为 1 转移 表示按键未按下转移 按下后往下执行 LCALL DELAY10 时 JB P3 2 INT0 2 防抖动处理 CLRBELL 蜂鸣器响 作提示用 LCALL DELAY125 延时 JNBP3 2 待按键松开 SETBBELL 关蜂鸣器 ACALLDELAY125 AJMPINT0 END INT0 2 JB P3 3 INT0 2 1 为 1 转移 表示按键未按下转移 按下后往下执行 LCALL DELAY10 延时 JB P3 3 INT0 2 1 防抖动处理 CLRBELL 蜂鸣器响 作提示用 LCALL DELAY125 延

温馨提示

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

评论

0/150

提交评论