单片机温度检测与控制软件设计.docx
- 文档编号:10640971
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:43
- 大小:280.14KB
单片机温度检测与控制软件设计.docx
《单片机温度检测与控制软件设计.docx》由会员分享,可在线阅读,更多相关《单片机温度检测与控制软件设计.docx(43页珍藏版)》请在冰豆网上搜索。
单片机温度检测与控制软件设计
单片机温度检测与控制软件设计
专业名称:
应用电子技术教育
作者姓名:
刘永志
指导教师:
申立
论文答辩小组
组长:
申立
成员:
伍筱菁
贾红芳
论文成绩:
单片机空调控制器的软设件计
作者:
刘永志指导教师:
申立
摘要:
本设计是以AT89S52单片机为核心的温湿度控制系统的软件设计,是在现有的温度控制器中增加了湿度的控制。
该控制系统的温湿度信号都由温湿度芯片DHT11采集,并通过校准后以数字方式传送给单片机。
单片机通过对信号进行相应处理,再进而对电机的控制,最终实现温湿度控制的。
文中介绍了该控制系统的软件部分,包括:
温度采集程序、键盘处理程序、液晶管显示程序、温度处理程序和电机控制程序。
关键词:
AT89S52;控制器;温湿度;DHT11;软件设计
thesoftwaredesignoftheMCUairconditioningcontroller
LiuDexin
InformationScience&TechnologySchool,ZhanjiangNormalUniversity,Zhanjiang,524048
Abstract:
Thisisasoftwaredesignofthetemperatureandhumiditycontrolsystem,UsingthemicrocontrollerAT89C52asthecore,Whichaddstemperaturecontrollerasanewfunctionforthemoderncontroller.TemperatureandhumiditysignalscollectedbychipDHT11,whichcanusetodetectandcalibratethetemperatureandhumidityandthendigitallytransmittedtothemicrocontroller.MicrocontrollerAT89C52dealwiththesignalappropriatelyinordertoachievetemperatureandhumiditycontrol.Thispaperdescribesthesoftwarepartofthecontrolsystem,includingtemperatureacquisitionprogram,thekeyboardhandler,LCDcontroldisplayprogram,thetemperatureprocessingandmotorcontrolprocedures.
Keywords:
AT89C52,controller,temperatureandhumidity,DHT11,softwaredesign
1绪论
1.1选题的背景意义
随着人民生活水平的提高,以及近年空调市场价格战的不断加剧,空调已不再是奢侈品,正逐渐进入更多的寻常家庭,并呈现出多台消费的趋势。
调查结果表明,截至2009年底,53.4%的家庭已拥有空调,有20.9%的家庭已拥有两台以上的空调,空调正逐渐成为城市家庭抵挡炎热酷暑的必备耐用消费品。
所有被调查的家庭中约有15%的家庭在未来12个月有购买空调的意愿;其中目前没有空调的家庭中,有13.2%的家庭在未来12个月内可能购买空调。
由于空调控制器是空调的核心部件,决定了空调的主要性能指标和质量,所以本文提出了一种基于单片机的空调控制器的研究方案[1]。
1.2空调控制器的开发现状
第一代空调温控器主要是电气式产品,空调温控器的温度传感器采用双金属片或气动温包,通过“给定温度盘”调整预紧力来设定温度,风机三速开关和季节转换开关为拨档式机械开关。
这类空调温控器产品普遍存在温度设定分度值过粗、时间常数太大、机械开关易损坏等问题。
第二代空调温控器为电子式产品,温度传感器采用热敏电阻或热电阻,部分产品的温度设定和风速开关通过触摸键和液晶显示屏实现人机交互界面,冷热切换自动完成,运算放大电路和开关电路实现双位调节。
这类智能空调温控器产品改善了人机交互界面,解决了温度设定分度值过粗等问题,但仍存在控制精度不高、时间常数大、操作较复杂等问题。
目前国内外生产厂家正在研究开发第三代智能型室温空调温控器,应用新型控制模型和数控芯片实现智能控制。
现在已有国内厂家生产出了智能型室温空调温控器,并已应用于实际工程。
但是智能控制器的成本太高,不适合使用,所以本设计对成本高和智能程度低而设计的空调控制器[2]。
1.3研究内容
利用DHT11数字温湿度传感器进行温度、湿度的采集,通过通信程序把采集到的信息发送到AT89S52进行处理,AT89S52对信息处理后控制液晶显示器显示当前的信息和电机进行工作,使温湿度达到所需的要求。
1.4系统基本方案
根据空调控制器的技术指标。
该系统主要由控制部分和执行部分组成。
控制部分包括单片机最小系统模块、键盘模块、温湿度模快、显示模块、电源模块等。
整个系统实现对数据的采集运算,对温湿度参数的设置,对采集数据的显示和电机的控制。
整个系统图框如图1.4-1所示。
电动机
图1.4-1基本模块方案图
软件程序方案:
程序总体结构分为主程序和子程序,主程序控制了空调的主要流程,主程序再通过调用五个子程序实现具体的操作功能。
五个子程序分别是:
温度采集程序、键盘处理程序、液晶管显示程序、温度处理程序和电机控制程序。
程序的结构见图1.4-2
(1)键盘扫描电路及按键处理程序:
作用是实现键盘的输入和识别及进行相关的信号处理相关处理。
(2)温度采集程序:
单片与测温元件进行通信,接收测温元件送过来的数据并存储在寄存器中。
(3)液晶显示程序:
设置液晶显示的基本指令并向液晶显示器的传送数据,及时显示相关的信息。
(4)温度处理程序:
对采集到的温湿度与设置温湿度进行比较,根据结果作出相应的动作控制,并把采集的数据进行BCD码转换,最终转换成ASCII码储存在寄存器中。
(5)电机控制程序:
根据数据的处理结果对压缩机、抽风机的起动,风摆电的摆动进行控制。
主程序
LCD显示器显示程序
键盘扫描程序
键值处理程序
温度采集程序
温度芯片传数据程序
报警
与当前温度相比较程序
异常
继电器控制程序
图1.4-2 软件系统结构图
2系统软件设计
2.1编程语言
汇编语言是面向机器的程序设计语言。
在汇编语言中,用助记符(Memoni)代替操作码,用地址符号或标号代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件[3]。
汇编语言的特点:
1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
2.保持了机器语言的优点,具有直接和简捷的特点。
3.可有效地访问、控制计算机的各种硬件设备,如存储器、CPU、I/O端口等。
4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言[4]。
2.2主程序方案
本设计采用的单片机是AT89S52,AT89S52是一种低功耗/低电压、高性能的8位单片机。
片内带有一个4KB的Flash可编程、可擦除只读存储器(EPROM)。
是一种功能强、灵活性高,且价格合理的单片机。
以下是电路中引脚及其功能的简要说明。
表2.2各端口引脚在电路中的功能
端口引脚
功能
P1.0
温湿度值增加
P1.1
温湿度值减少
P1.2
摆风控制设置
P1.3
自动手动切换
P2.0
L297使能端
P2.1、P2.2
L297的时钟脉冲
P2.3
光藕起动
P2.7
LCD使能
P3.0
温度设置选择
P3.1
湿度设置选择
P3.2
模式选择
P3.4
温度报警
P3.5
湿度报警
主程序调用五个子程序,分别是温度采集程序、液晶显示设置程序、数据处理程序键盘处理程序、键盘处理程序、电机控制程序。
(1)键盘扫描电路及按键处理程序:
作用是实现键盘的输入和识别及进行相关的
信号处理相关处理。
(2)温度采集程序:
单片与测温元件进行通信,接收测温元件送过来的数据并存
储在寄存器中。
(3)液晶显示程序:
设置液晶显示的基本指令并向液晶显示器的传送数据,及时
显示相关的信息。
(4)数据处理程序:
对采集到的温湿度与设置温湿度进行比较,并把采集的数据
进行BCD码转换,最终转换成ASCII码,并送到液晶显示器去显示。
(5)电机控制程序:
根据数据的处理结果对压缩机、抽风机的起动,风摆电的摆
动进行控制。
2.3程序的流程
程序的执行过程:
先是自定义单片机各引脚功能,定义引脚后进入主程序操作。
主程序执行过程如下:
程序流程见图2.3—1
(1)对液晶显示器进行初始化置,写
入显示的基本指令。
(2)进行温湿度的采集,并把数据存
储在寄存器里。
(3)对按键进行处理,根据按键的输
入对设定值进行调整。
(4)对温湿度数据进行处理送到显
示器,并与设定值进行比较。
(5)根据比较结果对电机进行相关操作:
当
测量值比设定值小时压缩机不运转,当图2.3—1程序流程图
测量值比设定值大时压缩机起动。
2.4主要模块程序的介绍
程序的主要模块包括LCD液晶显示器设置模块、温度采集模块、数据处理模块、数据比较处理模块,各个模块都实现了一定的功能。
2.4.1液晶显示器设置程序
1602LCD采用标准的16脚(带背光)接口,各引脚接口说明如下表所示:
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
LCD1602的使用:
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
使用的指令如下表所示[5]:
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM)
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
液晶显示器设置模块:
对液晶显示器进行初始化设置、自定义字符。
流程图如
图2.4.1-1
液晶显示器指令
写入指令
延时指令
自定义字符指令
代码表
写入指令
字符显示位置指令
写入指令
图2.4.1-1
2.4.2温湿度检测程序
DHT11与单片机通信过程:
主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。
DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高[6]。
主机把总线拉低
温湿度检测程序模块:
实现DHT11与单片机间的通信,把检测到的数据通过单总线传送给单片机。
流程图如图2.4.2-1
检测是否响应
返回主程序
没
有
温湿度数据接收
图2.4.2-1
2.4.3数据处理程序
数据处理程序模块:
把接收到的数据通过运算转换成BCD码和ASCII码,然后送给液晶显示器显示。
流程图如图2.4.3—1
加30H送LCD显示
余数送TEMPLC
把接收数据除以10
商送TEMPHC
加30H然后送LCD
图2.4.3—1
2.4.4数据比较程序
压缩机、抽风机的运行情况是根据数据的比较结果决定的。
具体的情况:
当实际温度或湿度高于设定值时,单片机发出高电平给P2.3脚,使光电耦合器通电从而控制继电器吸合,压缩机、抽风机、轴芯机开始工作,给P3.4或P3.5一个低电平,指示是温度或湿度超值。
如图2.4.4—1
图2.4.4—1继电器控制电路
摆风电机是否运行受用户预先设定决定。
电路如图2.4.4—2,L297的特性是只需要时钟、方向和模式输入信号。
相位是由内部产生的,因此可减轻计算机(或单片机)和程序设计的负担。
当用户设定为摆风状态时,单片机给一个高电平给L297使能脚10脚,同时发出一个5HZ的脉冲信号给L297的18脚,L297开始给一个同步信号给L298,L298再控制摆风的同步电机运转。
图2.4.4—2
数值比较及电机控制程序,流程图如图2.4.4—3
电机不起动并返回主程序
检测数据与设定值比
小
电机起动并返回主程序
大
图2.4.4—3
2.4.5按键处理程序
键盘采用的是独立键盘。
该键盘的接法特点:
是按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态,而且编程也变得较为简单些,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大,且电路结构显得繁杂。
故这种形式适用于按键数量较少的场合[7]。
按键与单片机对应引脚见表2.4.5—1
单片机引脚
按键
功能
P1.0
K4
温湿度值增加
P1.1
K5
温湿度值减少
P1.2
K6
摆风控制
P3.0
K1
温度设置选择
P3.1
K2
湿度设置选择
P3.2
K3
模式选择
按键扫描方式是程序控制扫描。
该扫描方式是在CPU工作空余,调用键盘扫描子程序,响应键输入信号[8]。
按键在电路中的连接方法如图2.4.5—2
图2.4.5—2
按键处理过程:
按键处理程序对按键K1进行查询,发现K1闭合则进入K4、K5的温度值设置(K4闭合温度设定值增加,K5闭合温度设定值减小)。
K1不闭合则对K2进行检测,发现K2闭合则进入K4、K5的湿度值设置(K4闭合湿度设定值增加,K5闭合湿度设定值减小)。
K2不闭合则对K3进行检测,发现K3闭合则进入K4、K5的摆风电机设置(K4调节左右摆风的方向,K5高节上下摆风的方向)。
K3不闭合则跳出到主程序。
其流程图见图2.4.5—3
检测K3模式选择(默认是温度控制)
检测K7:
自动与手机切换(默认是自动模式)
否
检测K1是否按下
是
K4温度比较值加、
K5温度比较值减
把比较值进行ACSII
转换,送到LCD显示
否
检测K2是否按下
是
K4湿度比较值加、
K5湿度比较值减
把比较值进行ACSII
转换,送到LCD显示
否
检测K3是否按下
是
`
K6控制左右摆风
K7控制上下摆风
返回主程
图2.4.5—3
3系统的调试
3.1程序调试
程序的调试软件用Keil,该软件集编辑、编译、仿真于一体,支持汇编、PL/M语言和C语言的程序设计,界面友好。
内嵌的仿真调查试软件右以让用户采用模拟仿真和实时在线仿真两种对目标系统进行开发。
软件仿真时,可以模拟单位片机I/O口、定时器、中断外,甚至可以仿真单片机的串行通信[9]。
Keil软件的使用:
在软件中创建工程并把程序写进去,然后按调试按钮。
如果程序语法没出现错误的时会在软件状态栏出现0ERROR,如下图
如果程序有语法错误,就会在下栏窗口显示在那一行出错。
如下图
利用该软件可以快速查找语法错误的地方,节省程序的开发时间。
同时生成的可执行文件可以直接加到Proteus进行联调。
3.2硬件与软件连调
硬件的仿真软件使用Proteus,该软件能够很好地解决单片机的及其围电路的设计和协同仿真问题,可以在没有单片机实际硬件的条件下,利用个人计算机实现单片机软件和硬件同步仿真,仿真结果可以直接应用于真实的设计,极大地提高了单片机的应用系统设计效率,同时也使单片机的开发过程变得容易简单[10]。
软件Proteus的使用方法,从库里调出元器件画电路图,再把编译生成的可执行文件加到单片机里就可以进行模拟仿真。
由于该软件中也有些新出的元件没法找到的,比如DHT11、LCD1602,但我们还是可以对显示、按键、电机控制程序模块进行仿真。
在仿真过程由于LM013L和LCD1602的使用方法一样,所以仿真过程我们使用了LM016L来代替。
下面是仿真图,图3.2—1为显示部分,图3.2—2为指示灯与电机控制部分。
图3.2—1
图3.2—2
4总结
通过3个多月的资料收集整理,程序编制、修改、运行,论文编写等一系列的步骤,使我熟悉了Keil和Proteus软件的操作使用,对单片机编程也有了更深刻的认识和理解。
另外,对空调控制器的控制的研究有了更深的认识。
当然我也遇到了很多困难,以前对单片机了解得不够深入,并且从没真正独立编写过单片机的程序。
由于自己做的主要是这块,便去图书馆借了《手把手教你学单片机》这本书进行学习,这本书在仿真软件的使用和编程过程等方面的详细介绍使我进步很多,期间申老师也给了我很多的指导。
毕业设计期间指导老师给了我很大的帮助,刚开始时思路不清晰,老师在架构上给了我很多宝贵意见;编程期间,遇到了一些实际问题,比如,数据处理程序、摆风电机的程序编程思路不够明确,在老师指点和帮助下都一一解决,使自己学到了更多新的知识和经验。
这一点我也特别谢谢申老师,这样才能真正的提高自己。
设计结果达到了预期要求,本设计中以温湿度采集及控制过程设计为总目标,以AT89S52单片机为控制中心,辅助设计有温湿度采集模块、液晶显示模块、键盘查询模块、电机控制模块。
整个设计实现了温湿度的采集和显示,同时还能把实际检测到的温度值与设定值进行比较:
当实际温度或湿度超过了设定值时给光电藕合器低电平,启动压缩机、抽风机、轴心电机,同时送使能电压和脉冲给L297,控制摆风电机运动;当实际温湿度低于设定值时给光电藕合器高电平,压缩机等不通电。
但是该设计还存在很多的不足之处,比如设定的比较值不能进行存储,每次启动时比较值都恢复为系统的设定值,要想改变调节的温湿值必须重新手动调节。
通过本次毕业设计,很好的提高了我搜集、查找资料的水平;锻炼了我思考、分析和独立解决问题的能力;增强了我迎难而上的决心。
也为我今后的工作提供了一个很好的锻炼机会。
同时进一步层次了解单片机的工作原理,内部结构和工作状态,认识到单片机的接口技术,中断技术,时钟方式和控制方式以及温度控制的原理和意义,这样才能更好的利用单片机来做更有效和实用的设计。
致谢
在这里,我衷心感谢我的导师申立老师在百忙之中抽出时间指导我的设计,拓展我的思路,并且督促和鼓励我把毕业设计向更高要求的方向发展。
我还要感谢我的搭档,因为在编程期间许多想法都是由他启发出来,而且在做电路板过程为了让程序简化,作了不少的修改。
此外,还要感谢身边的同学给我帮助和支持,给我的大学的学习生活划上了一个完美的句号。
参考文献:
[1]刘永好.电子产品的市场调查[J].电子世界.2010,27:
23—27.
[2]王羽佳.空调的发展状况[J].电子世界是.2009,42:
34——40
[3]王爽.汇编语言[M].第二版.北京:
清华大学出版社.2008:
2-3.
[4]郑初华.汇编语言、微机原理及接口[M].第三版.北京:
电子工业出版社.2010.6:
10
[5]王守中.51单片机入门与典型实例[M].LCD模块及其应用.第一版.人民邮电出版社.2007,
8:
166-167.
[6]王春生.DHT11说明书[DB].2010,10:
[7]张齐、朱宁西.单片机应用系统设计技术[M].单片机系统中的键盘接口技术.第二版.
北京:
电子工业出版社.2009:
249-250.
[8]刘建清.从零开始学单片机技术[M].键盘接口.第一版.北京:
国防工业出版社.2006,
8:
251-252.
[9]徐爱钧.单片机原理实用教程[M].Proteus快速入门.第一版.北京:
电子工业出版社,
2009:
15.
[10]周兴华.手把手教你学单片机[M].实验设备及器材使用介绍.第二版.北京:
北京航空
航天大学出版社,2007:
3.
附录:
附录A:
硬件仿真图
附录A:
源程序
―――――――――――――
定义变量区
―――――――――――――
FLAGEQU30H
U8comdataEQU31H
U8T_data_HEQU32H
U8T_data_LEQU33H
U8RH_data_HEQU34H
U8RH_data_LEQU35H
U8checkdataEQU36H
U8tempEQU37H
tempEQU38H
TEMP_THEQU27H
TEMP_TLEQU28H
TEMPHCEQU29H
TEMPLCEQU2AH
XEQU2FH
RSEQUP1.6
RWEQUP1.7
EEQUP2.7
K1BITP3.0
K2BITP3.1
K3BITP3.2
K4BITP1.0
K6BITP1.2
K7BITP1.3
―
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 温度 检测 控制 软件设计