基于单片机的温度控制系统设计论文123.doc_第1页
基于单片机的温度控制系统设计论文123.doc_第2页
基于单片机的温度控制系统设计论文123.doc_第3页
基于单片机的温度控制系统设计论文123.doc_第4页
基于单片机的温度控制系统设计论文123.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第 9 页 继续教育学院 毕业论文毕业论文 题目 题目 基于单片机的温度控制系统设计 学生姓名 学生姓名 杨宁杨宁 学学 号 号 924410100119 班班 级级 机电机电 0901 专专 业 业 机电一体化机电一体化 指导教师 指导教师 2011 年年 10 月月 目目 录录 摘摘 要要 1 第第 1 章章 绪论绪论 2 1 1 选题背景 2 1 2 选题简介 2 第第 2 章章 系统总体设计及方案系统总体设计及方案 3 2 1 单片机的介绍 3 2 1 1单片机的特点 3 2 1 2 单片机的基本组成 3 2 2 系统功能的确定 4 2 3 温度传感器 DS18B20 的介绍 4 2 3 1 DS18B20的特点 4 2 3 2 DS18B20的内部结构 5 2 3 3 DS18B20的引脚介绍 7 2 4 人机交互与串口通信 8 第第 3 章章 硬件设计硬件设计 9 3 1 系统结构框图 9 3 1 1 系统硬件原理图 9 3 2 人机交互与串口通信单元设计 11 3 2 1 键盘输入电路 11 3 2 2 LED七段数码动态显示电路 12 3 2 3 串口通信电路 14 3 3 控制执行单元设计 15 第第 4 章章 软件设计软件设计 16 4 1 设计思路 主程序流程图 16 4 1 1 主程序代码 17 4 2 温度采集子程序 31 4 3 数据转换子程序 32 4 4 动态显示子程序 33 4 5 温度控制执行子程序 34 4 6 键盘输入中断服务子程序 36 第第 5 章章 结结 论论 38 参考文献参考文献 38 第 1 页第 1 页 摘 要 随着电子产品向智能化和微型化的不断发展 单片机已成为电子产品研制和开发 中首选的控制器 为了更好地推广单片机在实际生活和生产中的应用 本文介绍一种 应用 AT89C52 单片机设计的温度控制系统 该环境温度系统采用温度传感器DS18B20通过I2C总线通信来获得当前温度 并 与从3X4矩阵键盘输入的温度值进行验证 系统自动控制升温或降温的操作 将温 度稳定在所设定的温度值 经实际制作表明该环境温度控制系统具有体积小 操作灵活 可靠性高 实用 成本低等特点 适合住宅和各类温室温度的控制 具有一定的实际意义 关键词 单片机 键盘 稳定温度 显示器 温度控制 第 2 页第 2 页 第 1 章 绪论 1 1 选题背景 在生产过程中 温度的控制是十分常见的 国内已相继出现各种以微机为核心 的温度控制系统 这种系统控制精度高 重复性好 自动化程度高 在日常生活中 人们为了拥有一个更舒适的生活环境 往往需要室内拥有一个 合适的温度 而单片机的准确性高 价格低 功耗低等一系列优点 可结合升温和 降温设备 有效的应用到实际生活中 单片机温度控制系统是单片机控制的一项简单应用 近几年来单片机因其独特的 方便 快捷的优势被广泛的应用于各个领域之中 1 2 选题简介 课题名称 基于单片机的温度控制系统 主要任务 将温度控制在设定的温度值 设定范围为2 98度 针对在生产和日 常生活中温度智能化控制系统的实现 开发环境 本环境温度控制系统的软件部分是通过KEIL进行编译 并由Proteus 7 Professional进行仿真测试 技术指标 以AT89C52系列单片机为核心部件 以数字电路和模拟电路为硬件基础 以汇编语言为软件实现语言 功能概述 在该环境温度控制系统中 单片机作为核心部件进行检测控制 增 强了设计的通用性 适时性 在该环境温度控制系统中温度检测采用 DS18B20 温度 传感器 它不仅具有较高的精度 而且适用电压宽 同时采用了 3x4 矩阵扫描键盘 输入 显示设备等外围扩展芯片 温度控制分为升温和降温控制 升温控制和降温 控制分别采用继电器来控制外部的升温和降温设备 软件部分采用流程图来表示 对各个子程序进行说明 包括控制算法 偏差计算等 控制是否升温或降温 第 3 页第 3 页 第 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 的功能 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 负载 第 4 页第 4 页 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 矩阵键盘输入 由温度采集 温度显示 温度控制执行 温度测量范围为 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 内部有温度上 下限告警设置 第 5 页第 5 页 2 3 2 DS18B20 的内部结构 DS18B20 采用 3 脚 PR 35 封装或 8 脚 SOIC 封装 其内部结构框图如图 2 1 所 示 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 是测试模式位 用于设置 64 位 ROM 和 单线接口 存储器与控制逻辑 高 速 缓 存 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生 器 图 2 1 DS18B20 内部结构框图 8 位检验 CRC48 位序列号8 位工厂代码 10H MSB LSB MSB LSB MSB LSB 第 6 页第 6 页 DS18B20 在工作模式还是在测试模式 在 DS18B20 出厂时 该位被设置为 0 用户 不要去改动 R1 和 R0 决定温度转换的精度位数 即用来设置分辨率 其定义方法 见表 2 1 温度 LSB 温度 MSB TH 用户字节 1 TL 用户字节 2 配置寄存器 保留 保留 保留 CRC R1R0 分辨率 位 温度最大 转换时间 ms 00993 75 0110187 5 1011375 1112750 TH 用户字节 11 TL 用户字节 2 E2PROM 图 2 3 高速暂存 RAM 结构图 表 2 1 DS18B20 分辨率的定义和规定 TM R1 R0 1 1 1 1 1 1 第 7 页第 7 页 由表可见 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 高字节 SSSSS262524 2 3 3 DS18B20 的引脚介绍 TO 92 封装的 DS18B20 的引脚排列见图 2 6 其引脚功能描述见表 2 2 图 2 6 底视图 表 2 2 DS18B20 详细引脚功能描述 序号名称引脚功能描述 1GND地信号 图 2 4 配置寄存器 位定义 图 2 5 温度数值格式 第 8 页第 8 页 2DQ数据输入 输出引脚 开漏单总线接口引脚 当被用着在寄生 电源下 也可以向器件提供电源 3VDD可选择的 VDD 引脚 当工作于寄生电源时 此引脚必须接 地 2 4 人机交互与串口通信 该热炉温度控制系统由温度采集 3x4矩阵键盘输入 温度显示 温度控制执行 等四大模块组成 温度采集 由温度传感器DS18B20完成 并通过串口通信技术与单片机进行 数据传输 使用单片机P3 7端口 3x4矩阵键盘输入 采用外部中断0来判断是否拥有输入请求 并通过键盘 扫描技术来获取所输入的温度值和偏差温度值 输入更灵活 更方便 使 用单片机P0口和P3 2端口 温度显示 通过4个7段LED数码显示管显示当前温度值和设定的温度值 及 时反应当前温度的变化与设置温度的关系 使用单片机P1 0 P1 5端口 温度控制执行 系统根据当前温度与设置的温度自动进行相应的升温或降 温的操作 在系统自动进行升温或降温处理的同时显示相应的指示灯 让 使用者知道系统正在进行的操作 使用单片机P2 2 P2 3端口 第 9 页 第 3 章 硬件设计 3 1 系统结构框图 图 3 1 系统硬件总体框图 该系统由核心部件AT89C52来处理从键盘输入电路和温度采集电路送入的数据 并通过温 度显示电路进行温度显示 由温度控制电路来进行相应的升温或降温的操作 3 1 1 系统硬件原理图 AT89C52 温度显示电路 温度控制电路 键盘输入电路 温度采集电路 第 10 页第 10 页 图 3 1 1 原理图 第 9 页 3 2 人机交互与串口通信单元设计 在该系统中 人机交互技术主要应用在恒定温度与偏差温度的设置 以及当前 温度与设置温度的显示 串口通信技术应用在对温度的采集 3 2 1 键盘输入电路 在本系统中 采用外部中断0控制键盘输入请求 键盘输入主要采用3x4矩阵键 盘扫描技术 如图3 2所示 当按下 设置 切换 键时 进入恒定温度的设置 可从 键盘中自由输入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 2 键盘输入原理图 为了避免从键盘输入的数据错误 该键盘输入电路还为判断按键是否释放的功 能做了铺垫 如图3 3所示 该电路由3个与门构成 当有键按下时 SA SB SC SD端中将会有一个为低电平 此时与门的SS端将会输出低电平 同 时控制了单片机的P0 7端口 再通过软件控制按键是否释放 AT89C52 P0 口 第 12 页第 12 页 1 2 3 U7 A 74LS08 4 5 6 U7 B 74LS08 9 10 8 U7 C 74LS08 SA SB SC SD SS 图 3 3 判断键盘是否有键按下 3 2 2 LED 七段数码动态显示电路 在本系统中采用了LED七段数码动态显示电路来显示温度值 显示范围在0 99 之间 该电路由显示 片选 译码三部分组成 显示部分 由两个两位的LED七段共阴数码管构成 分别用来显示当前温 度和设置温度 如图3 4所示 L1L2L3L4L5L6L7L1L2L3L4L5L6L7L10 L11L8L9 当前温度恒定温度 图 3 4 LED 七段共阴数码管 片选部分 如图3 5所示 由一片2 4译码器 74LS139 构成 单片机的 P1 4和P1 5输出两位片选信号到2 4译码器的A B端口 进行译码后输出到 LED七段数码管的片选端口 其译码功能如表3 1所示 第 13 页第 13 页 A 2 Y0 4 B 3 Y1 5 Y2 6 E 1 Y3 7 U3 A 74LS139 KA KB L8 L9 L10 L11 图 3 5 动态显示片选电路 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 6 所示 单片机将要显示的十进制数据转换成8421BCD编码 对应的译码值 如表3 2所示 再分别送到LED七段数码管显示译码器的A B C D引脚 进行译码 最后输出到LED七段数码管的相引脚 AT89C52 P1 4 P1 5 第 14 页第 14 页 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 6 LED 七段数码显示译码电路 表 3 2 4511 译码表 8421BCD 码十进制数 00000 00011 00102 00113 01004 01015 01106 01117 10008 10019 3 2 3 串口通信电路 为了使测得的温度更准确 在本系统中采用了温度传感器DS18B20来获取当前 温度 而DS18B20是采用I2C总线进行通信的 如图3 7所示 单片机使用P3 7端口与 DS18B20的数据通讯端口相连接 并通过软件实现P3 7控制DS18B20的读和写 第 15 页第 15 页 5 32 0 DQ 2 VCC 3 GND 1 U8 DS18B20 图 3 7 单片机与 DS18B20 的通信 3 3 控制执行单元设计 该电路的主要任务是完成单片机所发出的升温或降温操作 来控制外部的升温 或降温设备 如图3 8所示 电路的GK1和GK2端分别与单片机的P2 2和P2 3端相连 接 其工作原理如下 在通常情况下 GK1和GK2均为低电平 当单片机向温度控制执行电路发送降 温命令时 GK1为高电平 GK2为低电平 使三极管Q1饱和导通 此时使继电器 RL1闭合控制外部的降温设备进行工作 同时发光二极管D9将被点亮 提醒使用者 温度过高正在进行降温操作 当单片机向温度控制执行电路发送升温命令时 GK1为低电平 GK2为高电平 使三极管Q2饱和导通 此时使继电器RL2闭合控制外部的升温设备进行工作 同时 发光二极管D4将被点亮 提醒使用者温度过低正在进行升温操作 AT89C52 P3 7 第 16 页第 16 页 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 8 温度控制及相应显示电路 第 4 章 软件设计 4 1 设计思路 主程序流程图 根据所学知识 实现本系统的软件部分将使用汇编语言 要配合硬件部分实现 输入一个需要恒定的温度值和偏差温度 与从温度传感器所获取的当前实际温度相 比较 并向温度控制执行电路发出升温或降温的命令 在这一过程中将随时显示当 前温度值和设置的温度值 其主要实现的部分包括 键盘输入 温度采集 数据转 换 动态显示 温度控制等 主程序流程图如图4 1所示 第 17 页第 17 页 图 4 1 主程序流程图 4 1 1 主程序代码 ORG 0000H LJMP MAIN ORG 0003H 外部中断 INT0 入口地址 LJMP SKEY 转外部中断 INT0 ORG 1000H 开始 系统初始化 发送温度读取指 令 读出温度值 数据转换 16 进制 10 进制 温度控制执行 显示当前温度和 设置温度 是否有外部中 断 0 请求 键盘输入中断服务子程序 结束 断点 Y N 第 18 页第 18 页 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 显示当前温度和设置温度 CLR IT0 电平触发方式 SETB EA CUP 开放中断 SETB EX0 允许外部中断 0 AJMP LOOP 下面是主程序所用到的子程序 RESET DS18B20 复位 第 19 页第 19 页 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 RET 读 DS18B20 的程序 从 DS18B20 中读出一个字节的数据 READDS1820 MOVR7 08H SETBTEMPDIN NOP NOP READDS1820LOOP CLRTEMPDIN NOP 第 20 页第 20 页 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 MOV R6 07H DELAY 15us DJNZ R6 RRC A MOVTEMPDIN C MOVR6 34H DELAY 104us DJNZR6 SETBTEMPDIN DJNZ R7 WRITEDS1820LOP RET 第 21 页第 21 页 向 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 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 第 22 页第 22 页 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 RR A PUSHACC DJNZR7 CRC8LOOP1 POPACC RET 数据转换 将 16 进制数据转换成 10 进制数据 DATAS MOV A TEMPL ANL A 0F0H 屏蔽低位 第 23 页第 23 页 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 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 第 24 页第 24 页 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 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 第 25 页第 25 页 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 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 第 26 页第 26 页 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 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 第 27 页第 27 页 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 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 第 28 页第 28 页 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 SETB P2 0 SETB P2 1 RET 3x4 矩阵键盘输入中断子程序 显示子程序 SHOW1 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 CJNE R0 0FFH SHOW SET 第 29 页第 29 页 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 CLR P2 0 SETB P2 1 AJMP SHOW OVER SHOW SET MOV A TEMPCK 偏差温度显示 SWAP A ORL A 30H ANL A 0EFH MOV P1 A ACALL DELAY2 MOV A TEMPCK ORL A 30H ANL A 0FFH MOV P1 A SETB P2 0 CLR P2 1 SHOW OVER RET 延时 10ms 用于键盘输入子程序 防抖动 DELAY1 MOV R5 10 DE1 MOV R6 250 第 30 页第 30 页 DE2 NOP NOP DJNZ R6 DE2 DJNZ R5 DE1 RET 延时 1ms 用于显示子程序 DELAY2 MOV R5 1 D1 MOV R6 250 D2 NOP NOP DJNZ R6 D2 DJNZ R5 D1 RET END 4 2 温度采集子程序 温度采集子程序主要负责驱动外部的温度传感器DS18B20进行工作 通过串口 通信方式向DS18B20写入ROM命令 并读取当前温度值 将读取的数据存放在26H 2EH存储单元 其中26H单元存放温度值的低位 27H单元存放温度值的高位 程序 流程图如图4 2所示 第 31 页第 31 页 图 4 2 温度采集子程序流程图 4 3 数据转换子程序 数据转换子程序功能是将从温度采集子程序中采集的十六进制温度数据 转换 成十进制的数值并存储在指定的存储单元内 由于该恒温系统设计的温度检测有效 为0 99 所以数据转换原理为 将获取到的十六进制温度值除以十进制数10 所得 到的商为相应十进制数的十位 并存入31H单元 余数则为相应十进制数的个位 并存入30H单元 其程序流程图如图4 3所示 图 4 3 数据转换流程图 开始 DS18B20 复位 向 DS18B20 写入相 应的 ROM 命令 读出温度值 并进行校验 结束 开始 合并温度值的高 位和低位存入 A A 除以 10 商送 31H 单元 余数送 30H 单 元 结束 第 32 页第 32 页 4 4 动态显示子程序 在该恒温系统中使用了两个两位的LED七段数码管来显示系统所采集的当前温 度值和设置的温度值 为了不占用更多的单片机端口 在针对显示电路的设计时采 用了动态显示的方案 而动态显示子程序的主要任务就是控制显示电路的扫描规律 其程序流程图如图4 4所示 开始 当前温度高位送入 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 结束 第 33 页第 33 页 图 4 4 动态显示子程序流程图 4 5 温度控制执行子程序 温度控制执行子程序的任务是检测由温度计测得的当前温度值是否在设置温度 值的允许范围内 若当前温度大于设置温度的允许范围 表明当前温度过高 立即 向温度控制电路发出降温命令 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 第 34 页第 34 页 图 4 5 温度控制执行子程序流程图 4 6 键盘输入中断服务子程序 在本系统中键盘输入请求使用 INT0 外部中断 0 来实现 INT0 采用电平触发 方式 当按下键盘中的 设置 切换 键时 INT0 P3 2 端为低电平时 进入键盘 输入中断服务子程序 此时可以设置要恒定温度 删除 键为删除键 点击 一次可删除输入的一位数据 在输入过程中通过 P0 7 端口判断每次按键后是否释放 当按下 确定 号键时 则保存设置并退出中断服务子程序 返回到主程序 其程序流程图如图 4 6 所示 第 35 页第 35 页 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 键盘输入中断服务子程序流程 图 第 36 页第 36 页 第 5 章 结 论 在设计该系统的过程中我充分应用了在课堂上所学的相关理论知识 当把理论 知识通过自己的双手变成实际后 使我对电路设计有了更多的了解 同时又产生了 更浓厚的兴趣 本系统的核心技术表现在温度采集 3x4 矩阵键盘输入和动态显示部分 其中 温度采集的硬件部分使用温度传感器 DS18B20 通过软件控制与 DS18B20 的串口 通讯来进行温度采集 3x4 矩阵键盘输入采用键码的扫描来实现 为了实现这一系列功能我主动与指导老师交流 并且查阅了大量相关的书籍 在此 过程中进一步锻炼了自己思考问题与解决问题的能力 巩固并提高了自己的单片机 数字电路 模拟电路等相关知识 该系统实现的最终功能是控制外界温度 使温度恒定在一定的范围内 统所能 测量温度的范围在 0 99 度之间 能恒定的范围是在 1 98 度之间 所以该系统在日 常生活与生产中有较大的应用空间 特别是运用在养值业方面 而在一些特殊的生 产环境中 其需要恒温的范围远远超过了该系统 该恒温系统是不适用的 这也是 该系统有待完善的地方 参考文献 1 刘高鏁编著 单片机实用技术 清华大学出版社 2 樊明龙 任丽静编著 单片机原理与应用 化学工业出版社 3 徐光翔编著 单片机原理 接口及应用 南京大学出版社 4 杨文龙编著 单片机原理及应用 西安电子科技大学出版社 5 楼然苗 李光飞编著 51 系列单片机设计实例 北京航空航天大学出版社袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁 蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇 葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅 芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀芅蒁螈羁芄

温馨提示

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

评论

0/150

提交评论