温度控制系统设计论文Word格式.docx
《温度控制系统设计论文Word格式.docx》由会员分享,可在线阅读,更多相关《温度控制系统设计论文Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
![温度控制系统设计论文Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/10/5659bfd6-ff46-491b-9707-c049e9a11637/5659bfd6-ff46-491b-9707-c049e9a116371.gif)
4.5温度控制执行子程序21
4.6键盘输入中断服务子程序23
第5章结论26
参考文献27
附录1程序代码28
附录2原理图42
摘要
随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。
为了更好地推广单片机在实际生活和生产中的应用,本文介绍一种应用AT89C52单片机设计的热炉温度控制系统。
该热炉温度系统采用温度传感器DS18B20通过I2C总线通信来获得当前温度,并与从3X4矩阵键盘输入的温度值进行验证,系统自动控制升温或降温的操作,将温度稳定在所设定的温度值。
经实际制作表明该热炉温度控制系统具有体积小、操作灵活、可靠性高、实用、成本低等特点,适合住宅和各类温室温度的控制,具有一定的实际意义。
关键词单片机;
键盘;
稳定温度;
显示器;
温度控制
第1章绪论
1.1选题背景
在生产过程中,温度的控制是十分常见的。
温度控制的传统方法是人工仪表控制,其重复性差,工艺要求难以保障,工作强度大,存在种种弊端。
因此,对传统的温度控制方法进行改造,用微机取代常规控制已成必然,国内已相继出现各种以微机为核心的温度控制系统。
这种系统控制精度高、重复性好、自动化程度高。
在日常生活中,人们为了拥有一个更舒适的生活环境,往往需要室内拥有一个合适的温度,而单片机的准确性高、价格低、功耗低等一系列优点,可结合升温和降温设备,有效的应用到实际生活中。
单片机温度控制系统是单片机控制的一项简单应用。
近几年来单片机因其独特的,方便,快捷的优势被广泛的应用于各个领域之中。
1.2选题简介
课题名称:
热炉温度控制系统。
主要任务:
将温度控制在设定的温度值,设定范围为2-98度,针对在生产和日常生活中温度智能化控制系统的实现。
开发环境:
本热炉温度控制系统的软件部分是通过KEIL进行编译,并由Proteus7Professional进行仿真测试。
技术指标:
◆以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的功能:
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-51中,这8个引脚还用于专门的第二功能。
P3能驱动4个LSTTL负载。
◆P3.0RXD(串行口输入)
◆P3.1TXD(串行口输出)
◆P3.2INT0(外部中断0输入)
◆P3.3INT1(外部中断1输入)
◆P3.4T0(定时器0的外部输入)
◆P3.5T1(定时器1的外部输入)
◆P3.6WR(片外数据存储器写选通)
◆P3.7RD(片外数据存储器读选通)
2.2系统功能的确定
一个控制系统是否能被大众所接受,在于该控制系统是否拥有人性化的操作功能。
为了使本次设计的热炉温度控制系统具有操作简单、灵活及高可靠性等特点,确定了该系统功能:
◆3x4矩阵键盘输入。
◆由温度采集。
◆温度显示。
◆温度控制执行。
◆温度测量范围为0-99度,温度有效范围为2-98度,允许误差为1度。
2.3温度传感器DS18B20的介绍
DS18B20温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的温度传感器,十分方便。
2.3.1DS18B20的特点
1.只要求一个端口即可实现通信。
2.在DS18B20中的每个器件上都有独一无二的序列号。
3.实际应用中不需要外部任何元器件即可实现测温。
4.测量温度范围-55到+125。
5.数字温度计的分辨率用户可以从9位到12位选择。
6.内部有温度上、下限告警设置。
2.3.2DS18B20的内部结构
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2.1所示。
64位ROM的位结构如图2.2所示。
开始8位是产品类型的编号;
接着是每个器件的唯一的序号,共有48位;
最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用单线进行通信的原因。
非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限数据。
图2.264位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
配置寄存器
保留
CRC
R1
R0
分辨率/位
温度最大
转换时间/ms
9
93.75
1
10
187.5
11
375
12
750
由表可见,DS18B20温度转换的时间比较长,而且庙宇的分辨率越高,所需要的温度数据转换时间就越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节是前面8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存RAM的第1、2字节中。
单片机可以通过单线接口读出该数据。
读数据时,低位在先,高位在后,数据格式以0.0625°
C/LSB形式表示。
温度值格式如图2.5所示:
低字节
23
22
21
20
2-1
2-2
2-3
2-4
高字节
S
26
25
24
2.3.3DS18B20的引脚介绍
TO-92封装的DS18B20的引脚排列见图2.6,其引脚功能描述见表2.2。
图2.6(底视图)
表2.2DS18B20详细引脚功能描述
序号
名称
引脚功能描述
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
2.4人机交互与串口通信
该热炉温度控制系统由温度采集、3x4矩阵键盘输入、温度显示、温度控制执行等四大模块组成。
◆温度采集:
由温度传感器DS18B20完成,并通过串口通信技术与单片机进行数据传输,使用单片机P3.7端口。
◆3x4矩阵键盘输入:
采用外部中断0来判断是否拥有输入请求,并通过键盘扫描技术来获取所输入的温度值和偏差温度值,输入更灵活、更方便,使用单片机P0口和P3.2端口。
◆温度显示:
通过4个7段LED数码显示管显示当前温度值和设定的温度值,及时反应当前温度的变化与设置温度的关系,使用单片机P1.0~P1.5端口。
◆温度控制执行:
系统根据当前温度与设置的温度自动进行相应的升温或降温的操作,在系统自动进行升温或降温处理的同时显示相应的指示灯,让使用者知道系统正在进行的操作,使用单片机P2.2~P2.3端口。
第3章硬件设计
3.1系统结构框图
图3.1系统硬件总体框图
该系统由核心部件AT89C52来处理从键盘输入电路和温度采集电路送入的数据,并通过温度显示电路进行温度显示,由温度控制电路来进行相应的升温或降温的操作。
3.2人机交互与串口通信单元设计
在该系统中,人机交互技术主要应用在恒定温度与偏差温度的设置,以及当前温度与设置温度的显示;
串口通信技术应用在对温度的采集。
3.2.1键盘输入电路
在本系统中,采用外部中断0控制键盘输入请求,键盘输入主要采用3x4矩阵键盘扫描技术。
如图3.2所示,当按下“设置/切换”键时,进入恒定温度的设置,可从键盘中自由输入0—9的数字,如果输入错误可按“删除(*)”键进行删除,如果要设置偏差温度,再按一下“设置/切换”键,可进入偏差温度的设置,按“确定(#)”键,保存设置并退出键盘输入,进入温度控制状态。
图3.2键盘输入原理图
为了避免从键盘输入的数据错误,该键盘输入电路还为判断按键是否释放的功能做了铺垫,如图3.3所示,该电路由3个与门构成,当有键按下时SA、SB、SC、SD端中将会有一个为低电平,此时与门的SS端将会输出低电平,同时控制了单片机的P0.7端口,再通过软件控制按键是否释放。
图3.3判断键盘是否有键按下
3.2.2LED七段数码动态显示电路
在本系统中采用了LED七段数码动态显示电路来显示温度值,显示范围在0-99之间,该电路由显示、片选、译码三部分组成。
◆显示部分:
由两个两位的LED七段共阴数码管构成,分别用来显示当前温度和设置温度,如图3.4所示。
图3.4LED七段共阴数码管
◆片选部分:
如图3.5所示,由一片2-4译码器(74LS139)构成,单片机的P1.4和P1.5输出两位片选信号到2-4译码器的A、B端口,进行译码后输出到LED七段数码管的片选端口,其译码功能如表3.1所示。
图3.5动态显示片选电路(2-4译码器)
表3.174LS139功能表
输入
输出
选通端
地址输入端
E
A
B
Y0
Y1
Y2
Y3
◆译码部分:
该电路由LED七段数码管显示译码器(4511)来完成,如图3.6所示,单片机将要显示的十进制数据转换成8421BCD编码,对应的译码值如表3.2所示,再分别送到LED七段数码管显示译码器的A、B、C、D引脚进行译码,最后输出到LED七段数码管的相引脚。
图3.6LED七段数码显示译码电路
表3.24511译码表
8421BCD码
十进制数
0000
0001
0010
0011
0100
4
0101
5
0110
6
0111
7
1000
8
1001
3.2.3串口通信电路
为了使测得的温度更准确,在本系统中采用了温度传感器DS18B20来获取当前温度,而DS18B20是采用I2C总线进行通信的,如图3.7所示,单片机使用P3.7端口与DS18B20的数据通讯端口相连接,并通过软件实现P3.7控制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将被点亮,提醒使用者温度过低正在进行升温操作。
图3.8温度控制及相应显示电路
第4章软件设计
4.1设计思路、主程序流程图
根据所学知识,实现本系统的软件部分将使用汇编语言,要配合硬件部分实现输入一个需要恒定的温度值和偏差温度,与从温度传感器所获取的当前实际温度相比较,并向温度控制执行电路发出升温或降温的命令,在这一过程中将随时显示当前温度值和设置的温度值。
其主要实现的部分包括:
键盘输入、温度采集、数据转换、动态显示、温度控制等。
主程序流程图如图4.1所示。
图4.1主程序流程图
4.2温度采集子程序
温度采集子程序主要负责驱动力外部的温度传感器DS18B20进行工作,通过串口通信方式向DS18B20写入ROM命令,并读取当前温度值,将读取的数据存放在26H-2EH存储单元,其中26H单元存放温度值的低位,27H单元存放温度值的高位,程序流程图如图4.2所示。
图4.2温度采集子程序流程图
4.3数据转换子程序
数据转换子程序功能是将从温度采集子程序中采集的十六进制温度数据,转换成十进制的数值并存储在指定的存储单元内。
由于该恒温系统设计的温度检测有效为0-99,所以数据转换原理为:
将获取到的十六进制温度值除以十进制数10,所得到的商为相应十进制数的十位,并存入31H单元,余数则为相应十进制数的个位,并存入30H单元,其程序流程图如图4.3所示。
图4.3数据转换流程图
4.4动态显示子程序
在该恒温系统中使用了两个两位的LED七段数码管来显示系统所采集的当前温度值和设置的温度值,为了不占用更多的单片机端口,在针对显示电路的设计时采用了动态显示的方案,而动态显示子程序的主要任务就是控制显示电路的扫描规律,其程序流程图如图4.4所示。
图4.4动态显示子程序流程图
4.5温度控制执行子程序
温度控制执行子程序的任务是检测由温度当前温度值是否在设置温度值的允许范围内,若当前温度大于设置温度的允许范围,表明当前温度过高,立及向温度控制电路发出降温命令(P2.2为高电平,P2.3为低电平);
若当前温度小于设置温度的允许范围,表明当前温度过低,立及向温度控制电路发出升温命令(P2.2为低电平,P2.3为高电平),程序流程图如图4.5所示。
图4.5温度控制执行子程序流程图
4.6键盘输入中断服务子程序
在本系统中键盘输入请求使用INT0(外部中断0)来实现,INT0采用电平触发方式,当按下键盘中的“设置/切换”键时,INT0(P3.2)端为低电平时,进入键盘输入中断服务子程序,此时可以设置要恒定温度的,“删除(*)”键为删除键,点击一次可删除输入的一位数据,在输入过程中通过P0.7端口判断每次按键后是否释放,当按下“确定(#)”号键时,则保存设置并退出中断服务子程序,返回到主程序,其程序流程图如图4.6所示。
第5章结论
在设计该系统的过程中我充分应用了在课堂上所学的相关理论知识,当把理论知识通过自己的双手变成实际后,使我对电路设计有了更多的了解,同时又产生了更浓厚的兴趣。
本系统的核心技术表现在温度采集、3x4矩阵键盘输入和动态显示部分,其中温度采集的硬件部分使用温度传感器DS18B20,通过软件控制与DS18B20的串口通讯来进行温度采集;
3x4矩阵键盘输入采用键码的扫描来实现.。
为了实现这一系列功能我主动与指导老师交流,并且查阅了大量相关的书籍,在此过程中进一步锻炼了自己思考问题与解决问题的能力,巩固并提高了自己的单片机、数字电路、模拟电路等相关知识。
该系统实现的最终功能是控制外界温度,使温度恒定在一定的范围内,统所能测量温度的范围在0-99度之间,能恒定的范围是在1-98度之间,所以该系统在日常生活与生产中有较大的应用空间,特别是运用在养值业方面。
而在一些特殊的生产环境中,其需要恒温的范围远远超过了该系统,该恒温系统是不适用的,这也是该系统有待完善的地方。
参考文献
[1]刘高鏁编著.《单片机实用技术》.清华大学出版社;
[2]樊明龙,任丽静编著.《单片机原理与应用》.化学工业出版社;
[3]徐光翔编著.《单片机原理·
接口及应用》.南京大学出版社
[4]杨文龙编著.《单片机原理及应用》.西安电子科技大学出版社
[5]楼然苗,李光飞编著.《51系列单片机设计实例》.北京航空航天大学出版社
附录1程序代码
ORG0000H
LJMPMAIN
ORG0003H;
外部中断INT0入口地址
LJMPSKEY;
转外部中断INT0
ORG1000H
MAIN:
CLRP2.2;
初始控制端,温度过高/降温
CLRP2.3;
温度过低/升温
TEMPDINBITP3.7;
DS18B20通信端口
TEMPLEQU24H;
温度低位存储单元
TEMPHEQU25H;
温度高位存储单元
TEMPHEADEQU26H;
DS18B209位数据存储单元(26H--2EH)
SHOWGETLEQU30H;
当前温度低位
SHOWGETHEQU31H;
当前温度高位
SHOWSETLEQU32H;
设置温度低位
SHOWSETHEQU33H;
设置温度高位
TEMPCKEQU34H;
偏差温度存储单元
MOVTEMPCK,#03H;
设置系统允许的偏差温度
MOVSHOWGETL,#00H;
当前温度低位初值
MOVSHOWGETH,#00H;
当前温度高位初值
MOVSHOWSETL,#00H;
设置温度低位初值
MOVSHOWSETH,#00H;
设置温度高位初值
LOOP:
MOVIE,#00H
ACALLREADTEMP;
发送温度读取指令
ACALLREADTEMP1;
读出温度值子程序
ACALLDATAS;
数据转换(将16进制数据转换成10进制数据)
ACALLSETOUT;
温度数据处理,温度控制执行
ACALLSHOW;
显示当前温度和设置温度
CLRIT0;
电平触发方式
SETBEA;
CUP开放中断
SETBEX0;
允许外部中断0
AJMPLOOP
;
下面是主程序所用到的子程序
RESETDS18B20复位
INITDS1820:
SETBTEMPDIN
NOP
CLRTEMPDIN
MOVR6,#0A0H;
DELAY480us
DJNZR6,$
MOVR6,#0A0H
DJNZR6,$
SETBTEMPDIN
MOVR6,#SHOWSETL;
DELAY70us
DJNZR6,$
MOVR6,#3CH
LOOP1820:
MOVC,TEMPDIN
JCINITDS1820OUT
DJNZR6,LOOP1820
MOVR6,#064H;
DELAY200us
SJMPINITDS1820
RET
INITDS1820OUT:
SETBTEMPDIN
读DS18B20的程序,从DS18B20中读出一个字节的数据
READDS1820:
MOVR7,#08H
READDS1820LOOP:
CLRTEMPDIN
SETBTEMPDIN
MOVR6,#07H;
DE