




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉工程大学邮电与信息工程学院武汉工程大学邮电与信息工程学院 毕业设计 论文 说明书毕业设计 论文 说明书 2015 届毕业设计 论文 2015 年 5 月 20 日 题题 目目基于单片机的温度控制系统设计基于单片机的温度控制系统设计 专专 业业 班班 级级2 20 01 11 1 自自动动化化 0 02 2 学学 号号 6 61 10 02 21 15 50 02 23 30 0 姓姓 名名张张震震 指指 导导 教教 师师 曾曾丽丽 教教授授 学学 院院 名名 称称武武汉汉工工程程大大学学邮邮电电与与信信息息工工程程 学学院院 基于单片机的温度控制系 统设计 Design of a Temperature Control based on the single chip 学学 生生 姓姓 名名 张张震震 指指 导导 教教 师师 曾曾丽丽 教教师师 摘摘 要要 随着电子产品向智能化和微型化的不断发展 单片机已成为电子产品研制和 开发中首选的控制器 传统的温度采集方法不仅费时费力 而且精度差 单片 机的出现使得温度的采集和数据处理问题能够得到很好的解决 温度是工业对 象中的一个重要的被控参数 然而所采用的测温元件和测量方法也不相同 产 品的工艺不同 控制温度的精度也不相同 因此对数据采集的精度和采用的控 制方法也不相同 本设计使用单片机作为核心进行控制 为了更好地推广单片 机在实际生活和生产中的应用 本文介绍一种应用 AT89C52 单片机设计的温度控 制系统 该环境温度系统采用温度传感器 DS18B20 通过 I2C 总线通信来获得当 前温度 并与从 3X4 矩阵键盘输入的温度值进行验证 系统自动控制升温或降 温的操作 将温度稳定在所设定的温度值 经实际制作表明该环境温度控制系 统具有体积小 操作灵活 可靠性高 实用 成本低等特点 适合住宅和各类温 室温度的控制 具有一定的实际意义 关键词 单片机 键盘 稳定温度 显示器 温度控制 Abstract With the continuous development of electronic products to intelligent and miniaturization microcontroller has become electronic product development and the development of the preferred controller In order to better promote the application of single chip microcomputer in the actual life and production this paper introduces a design which AT89C52 single chip microcomputer temperature control system is used The environment temperature system adopts the temperature sensor DS18B20 through the I2C bus communication to get the current temperature and with temperature from 3x4 matrix keyboard input validation the system automatically control the operation of the heating or cooling to keep the temperature stable according to the set The practical production shows that the temperature control system has small volume flexible operation high reliability and practical low cost suitable for residential and all kinds of greenhouse temperature control has a certain practical significance Keywords Single chip microcomputer keyboard Stable temperature Display temperature control I II I 目目 录录 摘要摘要 I Abstract II 第 1 章 绪论 6 1 1 选题背景 6 1 2 选题简介 6 第 2 章 系统总体设计及方案 7 2 1 单片机的介绍 7 2 2 系统功能的确定 8 2 3 温度传感器 DS18B20 的介绍 8 2 4 人机交互与串口通信 12 第 3 章 硬件设计 12 3 1 系统结构框图 13 3 2 人机交互与串口通信单元设计 15 3 3 控制执行单元设计 19 第 4 章 软件设计 20 4 1 主程序 20 4 2 温度采集子程序 22 4 3 数据转换子程序 22 4 4 动态显示子程序 23 4 5 温度控制执行子程序 24 4 6 键盘输入中断服务子程序 26 第 5 章 结 论 28 附录 29 致谢 42 参考文献 43 0 第第 1 章章 绪论绪论 1 1 选题背景选题背景 在生产过程中 温度的控制是十分常见的 国内已相继出现各种以微机 为核心的温度控制系统 这种系统控制精度高 重复性好 自动化程度高 随 着社会的发展 科技的进步 以及测温仪器在各个领域的应用 智能化已是现 代温度控制系统发展的主流方向 温度是科学技术中最基本的物理量之一 物 理 化学 生物等学科都离不开温度 在工业生产和实验研究中 像电力 化 工 石油 冶金 航空航天 机械制造 粮食存储 酒类生产等领域内 温度 常常是表征对象和过程状态的最重要的参数之一 比如 发电厂锅炉的温度必 须控制在一定的范围之内 许多化学反应的工艺过程必须在适当的温度下才能 正常进行 炼油过程中 原油必须在不同的温度和压力条件下进行分馏才能得 到汽油 柴油 煤油等产品 没有合适的温度环境 许多电子设备就不能正常 工作 粮仓的储粮就会变质霉烂 酒类的品质就没有保障 因此 各行各业对 温度控制的要求都越来越高 可见 温度的测量和控制是非常重要的 特别是 近年来 温度控制系统已应用到人们生活的各个方面 但温度控制一直是一个 未开发的领域 却又是与人们息息相关的一个实际问题 针对这种实际情况 设计一个温度控制系统 具有广泛的应用前景与实际意义 在日常生活中 人 们为了拥有一个更舒适的生活环境 往往需要室内拥有一个合适的温度 而单 片机的准确性高 价格低 功耗低等一系列优点 可结合升温和降温设备 有 效的应用到实际生活中 单片机温度控制系统是单片机控制的一项简单应用 近几年来单片机因其独特的 方便 快捷的优势被广泛的应用于各个领域之中 1 2 选题简介选题简介 课题名称 基于单片机的温度控制系统 主要任务 将温度控制在设定的温度值 设定范围为2 98度 针对在生产 和日常生活中温度智能化控制系统的实现 1 开发环境 本环境温度控制系统的软件部分是通过KEIL进行编译 并由 Proteus 7 Professional进行仿真测试 技术指标 以AT89C52系列单片机为核心部件 以数字电路和模拟电路为硬件基础 以汇编语言为软件实现语言 功能概述 在该环境温度控制系统中 单片机作为核心部件进行检测控制 增强了设计的通用性 适时性 在该环境温度控制系统中温度检测采用 DS18B20 温度传感器 它不仅具有较高的精度 而且适用电压宽 同时采用了 3x4 矩阵扫描键盘输入 显示设备等外围扩展芯片 温度控制分为升温和降温 控制 升温控制和降温控制分别采用继电器来控制外部的升温和降温设备 软 件部分采用流程图来表示 对各个子程序进行说明 包括控制算法 偏差计算 等 控制是否升温或降温 第第 2 章章 系统总体设计及方案系统总体设计及方案 2 1 单片机的介绍单片机的介绍 随着大规模集成电路的出现及其发展 将计算机的 CPU RAM ROM 定时 计数器和多种 I O 接口集成在一片芯片上 形成芯片级的计算机 因此 单片机早期的含义称为单片微型计算机 直译为单片机 2 1 1 单片机的特点单片机的特点 1 具有优异的性能价格比 2 集成度高 体积小 可靠性高 3 控制功能强 4 低电压 低功耗 2 1 2 单片机的基本组成单片机的基本组成 它由 CPU 存储器 包括 RAM 和 ROM I O 接口 定时 计数器 中断控制功能等均集成在一块芯片上 片内各功能通过内部总线相互连接起来 输入 输出引脚 P0 P1 P2 P3 的功能 2 P0 0 P0 7 32 39 脚 P0 口是一个 8 位漏极开路型双向 I O 端口 在 访问片外存储器时 它分时作低 8 位地址和 8 位双向数据总线用 在 EPROM 编程时 由 P0 输入指令字节 而在验证程序时 则输出指令字节 验证程序时 要求外接上拉电阻 P0 能以吸收电流的方式驱动 8 个 LSTTL 负载 P1 0 P1 7 1 8 脚 P1 是一上带内部上拉电阻的 8 位双向 I O 口 在 EPROM 编程和验证程序时 由它输入低 8 位地址 P1 能驱动 4 个 LSTTL 负载 P2 0 P2 7 21 28 脚 P2 也是一上带内部上拉电阻的 8 位双向 I O 口 在访问外部存储器时 由它输出高 8 位地址 在对 EPROM 编程和程序验证 时 由它输入高 8 位地址 P2 可以驱动 4 个 LSTTL 负载 P3 0 P3 7 10 17 脚 P3 也是一上带内部上拉电阻的双向 I O 口 在 MCS 52 中 这 8 个引脚还用于专门的第二功能 P3 能驱动 4 个 LSTTL 负 载 P3 0 RXD 串行口输入 P3 1 TXD 串行口输出 P3 2 INT0 外部中断 0 输入 P3 3 INT1 外部中断 1 输入 P3 4 T0 定时器 0 的外部输入 P3 5 T1 定时器 1 的外部输入 P3 6 WR 片外数据存储器写选通 P3 7 RD 片外数据存储器读选通 2 2 系统功能的确定系统功能的确定 一个控制系统是否能被大众所接受 在于该控制系统是否拥有人性化的操 作功能 为了使本次设计的环境温度控制系统具有操作简单 灵活及高可靠性 等特点 确定了该系统功能 3x4 矩阵键盘输入 由温度采集 3 温度显示 温度控制执行 温度测量范围为 0 99 度 温度有效范围为 2 98 度 允许误差为 1 度 2 3 温度传感器温度传感器 DS18B20 的介绍的介绍 DS18B20 温度传感器是 DALLAS 公司生产的 1 Wire 即单总线器件 具 有线路简单 体积小的特点 因此用它来组成一个测温系统 具有线路简单 在一根通信线 可以挂很多这样的温度传感器 十分方便 2 3 1 DS18B20 的特点的特点 1 只要求一个端口即可实现通信 2 在 DS18B20 中的每个器件上都有独一无二的序列号 3 实际应用中不需要外部任何元器件即可实现测温 4 测量温度范围 55 到 125 5 数字温度计的分辨率用户可以从 9 位到 12 位选择 6 内部有温度上 下限告警设置 2 3 2 DS18B20 的内部结构的内部结构 DS18B20 采用 3 脚 PR 35 封装或 8 脚 SOIC 封装 其内部结构框图如图 2 1 所示 64 位 ROM 和 单线接口 存储器与控制逻辑 高 速 缓 存 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生 器 4 图 2 1 DS18B20 内部结构框图 64 位 ROM 的位结构如图 2 2 所示 开始 8 位是产品类型的编号 接着是每个 器件的唯一的序号 共有 48 位 最后 8 位是前面 56 位的 CRC 检验码 这也是 多个 DS18B20 可以采用单线进行通信的原因 非易失性温度报警触发器 TH 和 TL 可通过软件写入用户报警上下限数据 图 2 2 64 位 ROM 的位结构图 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性 的可电擦除的 E2PROM 高速暂存 RAM 的结构为 9 字节的存储器 结构如图 2 3 所示 前 2 字节包 含测得的温度信息 第 3 和第 4 字节是 TH 和 TL 的拷贝 是易失的 每次上电 复位时被刷新 第 5 字节为配置寄存器 其内容用于确定温度值的数字转换分 辨率 DS18B20 工作时按此寄存器中的分辨率将温度转换为相应精度的数值 该字节各位的定义如图 2 4 所示 其中 低 5 位一直为 1 TM 是测试模式位 用于设置 DS18B20 在工作模式还是在测试模式 在 DS18B20 出厂时 该位被设 置为 0 用户不要去改动 R1 和 R0 决定温度转换的精度位数 即用来设置分辨 率 其定义方法见表 2 1 温度 LSB 温度 MSB TH 用户字节 1 TL 用户字节 2 配置寄存器 保留 保留 8 位检验 CRC48 位序列号8 位工厂代码 10H MSB LSB MSB LSB MSB LSB TH 用户字节 11 TL 用户字节 2 E2PROM 5 保留 CRC 图 2 3 高速暂存 RAM 结构图 表 2 1 DS18B20 分辨率的定义和规定 图 2 4 配置寄存器 由表可见 DS18B20 温度转换的时间比较长 而且设置的分辨率越高 所需要 的温度数据转换时间就越长 因此 在实际应用中要将分辨率和转换时间权衡 考虑 高速暂存 RAM 的第 6 7 8 字节保留未用 表现为全逻辑 1 第 9 字节是 前面 8 字节的 CRC 码 可用来检验数据 从而保证通信数据的正确性 当 DS18B20 接收到温度转换命令后 开始启动转换 转换完成后的温度值 就以 16 位带符号扩展的二进制补码形式存储在高速暂存 RAM 的第 1 2 字节 中 单片机可以通过单线接口读出该数据 读数据时 低位在先 高位在后 数据格式以 0 0625 C LSB 形式表示 温度值格式如图 2 5 所示 低字节 232221202 12 22 32 4 R1R0 分辨率 位 温度最大 转换时间 ms 00993 75 0110187 5 1011375 1112750 TM R1 R0 1 1 1 1 1 1 6 高字节 SSSSS262524 图 2 5 温度数值格式 2 3 3 DS18B20 的引脚介绍的引脚介绍 TO 92 封装的 DS18B20 的引脚排列见图 2 6 其引脚功能描述见表 2 2 图 2 6 底视图 表 2 2 DS18B20 详细引脚功能描述 2 4 人机交互与串口通信人机交互与串口通信 该热炉温度控制系统由温度采集 该热炉温度控制系统由温度采集 3x43x4 矩阵键盘输入 温度显示 温矩阵键盘输入 温度显示 温 度控制执行等四大模块组成 度控制执行等四大模块组成 温度采集 由温度传感器DS18B20完成 并通过串口通信技术与单片机 进行数据传输 使用单片机P3 7端口 3x4矩阵键盘输入 采用外部中断0来判断是否拥有输入请求 并通过 键盘扫描技术来获取所输入的温度值和偏差温度值 输入更灵活 更 方便 使用单片机P0口和P3 2端口 序号名称引脚功能描述 1GND地信号 2DQ数据输入 输出引脚 开漏单总线接口引脚 当被用着在寄生 电源下 也可以向器件提供电源 3VDD可选择的 VDD 引脚 当工作于寄生电源时 此引脚必须接 地 7 温度显示 通过4个7段LED数码显示管显示当前温度值和设定的温度值 及时反应当前温度的变化与设置温度的关系 使用单片机P1 0 P1 5端 口 温度控制执行 系统根据当前温度与设置的温度自动进行相应的升温或降温的 操作 在系统自动进行升温或降温处理的同时显示相应的指示灯 让使用者知 道系统正在进行的操作 使用单片机 P2 2 P2 3 端口 第第 3 章章 硬件设计硬件设计 3 1 系统结构框图系统结构框图 AT89C52 温度显示电路 温度控制电路 键盘输入电路 温度采集电路 图 3 1 系统硬件总体框图 该系统由核心部件AT89C52来处理从键盘输入电路和温度采集电路送入的数据 并通 过温度显示电路进行温度显示 由温度控制电路来进行相应的升温或降温的操作 3 1 1 系统硬件原理图系统硬件原理图 8 图 3 2 原理图 3 2 人机交互与串口通信单元设计人机交互与串口通信单元设计 在该系统中 人机交互技术主要应用在恒定温度与偏差温度的设置 以及 当前温度与设置温度的显示 串口通信技术应用在对温度的采集 9 3 2 1 键盘输入电路键盘输入电路 在本系统中 采用外部中断0控制键盘输入请求 键盘输入主要采用3x4矩 阵键盘扫描技术 如图3 3所示 当按下 设置 切换 键时 进入恒定温度的设 置 可从键盘中自由输入0 9的数字 如果输入错误可按 删除 键进行 删除 如果要设置偏差温度 再按一下 设置 切换 键 可进入偏差温度的设 置 按 确定 键 保存设置并退出键盘输入 进入温度控制状态 123 456 789 0 1 2 3 A B C D SA SB SC SD S1S2S3 S1 S2 S3 SA SB SC SD R11 4 7k R12 4 7k R13 4 7k R14 4 7k 5 SS INT0 R10 4 7k D1 LED RED D2 LED RED R16 300 R17 300 LED ALED B 设置温度偏差温度 设置 切换 删除确定 图 3 3 键盘输入原理图 为了避免从键盘输入的数据错误 该键盘输入电路还为判断按键是否释放的功 能做了铺垫 如图 3 4 所示 该电路由 3 个与门构成 当有键按下时 SA SB SC SD 端中将会有一个为低电平 此时与门的 SS 端将会输出低电 平 同时控制了单片机的 P0 7 端口 再通过软件控制按键是否释放 10 图 3 4 判断键盘是否有键按下 3 2 2 LED 七段数码动态显示电路七段数码动态显示电路 在本系统中采用了LED七段数码动态显示电路来显示温度值 显示范围在 0 99之间 该电路由显示 片选 译码三部分组成 显示部分 由两个两位的LED七段共阴数码管构成 分别用来显示当 前温度和设置温度 如图3 5所示 L1L2L3L4L5L6L7L1L2L3L4L5L6L7L10 L11L8L9 当前温度恒定温度 图 3 5 LED 七段共阴数码管 片选部分 如图3 6所示 由一片2 4译码器 74LS139 构成 单片机 的P1 4和P1 5输出两位片选信号到2 4译码器的A B端口 进行译码后 1 2 3 U7 A 74LS08 4 5 6 U7 B 74LS08 9 10 8 U7 C 74LS08 SA SB SC SD SS 11 输出到LED七段数码管的片选端口 其译码功能如表3 1所示 A 2 Y0 4 B 3 Y1 5 Y2 6 E 1 Y3 7 U3 A 74LS139 KA KB L8 L9 L10 L11 图 3 6 动态显示片选电路 2 4 译码器 表 3 1 74LS139 功能表 输入 选通端地址输入端 输出 EABY0Y1Y2Y3 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 译码部分 该电路由LED七段数码管显示译码器 4511 来完成 如 图3 7所示 单片机将要显示的十进制数据转换成8421BCD编码 对应 的译码值如表3 2所示 再分别送到LED七段数码管显示译码器的 A B C D引脚进行译码 最后输出到LED七段数码管的相引脚 12 L1 L3 L2 L4 L5 L6 L7 R1 1k R2 1k R3 1k R4 1k R5 1k R6 1k R7 1k 5 A 7 B 1 C 2 D 6 LT 3 BI 4 LE STB 5 QA 13 QB 12 QC 11 QD 10 QE 9 QF 15 QG 14 U6 4511 图 3 7 LED 七段数码显示译码电路 表 3 2 4511 译码表 8421BCD 码十进制数 00000 00011 00102 00113 01004 01015 01106 01117 10008 10019 3 2 3 串口通信电路串口通信电路 为了使测得的温度更准确 在本系统中采用了温度传感器DS18B20来获取 当前温度 而DS18B20是采用I2C总线进行通信的 如图3 8所示 单片机使用 P3 7端口与DS18B20的数据通讯端口相连接 并通过软件实现P3 7控制DS18B20 的读和写 13 5 32 0 DQ 2 VCC 3 GND 1 U8 DS18B20 图 3 8 单片机与 DS18B20 的通信 3 3 控制执行单元设计控制执行单元设计 该电路的主要任务是完成单片机所发出的升温或降温操作 来控制外部的 升温或降温设备 如图3 9所示 电路的GK1和GK2端分别与单片机的P2 2和 P2 3端相连接 其工作原理如下 在通常情况下 GK1和GK2均为低电平 当单片机向温度控制执行电路发 送降温命令时 GK1为高电平 GK2为低电平 使三极管Q1饱和导通 此时使 继电器RL1闭合控制外部的降温设备进行工作 同时发光二极管D9将被点亮 提醒使用者温度过高正在进行降温操作 当单片机向温度控制执行电路发送升温命令时 GK1为低电平 GK2为高 电平 使三极管Q2饱和导通 此时使继电器RL2闭合控制外部的升温设备进行 工作 同时发光二极管D4将被点亮 提醒使用者温度过低正在进行升温操作 14 5 GK1 GK2 D9 LED RED 温度过低 温度过高 RL1 G2RL 1AB DC5 Q1 MPS6514 R8 300 Q2 MPS6514 RL2 G2RL 1AB DC5 D4 LED BIRG R9 300 图 3 9 温度控制及相应显示电路 第第 4 章章 软件设计软件设计 4 1 主程序主程序 根据所学知识 实现本系统的软件部分将使用汇编语言 要配合硬件部分实现 输入一个需要恒定的温度值和偏差温度 与从温度传感器所获取的当前实际温 度相比较 并向温度控制执行电路发出升温或降温的命令 在这一过程中将随 时显示当前温度值和设置的温度值 其主要实现的部分包括 键盘输入 温度 采集 数据转换 动态显示 温度控制等 主程序流程图如图 4 1 所示 15 图 4 1 主程序流程图 开始 系统初始化 发送温度读取 指令 读出温度值 数据转换 16 进制 10 进制 温度控制执 行 显示当前温度 和设置温度 是否有外部中断 0 请求 键盘输入中断 服务子程序 结束 16 4 2 温度采集子程序温度采集子程序 温度采集子程序主要负责驱动外部的温度传感器DS18B20进行工作 通过 串口通信方式向DS18B20写入ROM命令 并读取当前温度值 将读取的数据存 放在26H 2EH存储单元 其中26H单元存放温度值的低位 27H单元存放温度值 的高位 程序流程图如图4 2所示 开始 DS18B20 复位 向 DS18B20 写入相 应的 ROM 命令 读出温度值 并进行校验 结束 图 4 2 温度采集子程序流程图 4 3 数据转换子程序数据转换子程序 数据转换子程序功能是将从温度采集子程序中采集的十六进制温度数据 转换 成十进制的数值并存储在指定的存储单元内 由于该恒温系统设计的温度检测 有效为 0 99 所以数据转换原理为 将获取到的十六进制温度值除以十进制数 10 所得到的商为相应十进制数的十位 并存入 31H 单元 余数则为相应十进 制数的个位 并存入 30H 单元 其程序流程图如图 4 3 所示 17 开始 合并温度值的高 位和低位存入 A A 除以 10 商送 31H 单元 余数送 30H 单 元 结束 图 4 3 数据转换流程图 4 4 动态显示子程序动态显示子程序 在该恒温系统中使用了两个两位的LED七段数码管来显示系统所采集的当 前温度值和设置的温度值 为了不占用更多的单片机端口 在针对显示电路的 设计时采用了动态显示的方案 而动态显示子程序的主要任务就是控制显示电 路的扫描规律 其程序流程图如图4 4所示 18 开始 当前温度高位送入 A 片选信号初始化 ORL A 30H 当前温度高位片选信号 ANL A 0CFH 显示输出 MOV P1 A 延时 1ms 当前温度低位送入 A 片选信号初始化 ORL A 30H 当前温度低位片选信号 ANL A 0DFH 显示输出 MOV P1 A 延时 1ms 设置温度高位送入 A 片选信号初始化 ORL A 30H 设置温度高位片选信号 ANL A 0EFH 显示输出 MOV P1 A 延时 1ms 设置温度低位送入 A 片选信号初始化 ORL A 30H 设置温度低位片选信号 ANL A 0FFH 显示输出 MOV P1 A 延时 1ms 结束 图 4 4 动态显示子程序流程图 4 5 温度控制执行子程序温度控制执行子程序 温度控制执行子程序的任务是检测由温度计测得的当前温度值是否在设置 19 温度值的允许范围内 若当前温度大于设置温度的允许范围 表明当前温度过 高 立即向温度控制电路发出降温命令 P2 2 为高电平 P2 3 为低电平 若 当前温度小于设置温度的允许范围 表明当前温度过低 立及向温度控制电路 发出升温命令 P2 2 为低电平 P2 3 为高电平 程序流程图如图 4 5 所示 开始 当前温度加偏差温度 设置温度加偏差温度 判断温度是否过高 设置温度加偏差温度 再减当前温度 判断温度是否过低 当前温度加偏差温度 再减设置温度 初始温度控制端 P2 2 和 P2 3 置低电平 发出降温命令 P2 2 高电平 P2 3 低电平 发出升温命令 P2 2 低电平 P2 3 高电平 结束 Y Y N N 图 4 5 温度控制执行子程序流程图 20 4 6 键盘输入中断服务子程序键盘输入中断服务子程序 在本系统中键盘输入请求使用 INT0 外部中断 0 来实现 INT0 采用 电平触发方式 当按下键盘中的 设置 切换 键时 INT0 P3 2 端为低电平 时 进入键盘输入中断服务子程序 此时可以设置要恒定温度 删除 键为删除键 点击一次可删除输入的一位数据 在输入过程中通过 P0 7 端口判 断每次按键后是否释放 当按下 确定 号键时 则保存设置并退出中断 服务子程序 返回到主程序 其程序流程图如图 4 6 所示 21 INT0 请求 设置控制 温度控 制初始化 设置切换输入 P0 7 低电平 设置第一列键码 和第一列扫描端 P0 0 为低电平 延时 20ms 消除抖动 键按第二行扫描 P0 4 低电平 键按第三行扫描 P0 5 低电平 键按第四行扫描 P0 6 低电平 设置第二列键码 和第二列扫描端 P0 1 为低电平 延时 20ms 消除抖动 设置第三列键码 和第三列扫描端 P0 2 为低电平 延时 20ms 消除抖动 第一列是否扫描过 第二列是否扫描过 第三列是否扫描过 输入显示 键值相加 并存储数据 输入确定 返回主程序 键按第一行扫描 P0 3 低电平 按键是否释放 设置切换 Y N Y Y N N Y Y N N Y N Y N Y N Y N Y N 图 4 6 键盘输入中断服务子程序流程图 22 第第 5 章章 结结 论论 在设计该系统的过程中我充分应用了在课堂上所学的相关理论知识 当把 理论知识通过自己的双手变成实际后 使我对电路设计有了更多的了解 同时 又产生了更浓厚的兴趣 本系统的核心技术表现在温度采集 3x4 矩阵键盘输入和动态显示部分 其中温度采集的硬件部分使用温度传感器 DS18B20 通过软件控制与 DS18B20 的串口通讯来进行温度采集 3x4 矩阵键盘输入采用键码的扫描来实现 为了实现这一系列功能我主动与指导老师交流 并且查阅了大量相关的书籍 在此过程中进一步锻炼了自己思考问题与解决问题的能力 巩固并提高了自己 的单片机 数字电路 模拟电路等相关知识 该系统实现的最终功能是控制外界温度 使温度恒定在一定的范围内 统 所能测量温度的范围在 0 99 度之间 能恒定的范围是在 1 98 度之间 所以该 系统在日常生活与生产中有较大的应用空间 特别是运用在养殖业方面 而在 一些特殊的生产环境中 其需要恒温的范围远远超过了该系统 该恒温系统是 不适用的 这也是该系统有待完善的地方 23 附录附录 主程序代码主程序代码 ORG 0000H LJMP MAIN ORG 0003H 外部中断 INT0 入口地址 LJMP SKEY 转外部中断 INT0 ORG 1000H MAIN CLR P2 2 初始控制端 温度过高 降温 CLR P2 3 温度过低 升温 TEMPDIN BIT P3 7 DS18B20 通信端口 TEMPLEQU24H 温度低位存储单元 TEMPHEQU25H 温度高位存储单元 TEMPHEADEQU26H DS18B20 9 位数据存储单元 26H 2EH SHOWGETLEQU30H 当前温度低位 SHOWGETHEQU31H 当前温度高位 SHOWSETLEQU32H 设置温度低位 SHOWSETHEQU33H 设置温度高位 TEMPCKEQU34H 偏差温度存储单元 MOV TEMPCK 03H 设置系统允许的偏差温度 MOV SHOWGETL 00H 当前温度低位初值 MOV SHOWGETH 00H 当前温度高位初值 MOV SHOWSETL 00H 设置温度低位初值 MOV SHOWSETH 00H 设置温度高位初值 LOOP MOV IE 00H ACALLREADTEMP 发送温度读取指令 ACALLREADTEMP1 读出温度值子程序 ACALL DATAS 数据转换 将 16 进制数据转换成 10 进制数 据 ACALL SETOUT 温度数据处理 温度控制执行 ACALL SHOW 显示当前温度和设置温度 24 CLR IT0 电平触发方式 SETB EA CUP 开放中断 SETB EX0 允许外部中断 0 AJMP LOOP 下面是主程序所用到的子程序 RESET DS18B20 复位 INITDS1820 SETBTEMPDIN NOP NOP CLRTEMPDIN MOVR6 0A0H DELAY 480us DJNZR6 MOVR6 0A0H DJNZR6 SETBTEMPDIN MOVR6 SHOWSETL DELAY 70us DJNZR6 MOV R6 3CH LOOP1820 MOVC TEMPDIN JC INITDS1820OUT DJNZ R6 LOOP1820 MOV R6 064H DELAY 200us DJNZR6 SJMPINITDS1820 RET INITDS1820OUT SETBTEMPDIN 25 RET 读 DS18B20 的程序 从 DS18B20 中读出一个字节的数据 READDS1820 MOVR7 08H SETBTEMPDIN NOP NOP READDS1820LOOP CLRTEMPDIN NOP NOP NOP SETB TEMPDIN MOV R6 07H DELAY 15us DJNZ R6 MOV C TEMPDIN MOVR6 3CH DELAY 120us DJNZ R6 RRC A SETB TEMPDIN DJNZ R7 READDS1820LOOP MOVR6 3CH DELAY 120us DJNZR6 RET 写 DS18B20 的子程序 向 DS18B20 中写一个字节的数据 WRITEDS1820 MOVR7 08H SETBTEMPDIN NOP NOP WRITEDS1820LOOP CLRTEMPDIN 26 MOV R6 07H DELAY 15us DJNZ R6 RRC A MOVTEMPDIN C MOVR6 34H DELAY 104us DJNZR6 SETBTEMPDIN DJNZ R7 WRITEDS1820LOP RET 向 DS18B20 写入相应的 ROM 命令 READTEMP LCALL INITDS1820 MOVA 0CCH LCALL WRITEDS1820 写入 ROM 命令 SKIP ROM MOVR6 34H DELAY 104us DJNZR6 MOVA 44H LCALL WRITEDS1820 写入 ROM 命令 START CONVERSION MOVR6 34H DELAY 104us DJNZR6 RET 读出温度值子程序 READTEMP1 LCALLINITDS1820 MOVA 0CCH LCALL WRITEDS1820 写入 ROM 命令 SKIP ROM MOVR6 34H DELAY 104us DJNZR6 MOVA 0BEH 27 LCALL WRITEDS1820 写入 ROM 命令 SCRATCHPAD MOVR6 34H DELAY 104us DJNZR6 MOVR5 09H MOVR0 TEMPHEAD MOV B 00H READTEMP2 LCALLREADDS1820 开始读出温度 MOV R0 A INC R0 READTEMP21 LCALL CRC8CAL DJNZR5 READTEMP2 MOVA B JNZ READTEMPOUT MOVA TEMPHEAD 0 MOVTEMPL A MOVA TEMPHEAD 1 MOVTEMPH A READTEMPOUT RET DS18B20 CRC 8 校验程序 CRC8CAL PUSHACC MOVR7 08H CRC8LOOP1 XRLA B RRCA MOVA B JNCCRC8LOOP2 XRLA 18H CRC8LOOP2 RRCA MOVB A POPACC 28 RR A PUSHACC DJNZR7 CRC8LOOP1 POPACC RET 数据转换 将 16 进制数据转换成 10 进制数据 DATAS MOV A TEMPL ANL A 0F0H 屏蔽低位 SWAP A MOV B A MOV A TEMPH SWAP A ORL A B MOV B 10 DIV AB MOV SHOWGETH A MOV SHOWGETL B RET 温度数据处理 SETOUT MOV A SHOWGETL 设置偏差温度 当前温度 TEMPCK ADD A TEMPCK MOV 50H A MOV 51H SHOWGETH SUBB A 0AH JC SSZ 5 MOV 50H A INC 51H 29 SSZ 5 MOV A SHOWSETL 设置偏差温度 设置温度 TEMPCK ADD A TEMPCK MOV 52H A MOV 53H SHOWSETH SUBB A 0AH JC SD1 MOV 52H A INC 53H SD1 MOV A 52H 设置温度 TEMPCK 减 当前温度 判断温度是否过 高 SUBB A SHOWGETL MOV A 53H SUBB A SHOWGETH JC JIANG MOV A 50H 当前温度 TEMPCK 减 设置温度 判断温度是否过 低 SUBB A SHOWSETL MOV A 51H SUBB A SHOWSETH JC SHENG CLR P2 2 初始控制端 温度过高 降温 CLR P2 3 温度过低 升温 AJMP OVER JIANG SETB P2 2 温度过高 降温处理 CLR P2 3 温度过低 升温 AJMP OVER SHENG SETB P2 3 温度过低 升温处理 CLR P2 2 初始控制端 温度过高 降温 OVER RET 30 3x4 矩阵键盘输入中断子程序 SKEY MOV R0 00H CLR P2 2 初始控制端 温度过高 降温 CLR P2 3 初始控制端 温度过低 升温 LS1 JB P3 2 SK1 MOV A R0 CPL A MOV R0 A JNB P3 2 SK1 MOV ACC 0FFH CLR ACC 0 SETB ACC 1 SETB ACC 2 MOV P0 ACC ACALL DELAY1 调用两次 10ms 延时 消除抖动 ACALL DELAY1 MOV ACC P0 MOV 40H 01H AJMP HS1 LS2 MOV ACC 0FFH SETB ACC 0 CLR ACC 1 SETB ACC 2 MOV P0 ACC ACALL DELAY1 ACALL DELAY1 MOV ACC P0 MOV 40H 02H AJMP HS1 LS3 MOV ACC 0FFH 31 SETB ACC 0 SETB ACC 1 CLR ACC 2 MOV P0 ACC ACALL DELAY1 ACALL DELAY1 MOV ACC P0 MOV 40H 03H AJMP HS1 HS1 JB ACC 3 HS2 MOV A 00H ADD A 40H AJMP KSOK HS2 JB ACC 4 HS3 MOV A 03H ADD A 40H AJMP KSOK HS3 JB ACC 5 HS4 MOV A 06H ADD A 40H AJMP KSOK HS4 JB ACC 6 FH1 MOV A 09H ADD A 40H AJMP KSOK FH1 ACALL SHOW1 MOV R1 40H CJNE R1 01H FH2 AJMP LS2 FH2 CJNE R1 02H FH3 32 AJMP LS3 FH3 AJMP LS1 KSOK CJNE A 0AH OK1 退格键 CJNE R0 0FFH SS1 MOV SHOWSETL SHOWSETH MOV SHOWSETH 00H AJMP ONSKEY SS1 ANL TEMPCK 0F0H MOV A TEMPCK SWAP A MOV TEMPCK A AJMP ONSKEY OK1 CJNE A 0BH OK2 0 键 MOV A 00H AJMP OK3 OK2 CJNE A 0CH OK3 确认键 AJMP EXX OK3 CJNE R0 0FFH SS2 MOV SHOWSETH SHOWSETL MOV SHOWSETL A AJMP ONSKEY SS2 MOV R1 A ANL TEMPCK 0FH MOV A TEMPCK SWAP A MOV TEMPCK A MOV A R1 ORL TEMPCK A ONSKEY JNB P0 7 判断是否释放按键 ACALL DELAY1 33 ACALL DELAY1 AJMP LS1 EXX MOV P0 0FFH MOV IE 00H 关闭中断 INT0 RETI 主程序显示子程序 SHOW MOV A SHOWGETH ORL A 30H ANL A 0CFH MOV P1 A ACALL DELAY2 MOV A SHOWGETL ORL A 30H ANL A 0DFH MOV P1 A ACALL DELAY2 MOV A SHOWSETH ORL A 30H ANL A 0EFH MOV P1 A ACALL DELAY2 MOV A SHOWSETL ORL A 30H ANL A 0FFH MOV P1 A SE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 印染行业安全培训试题及答案解析
- 2025年初级经济师题库附参考答案综合题
- 2025年试验检测师考试卷含答案满分必刷
- 信息系统安全维护操作规程
- 2025年咨询工程师继续教育考试试题及答案
- 周例会会议纪要范文6篇
- 2025年煤矿安全生产标准化考试试题及答案
- 2025年设备安装质量员考试题库附答案
- 2019全国数学竞赛决赛试题解析
- 部编版五年级语文写作能力提升方案
- 混合型脑性瘫痪的护理课件
- 眼科专业视野培训教材
- 乳房疾病的诊断与治疗
- 青蓝工程教师成长档案
- 中建室内中庭墙面铝板、玻璃安装施工方案(改)
- 中秋佳节给客户的一封信(10篇)
- 二维码见证取样操作手册广西
- 学生心理健康档案表格
- 雨污水管道专项工程施工组织设计方案
- 毕业论文-线路二次电弧熄灭时刻扑捉方法研究及仿真分析
- GB/T 18029.2-2022轮椅车第2部分:电动轮椅车动态稳定性的测定
评论
0/150
提交评论