基于51单片机的温度控制系统的设计_第1页
基于51单片机的温度控制系统的设计_第2页
基于51单片机的温度控制系统的设计_第3页
基于51单片机的温度控制系统的设计_第4页
基于51单片机的温度控制系统的设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

贵州大学课程设计 1 基于单片机的温度控制系统设计基于单片机的温度控制系统设计 1 设计要求设计要求 要求设计一个温度测量系统 在超过限制值的时候能进行声光报警 具体 设计要求如下 数码管或液晶显示屏显示室内当前的温度 在不超过最高温度的情况下 能够通过按键设置想要的温度并显示 设有四 个按键 分别是设置键 加 1 键 减 1 键和启动 复位键 DS18B20 温度采集 超过设置值的 5 时发出超限报警 采用声光报警 上限报警用红灯指示 下限报警用黄灯指示 正常用绿灯指示 2 方案论证方案论证 根据设计要求 本次设计是基于单片机的课程设计 由于实现功能比较简 单 我们学习中接触到的 51 系列单片机完全可以实现上述功能 因此可以选用 AT89C51 单片机 温度采集直接可以用设计要求中所要求的 DS18B20 报警和 指示模块中 可以选用 3 种不同颜色的 LED 灯作为指示灯 报警鸣笛采用蜂鸣 器 显示模块有两种方案可供选择 方案一 使用 LED 数码管显示采集温度和设定温度 方案二 使用 LCD 液晶显示屏来显示采集温度和设定温度 LED 数码管结构简单 使用方便 但在使用时 若用动态显示则需要不断 更改位选和段选信号 且显示时数码管不断闪动 使人眼容易疲劳 若采用静 态显示则又需要更多硬件支持 LCD 显示屏可识别性较好 背光亮度可调 而 且比 LED 数码管显示更多字符 但是编程要求比 LED 数码管要高 综合考虑 之后 我选用了 LCD 显示屏作为温度显示器件 由于显示字符多 在进行上下 限警戒值设定时同样可以采集并显示当前温度 可以直观的看到实际温度与警 戒温度的对比 LCD 显示模块可以选用 RT1602C 贵州大学课程设计 2 3 硬件设计硬件设计 根据设计要求 硬件系统主要包含 6 个部分 即单片机时钟电路 复位电 路 键盘接口模块 温度采集模块 LCD 显示模块 报警与指示模块 其相互 联系如下图 1 所示 图 1 硬件电路设计框图 3 1 单片机时钟电路单片机时钟电路 形成单片机时钟信号的方式有内部 时钟方式和外部时钟方式 本次设计采 用内部时钟方式 如图 2 所示 单片机内部有一个用于构成振荡器 的高增益反相放大器 引脚 XTAL1 和 XTAL2 分别为此放大器的输入端和输出 端 其频率范围为 1 2 12MHz 经由片 外晶体振荡器或陶瓷振荡器与两个匹配 电容一起形成了一个自激振荡电路 为单片机提供时钟源 3 2 复位电路复位电路 复位是单片机的初始化操作 其作 用是使 CPU 和系统中的其他部件都处于 一个确定的初始状态 并从这个状态开 始工作 以防止电源系统不稳定造成 CPU 工作不正常 在系统中 有时会出 现工作不正常的情况 为了从异常状态 单片机时钟电路 复位电路 键盘接口模块 温度采集模块 单 片 机 LCD 显示模块 报警与指示模块 图 2 单片机内部时钟方式电路 图 3 单片机按键复位电路 贵州大学课程设计 3 中恢复 同时也为了系统调试方便 需要设计一个复位电路 单片机的复位电路有上电复位和按键复位两种形式 因为本次设计要求需 要有启动 复位键 因此本次设计采用按键复位 如图 3 复位电路主要完成系 统的上电复位和系统在运行时用户的按键复位功能 3 3 键盘接口模块键盘接口模块 本次设计需要的按键有 4 个 除 去一个复位按键外 还有 3 个功能按 键 因此选择独立式键盘 如图 4 将 键盘直接与单片机 P1 口的 P1 0 P1 1 P1 2 相连 3 个键设计思 路如下 当按下 S1 键时 系统进入上 下限警戒值调整状态 当第一次按下 S1 键时 进行上限警戒值设定 当第 二次按下 S1 键时 进行下限警戒值设定 当第三次按下 S1 键时 回到正常工 作状态 在警戒值调整状态下 按下 S2 键 上下限警戒值加 1 按下 S3 键 上下限警戒值减 1 正常工作状态下 按下 S2 和 S3 键无作用 3 4 温度采集模块温度采集模块 本次设计中的温度传感器使用的是 DALLAS 公司的单总线数字温度传感器 DS18B20 这是一种常用的温度传感器 具有体积小 硬件开销低 抗干扰能 力强 精度高的特点 DS18B20 采用独特的一线接口 具有只需要一条口线通信多点的能力 简 化了分布式温度传感应用 无需外部元件 可用数据总线供电 电压范围为 3 0 V 至 5 5V 测量温度的范围为 55 至 125 在 10 至 85 范围内精度为 0 5 温度传感器可编程的分辨率为 9 12 位 温度转换为 12 位数字格式最大值 为 750 毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制 工业系统 消费电子产品温度计 或任何热敏感系统 由于 DS18B20 是一条口 线通信 所以中央微处理器与 DS18B20 只有一个一条口线连接 因为每一个 DS18B20 的包含一个独特的序号 多个 DS18B20 可以同时存在于一条总线 图 4 键盘接口模块 贵州大学课程设计 4 这使得温度传感器放置在许多不同的地方 它的用途很多 包括空调环境控制 感测建筑物内温设备或机器 并进行过程监测和控制 图 5 DS18B20 封装及引脚 DS18B20 的核心功能是它的直接读数字的温度传感器 温度传感器的精度 为用户可编程的 9 10 11 或 12 位 分别以 0 5 0 25 0 125 和 0 0625 增量递增 在上电状态下默认的精度为 12 位 DS18B20 启动后保持低 功耗等待状态 当需要执行温度测量和 AD 转换时 总线控制器必须发出 44h 命令 在那之后 产生的温度数据以两个字节的形式被存储到高速暂存器的温 度寄存器中 DS18B20 继续保持等待状态 当 DS18B20 由外部电源供电时 总线控制器在温度转换指令之后发起 读时序 DS18B20 正在温度转换中返 回 0 转换结束返回 1 如果 DS18B20 由寄生电源供电 除非在进入温度转换 时总线被一个强上拉拉高 否则将不会由返回值 在硬件上 DS18B20 与单片机的连接有两种方法 一种是 VDD 接外部电 源 GND 接地 DQ 与单片机的 I O 口相连 另一种是用寄生电源供电 此时 VDD GND 接地 DQ 接单片机的 I O 口 无论是接外部电源还是用内部寄生 电源 I O 口线要接 5k 左右的上拉电阻 本次设计中 采用外部电源方式 其连接方式如图 6 所示 单总线 DQ 端 接单片机的 P1 7 口 DQ 端接一个 4 7k 的上拉电阻 这样单总线 DQ 在闲置状 态时为高电平 贵州大学课程设计 5 图 6 DS18B20 外部电源连接方式 3 5 LCD 显示模块显示模块 在本次设计中 使用 RT1602C 字符型液晶显示模块 LCM 来设计当前温度 和上下限警戒值的显示电路 RT1602C 字符型液晶显示模块是 16 字 2 行的采用 5 7 点阵图形来显示 字符的液晶显示器 采用标准的 16 脚接口 其引脚定义如图 7 所示 引脚号引脚名说 明引脚号引脚名说 明 1GND Vss电源地7D0 2Vdd 5V 电源8D1 3VL液晶显示偏压信号9D2 4RS数据 命令控制 H L 10D3 5R W读 写控制 H L11D4 6E使能端12D5 15BLA背光源正极13D6 16BLK背光源负极14D7 8 位双向数据线 图 7 RT1602C 的引脚定义 RT1602C 的内部结构可以分为 3 个部分 LCD 控制器 LCD 驱动器 LCD 显示器 其中 LCD 控制器采用的是 HD44780 RT1602C 与单片机的连线如图 8 所示 贵州大学课程设计 6 图 8 RT1602C 与单片机连线 LCM 的数据总线与单片机的 P0 口通过一个上拉电阻排相连 LCM 的三条 控制线 RS RW EN 分别与单片机的 I O 口 P2 0 P2 1 P2 2 相连 第 1 2 引脚分别与地 电源相连 第 3 引脚使用一个 10k 的可调电阻对显示屏的明 亮进行调整 3 6 报警与指示模块报警与指示模块 在本次设计中 采用 LED 发光二极管作为系统 指示灯 采用蜂鸣器作为报 警鸣笛 当温度高于上限警 戒值时 点亮红色发光二极 管 蜂鸣器发出响声 当温 度低于下限警戒值时 点亮 黄色发光二极管 蜂鸣器发 出响声 温度在正常范围内 时 点亮黄色发光二极管 整个报警与指示电路如图 9 所示 其中绿 红 黄 色指示灯分别接单片机 P2 0 P2 1 P2 2 口 电平拉低时点亮 LED 蜂鸣器电 路接单片机的 P2 7 口 电平拉高时蜂鸣器响 至此便完成了整个硬件电路的设计工作 整个系统的原理图见附录二 系 图 9 报警与指示模块 贵州大学课程设计 7 统 I O 分配表如下 I O 口功能说明I O 口功能说明 P0 0 P0 7LCM 数据口P2 1LCM 读 写控制 P1 0 P1 3键盘输入P2 2LCM 使能 P1 7DS18B20 温度采集P2 4 P2 6LED 信号输出 P2 0LCM 数据 命令控制P2 7报警信号输出 4 软件设计软件设计 单片机应用系统的设计中 软件设计占有重要的位置 在本次设计中 根 据功能要求 可以把系统程序划分为 5 个模块 即主程序模块 显示模块 温 度测量模块 键盘扫描模块 其它子程序模块 如图 10 所示 图 10 软件设计框图 4 1 主程序设计主程序设计 主程序的内容包括单片机初始化 相关部件初始化和一些其它子程序的调 用等 主程序清单如下 程序流程图如图 11 所示 主程序 void main void 主程序模块 显 示 模 块 温 度 测 量 模 块 键 盘 扫 描 模 块 其 它 子 程 序 开始 初始化温度传感器 初始化单片机 初始化显示模块 键盘扫描 读取温度 显示字形转换 显示 贵州大学课程设计 8 P1 0 xff 初始化 P1 口以便读入 P2 0 x70 P2 Temp set1 90 上限报警温度初值 90 Temp set2 10 下限报警温度初值 10 Delay 500 延时 500ms 启动 init LCD LCD 初始化 init 18B20 DS18B20 初始化 Display str 0 0 str2 开机界面 Display str 0 1 str2 开机界面 Delay 2000 Display str 0 0 str0 Display str 0 1 str1 while 1 Key scan 扫描键盘 Read temp 读取温度 Change Display 显示 Alarm 指示灯与报警程序 Delay 1000 4 2 显示模块显示模块 显示程序主要完成的功能是模式 上下限警戒值和测量温度值的显示 模 块中包含 LCD 初始化 显示单个字符子函数 显示一个字符串子函数 程序流 程图如图 12 所示 LCD 初始化程序如下 其它子函数程序详见附录一 LCD 初始化 void init LCD void 图 11 主程序流程图 开始 写显示命令 定位显示位置 写显示字符 结束显示 贵州大学课程设计 9 P0 0 Delay 15 LCD Command 0 x38 0 Delay 5 LCD Command 0 x38 0 Delay 5 LCD Command 0 x38 0 Delay 5 LCD Command 0 x38 1 8 位数据传送 2 行显示 5 7 字形 LCD Command 0 x08 1 关闭显示 LCD Command 0 x01 1 清屏 LCD Command 0 x06 1 显示光标右移设置 LCD Command 0 x0c 1 显示屏打开 光标不显示不闪烁 4 3 温度测量模块温度测量模块 温度测量程序主要功能是读出数字温度传感器的温度值 要正确地读出温 度值必须严格遵守单总线器件的命令序列 否则单总线器件不会响应主机 单 总线器件的命令序列如图 13 所示 温度测量模块程序流程图如图 14 所示 DS18B20 初始化程序如下 其它 子程序详见附录一 DS18B20 初始化 void init 18B20 void uchar x 0 DQ 1 DQ 复位 Delay us 4 延时 DQ 0 将 DQ 拉低 Delay us 250 精确延时大于 480us DQ 1 拉高总线 Delay us 40 图 12 显示程序流程图 Y N 开始 读 DS18B20 序列号 初始化 DS18B20 DS18B20 存在 温度转换 发跳过 ROM 指令 读取温度 返回 贵州大学课程设计 10 x DQ Delay us 20 4 4 键盘扫描模块键盘扫描模块 本次设计中使用了 4 个按键 除了 1 个复位键还有 3 个功能键 具体功能 前面已介绍 键盘扫描程序如下 其它子程序详见附录一 相关流程图如图 15 所示 键盘扫描 void Key scan void uchar temp P1 0 xff if P1 0 xff Delay 20 延时消抖 if P1 0 xff temp P1 switch temp case 0 xfe Key set break P1 0 按下 功能选择 case 0 xfd Key inc break 开始 发 ROM 指令 初始化 发功能指令 结束 图 13 单总线命令序列图 14 温度测量程序流程图 延时去抖动 开始 初始化 DS18B20 有键按下 读取键值 Y 执行键功能程序 返回 有键按下 N N Y 贵州大学课程设计 11 P1 1 按下 数字加一 case 0 xfb Key dec break P1 2 按下 数字减一 default break 4 5 其它子程序其它子程序 程序中使用的其它子程序 包括延时子程序 显示字符转换子程序等 具 体详见附录一 5 仿真分析仿真分析 在本次的设计中 使用了 Proteus 仿真软件进行了功能测试 具体仿真步骤 及分析如下 1 按照原理图 从 Proteus 元件库中找出对应元件 搭建硬件仿真电路 将程 序烧写到单片机中 仿真图见附录三 2 点击运行按钮开始仿真 初始上下限值为 90 和 10 当前温度为 25 当前模式为 N 正常工作 绿灯亮 蜂鸣器不响 如图 16 图 16 正常模式下仿真图 3 按下 S1 键 进入上限警戒值设置模式 H 此时按 S2 S3 键可以进行上限值 图 15 键盘扫描程序流程图 贵州大学课程设计 12 设定 同时温度正常显示 设置上限值 80 如图 17 4 再次按下 S1 键 进入下限警戒值设置模式 L 此时按 S2 S3 键可以进行下 限值设定 同时温度正常显示 设置下限值 20 如图 18 图 18 下限值设定仿真图 5 再次按下 S1 键 返回正常模式 N 调节 DS18B20 温度 测量温度随之改变 降低温度 超过下限值 5 以下时 黄灯亮 蜂鸣器报警 如图 19 图 19 下限报警仿真图 图 17 上限值设定仿真图 贵州大学课程设计 13 6 升高温度 超过上限值 5 以上时 黄灯亮 蜂鸣器报警 如图 20 7 按下 S4 键 单片机复位 在本次仿真中 可以看出 本次设计的硬件电路和软件程序均能成功仿真 出来 设计要求的各种功能均已达到 图 20 上限报警仿真图 贵州大学课程设计 14 6 总结总结 本次课程设计为期一周 到此已全部结束 回想一周中的设计过程 我深 深感觉收获良多 由于从前只是在理论上学习了单片机以及各种其它知识 即 使是实验也只是按照实验指导书进行操作 并没有实际的独立设计一个系统 因此在刚开始接触本次课程设计时 有一点无从下手的感觉 后来通过查阅相 关资料 渐渐开始了解课程设计的一般过程 开始明白一些元器件的相关作用 与编程实现方法 并在此期间通过不断深入的学习和锻炼 开始渐渐能熟练运 用和熟练编程起来 通过本次计算机控制技术的课程设计 我更深层次的把理论知识和实际设 计结合在一起 锻炼了我的综合运用所学的专业基础知识和解决实际工程问题 的能力 同时也提升了我查阅文献资料 设计手册 设计规范以及电脑制图等 其他知识能力水平 对各种系统的适用条件 各种设备的选用标准 各种管道 的安装方式 我都是随着设计的不断深入而逐渐熟悉并学会应用的 并且 通 过对整体的掌控 对局部的取舍 对细节的斟酌处理 以及绘图的技巧都使我 在设计领域的能力得到了锻炼 得到了较丰富经验 最后 通过这次的课程设 计 我也深刻地认识到 只有将书本与具体的实践相结合 才会有真正的收获 才能巩固自己的所学 认识到自己的不足 同时我们也要有一种积极学习的态 度 时代在进步我们也要跟着时代前进 要不断学习 不断创新 用自己的知 识与行动来证明自己的价值 本次课程设计以单片机为核心 介绍了用 DS18B20 温度传感器进行温度采 贵州大学课程设计 15 集 并将其传输给 AT89C51 单片机进行处理再送到 LCD 显示屏显示 在此期 间可以通过按键进行上下限警戒值设置 通过 LED 和蜂鸣器进行指示和报警 本文是采用模块化的方式进行叙述 对各模块的设计进行了比较详细地阐述 并着重分析硬件搭建过程和系统软件的设计过程 使用单片机 C 语言进行程序 没计 本次设计的基于 DS18B20 的温度测量系统是一个分布式的温度测量系统 它可以远程对温度实现测量和监控 广泛应用于电力工业 煤矿 森林 火灾 高层建筑等场合 本设计应用性比较强 可以应用在仓库温度 大棚温度 机房温度 水池 等的监控 当然 本次设计还存在一些不足 例如在本次设计中 由于时间较 短 警戒值只是在 1 99 之间 没有能够扩展到负温度和 100 以上 在本次 设计中只是用了 4 个独立按键 实现简单的上下限警戒值设定 操作较麻烦 如果能够设计出多按键的矩阵式键盘 则能够对温度进行很方便的设定 此外 如果把本设计方案扩展为多点温度控制 加上上位机 则可以实现远程温度监 控系统 将具有更大的应用价值 贵州大学课程设计 16 7 参考文献参考文献 1 潘新民 王燕芳 微型计算机控制技术 M 北京 电子工业出版社 2014 2 王迎旭 单片机原理与应用 M 北京 机械工业出版社 2013 3 康华光 电子技术基础 M 北京 高等教育出版社 2013 4 周正华 唐宁 RT1602C 与 FPGA 接口技术 J 中国科技信息 2008 10 5 廖琪梅 韩彬等 基于 DS18B20 的温度测量仪 J 国外电子元器件 2008 2 贵州大学课程设计 17 附录一 程序清单附录一 程序清单 include include include define uchar unsigned char define uint unsigned int define BUSY 0 x80 void Delay uint void init LCD void void LCD Command uchar uchar void LCD Data uchar void ReadyLCD void void Display char uchar uchar uchar void Display str uchar uchar uchar code Data void Change void void Display void void init 18B20 void uchar Read 18B20 void 贵州大学课程设计 18 void Write 18B20 uchar void Read temp void void Delay us uchar i void Key scan void void Key set void void Key inc void void Key dec void void Alarm void sbit LCD RS P2 0 sbit LCD RW P2 1 sbit LCD EN P2 2 sbit DQ P1 7 sbit Normal P2 4 sbit Alarm H P2 5 sbit Alarm L P2 6 sbit Alarm BEEP P2 7 uchar Set flag 0 uchar Temp mea Temp set1 Temp set2 uchar Temp high 1 Temp high 2 uchar Temp low 1 Temp low 2 uchar Temp true 1 Temp true 2 extern uchar code str0 High C Low C extern uchar code str1 Mode Deg C extern uchar code str2 Hellow extern uchar code str3 extern uchar code mode NHL 贵州大学课程设计 19 主程序 void main void P1 0 xff P2 0 x70 P2 Temp set1 90 上限报警温度初值 90 Temp set2 10 下限报警温度初值 10 Delay 500 延时 500ms 启动 init LCD LCD 初始化 init 18B20 DS18B20 初始化 Display str 0 0 str2 开机界面 Display str 0 1 str2 开机界面 Delay 2000 Display str 0 0 str0 Display str 0 1 str1 while 1 Key scan 扫描键盘 Read temp 读取温度 Change Display 显示 Alarm 指示灯与报警程序 Delay 1000 延时 kms void Delay uint k 贵州大学课程设计 20 uint i j for i 0 i k i for j 0 j 60 j 显示模块 LCD 初始化 void init LCD void P0 0 Delay 15 LCD Command 0 x38 0 Delay 5 LCD Command 0 x38 0 Delay 5 LCD Command 0 x38 0 Delay 5 LCD Command 0 x38 1 8 位数据传送 2 行显示 5 7 字形 LCD Command 0 x08 1 关闭显示 LCD Command 0 x01 1 清屏 LCD Command 0 x06 1 显示光标右移设置 LCD Command 0 x0c 1 显示屏打开 光标不显示不闪烁 写指令数据到 LCD void LCD Command uchar LC uchar BC 贵州大学课程设计 21 if BC ReadyLCD P0 LC LCD RS 0 选中指令寄存器 LCD RW 0 写模式 LCD EN 1 nop nop nop LCD EN 0 写显示数据到 LCD void LCD Data uchar LD ReadyLCD P0 LD LCD RS 1 选中数据寄存器 LCD RW 0 写模式 LCD EN 1 nop nop nop LCD EN 0 检测 LCD 忙状态 void ReadyLCD void P0 0 xff 贵州大学课程设计 22 LCD EN 1 LCD RS 0 LCD RW 1 nop while P0 nop nop LCD EN 1 nop nop LCD EN 0 显示一个字符 void Display char uchar X uchar Y uchar Data Y X if Y X 0 x40 X 0 x80 LCD Command X 0 LCD Data Data 显示一串字符 void Display str uchar X uchar Y uchar code Data 贵州大学课程设计 23 uchar List 0 Y X while X0 i DQ 0 nop dat 1 DQ 1 贵州大学课程设计 25 Delay us 1 if DQ dat 0 x80 Delay us 10 return dat 向 DS18B20 写入一个字节数据 void Write 18B20 uchar dat uchar i 0 for i 8 i 0 i DQ 0 nop DQ dat Delay us 10 DQ 1 dat 1 Delay us 10 从 DS18B20 读取温度 void Read temp void uchar a 0 uchar b 0 uchar t 0 贵州大学课程设计 26 init 18B20 Write 18B20 0 xcc Write 18B20 0 x44 init 18B20 Write 18B20 0 xcc Write 18B20 0 xbe a Read 18B20 b Read 18B20 t b t 3 Set flag 1 设定上限值 Set flag 0 Set flag 2 设定下限值 按键加一子程序 void Key inc void switch Set flag case 1 Temp set1 if Temp set1 99 Temp set

温馨提示

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

评论

0/150

提交评论