室内温度自动调节控制系统课程设计.docx
- 文档编号:29128969
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:27
- 大小:803.66KB
室内温度自动调节控制系统课程设计.docx
《室内温度自动调节控制系统课程设计.docx》由会员分享,可在线阅读,更多相关《室内温度自动调节控制系统课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
室内温度自动调节控制系统课程设计
室内温度自动调节控制系统
摘要
在人们日常生产及生活过程中,经常要用到温度的检测和控制。
随着微型计算机和传感器技术的迅速发展,自动检测领域发生了巨大变化,室内温度自动检测控制方面的研究有了很大进展。
同时现代电子产品性能进一步提高,产品更新换代的节奏越来越快。
本次课程设计是基于STC89C52单片机基础板所做的温度检测调节系统,不仅对于学习单片机技术等专业知识有实际意义,而且还可以增强动手能力。
这次设计的系统,硬件电路主要包括单片机最小系统电路,温度采集电路,显示电路,语音播报电路,按键电路,继电器电路等。
软件程序主要包括主程序,读出温度子程序,计算温度子程序,显示温度刷新子程序,语音播报程序等。
我们利用DS18B20温度传感器采集温度通过STC89C5单片机系统在应用板上利用LCD1602液晶显示屏显示实时测得的温度,通过程序进行语音播报;当温度超过设定的上限时,继电器闭合,并驱动动机工作,以实现降温。
经过调试,结果显示LCD屏准确显示了室温,并能进行语音播报。
当温度超过设定上限时,继电器闭合,风扇工作,开始降温;实现了系统设计要求的功能。
关键词:
室内温度,自动控制,STC89C52单片机,语音播报。
0前言
在信息高速发展的今天,科学技术日新月异,科技的进步带来了测量技术的发展,现代控制设备发生了翻天覆地的变化。
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中室内温度检测就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
温度是一个永恒的话题和人们生活环境有着密切关系的物理量,是国际单位制的七个基本单位之一,作为各种信息的感知、采集、转换的功能器件温度传感器的作用日显突出,温度的检测与控制是日常生活中比较典型的应用。
如在日常生活中测量并记录室内的温度,可以了解室内温度变化情况。
而我们所要设计的系统正是进行温度的检测,并实现自动控制室温。
1总体方案设计
1.1设计方案论证
针对本课题的设计任务,进行分析得到:
本次设计用温度传感器进行温度的测量,转化了的温度信号由传感器直接得到了数字信号。
该数字温度显示电路的设计,在总体上大致可分为以下几个部分组成:
1.单片机控制电路;2.温度传感器;3.LCD显示电路。
方案一
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案二
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,DS18B20为常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
所以采用温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
本文设计的室温自动控制系统原理框图如图1所示。
图1系统原理框图
1.2主控制器
控制器芯片种类很多,有凌阳公司的16位单片机,也有51系列的单片机。
方案一:
选用AT89C51,该芯片能使用C语言进行程序的编写,方便阅读。
但是,其集成程度低,功能单一,需要使用到其它功能时,只能通过扩展外电路来实现,使得整个电路复杂,成本高,稳定性低。
同时,I/O口输出功率小,一般器件都需要加驱动才能够正常使用。
方案二:
STC89C52RC是微处理器低功耗,超低价高速(0-90M),高可靠5V工作电压单片机,使产品更小,因为本系统要求的性能不是太高,而且处于模拟阶段,利用单片机芯片就可以控制。
其中单片机的更轻,功耗更低,如果相关新增功能没有用到,则不需看相应部分。
用STC提供的STC-ISP.exe工具可以将原有的代码下载进STC相关的单片机即可,内部Flash擦写次数为100,000次以上。
用户程序是用ISP/IAP机制写入,一边校验一边写,无读出命令。
综合考虑我们选择方案二STC89C52RC作为我们的主控芯片。
1.3LCD液晶显示
因为LCD1602液晶显示屏具有微功耗、体积小、显示内容丰富、超薄轻巧等特性,常用在袖珍式仪表和低功耗应用系统中,且1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字),所以选择其进行实时温度显示。
图2LCD1602液晶显示屏
1.4温度传感器
温度传感器DS18B20结构图如图3所示,引脚左负右正,一旦接反就会立刻发热,有可能烧毁。
同时,接反也是导致该传感器总是显示85℃的原因。
正确接法:
面对着扁平的那一面,左负右正。
DS18B20的性能特点如下[1]:
a.独特的单线接口仅需要一个端口引脚进行通信;
b.多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
c.无须外部器件;
d.可通过数据线供电,电压范围为3.0~5.5V;
e.零待机功耗;
f.温度以9或12位数字;
g.用户可定义报警设置;
h.报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
i.负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
如图表1,DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
保留
保留
CRC
表1
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
2硬件电路设计
2.1.主控制器
单片机STC89C52RC具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
STC89C52RC是一种低功耗,高性能的8位微控制器,具有8K在系统可编程FLASH存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上FLASH允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH,使得STC89C52RC为众多嵌入式控制应用系统提供高灵活,超有效的解决方案。
该单片机的最小系统包括电源部分,串口部分,单片机部分,晶振电路和复位电路。
最小系统原理图如图4所示[2]。
图4最小系统原理图
2.1.1电源部分
如图5是单片机小系统的电源部分原理图[3]。
图5总电源电路
通过5V变压器,上图电路是可以为整个设计的各个部分提供电源(+5V),由图可知,电源部分由一个电源插槽J7和电源开关S1、一个发光二极管、一个1K电阻和一个容值为1UF的稳压电容组成。
当电源接通后,打开开关,发光二极管会发光。
2.1.2串口电路
串口原理图如图6所示。
主要作用是进行电平转换,提高信号传输的速度。
图6串口原理图
串口电路是由一个MAX232芯片、5个0.1UF的电容和一个串口组成。
电路中的MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电,在电路中的C1~C4是必不可少的,缺一不可,具有调节电压值的作用。
由图可知,当数据线接上串口DB9时数据经过3号引脚送给MAX232的13号引脚,在经过12号引脚输出将电平转换送往单片机芯片中,在经过一系列单片机讲信号送给11号引脚经过芯片电平转换由14号引脚送给串口的2号引脚,已达到电平转换的作用。
2.1.3晶振电路
如图7所示,晶振电路用于产生单片机工作所需的时钟信号,电路选用11.0592MHZ的晶振和容值为22PF的电容,在单片机芯片的18(XTAL1)、19(XTAL2)号引脚之间跨界警惕震荡器和微调电容,就可以构成一个稳定的自激振荡器。
图7晶振电路图图8复位电路
2.1.4复位电路
如图8为复位电路,复位主要作用是使CPU和系统中其他功能部件都恢复到确定的初始状态,并从该状态开始工作。
复位电路有上电复位和手动复位两种。
上电复位:
当上电时,电容相当于短路,此时电阻上的电压约等于VCC,经过一段时间后电阻电压逐渐变小直至为零。
手动复位:
按键后,电容器被短路放电、RST直接和VCC相连,就是高电平,此时进入复位状态。
松手后,电源开始对电容器充电,此时,充电电源在电阻上,形成高电平送到RST,仍然是复位状态,稍后充电结束,电流降为零,RST降为低电平,开始正常工作。
本系统的复位电路采用的是手动复位的方式[5]。
2.2显示电路
动态显示电路使用STC89C52RC的P0.0至P0.7端口作为LED的字段输出口,P2.4至P2.7作为LED的位选控制口,采用PNP管9012驱动共阳LED显示器的第3引脚公共极COM,显示器从最左边的位开始点亮LED。
其接口原理图如下图9所示:
图9显示电路
2.3数据采集电路
数据采集电路如图10所示。
DS18B20的内部结构主要包括:
寄生电源,温度传感器,64位激光ROM和单总线接口,存放中间数据的高速暂存器RAM,用于存储用户设定温度上下限值得TH和TL触发器,存储和逻辑控制,8位循环冗余码发生器等七部分。
DS18B20测量温度时使用特有的温度测量技术,将被测温度转换成数值信号,测量结果将存入温度寄存器中。
图10数据采集电路
2.4语音电路
WT588D模块内部包含了FLASH存储器和相关的外围电路,只需要在外部接上控制端、电源及扬声器,就能进行工作。
BUSY指示:
BUSY端接上发光二极管就能显示语音的播放状态,可以从电脑软件上设置为语音播放时点亮或语音播放时熄灭。
供电:
模块在5V供电时,串两个二极管到VCC端,模块在3V供电时,可直接把电源接到VCC端。
PWM音频输出:
直接驱动扬声器的方式,扬声器两端接PWM+和PWM-,此状态输出时,PWM+/PWM-两端不可短路、不可接电容电阻到地。
如需采用此状态外接功放,可用差分方式输出到功放。
DAC音频输出:
外接功放驱动扬声器方式,不可直接驱动扬声器。
PWM+/DAC端做音频输出,PWM-端腾空。
DAC端需接一个1.2K电阻和104电容到地,再把音频输出给功放。
本次设计的系统采用的是DAC音频输出语音电路如图11所示。
图11语音电路
2.5按键电路
本文设计的按键电路如图13所示。
采用独立按键的结构形式,每个按键相互独立,分别与单片机的一根输入线相连,配置灵活,软件简单,适用于按键较少的场合。
当按键开关未按下时,开关处于断开状态,单片机I/O口为高电平;当按键开关按下时,开关处于闭合状态,单片机I/O口为低电平。
由于按键开关闭合和断开瞬间都会产生5~10ms的抖动,对于单片机来说完全可以感应到,因此采用软件消除抖动。
图12按键电路
3软件设计
3.1主程序设计
如图13为主系统原理图,系统的主程序主要用来初始化一些参数,对DS18B20的配置数据进行一系列的设定。
另外对DS18B20的状态不断的查询,以读取当前的温度值,并对温度进行处理,温度值的BCD码处理后,将其段码送显示缓冲区,以备定时扫描服务程序处理。
图13主程序流程图
3.2温度转换程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图14所示。
图14温度转换流程图图15温度显示流程
3.3温度显示程序
此程序是将采集到得数据用LED数码管显示,然后将实际温度与设置的报警上下限进行比较,决定是否发出报警信号。
由于T为实际温度的绝对值,TH,TL也是温度的绝对值,因此判断大小关系时,要通过正负号来确定。
其程序流程图如图15所示。
4调试分析
4.1硬件调试
单片机应用系统的硬件和软件调试是交叉进行的,但通常是先排除样机中明显的硬件故障,尤其是电源故障,才能安全地和仿真器相连,进行综合调试。
4.1.1硬件调试方法
在样机加电之前,首先用万用表等工具,根据硬件电器原理图和装配图仔细检查样机线路的正确性,并核对元器件的型号、规格和安装是否符合要求。
应特别注意电源的走线,防止电源之间的短路和极性错误,并重点检查扩展系统总线(地址总线、数据总线和控制总线)是否存在相互间的短路或与其它信号线的短路。
第二步是加电后检查各个插件上引脚的电位,仔细测量各点电位是否正常,尤其应注意单片机插座上的各点电位,若有高压,联机时将会损坏仿真器。
第三步是在不加电情况下,除单片机以外,插上所有的元器件,最后用仿真适配器将样机的单片机插座和仿真器的仿真接口相连,为联机调试做准备[6]。
4.1.2电源调试
用数字万用表电压档测量电池输出的电压值是否正常,如果显示不正常,将数字电压表打到蜂鸣器挡,用两个表笔检测电路是否短路或断路。
4.1.3语音模块调试
将所需要的语音录入语音芯片中,通过按键看是否播放录音。
4.2软件调试
本次设计采用的是keil仿真器进行软件调试,此系统可以开发应用软件,以及对硬件电路进行诊断、调试等。
它的具体功能是可以进行CPU仿真,可以单步、跟踪、断点和全速运行,而且,程序的编译过程中,可以对设计软件进行自诊断,并自动给出故障原因。
同时用户调试程序时,可以通过窗口观察寄存器的工作状况,以便及时发现和排除编程中可能出现的错误。
软件的调试是利用keil软件,模块化调试,通过观察存储单元数据的变化,查找并解决程序的语法和逻辑错误,具体的调试步骤如下:
1.把系统的各个模块在仿真软件中逐个调试,如数据采集模块、显示模块等。
2.对各个需要赋值模块调试时,赋入初值,单步调试,观察数据窗口,看输出结果是否为设计时想要的结果。
3.把各个模块组合起来,全速运行,看程序是否能流畅的,是否能实现设计的系统
调试的图片如下图16所示:
图16STC—ISP界面图
2.软件调试过程:
首先接上USB——RS232C信号线,安装串口驱动程序;然后打开STC——ISP界面,进行软件调试。
按下面顺序:
1)选择自己的CPU型号STC89C52RC
2)选择自己的端口:
根据之前安装的串口驱动程序,右键——我的电脑——属性——硬件——COM查看自己的输出端口号
3)选择波特率、最高、最低
4)打开程序文件
5)自己编写的程序编译后生成的.Hex文件
6)点击、下载程序至单片机,调试
7)重复2和5
注意:
在调试程序时,要把拨码开关拨到相对应的ON状态。
如下图17为系统调试完成后,正常运行的现场图
图17系统工作现场图
5结论
经过了四个星期的课程设计,让我对以前学的理论知识有了较深的体会,学习用理论指导实践,在实践中发现了自己有很多不足之处,并不断完善自己。
因为前两周准备考研,没做多少东西,但这次的课程设计还是让我体会到很多东西,不仅仅是知识本身的,更多的是自己动手能力和逻辑思维能力的锻炼。
同时,也知道自己还有许多要学的东西。
在以后的工作中,单片机是必须掌握的基础工具,所以我们认真学习单片机的知识,这对我们找工作是很有帮组的,遇到问题并不可怕关键是我们要找到方法去解决问题,一定要勤于动手,这样自己才会有提高。
另外,对温度传感器的认识也不仅仅只停留在书本上了,亲身体会到了LCD显示屏和LED灯的应用。
当然在这次宝贵的课程设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括这次难忘的活动我觉得再合适不过了。
在和同学的协作中去完成电路原理图的绘制,焊接电路板,最后进行调试,当然这些过程都离不开老师的悉心指导;这些工作必须按部就班,有计划保质量地完成,否则后面的工作就无法进行。
最后特别要感谢老师及同学在这四个星期对我的帮助。
参考文献
[1]唐文彦传感器(第四版)[M],北京:
机械工业出版社,2006
[2]夏路易:
Protel99SE[M],第一版,北京:
北京希望电子出版社,2002
[3]王俊峰:
电工技术基础[M],第二版,北京:
电子工业出本社,2010
[4]谭浩强:
C程序设计[M],第四版,北京:
清华大学出版社,2010
[5]谢自美:
电子线路设计测试与应用[M],第二版,武汉:
华中理工大学出版社,2004
[6]蔡美琴:
MCS-51系列单片机系统及其应用,第二版,北京:
高等教育出版社,2008
附录1电路原理图
附录2.PCB图
附录3主程序
/********************************************************
温度控制语音播报
操作方法:
将POWERSUPPLYSWITCH中的1602开关打开,用杜邦
线将驱动板上的VCC和GND连在基础板的OUTPOWER上,
用杜邦线将驱动板RST和DATA与P34和P35连接,用杜
邦线将驱动板DS与P20连接起来,DC与P05连接,把
温度传感器插在驱动板U1上
********************************************************/
#include
#include
#include<588.c>
sbitrs=P2^0;
sbitwr=P2^1;
sbitlcden=P2^2;
sbitDC=P0^5;//电动机控制
bitflag0;
uchardisplay[2];
ucharbai,shi,ge;
ucharnum=0;
voiddelayus(uints)
{
uinti;
for(i=0;i
for(i=0;i
}
voiddelay(uintz)//延时函数
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_com(ucharcom)//液晶写指令
{
rs=0;
P1=com;
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_data(uchardate)//液晶写数据
{
rs=1;
P1=date;
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidinit()//液晶初始化
{
wr=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
voiddistwo(ucharadd,uchartemp)//液晶显示两位数字
{
ucharshi,ge;
shi=temp/10;
ge=temp%10;
write_com(0x80+add);
write_data(shi|0x30);
write_data(ge|0x30);
}
voiddiszifu(ucharadd,uchar*temp)
{
uchari;
write_com(0x80+add);
for(i=0;temp[i]!
='\0';i++)
{
write_data(temp[i]);
delay(5);
}
}
voiddistemp(ucharadd,uinttemp)
{
bai=temp/100;
shi=temp%100/10;
ge=temp%100%10;
write_com(0x80+0x40+add);
write_data(bai|0x30);
write_data(shi|0x30);
write_data(0x2e);
write_data(ge|0x30);
write_data(0x43);
display[2]=(bai<<4)|(shi);
display[1]=ge;
display[0]=0x22;
}
voidsound_temp()//温度播报函数
{
send_oneline(bai);
delay(500);
send_oneline(10);
delay(500);
if(shi!
=0)
{
send_oneline(shi);
delay(500);
}
if(ge!
=0)
{
send_oneline(11);
delay(500);
send_onelin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 室内 温度 自动 调节 控制系统 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)