基于单片机的智能温湿度检测器设计.docx
《基于单片机的智能温湿度检测器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能温湿度检测器设计.docx(39页珍藏版)》请在冰豆网上搜索。
基于单片机的智能温湿度检测器设计
基于单片机的智能温湿度检测器设计
\摘要
在现代生活中,人们越来越重视温度和湿度的检测和控制,因为这两个因素也是影响人们生活的重要组成部分。
在人们的日常生活中,在家庭环境中,人们也开始随时随地关注温度和湿度,可以说空调和加湿器等物品都是温度和湿度的产物。
在工业上,仓库的温湿度更显得尤为重要,因为仓库的物品可能受温湿度影响会变质变化,这就造成对温湿度的时时检测和控制显得极其重要。
在农业生产中,现在的大棚种植技术更是离不开对温湿度的严格控制,各种类型的植物在各阶段对温湿度的要求不一,所以大棚内的温湿度要做到适合棚内植物生长和发育就要求对温湿度进行适时调整和改变以促进植物的更好更快的生长。
该课题就是关于两个重要的因素的智能检测设计,设计以51单片机AT89C52和湿度传感器DHT11为核心,通过液晶显示器LCD1602对温湿度进行实时显示,而且本设计还带有报警电路,对温湿度超出预设值的情况下进行报警提示,有发光二级管和蜂鸣器这两种方式进行同时报警和提示。
关键词:
温湿度测量;AT89C52;DHT11;LCD1602
IntelligenttemperatureandhumiditydetectordesignbasedonSCM
Abstract:
Inmodernlife,thereisagrowingemphasisonthedetectionandcontroloftemperatureandhumidity,becausethesetwofactorsalsoplayanimportantpartofpeople'slives.Inthehomeenvironment,peoplealsobegantoconcernedaboutthetemperatureandhumiditycanbesaidthatitemssuchasairconditioningandhumidifiersaretheproductoftemperatureandhumidity.Inindustrial,warehouse’stemperatureandhumidityisparticularlyimportant,becausethewarehouseitemsmaybeaffectedbytemperatureandhumidityaffectthemetamorphicchanges,whichresultedintemperatureandhumidityfromtimetotimetodetectandcontrolisextremelyimportant.Ingreenhousetechnologyinagriculturalproduction,isinseparablefromthestrictcontroloftemperatureandhumidity,alltypesofplantsinvariousstagesofdifferentrequirementsoftemperatureandhumidity,temperatureandhumiditywithinthegreenhousetoachievesuitableshedplantgrowthanddevelopmentoftemperatureandhumiditytomaketimelyadjustmentsandchangeafasterandbetterinordertopromoteplantgrowth.
mysubjectisontwoimportantfactorsinintelligentdetectiondesign,thedesigntothe51SCMAT89C52andhumiditysensorsDHT11asthecore,throughtheLCDmonitorLCD1602real-timedisplayoftemperatureandhumidity,butthisdesignalsocomeswithanalarmcircuit,thetemperatureandhumidityexceedsthepresetvaluethealarm,therearetwowayslightemittingdiodeandbuzzeralarmsimultaneouslyandtips.
Keywords:
temperatureandhumiditymeasurement;AT89C52;DHT11;LCD1602
目录
第1章前言
1.1课题的提出与意义
目前随着生活质量的不断提高,人们的生活水平越来越高,所以对环境的要求也越来越高,环境控制的也成了人们安居乐业的基础,成了共建和谐环境的重要环节。
尤其是目前生活节奏的加快,许多白领都出现了亚健康的状态,因此家庭温湿度的检测对于现代家庭来说也变得刻不容缓了。
因此为了满足最适宜人们生活的最佳温度和湿度,我们需要研究一种家庭式的,便于提醒和控制温湿度的装置,人们可以根据不同季节以及个人的需要进行不同的调整,以便达到最佳的居住环境,这不仅仅是对于环境要求的进步,同时也体现了现代文明的发达与先进
1.2国内外研究现状
最近几年,国内外温湿度传感器测量系统正向着集成化、智能化发展,随着科研人员的不断努力,该类型系统取得的巨大的成就。
现代温湿度传感器测量系统技术主要以数据采集为依据,主要类型包括:
虚拟仪器、智能仪器、数字式仪器等等。
伴随电子科学技术的进一步发展,数据采集系统也发生了日新月异的变化,其整体的性能、实用性方面都有所改进。
因此,依托于数据采集结构而发展的温湿度传感器测量系统在实际应用中也发挥这越来越重要的作用。
目前,许多外国大型企业都很重视传感器的研发工作,例如,日本的Figaro公司、芬兰的Vaisala公司等,都致力于传感器的发展和完善,以保障其在整个销售市场的竞争力。
在九十年代,先后出现了集成温度湿度测量套件和应用于湿度传感器的测试系统,这个新技术的产生都大大刺激了传感器的进一步发展。
与此同时,国内许多机构也在传感器测试装置的研发上不断探索、研发。
例如通过采用传统电子仪器进行设计研发而成的多种动态测试系统、动进样装置的气体传感器智能测试系统等等,这些成绩都体现了我国在传感器领域取得的成就。
当然,随着科技的进步,传统的温湿度测试技术在稳定性、精度等方面已经无法满足市场的需求,因此,针对新一代传感器的探究显得尤为重要。
温湿度测量系统在纺织工业、冶金、化工、建材、食品、温室种植以及气象预报和科研实验室等诸多领域都有广泛的应用[16],而这些领域对温湿度测量系统的要求也各不相同。
因此,温湿度测量系统有着广阔的市场前景。
总之,现在国内外温湿度测量系统的研究都是朝着微型化、数字化、智能化的方向发展,并且不断地改进技术来满足市场的需求。
1.3研究内容
本设计由硬件设计和软件设计两部分组成,课题要求完成的是系统软件设计部分和部分硬件部分。
本文研究的主要内容包括温湿度测量、显示及报警模块的软件设计和温湿度测量系统的调试。
温湿度测量系统主要技术指标:
(1).温度测量:
温度范围0℃~50℃,精度±0.5℃;
(2).湿度测量:
湿度范围20~90%RH,精度0.1%RH。
本系统由软硬件两部分配合使用实现系统功能,最终要实现一个实时的温湿度测量系统,具有温湿度测量、显示、报警功能。
第2章系统整体设计电路及原理
2.1系统整体框图
图2-1系统整体框图
2.2系统整体电路图
图2-2系统整体电路图
2.3系统组成和基本工作原理
本系统设计核心部件为AT89C52单片机,信号采集及处理部分由DHT11温湿度传感器,进入单片机以后经处理后通过LCD显示温湿度,信号显示采用的液晶屏为5*7点阵,一行可显示16字符输入两行。
在软件设计部分有对测量的温湿度进行了上限值和下限值的设定,当测量的温湿度超过所设定的值时,通过报警处理电路对其进行处理分别显示不同的二极管灯发亮,以显示不同的警示作用,提示人们该如何处理。
硬件中一个开关,为复位开关。
开机后所有的器件进行初始化设置,温湿度传感器DHT11开始进行温湿度的测量和计算,最后通过LCD1602液晶显示器显示出所测量的温湿度,在测量的温湿度结果中如果超过了所设定的上下限,则通过报警处理电路做出反应。
显示部分单片机的P0口接到LCD的数据输入口D1到D8,P1.0,P1.1,P1.2口分别接LCD的RS,RW,E口,RW接地表示数据写入,本设计中只设计到对LCD的数据写入操作,RS接低电平时表示选择写指令操作,接高电平表示写数据操作,E接高脉冲表示写指令或数据,传感器DATA口接到单片机的P2,7口,串行接口数据是单项双向传输的,采用单总线数据格式,一次性完整输出40bit高位先输出,由于是串行输出其数据为2进制数,在程序中编写相应的数据转换程序使数据转换成10进制数数送入LCD显示。
第3章系统主要部件
3.1芯片简介
3.1.1单片机--AT89C52简介
图3-1At89C52引脚图
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个双全工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
3.1.2主要功能与特性
1.兼容MCS51指令系统
2.8k可反复擦写(大于1000次)FlashROM
3、32个双向I/O口
4、256x8bit内部RAM
5、3个16位可编程定时/计数器中断
6、时钟频率0-24MHz;
7、2个串行中断,可编程UART串行通道;
8、2个外部中断源,共8个中断源;
9、2个读写中断口线,3级加密位;
10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;
11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
3.1.3引脚功能及管脚说明
AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P0口:
P0口是一组8位漏极开路型双向I/O口,也就是地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与c51不同的是,其p1.0与p1.1可以作为定时/计数器的外部输入,作为定时计数器用,p1口是内置上拉电阻的io口,可以输入输出电流,单引脚20ma,如果是给外部芯片赋值,可直接接入,如果要驱动外部电路,比如,发光二极管,需要再接上限流电阻电阻。
因为单片机的输出电流毕竟都非常小,如果要有更大的电流,如驱动蜂鸣器,继电器,则接三极管作为反相且放大大电流的作用
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻 辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
P3口一些特殊功能口如下表所示:
表3-1P3口特殊功能引脚功能表
P3.0RXD
串行输入口
P3.4T0
计时器0外部输入
P3.1TXD
串行输出口
P3.5T1
计时器1外部输入
P3.2/INT0
外部中断0
P3.6/WR
外部数据存储器写选通
P3.3/INT1
外部中断1
P3.7/RD
外部数据存储器读选通
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数 据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
时钟振荡器:
AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10pF。
用户也可以采用外部时钟。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
中断:
AT89C52共有6个中断向量:
两个外中断(INT0和INT1),3个定时器中断(定时器0、1、2)和串行口中断。
这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。
注意IE.6为保留位,在AT89C52中IE.5也是保留位。
程序员不应将“1”写入这些位,它们是将来AT89系列产品作为扩展用的。
定时器2的中断是由T2CON中的TF2和EXF2逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是TF2或EXF2产生中断,而由软件清除中断标志位。
定时器0和定时器1的标志位TF0和TF1在定时器溢出那个机器周期的S5P2状态置位,而会在下一个机器周期才查询到该中断标志。
然而,定时器2的标志位TF2在定时器溢出的那个机器周期的S2P2状态置位,并在同一个机器周期内查询到该标志。
3.2LCD显示--LCD1602
3.2.1LCD1602简介
字符型液晶显示模块是一种专门用于显示字母、数字、点阵式LCD,目前常用16*1,16*2,20*2和40*2行等模块。
1602LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC和地线,其控制原理与14脚的LCD完全一样。
图3-21602LCD尺寸图
3.2.2LCD管脚说明
表3-2LCD管脚功能表
编号
符号
引脚说明
编号
符号
引脚说明
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
背光源负极
第1脚:
VSS为地电源
第2脚:
VDD接接电源(+5V)
第3脚:
V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,可以通过一个10K的电位器调整对比度)。
第4脚:
RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
R/WR/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
第6脚:
EE(或EN)端为使能(enable)端,下降沿使能。
第7脚:
DB0低4位三态、双向数据总线0位(最低位)
第8脚:
DB1低4位三态、双向数据总线1位
第9脚:
DB2低4位三态、双向数据总线2位
第10脚:
DB3低4位三态、双向数据总线3位
第11脚:
DB4低4位三态、双向数据总线4位
第12脚:
DB5低4位三态、双向数据总线5位
第13脚:
DB6低4位三态、双向数据总线6位
第14脚:
DB7高4位三态、双向数据总线7位(最高位)(也是busyflag)
第15脚:
BLA背光电源正极
第16脚:
BLK背光电源负极
3.2.31602LCD的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令,如表所示:
表3-31602指令表
序号
指令
RSR/WD7D6D5D4D3D2D1D0
1
清显示
0000000001
2
光标返回
000000001*
3
置输入模式
00000001I/DS
4
显示开/关控制
0000001DCB
5
光标或字符移位
000001S/CR/L**
6
置功能
00001D/LNF**
7
置字符发生存贮器地址
0001字符发生器存储器地址
8
置数据存贮器地址
001显示数据存储器地址
9
读忙标志或地址
01B/F计数器地址
10
写数到CGRAM或DDRAM)
10要写入的数据内容
11
从CGRAM或DDRAM读数
11要读出的数据内容
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
基本操作时序图
图3-3读操作时序图
图3-4写操作时序图
3.2.41602LCD的RAM地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图是1602的内部显示地址。
图3-5