1、4.5温度控制执行子程序 214.6键盘输入中断服务子程序 23第5章 结 论 26参考文献 27附录1 程序代码 28附录2 原理图 42摘 要随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。为了更好地推广单片机在实际生活和生产中的应用,本文介绍一种应用AT89C52单片机设计的热炉温度控制系统。该热炉温度系统采用温度传感器DS18B20通过I2C总线通信来获得当前温度,并与从3X4矩阵键盘输入的温度值进行验证,系统自动控制升温或降温的操作,将温度稳定在所设定的温度值。经实际制作表明该热炉温度控制系统具有体积小、操作灵活、可靠性高、实用、成本低等特点,适
2、合住宅和各类温室温度的控制,具有一定的实际意义。关键词 单片机;键盘;稳定温度;显示器;温度控制第1章 绪论1.1 选题背景 在生产过程中,温度的控制是十分常见的。温度控制的传统方法是人工仪表控制,其重复性差,工艺要求难以保障,工作强度大,存在种种弊端。因此,对传统的温度控制方法进行改造,用微机取代常规控制已成必然,国内已相继出现各种以微机为核心的温度控制系统。这种系统控制精度高、重复性好、自动化程度高。 在日常生活中,人们为了拥有一个更舒适的生活环境,往往需要室内拥有一个合适的温度,而单片机的准确性高、价格低、功耗低等一系列优点,可结合升温和降温设备,有效的应用到实际生活中。单片机温度控制系
3、统是单片机控制的一项简单应用。近几年来单片机因其独特的,方便,快捷的优势被广泛的应用于各个领域之中。1.2 选题简介课题名称:热炉温度控制系统。主要任务:将温度控制在设定的温度值,设定范围为2-98度,针对在生产和日常生活中温度智能化控制系统的实现。开发环境:本热炉温度控制系统的软件部分是通过KEIL进行编译,并由Proteus 7 Professional进行仿真测试。技术指标: 以AT89C52系列单片机为核心部件 以数字电路和模拟电路为硬件基础 以汇编语言为软件实现语言功能概述:在该热炉温度控制系统中,单片机作为核心部件进行检测控制,增强了设计的通用性,适时性。在该热炉温度控制系统中温度
4、检测采用DS18B20温度传感器,它不仅具有较高的精度,而且适用电压宽。同时采用了3x4矩阵扫描键盘输入,显示设备等外围扩展芯片。温度控制分为升温和降温控制,升温控制和降温控制分别采用继电器来控制外部的升温和降温设备。软件部分采用流程图来表示,对各个子程序进行说明,包括控制算法,偏差计算等。控制是否升温或降温。 第2章 系统总体设计及方案2.1单片机的介绍 随着大规模集成电路的出现及其发展,将计算机的CPU 、RAM 、 ROM 、定时/计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机 。2.1.1单片机的特点1具有优异的性能价格
5、比 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 能以吸收电流的方式
6、驱动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 口。 在 MCS-51 中,这 8 个引脚还用于专门的
7、第二功能。 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矩阵键盘输入。 由温度采集。 温度显示。 温度控
8、制执行。 温度测量范围为0-99度,温度有效范围为2-98度,允许误差为1度。2.3温度传感器DS18B20的介绍 DS18B20温度传感器是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的温度传感器,十分方便。2.3.1 DS18B20的特点1. 只要求一个端口即可实现通信。2. 在DS18B20中的每个器件上都有独一无二的序列号。3. 实际应用中不需要外部任何元器件即可实现测温。4. 测量温度范围55到125。5. 数字温度计的分辨率用户可以从9位到12位选择。6. 内部有温度上、下限告警设
9、置。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字节包含测得的温度
10、信息。第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图2.4所示,其中,低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时,该位被设置为0,用户不要去改动;R1和R0决定温度转换的精度位数,即用来设置分辨率,其定义方法见表2.1。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留CRC R1R0分辨率/位温度最大转换时间/ms993.75110187.51137
11、512750 由表可见,DS18B20温度转换的时间比较长,而且庙宇的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节是前面8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。 当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存RAM的第1、2字节中。 单片机可以通过单线接口读出该数据。读数据时,低位在先,高位在后,数据格式以0.0625C/LSB形式表示。温度值格式如图2.5所示:低字节232221202
12、-12-22-32-4高字节S2625242.3.3 DS18B20的引脚介绍TO92封装的DS18B20的引脚排列见图2.6,其引脚功能描述见表2.2。图2.6(底视图)表2.2 DS18B20详细引脚功能描述序号名称引脚功能描述GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。2.4人机交互与串口通信该热炉温度控制系统由温度采集、3x4矩阵键盘输入、温度显示、温度控制执行等四大模块组成。 温度采集:由温度传感器DS18B20完成,并通过串口通信技术与单片机进行数据传输,使用单
13、片机P3.7端口。 3x4矩阵键盘输入:采用外部中断0来判断是否拥有输入请求,并通过键盘扫描技术来获取所输入的温度值和偏差温度值,输入更灵活、更方便,使用单片机P0口和P3.2端口。 温度显示:通过4个7段LED数码显示管显示当前温度值和设定的温度值,及时反应当前温度的变化与设置温度的关系,使用单片机P1.0P1.5端口。 温度控制执行:系统根据当前温度与设置的温度自动进行相应的升温或降温的操作,在系统自动进行升温或降温处理的同时显示相应的指示灯,让使用者知道系统正在进行的操作,使用单片机P2.2P2.3端口。第3章 硬件设计3.1系统结构框图图3.1 系统硬件总体框图该系统由核心部件AT89
14、C52来处理从键盘输入电路和温度采集电路送入的数据,并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操作。3.2人机交互与串口通信单元设计在该系统中,人机交互技术主要应用在恒定温度与偏差温度的设置,以及当前温度与设置温度的显示;串口通信技术应用在对温度的采集。3.2.1 键盘输入电路在本系统中,采用外部中断0控制键盘输入请求,键盘输入主要采用3x4矩阵键盘扫描技术。如图3.2所示,当按下“设置/切换”键时,进入恒定温度的设置,可从键盘中自由输入09的数字,如果输入错误可按“删除(*)”键进行删除,如果要设置偏差温度,再按一下“设置/切换”键,可进入偏差温度的设置,按“确定
15、(#)”键,保存设置并退出键盘输入,进入温度控制状态。图3.2 键盘输入原理图为了避免从键盘输入的数据错误,该键盘输入电路还为判断按键是否释放的功能做了铺垫,如图3.3所示,该电路由3个与门构成,当有键按下时SA、SB、SC、SD端中将会有一个为低电平,此时与门的SS端将会输出低电平,同时控制了单片机的P0.7端口,再通过软件控制按键是否释放。图3.3 判断键盘是否有键按下3.2.2 LED七段数码动态显示电路在本系统中采用了LED七段数码动态显示电路来显示温度值,显示范围在0-99之间,该电路由显示、片选、译码三部分组成。 显示部分:由两个两位的LED七段共阴数码管构成,分别用来显示当前温度
16、和设置温度,如图3.4所示。图3.4 LED七段共阴数码管 片选部分:如图3.5所示,由一片2-4译码器(74LS139)构成,单片机的P1.4和P1.5输出两位片选信号到2-4译码器的A、B端口,进行译码后输出到LED七段数码管的片选端口,其译码功能如表3.1所示。图3.5 动态显示片选电路(2-4译码器)表3.1 74LS139功能表输入输出选通端地址输入端EABY0Y1Y2Y3 译码部分:该电路由LED七段数码管显示译码器(4511)来完成,如图3.6所示,单片机将要显示的十进制数据转换成8421BCD编码,对应的译码值如表3.2所示,再分别送到LED七段数码管显示译码器的A、B、C、D
17、引脚进行译码,最后输出到LED七段数码管的相引脚。图3.6 LED七段数码显示译码电路表3.2 4511译码表8421BCD码十进制数0000000100100011010040101501106011171000810013.2.3 串口通信电路为了使测得的温度更准确,在本系统中采用了温度传感器DS18B20来获取当前温度,而DS18B20是采用I2C总线进行通信的,如图3.7所示,单片机使用P3.7端口与DS18B20的数据通讯端口相连接,并通过软件实现P3.7控制DS18B20的读和写。图3.7 单片机与DS18B20的通信3.3控制执行单元设计该电路的主要任务是完成单片机所发出的升温或
18、降温操作,来控制外部的升温或降温设备。如图3.8所示,电路的GK1和GK2端分别与单片机的P2.2和P2.3端相连接,其工作原理如下:在通常情况下,GK1和GK2均为低电平,当单片机向温度控制执行电路发送降温命令时,GK1为高电平,GK2为低电平,使三极管Q1饱和导通,此时使继电器RL1闭合控制外部的降温设备进行工作,同时发光二极管D9将被点亮,提醒使用者温度过高正在进行降温操作。当单片机向温度控制执行电路发送升温命令时,GK1为高低平,GK2为高电平,使三极管Q2饱和导通,此时使继电器RL2闭合控制外部的升温设备进行工作,同时发光二极管D4将被点亮,提醒使用者温度过低正在进行升温操作。图3.
19、8温度控制及相应显示电路第4章 软件设计4.1设计思路、主程序流程图根据所学知识,实现本系统的软件部分将使用汇编语言,要配合硬件部分实现输入一个需要恒定的温度值和偏差温度,与从温度传感器所获取的当前实际温度相比较,并向温度控制执行电路发出升温或降温的命令,在这一过程中将随时显示当前温度值和设置的温度值。其主要实现的部分包括:键盘输入、温度采集、数据转换、动态显示、温度控制等。主程序流程图如图4.1所示。图4.1 主程序流程图4.2温度采集子程序温度采集子程序主要负责驱动力外部的温度传感器DS18B20进行工作,通过串口通信方式向DS18B20写入ROM命令,并读取当前温度值,将读取的数据存放在
20、26H-2EH存储单元,其中26H单元存放温度值的低位,27H单元存放温度值的高位,程序流程图如图4.2所示。图4.2 温度采集子程序流程图4.3数据转换子程序数据转换子程序功能是将从温度采集子程序中采集的十六进制温度数据,转换成十进制的数值并存储在指定的存储单元内。由于该恒温系统设计的温度检测有效为0-99,所以数据转换原理为:将获取到的十六进制温度值除以十进制数10,所得到的商为相应十进制数的十位,并存入31H单元,余数则为相应十进制数的个位,并存入30H单元,其程序流程图如图4.3所示。图4.3数据转换流程图4.4动态显示子程序在该恒温系统中使用了两个两位的LED七段数码管来显示系统所采
21、集的当前温度值和设置的温度值,为了不占用更多的单片机端口,在针对显示电路的设计时采用了动态显示的方案,而动态显示子程序的主要任务就是控制显示电路的扫描规律,其程序流程图如图4.4所示。图4.4 动态显示子程序流程图4.5温度控制执行子程序温度控制执行子程序的任务是检测由温度当前温度值是否在设置温度值的允许范围内,若当前温度大于设置温度的允许范围,表明当前温度过高,立及向温度控制电路发出降温命令(P2.2为高电平,P2.3为低电平);若当前温度小于设置温度的允许范围,表明当前温度过低,立及向温度控制电路发出升温命令(P2.2为低电平,P2.3为高电平),程序流程图如图4.5所示。图4.5 温度控
22、制执行子程序流程图4.6键盘输入中断服务子程序 在本系统中键盘输入请求使用INT0(外部中断0)来实现,INT0采用电平触发方式,当按下键盘中的“设置/切换”键时,INT0(P3.2)端为低电平时,进入键盘输入中断服务子程序,此时可以设置要恒定温度的,“删除(*)”键为删除键,点击一次可删除输入的一位数据,在输入过程中通过P0.7端口判断每次按键后是否释放,当按下“确定(#)”号键时,则保存设置并退出中断服务子程序,返回到主程序,其程序流程图如图4.6所示。第5章 结 论 在设计该系统的过程中我充分应用了在课堂上所学的相关理论知识,当把理论知识通过自己的双手变成实际后,使我对电路设计有了更多的
23、了解,同时又产生了更浓厚的兴趣。 本系统的核心技术表现在温度采集、3x4矩阵键盘输入和动态显示部分,其中温度采集的硬件部分使用温度传感器DS18B20,通过软件控制与DS18B20的串口通讯来进行温度采集;3x4矩阵键盘输入采用键码的扫描来实现.。为了实现这一系列功能我主动与指导老师交流,并且查阅了大量相关的书籍,在此过程中进一步锻炼了自己思考问题与解决问题的能力,巩固并提高了自己的单片机、数字电路、模拟电路等相关知识。 该系统实现的最终功能是控制外界温度,使温度恒定在一定的范围内,统所能测量温度的范围在0-99度之间,能恒定的范围是在1-98度之间,所以该系统在日常生活与生产中有较大的应用空
24、间,特别是运用在养值业方面。而在一些特殊的生产环境中,其需要恒温的范围远远超过了该系统,该恒温系统是不适用的,这也是该系统有待完善的地方。参考文献1 刘高鏁编著.单片机实用技术.清华大学出版社;2 樊明龙,任丽静编著.单片机原理与应用.化学工业出版社;3 徐光翔编著.单片机原理接口及应用.南京大学出版社4 杨文龙编著.单片机原理及应用.西安电子科技大学出版社 5 楼然苗,李光飞编著.51系列单片机设计实例.北京航空航天大学出版社 附录1 程序代码 ORG 0000H LJMP MAIN ORG 0003H ;外部中断INT0入口地址 LJMP SKEY ;转外部中断INT0 ORG 1000H
25、MAIN: CLR P2.2 ;初始控制端,温度过高/降温 CLR P2.3 ;温度过低/升温 TEMPDIN BIT P3.7 ;DS18B20 通信端口 TEMPL EQU 24H ;温度低位存储单元 TEMPH EQU 25H ;温度高位存储单元 TEMPHEAD EQU 26H ;DS18B20 9位数据存储单元(26H-2EH) SHOWGETL EQU 30H ;当前温度低位 SHOWGETH EQU 31H ;当前温度高位 SHOWSETL EQU 32H ;设置温度低位 SHOWSETH EQU 33H ;设置温度高位 TEMPCK EQU 34H ;偏差温度存储单元 MOV
26、TEMPCK,#03H ;设置系统允许的偏差温度 MOV SHOWGETL,#00H ;当前温度低位初值 MOV SHOWGETH,#00H ;当前温度高位初值 MOV SHOWSETL,#00H ;设置温度低位初值 MOV SHOWSETH,#00H ;设置温度高位初值LOOP: MOV IE,#00H ACALL READTEMP ;发送温度读取指令 ACALL READTEMP1 ;读出温度值子程序 ACALL DATAS ;数据转换(将16进制数据转换成10进制数据) ACALL SETOUT ;温度数据处理,温度控制执行 ACALL SHOW ;显示当前温度和设置温度 CLR IT0
27、 ;电平触发方式 SETB EA ;CUP开放中断 SETB EX0 ;允许外部中断0 AJMP LOOP;下面是主程序所用到的子程序 RESET DS18B20 复位INITDS1820:SETB TEMPDIN NOP CLR TEMPDIN MOV R6, #0A0H ; DELAY 480us DJNZ R6, $ MOV R6, #0A0H DJNZ R6, $ SETB TEMPDIN MOV R6, #SHOWSETL ; DELAY 70us DJNZ R6, $ MOV R6,#3CHLOOP1820: MOV C, TEMPDIN JC INITDS1820OUT DJNZ R6,LOOP1820 MOV R6, #064H ; DELAY 200us SJMP INITDS1820 RET INITDS1820OUT: SETB TEMPDIN 读DS18B20的程序, 从DS18B20中读出一个字节的数据READDS1820:MOV R7, #08H READDS1820LOOP:CLR TEMPDIN SETB TEMPDIN MOV R6, #07H ; DE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1