单片机控制的热炉温度控制系统

上传人:沈*** 文档编号:41338174 上传时间:2021-11-19 格式:DOC 页数:45 大小:892.01KB
返回 下载 相关 举报
单片机控制的热炉温度控制系统_第1页
第1页 / 共45页
单片机控制的热炉温度控制系统_第2页
第2页 / 共45页
单片机控制的热炉温度控制系统_第3页
第3页 / 共45页
点击查看更多>>
资源描述
第 17 页单片机控制的热炉温度控制系统毕业设计说明书(论文)设计(论文)题目: 单片机控制的热炉温度控制系统 专 业: 电子信息工程技术 班 级: xxx 学 号: xxx 姓 名: xxx 指导教师: xxx xx 年 x 月 x 日 单片机控制的温度控制系统目目 录录摘摘 要要.1第第 1 1 章章 绪论绪论.21.1 选题背景 .21.2 选题简介 .2第第 2 2 章章 系统总体设计及方案系统总体设计及方案.42.1 单片机的介绍 .42.1.1 单片机的特点.42.1.2 单片机的基本组成 .42.2 系统功能的确定 .52.3 温度传感器 DS18B20 的介绍 .52.3.1 DS18B20 的特点.52.3.2 DS18B20 的内部结构.62.3.3 DS18B20 的引脚介绍.82.4 人机交互与串口通信 .9第第 3 3 章章 硬件设计硬件设计.103.1 系统结构框图 .103.2 人机交互与串口通信单元设计 .103.2.1 键盘输入电路 .103.2.2 LED 七段数码动态显示电路.123.2.3 串口通信电路 .143.3 控制执行单元设计 .15第第 4 4 章章 软件设计软件设计.174.1 设计思路、主程序流程图 .174.2 温度采集子程序 .184.3 数据转换子程序 .194.4 动态显示子程序 .204.5 温度控制执行子程序 .214.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温度 MSBTH 用户字节1TL 用户字节 2配置寄存器保留保留保留CRC R1R0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750TH 用户字节11TL 用户字节2E2PROM图 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高字节SSSSS2625242.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 页(#)”键,保存设置并退出键盘输入,进入温度控制状态。1234567890#123ABCDSASBSCSDS1S2S3S1S2S3SASBSCSDR114.7kR124.7kR134.7kR144.7k+5SSINT0R104.7kD1LED-REDD2LED-REDR16300R17300LED_ALED_B设置温度偏差温度设置/切换删除确定图 3.2 键盘输入原理图为了避免从键盘输入的数据错误,该键盘输入电路还为判断按键是否释放的功能做了铺垫,如图3.3所示,该电路由3个与门构成,当有键按下时SA、SB、SC、SD端中将会有一个为低电平,此时与门的SS端将会输出低电平,同时控制了单片机的P0.7端口,再通过软件控制按键是否释放。123U7:A74LS08456U7:B74LS089108U7:C74LS08SASBSCSDSS图 3.3 判断键盘是否有键按下AT89C52P0 口单片机控制的温度控制系统第 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所示。A2Y04B3Y15Y26E1Y37U3:A74LS139KAKBL8L9L10L11图 3.5 动态显示片选电路(2-4 译码器)AT89C52P1.4P1.5单片机控制的温度控制系统第 13 页第 13 页表 3.1 74LS139 功能表输入选通端地址输入端输出EABY0Y1Y2Y3100000011010110111110111110111110 译码部分:该电路由LED七段数码管显示译码器(4511)来完成,如图3.6所示,单片机将要显示的十进制数据转换成8421BCD编码,对应的译码值如表3.2所示,再分别送到LED七段数码管显示译码器的A、B、C、D引脚进行译码,最后输出到LED七段数码管的相引脚。L1L3L2L4L5L6L7R11kR21kR31kR41kR51kR61kR71k+5A7B1C2D6LT3BI4LE/STB5QA13QB12QC11QD10QE9QF15QG14U64511图 3.6 LED 七段数码显示译码电路单片机控制的温度控制系统第 14 页第 14 页表 3.2 4511 译码表8421BCD 码十进制数000000001100102001130100401015011060111710008100193.2.3 串口通信电路为了使测得的温度更准确,在本系统中采用了温度传感器DS18B20来获取当前温度,而DS18B20是采用I2C总线进行通信的,如图3.7所示,单片机使用P3.7端口与DS18B20的数据通讯端口相连接,并通过软件实现P3.7控制DS18B20的读和写。单片机控制的温度控制系统第 15 页第 15 页+532.0DQ2VCC3GND1U8DS18B20图 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将被点亮,提醒使用者温度过低正在进行升温操作。AT89C52P3.7单片机控制的温度控制系统第 16 页第 16 页+5GK1GK2D9LED-RED温度过低温度过高RL1G2RL-1AB-DC5Q1MPS6514R8300Q2MPS6514RL2G2RL-1AB-DC5D4LED-BIRGR9300图 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 请求?键盘输入中断服务子程序结束断点YN单片机控制的温度控制系统第 19 页第 19 页图 4.2 温度采集子程序流程图4.3 数据转换子程序数据转换子程序功能是将从温度采集子程序中采集的十六进制温度数据,转换成十进制的数值并存储在指定的存储单元内。由于该恒温系统设计的温度检测有效为0-99,所以数据转换原理为:将获取到的十六进制温度值除以十进制数10,所得到的商为相应十进制数的十位,并存入31H单元,余数则为相应十进制数的个位,并存入30H单元,其程序流程图如图4.3所示。开始DS18B20 复位向 DS18B20 写入相应的 ROM 命令读出温度值并进行校验结束开始合并温度值的高位和低位存入 AA 除以 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 高电平结束YYNN单片机控制的温度控制系统第 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=低电平?按键是否释放?设置切换YNYYNNYYNNYNYNYNYNYN图 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 1000HMAIN: 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:SETBTEMPDINNOPNOPCLRTEMPDINMOVR6, #0A0H; DELAY 480usDJNZR6, $ MOVR6, #0A0H DJNZR6, $SETBTEMPDINMOVR6, #SHOWSETL; DELAY 70usDJNZR6, $ MOV R6,#3CHLOOP1820: MOVC, TEMPDINJC INITDS1820OUT DJNZ R6,LOOP1820 MOV R6, #064H; DELAY 200usDJNZR6, $SJMPINITDS1820RET单片机控制的温度控制系统第 30 页第 30 页INITDS1820OUT:SETBTEMPDINRET;-;读 DS18B20 的程序, 从 DS18B20 中读出一个字节的数据READDS1820:MOVR7, #08HSETBTEMPDINNOPNOPREADDS1820LOOP:CLRTEMPDINNOPNOPNOPSETB TEMPDINMOV R6, #07H; DELAY 15us DJNZ R6, $ MOV C, TEMPDINMOVR6, #3CH; DELAY 120usDJNZ R6, $RRC A SETB TEMPDINDJNZ R7, READDS1820LOOPMOVR6, #3CH; DELAY 120usDJNZR6, $RET;-; 写 DS18B20 的子程序, 向 DS18B20 中写一个字节的数据WRITEDS1820: MOVR7, #08HSETBTEMPDINNOP单片机控制的温度控制系统第 31 页第 31 页NOPWRITEDS1820LOP:CLRTEMPDINMOV R6, #07H; DELAY 15us DJNZ R6, $ RRC A MOVTEMPDIN, C MOVR6, #34H; DELAY 104us DJNZR6, $SETBTEMPDIN DJNZ R7, WRITEDS1820LOPRET;-; 向 DS18B20 写入相应的 ROM 命令READTEMP:LCALL INITDS1820MOVA, #0CCHLCALL WRITEDS1820; 写入 ROM 命令 SKIP ROMMOVR6, #34H; DELAY 104usDJNZR6, $MOVA, #44HLCALL WRITEDS1820; 写入 ROM 命令 START CONVERSIONMOVR6, #34H; DELAY 104usDJNZR6, $RET;-;读出温度值子程序READTEMP1:LCALLINITDS1820MOVA, #0CCHLCALL WRITEDS1820; 写入 ROM 命令 SKIP ROMMOVR6, #34H; DELAY 104us单片机控制的温度控制系统第 32 页第 32 页DJNZR6, $MOVA, #0BEHLCALL WRITEDS1820; 写入 ROM 命令 SCRATCHPADMOVR6, #34H; DELAY 104usDJNZR6, $MOVR5, #09HMOVR0, #TEMPHEAD MOV B,#00HREADTEMP2:LCALLREADDS1820;开始读出温度MOVR0, AINCR0READTEMP21:LCALL CRC8CAL DJNZR5, READTEMP2MOVA, BJNZREADTEMPOUTMOVA, TEMPHEAD + 0MOVTEMPL, AMOVA, TEMPHEAD + 1MOVTEMPH, AREADTEMPOUT:RET;-;DS18B20 CRC-8 校验程序CRC8CAL:PUSHACCMOVR7, #08HCRC8LOOP1:XRLA, BRRCAMOVA, BJNCCRC8LOOP2XRLA, #18H单片机控制的温度控制系统第 33 页第 33 页CRC8LOOP2:RRCAMOVB, APOPACCRR APUSHACCDJNZR7, CRC8LOOP1POPACCRET;-;数据转换(将 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 51HSSZ_5: MOV A,SHOWSETL ;设置偏差温度,设置温度+TEMPCK ADD A,TEMPCK MOV 52H,A MOV 53H,SHOWSETH SUBB A,#0AH JC SD1 MOV 52H,A INC 53HSD1: 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 OVERJIANG: SETB P2.2 ;温度过高/降温处理 CLR P2.3 ;温度过低/升温 AJMP OVERSHENG: 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 HS1LS2: 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 HS1LS3: 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 HS1HS1: JB ACC.3,HS2 MOV A,#00H ADD A,40H AJMP KSOKHS2: JB ACC.4,HS3 MOV A,#03H ADD A,40H AJMP KSOKHS3: JB ACC.5,HS4 MOV A,#06H ADD A,40H AJMP KSOKHS4: JB ACC.6,FH1 MOV A,#09H ADD A,40H AJMP KSOK单片机控制的温度控制系统第 37 页第 37 页FH1: ACALL SHOW1 MOV R1,40H CJNE R1,#01H,FH2 AJMP LS2FH2: CJNE R1,#02H,FH3 AJMP LS3FH3: AJMP LS1KSOK: CJNE A,#0AH,OK1 ;退格键 CJNE R0,#0FFH,SS1 MOV SHOWSETL,SHOWSETH MOV SHOWSETH,#00H AJMP ONSKEYSS1: ANL TEMPCK,#0F0H MOV A,TEMPCK SWAP A MOV TEMPCK,A AJMP ONSKEYOK1: CJNE A,#0BH,OK2 ;0 键 MOV A,#00H AJMP OK3OK2: CJNE A,#0CH,OK3 ;确认键 AJMP EXXOK3: CJNE R0,#0FFH,SS2 MOV SHOWSETH,SHOWSETL MOV SHOWSETL,A AJMP ONSKEYSS2: MOV R1,A ANL TEMPCK,#0FH MOV A,TEMPCK单片机控制的温度控制系统第 38 页第 38 页 SWAP A MOV TEMPCK,A MOV A,R1 ORL TEMPCK,AONSKEY: JNB P0.7,$ ;判断是否释放按键 ACALL DELAY1 ACALL DELAY1 AJMP LS1EXX: 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单片机控制的温度控制系统第 39 页第 39 页 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 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单片机控制的温度控制系统第 40 页第 40 页 SETB P2.1 AJMP SHOW_OVERSHOW_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.1SHOW_OVER:RET;-;延时 10ms 用于键盘输入子程序(防抖动)DELAY1: MOV R5,#10 DE1:MOV R6,#250 DE2:NOP NOP DJNZ R6,DE2 DJNZ R5,DE1 RET;-;延时 1ms 用于显示子程序DELAY2: MOV R5,#1 D1:MOV R6,#250单片机控制的温度控制系统第 41 页第 41 页 D2:NOP NOP DJNZ R6,D2 DJNZ R5,D1 RET END单片机控制的温度控制系统第 42 页第 42 页附录 2 原理图 第 17 页
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!