单片机控制的热炉温度控制系统.doc_第1页
单片机控制的热炉温度控制系统.doc_第2页
单片机控制的热炉温度控制系统.doc_第3页
单片机控制的热炉温度控制系统.doc_第4页
单片机控制的热炉温度控制系统.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第 17 页 单片机控制的热炉温度控制系统 毕业设计说明书(论文) 设计(论文)题目: 单片机控制的热炉温度控制系统 专 业: 电子信息工程技术 班 级: xxx 学 号: xxx 姓 名: xxx 指导教师: xxx xx 年 x 月 x 日 单片机控制的温度控制系统 目目 录录 摘摘 要要.1 第第 1 1 章章 绪论绪论.2 1.1 选题背景 2 1.2 选题简介 2 第第 2 2 章章 系统总体设计及方案系统总体设计及方案.4 2.1 单片机的介绍 4 2.1.1 单片机的特点.4 2.1.2 单片机的基本组成 4 2.2 系统功能的确定 5 2.3 温度传感器 ds18b20 的介绍 5 2.3.1 ds18b20 的特点.5 2.3.2 ds18b20 的内部结构.6 2.3.3 ds18b20 的引脚介绍.8 2.4 人机交互与串口通信 9 第第 3 3 章章 硬件设计硬件设计10 3.1 系统结构框图 .10 3.2 人机交互与串口通信单元设计 .10 3.2.1 键盘输入电路 .10 3.2.2 led 七段数码动态显示电路12 3.2.3 串口通信电路 .14 3.3 控制执行单元设计 .15 第第 4 4 章章 软件设计软件设计17 4.1 设计思路、主程序流程图 .17 4.2 温度采集子程序 .18 4.3 数据转换子程序 .19 4.4 动态显示子程序 .20 4.5 温度控制执行子程序 .21 4.6 键盘输入中断服务子程序 .23 第第 5 5 章章 结结 论论26 参考文献参考文献.27 附录附录 1 1 程序代码程序代码 .28 附录附录 2 2 原理图原理图 42 单片机控制的温度控制系统 第 1 页第 1 页 摘 要 随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发 中首选的控制器。为了更好地推广单片机在实际生活和生产中的应用,本文介绍一种 应用 at89c52 单片机设计的热炉温度控制系统。 该热炉温度系统采用温度传感器ds18b20通过i2c总线通信来获得当前温度,并 与从3x4矩阵键盘输入的温度值进行验证,系统自动控制升温或降温的操作,将温 度稳定在所设定的温度值。 经实际制作表明该热炉温度控制系统具有体积小、操作灵活、可靠性高、实用、 成本低等特点,适合住宅和各类温室温度的控制,具有一定的实际意义。 关键词 单片机;键盘;稳定温度;显示器;温度控制 单片机控制的温度控制系统 第 2 页第 2 页 第 1 章 绪论 1.1 选题背景 在生产过程中,温度的控制是十分常见的。温度控制的传统方法是人工仪表控 制,其重复性差,工艺要求难以保障,工作强度大,存在种种弊端。因此,对传统 的温度控制方法进行改造,用微机取代常规控制已成必然,国内已相继出现各种以 微机为核心的温度控制系统。这种系统控制精度高、重复性好、自动化程度高。 在日常生活中,人们为了拥有一个更舒适的生活环境,往往需要室内拥有一个 合适的温度,而单片机的准确性高、价格低、功耗低等一系列优点,可结合升温和 降温设备,有效的应用到实际生活中。 单片机温度控制系统是单片机控制的一项简单应用。近几年来单片机因其独特的, 方便,快捷的优势被广泛的应用于各个领域之中。 1.2 选题简介 课题名称:热炉温度控制系统。 主要任务:将温度控制在设定的温度值,设定范围为2-98度,针对在生产和日 常生活中温度智能化控制系统的实现。 开发环境:本热炉温度控制系统的软件部分是通过keil进行编译,并由proteus 7 professional进行仿真测试。技术指标: 以at89c52系列单片机为核心部件 以数字电路和模拟电路为硬件基础 以汇编语言为软件实现语言 功能概述:在该热炉温度控制系统中,单片机作为核心部件进行检测控制,增 强了设计的通用性,适时性。在该热炉温度控制系统中温度检测采用 ds18b20 温度 传感器,它不仅具有较高的精度,而且适用电压宽。同时采用了 3x4 矩阵扫描键盘 输入,显示设备等外围扩展芯片。温度控制分为升温和降温控制,升温控制和降温 控制分别采用继电器来控制外部的升温和降温设备。软件部分采用流程图来表示, 单片机控制的温度控制系统 第 3 页第 3 页 对各个子程序进行说明,包括控制算法,偏差计算等。控制是否升温或降温。 单片机控制的温度控制系统 第 4 页第 4 页 第 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.0p0.7(3239 脚):p0 口是一个 8 位漏极开路型双向 i/o 端口。在访问 片外存储器时,它分时作低 8 位地址和 8 位双向数据总线用。在 eprom 编程时, 由 p0 输入指令字节,而在验证程序时,则输出指令字节。验证程序时,要求外接 上拉电阻。 p0 能以吸收电流的方式驱动 8 个 lsttl 负载。 p1.0p1.7(18 脚): p1 是一上带内部上拉电阻的 8 位双向 i/o 口。在 eprom 编程和验证程序时,由它输入低 8 位地址。 p1 能驱动 4 个 lsttl 负 载。 p2.0p2.7(2128 脚): p2 也是一上带内部上拉电阻的 8 位双向 i/o 口。在访 问外部存储器时,由它输出高 8 位地址。在对 eprom 编程和程序验证时,由它 输入高 8 位地址。 p2 可以驱动 4 个 lsttl 负载。 p3. 0 p3. 7 ( 1017 脚): p3 也是一上带内部上拉电阻的双向 i/o 口。 单片机控制的温度控制系统 第 5 页第 5 页 在 mcs-51 中,这 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 矩阵键盘输入。 由温度采集。 温度显示。 温度控制执行。 温度测量范围为 0-99 度,温度有效范围为 2-98 度,允许误差为 1 度。 2.3 温度传感器 ds18b20 的介绍 ds18b20 温度传感器是 dallas 公司生产的 1wire,即单总线器件,具有线 路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通 信线,可以挂很多这样的温度传感器,十分方便。 2.3.1 ds18b20 的特点 1.只要求一个端口即可实现通信。 2.在 ds18b20 中的每个器件上都有独一无二的序列号。 3.实际应用中不需要外部任何元器件即可实现测温。 4.测量温度范围55 到125。 单片机控制的温度控制系统 第 6 页第 6 页 5.数字温度计的分辨率用户可以从 9 位到 12 位选择。 6.内部有温度上、下限告警设置。 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 字节为配置寄存器,其内容用于确定温度值的数字转换分辨率, 64 位 rom 和 单线接口 存储器与控制逻辑 高 速 缓 存 温度传感器 高温触发器 th 低温触发器 tl 配置寄存器 8 位 crc 发生 器 图 2.1 ds18b20 内部结构框图 8 位检验 crc48 位序列号8 位工厂代码 (10h) msb lsb msb lsb msb lsb 单片机控制的温度控制系统 第 7 页第 7 页 ds18b20 工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位 的定义如图 2.4 所示,其中,低 5 位一直为 1;tm 是测试模式位,用于设置 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 分辨率的定义和规定 单片机控制的温度控制系统 第 8 页第 8 页 由表可见,ds18b20 温度转换的时间比较长,而且庙宇的分辨率越高,所需要 的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速暂存 ram 的第 6、7、8 字节保留未用,表现为全逻辑 1。第 9 字节是前面 8 字节的 crc 码,可用来检验数据,从而保证通信数据的正确性。 当 ds18b20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存 ram 的第 1、2 字节中。 单片机可以通过单线接口读出该数据。读数据时,低位在先,高位在后,数据 格式以 0.0625c/lsb 形式表示。 温度值格式如图 2.5 所示: 低字节 232221202-12-22-32-4 高字节 sssss262524 2.3.3 ds18b20 的引脚介绍 to92 封装的 ds18b20 的引脚排列见图 2.6,其引脚功能描述见表 2.2。 图 2.6(底视图) 图 2.4 配置寄存器 位定义 tm r1 r0 1 1 1 1 1 1 图 2.5 温度数值格式 单片机控制的温度控制系统 第 9 页第 9 页 表 2.2 ds18b20 详细引脚功能描述 序号名称引脚功能描述 1gnd地信号 2dq数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生 电源下,也可以向器件提供电源。 3vdd可选择的 vdd 引脚。当工作于寄生电源时,此引脚必须接 地。 2.4 人机交互与串口通信 该热炉温度控制系统由温度采集、3x4矩阵键盘输入、温度显示、温度控制执行 等四大模块组成。 温度采集:由温度传感器ds18b20完成,并通过串口通信技术与单片机进行 数据传输,使用单片机p3.7端口。 3x4矩阵键盘输入:采用外部中断0来判断是否拥有输入请求,并通过键盘 扫描技术来获取所输入的温度值和偏差温度值,输入更灵活、更方便,使 用单片机p0口和p3.2端口。 温度显示:通过4个7段led数码显示管显示当前温度值和设定的温度值,及 时反应当前温度的变化与设置温度的关系,使用单片机p1.0p1.5端口。 温度控制执行:系统根据当前温度与设置的温度自动进行相应的升温或降 温的操作,在系统自动进行升温或降温处理的同时显示相应的指示灯,让 使用者知道系统正在进行的操作,使用单片机p2.2p2.3端口。 单片机控制的温度控制系统 第 10 页第 10 页 第 3 章 硬件设计 3.1 系统结构框图 图 3.1 系统硬件总体框图 该系统由核心部件at89c52来处理从键盘输入电路和温度采集电路送入的数据, 并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操 作。 3.2 人机交互与串口通信单元设计 在该系统中,人机交互技术主要应用在恒定温度与偏差温度的设置,以及当前 温度与设置温度的显示;串口通信技术应用在对温度的采集。 3.2.1 键盘输入电路 在本系统中,采用外部中断0控制键盘输入请求,键盘输入主要采用3x4矩阵键 盘扫描技术。如图3.2所示,当按下“设置/切换”键时,进入恒定温度的设置,可从 键盘中自由输入09的数字,如果输入错误可按“删除(*)”键进行删除,如果要 设置偏差温度,再按一下“设置/切换”键,可进入偏差温度的设置,按“确定 at89c52 温度显示电路 温度控制电路 键盘输入电路 温度采集电路 单片机控制的温度控制系统 第 11 页第 11 页 (#)”键,保存设置并退出键盘输入,进入温度控制状态。 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端口,再通过软件控制按键是否释放。 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 判断键盘是否有键按下 at89c52 p0 口 单片机控制的温度控制系统 第 12 页第 12 页 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所示。 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 译码器) at89c52 p1.4 p1.5 单片机控制的温度控制系统 第 13 页第 13 页 表 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七段数码管的相引脚。 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 七段数码显示译码电路 单片机控制的温度控制系统 第 14 页第 14 页 表 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 温度控制及相应显示电路 第 17 页 第 4 章 软件设计 4.1 设计思路、主程序流程图 根据所学知识,实现本系统的软件部分将使用汇编语言,要配合硬件部分实现 输入一个需要恒定的温度值和偏差温度,与从温度传感器所获取的当前实际温度相 比较,并向温度控制执行电路发出升温或降温的命令,在这一过程中将随时显示当 前温度值和设置的温度值。其主要实现的部分包括:键盘输入、温度采集、数据转 换、动态显示、温度控制等。主程序流程图如图4.1所示。 单片机控制的温度控制系统 第 18 页第 18 页 图 4.1 主程序流程图 4.2 温度采集子程序 温度采集子程序主要负责驱动力外部的温度传感器ds18b20进行工作,通过串 口通信方式向ds18b20写入rom命令,并读取当前温度值,将读取的数据存放在 26h-2eh存储单元,其中26h单元存放温度值的低位,27h单元存放温度值的高位, 程序流程图如图4.2所示。 开始 系统初始化 发送温度读取指 令 读出温度值 数据转换 16 进制10 进制 温度控制执行 显示当前温度和 设置温度 是否有外部中 断 0 请求? 键盘输入中断服务子程序 结束 断点 y n 单片机控制的温度控制系统 第 19 页第 19 页 图 4.2 温度采集子程序流程图 4.3 数据转换子程序 数据转换子程序功能是将从温度采集子程序中采集的十六进制温度数据,转换 成十进制的数值并存储在指定的存储单元内。由于该恒温系统设计的温度检测有效 为0-99,所以数据转换原理为:将获取到的十六进制温度值除以十进制数10,所得 到的商为相应十进制数的十位,并存入31h单元,余数则为相应十进制数的个位, 并存入30h单元,其程序流程图如图4.3所示。 开始 ds18b20 复位 向 ds18b20 写入相 应的 rom 命令 读出温度值 并进行校验 结束 开始 合并温度值的高 位和低位存入 a a 除以 10 商送 31h 单元 余数送 30h 单 元 结束 单片机控制的温度控制系统 第 20 页第 20 页 图 4.3 数据转换流程图 4.4 动态显示子程序 在该恒温系统中使用了两个两位的led七段数码管来显示系统所采集的当前温 度值和设置的温度值,为了不占用更多的单片机端口,在针对显示电路的设计时采 用了动态显示的方案,而动态显示子程序的主要任务就是控制显示电路的扫描规律, 其程序流程图如图4.4所示。 单片机控制的温度控制系统 第 21 页第 21 页 图 4.4 动态显示子程序流程图 4.5 温度控制执行子程序 温度控制执行子程序的任务是检测由温度当前温度值是否在设置温度值的允许 范围内,若当前温度大于设置温度的允许范围,表明当前温度过高,立及向温度控 开始 当前温度高位送入 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 结束 单片机控制的温度控制系统 第 22 页第 22 页 制电路发出降温命令(p2.2 为高电平,p2.3 为低电平);若当前温度小于设置温度 的允许范围,表明当前温度过低,立及向温度控制电路发出升温命令(p2.2 为低电 平,p2.3 为高电平) ,程序流程图如图 4.5 所示。 图 4.5 温度控制执行子程序流程图 4.6 键盘输入中断服务子程序 在本系统中键盘输入请求使用 int0(外部中断 0)来实现,int0 采用电平触发 方式,当按下键盘中的“设置/切换”键时,int0(p3.2)端为低电平时,进入键盘 开始 当前温度加偏差温度 设置温度加偏差温度 判断温度是否过高 (设置温度加偏差温度 再减当前温度) 判断温度是否过低 (当前温度加偏差温度 再减设置温度) 初始温度控制端 p2.2 和 p2.3 置低电平 发出降温命令 p2.2 高电平 p2.3 低电平 发出升温命令 p2.2 低电平 p2.3 高电平 结束 y y n n 单片机控制的温度控制系统 第 23 页第 23 页 输入中断服务子程序,此时可以设置要恒定温度的,“删除(*)”键为删除键,点 击一次可删除输入的一位数据,在输入过程中通过 p0.7 端口判断每次按键后是否释 放,当按下“确定(#)”号键时,则保存设置并退出中断服务子程序,返回到主程 序,其程序流程图如图 4.6 所示。 单片机控制的温度控制系统 第 24 页第 24 页 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 键盘输入中断服务子程序流程 图 单片机控制的温度控制系统 第 25 页第 25 页 单片机控制的温度控制系统 第 26 页第 26 页 第 5 章 结 论 在设计该系统的过程中我充分应用了在课堂上所学的相关理论知识,当把理论 知识通过自己的双手变成实际后,使我对电路设计有了更多的了解,同时又产生了 更浓厚的兴趣。 本系统的核心技术表现在温度采集、3x4 矩阵键盘输入和动态显示部分,其中 温度采集的硬件部分使用温度传感器 ds18b20,通过软件控制与 ds18b20 的串口 通讯来进行温度采集;3x4 矩阵键盘输入采用键码的扫描来实现.。 为了实现这一系列功能我主动与指导老师交流,并且查阅了大量相关的书籍,在此 过程中进一步锻炼了自己思考问题与解决问题的能力,巩固并提高了自己的单片机、 数字电路、模拟电路等相关知识。 该系统实现的最终功能是控制外界温度,使温度恒定在一定的范围内,统所能 测量温度的范围在 0-99 度之间,能恒定的范围是在 1-98 度之间,所以该系统在日 常生活与生产中有较大的应用空间,特别是运用在养值业方面。而在一些特殊的生 产环境中,其需要恒温的范围远远超过了该系统,该恒温系统是不适用的,这也是 该系统有待完善的地方。 单片机控制的温度控制系统 第 27 页第 27 页 参考文献 1 刘高鏁编著.单片机实用技术.清华大学出版社; 2 樊明龙,任丽静编著.单片机原理与应用.化学工业出版社; 3 徐光翔编著.单片机原理接口及应用.南京大学出版社 4 杨文龙编著.单片机原理及应用.西安电子科技大学出版社 5 楼然苗,李光飞编著.51 系列单片机设计实例.北京航空航天大学出版社 单片机控制的温度控制系统 第 28 页第 28 页 附录 1 程序代码 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 ;温度数据处理,温度控制执行 单片机控制的温度控制系统 第 29 页第 29 页 acall show ;显示当前温度和设置温度 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 单片机控制的温度控制系统 第 30 页第 30 页 initds1820out:setbtempdin 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 单片机控制的温度控制系统 第 31 页第 31 页 nop writeds1820lop:clrtempdin 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 单片机控制的温度控制系统 第 32 页第 32 页 djnzr6, $ mova, #0beh lcall writeds1820; 写入 rom 命令 scratchpad movr6, #34h; delay 104us djnzr6, $ movr5, #09h movr0, #temphead mov b,#00h readtemp2:lcallreadds1820;开始读出温度 movr0, a incr0 readtemp21:lcall crc8cal djnzr5, readtemp2 mova, b jnzreadtempout 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 单片机控制的温度控制系统 第 33 页第 33 页 crc8loop2:rrca movb, a popacc 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 单片机控制的温度控制系统 第 34 页第 34 页 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 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 ;温度过低/升温处理 单片机控制的温度控制系统 第 35 页第 35 页 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 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 单片机控制的温度控制系统 第 36 页第 36 页 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 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 单片机控制的温度控制系统 第 37 页第 37 页 fh1:

温馨提示

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

评论

0/150

提交评论