基于DHT11的温湿度监测电路设计概要.docx
《基于DHT11的温湿度监测电路设计概要.docx》由会员分享,可在线阅读,更多相关《基于DHT11的温湿度监测电路设计概要.docx(27页珍藏版)》请在冰豆网上搜索。
![基于DHT11的温湿度监测电路设计概要.docx](https://file1.bdocx.com/fileroot1/2023-4/16/9ce0e54b-3f93-417a-b72e-0ceb08978111/9ce0e54b-3f93-417a-b72e-0ceb089781111.gif)
基于DHT11的温湿度监测电路设计概要
题目:
基于DHT11的温湿度监测电路设计
基于DHT11的温湿度监测电路设计
摘要
本次设计是采用MSC-51系列单片机中的AT89S51和DHT11构成的低成本的温湿度的检测控制系统。
单片机AT89S51是一款低消耗、高性能的CMOS8位单片机,由于它强大的功能和低价位,因此在很多领域得到广泛应用。
DHT11温湿度传感器是一款含有已校准数字输出的温湿度复合传感器,传感器包括一个电阻式感湿原件和一个NTC测温元件,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
设计主要包括硬件电路的设计和系统软件的设计。
硬件电路主要包括单片机、温湿度传感器、显示模块、报警器以及控制设备等五部分。
其中由DHT11温湿度传感器及LCD1602字符型液晶模块构成系统显示模块;测温湿度控制电路由温湿度传感器和预设温度值比较报警电路组成;用户根据需要预先输入预设值,当实际测量的温湿度不符合预设的温湿度标准时,发出报警信号(蜂鸣器蜂鸣)。
软件部分包括了主程序、显示子程序、测温湿度子程序。
关键词:
AT89S51;DHT11;温湿度监测
DHT11TemperatureandHumiditymonitoringcircuitdesign
ABSTRACT
AT89S51isalowconsumption,highperformanceCMOS8bitmicrocontroller.Becauseofitspowerfulfeaturesandlowprice,itisusedinmanyareas.DHT11temperatureandhumiditysensorisatemperatureandhumiditycombinedsensorcontainingacalibrateddigitaloutput,thesensorconsistsofaresistorintheoriginalsenseofwetandaNTCtemperaturemeasurementdevices.Theproducthasmanyadvantages,suchasexcellentquality,fastresponse,stronganti-jammingcapability.ThisdesignisfromedbytheAT89S51inMSC-51SeriesandDHT11constitutewhichisalow-costtemperatureandhumiditymeasurementandcontrolsystem.Thedesignincludesthedesignofhardwarecircuitdesignandsystemsoftware.
ThehardwarehasFivemodules.Theyareamicrocontroller,temperatureandhumiditysensors,displaymodule,alarmandcontrolequipment.TheLCD1602-characterLCDmoduleconstitutethesystemdisplaymodule.Thetemperatureandhumiditycontrolcircuitbythetemperatureandhumiditysensorsandpresettemperaturealarmcircuit.Accordingtotheneedofpre-enterthedefaultvalue,whentheactualmeasurementofthetemperaturehumiditydoesnotconformthepresettemperatureandhumiditystandards,sendthealarmsignal(buzzerwillbeep).
Thesoftwarepartincludesthemainprogram,thedisplayroutines,temperatureandhumiditysubroutine.
Keywords:
AT89S51;DHT11;Temperatureandhumiditymonitoring.
目录
1前言1
1.1本文研究的背景及意义1
1.2研究任务和主要内容1
1.2.1本系统要完成任务1
1.2.2主要内容1
2设计任务要求分析2
2.1设计要求2
2.2系统组成2
2.3本章小结2
3硬件设计3
3.1单片机模块设计3
3.1.1AT89S51单片机3
3.1.2单片机最小系统4
3.1.3复位电路4
3.1.4时钟电路5
3.1.5温湿度设置(按键)电路6
3.2显示电路6
3.3传感器电路8
3.4电源指示灯电路10
3.5系统的蜂鸣器电路10
3.6本章小结11
4软件设计12
4.1温湿度采集模块14
4.2显示模块15
4.3蜂鸣器报警模块15
4.4PROTUES运行结果16
4.5本章小结17
结论18
参考文献19
致谢20
1前言
1.1本文研究的背景及意义
在日常生活中,温湿度监控系统应用很广泛,例如:
机房、档案馆、材料加工场等场所,都必须严格控制环境的温度和相对湿度,使其保持在一定的范围。
使用DHT11可以灵活的监测环境的温湿度,由用户设定一定的阈值,实时监测显示,并且可以根据用户要求设定报警装置,当温湿度超过一定的范围时,立即报警。
基于此,我设计了一款用51单片机控制的温湿度监控系统,操作简单,使用方便。
1.2研究任务及主要内容
1.2.1本系统要完成的任务
(1)人性化的设计。
界限温度值及湿度值能够由用户根据不同地域和不同的需求输入并通过显示器显示,能够实时、准确的显示采样温度值与湿度值。
(2)通过采集温度及湿度值,准确的判断标准值与当前值之间的差异,看是否符合标准值,及时的启动报警装置(包括警报灯的提示功能以及蜂鸣等)进行报警,并采取相应控制温湿度的方案。
1.2.2主要内容
(1)温湿度的监测我们研究的主要内容。
数字化传感器将采集到的信号送入单片机,之后单片机通过显示模块显示该温湿度值。
(2)该系统通过按钮设定最适宜的温度和湿度,传感器向中央控制系统输送监测信号,超过预设值范围的话,蜂鸣器就会报警提醒。
(3)功能拓展:
控制设备根据各种不同的需求自动对温湿度进行调节。
采用电热、火力增温,水冷、风扇降温都比较方便;采用喷雾、洒水增加湿度,采用烘干技术,加快水分流失,保持环境干燥。
2设计任务要求分析
本章详细介绍了本次设计的主要任务,即实时显示当前环境的温湿度,并且允许用户设定温湿度标准值,当环境温湿度超过或低于标准值时,系统会以蜂鸣器鸣响的方式进行报警提示,待达到标准值时,蜂鸣器停止鸣响,控制设备停止运行,系统正常工作,工作指示灯亮。
(1)温度(temperature)监控:
对温度进行监控并反映在显示器上。
(2)湿度(humidity)监控:
对湿度进行监控并反映在显示器上。
(3)显示:
LCD显示此时此刻温湿度值,摆放在现场用于显示当前的温湿度。
2.1设计要求
一个以单片机为核心的温湿度监测系统,需要实现的功能为:
(1)能够准确的显示当前的温度以及湿度。
温度检测的范围0℃-60℃,测温精度:
±2℃;湿度检测范围20%-100%RH,测湿精度:
±5%RH。
(2)能够自主调节当前需要温度以及湿度的预设温湿度值,在系统上面有调节按钮,可随时根据需要增加或者减少预设值。
(3)一旦发现超过了预设值,蜂鸣器蜂鸣报警,报警方式为三极管驱动的蜂鸣音报警。
(4)本设计采用LCD显示。
2.2系统组成
依据功能设定,本系统主要分为以下三个模块:
(1)温湿度采集模块:
DHT11温湿度传感器作为本设计中的温湿度采集模块,使用单总线方式,接口方式简单,分辨率为8bit,能够完全满足日常环境温湿度的监测要求。
(2)数据处理模块:
数据处理模块采用AT89S51单片机,由其完成对温湿度采集、运算、逻辑控制的功能。
(3)用户交互模块:
用户交互模块主要由按键、LCD1602点阵液晶、蜂鸣器和控制器构成。
其中按键用于用户设定温湿度准确值,LCD1602用于数据显示,蜂鸣器用于提示用户,控制器用于调节控制不符合要求的温、湿度。
2.3本章小结
本章节主要有两部分,第一部分主要介绍了温湿度实时监测的设计要求,第二部分主要介绍了设计的系统组成,并加以简要的解释。
3硬件设计
单片机是整个系统的控制中枢,它控制外围器件协调工作,从而完成特定的功能,硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块连接在一起,这种设计方法可以降低系统设计的复杂性,本系统主要硬件设计包括电源电路、蜂鸣器电路、晶振电路,LCD显示电路以及温湿度传感器电路[11]。
按照系统的设计功能所要求的,温湿度监控系统框图如下图3-1所示:
图3-1温湿度监控系统框图
3.1单片机模块设计
单片机作为本设计系统中的中枢单元,连接着包括温湿度传感器模块,LCD显示模块,蜂鸣器报警模块,键盘模块等所有部分。
其依赖于传感器对原始信号的准确捕捉和转换,在此基础上对输入单片机的被测信号进行分析处理,并向蜂鸣器报警模块发出相应指令,实现对温湿度的现场实时监测。
3.1.1AT89S51单片机
AT89S51是一款低功耗、高性能CMOS的8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP),也可用传统方法进行编程及通用8位微处理器于单片机芯片中,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制的领域。
AT89S51提供以下的功能标准:
4K字节闪烁存储器,128字节随机存取数据存储器,2个16位定时/计数器,32个I/O口,1个串行通信口,1个5向量两级中断结构,另外,AT89S51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式,闲散方式停止中央处理器的工作,可允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。
掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位,在AT89C51上新增加的功能使AT89S51性能有了较大提升,它的价格甚至更低,它的工作频率可达33MHz,比AT89C51的工作频率更高,ISP在线编程功能的优越性在于它不必要将芯片从工作状态下分离,特别是在改写存储器内的程序,这是一个相当方便简单的功能,它不需要像AT89C51那样外接看门狗计时器单元电路,由于它内部具有双工UART串行通道内部集成看门狗计时器,它具有全新的加密算法,大大加强的程序的保密性,有效的保护知识产权不被侵犯,它完全兼容51全部字系列产品[8]。
图3-2AT89S51引脚图
3.1.2单片机最小系统
所谓单片机的最小系统是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必须电路,缺一不可。
单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组成。
对于AT89S51单片机,由于片内有4K的程序存储器,所以其最小系统除了单片机本身外,只需外接时钟电路与复位电路即可。
3.1.3复位电路
本次设计采用的是上电复位,当RST引脚上出现了两个周期以上的高电平就会触发内部复位,这里的EA端与复位电路无关,由于数据都放在了内部存储器,所以需要对EA端置高电平[1]。
图3-3复位电路
3.1.4时钟电路
时钟电路用于产生单片机的基本时钟信号,是用来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟。
MCS-51的时钟信号可以由两种方式:
一种是内部方式,利用芯片内部的振荡电路,产生时钟信号:
另一种为外部方式,时钟信号由外部引入。
如果没有时钟电路来产生时钟驱动单片机,单片机是无法工作的[12]。
AT89S51的时钟信号可由内部振荡器产生,也可由外部电路直接提供。
内部振荡器的输入和输出脚分别为XTAL1和XATL2,由XTAL2给单片机内部电路提供时钟信号。
当时钟信号由外部电路提供时,外部时钟引入XTAL2,而XTAL1脚接地。
图3-4晶振电路
3.1.5温湿度设置(按键)电路
按键说明:
左起第一个是功能键,按一次进入报警温度设置此时出现H40,进行上限温度设置,此时设置H高温报警温度并闪烁显示;按第二次,进行下限温度设置此时出现L03,此时设置L低温报警温度并闪烁显示;再按一次即第三次,则恢复正常的温度显示界面。
第二个按键是增加键,可以对上限温度或下限温度进行增大调整第三个按键是减小键,可以对下限温度或下限温度进行减小调整;湿度同理。
这样便可设置好温、湿度的上、下限。
图3-5按键实物
图3-6按键电路
3.2显示电路
显示模块选用LCD1602字符型液晶模块,它是目前工控系统中使用最广泛的液晶屏之一,LCD1602字符型液晶模块是点阵型液晶,驱动方便,经过编程后显示内容多样化。
工作电压一般为4.5-5.5V,本设计中采用4.5V电源,工作电流2mA,容量16*2个字符。
(1)整体电路设计实物及LCD正常工作显示如图3-7所示。
图3-7正常工作LCD1602显示
(2)LCD1602各引脚接口说明如表3-1所示
表3-1LCD引脚接口说明
LCD1602各引脚接口说明如表(编号)
符号
引脚说明
1
VDD
正极
2
VSS
地
3
VL
液显偏压
4
RS
寄存器选择
5
R/W
读/写选择
6
EN
使能信号
7
D0
数据
8
D1
数据
9
D2
数据
10
D3
数据
11
D4
数据
12
D5
数据
13
D6
数据
14
D7
数据
15
BLA
背光源正极
16
BLK
背光源负极
(3)引脚功能说明
VCC:
电源电压输入端。
GND:
电源地。
P1口(AT89S51):
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入”1”后,被内部上拉为高电平,可用作输入。
P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
专门为用户使用的I/O口,是准双向口,P1口为8位准双向口,每一位均可单独定义为输入或输出口。
在编程校验期间,用做输入低位字节地址。
P1口可以驱动4个TTL负载。
图3-8显示电路
3.3传感器电路
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的温湿度传感和数字模块采集技术,具有很高的稳定性和可靠性,DHT11传感器内含一个NTC测温和一个电阻式感湿元件,并与一个8位的高性能单片机相连接,在精确的湿度校验室中DHT11传感器进行过校准,以程序的形式校准系数储存在0TP内存中,检测信号的时候,在处理过程中传感器内部要调用这些校准系数,采用单线制的串行接口[13],使系统集成可以有较低的功耗,而且更加简单快速,信号传输距离超过20米,作为一个数字温湿度传感器DHT11具有响应快速、抗干扰强、性价比高等优点,它的性能指标如下:
湿度测量范围为20%~90%RH;湿度测量精度为±5%RH;温度测量范围为0~50℃,温度测量精度为±2℃,工作电压3.0~5.5V,响应时间<5S,DHT1l采用4针单排引脚封装,传感器通电后,需要等待1s,这是因为要越过不稳定的状态,在此期间不需发送指令,电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波[7]。
图3-9DHT11实物图
四条引角中有两条是电源引脚,有两条是输出数据的引脚,你只需要给他供上额定电压,然后再他的输出引脚采集信号就可以了。
DHT11是数字型温湿度传感器,可直接以数字方式传输所采集的当前环境温湿度,DHT11采用的是单总线通信,因此只需将单片机的一个I/O端口与DHT11的通信接口连接就可以实现数据的采集和传送,相对于其他电路来说比较简单。
传感器电路如图3-10所示:
图3-10传感器电路
3.4电源指示灯电路
普通单色发光二极管具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长等优点,可用各种直流、交流、脉冲等电源驱动点亮。
它属于电流控制型半导体器件,使用时需串接合适的限流电阻。
发光二级管点亮一般需要3mA~10mA的电流,在本设计中选择5mA,VCC=4.5V,R=1K。
图3-11电源指示灯电路
3.5系统的蜂鸣器电路
微型计算机控制系统中,为了安全起见,对于一些重要的参数或系统,都设定有紧急状态报警系统,以便于提醒操作人员注意,或者采取紧急措施,本设计采用把计算机采集的数据进行数据处理、标度变换、数字滤波之后,与该参数上下限与设定值进行比较,不符合标准值则进行报警,否则就作为采样的正常值,进行显示[12]。
本设计采用峰鸣音报警电路。
蜂鸣器额定电流≤30Ma,而对于AT89S51单片机,P3口的灌电流为15mA,由此可见,仅靠单片机的P3口电流是不能驱动蜂鸣器的,必须使用晶体管放大电路,为了使单片机的功率更小,所以使用PNP型晶体管,当外部环境的温度或者湿度超过预设值的时候,基级变为低电平,蜂鸣器导通鸣叫[11]。
图3-12蜂鸣器电路
3.6本章小结
本章节主要介绍了硬件设计的总思路及其各部分电路的主要设计方法,详细的给出了各个模块(蜂鸣器,晶振电路,显示电路,按键电路,传感器电路,复位电路,电源指示灯电路)的电路设计。
初步连接构造硬件,并且设计了控制部分,较细致的介绍了硬件运行。
4软件设计
软件设计是本次设计中不可缺少的环节,贯穿了整个毕业设计,是本次设计能够完成的最重要的环节之一。
根据温湿度监控系统功能,系统软件流程图如图4-1所示:
系统启动开始
蜂鸣器鸣叫
LCD1602初始化
读取温湿度值
LCD正常显示
自动检测
N
蜂鸣器不报警
Y
蜂鸣器鸣叫报警
启动相关调控设备
图4-1系统软件流程图
4.1温湿度采集模块
DHT11传感器内含一个NTC测温和一个电阻式感湿元件,并与一个8位的高性能单片机相连接,在精确的湿度校验室中DHT11传感器进行过校准,以程序的形式校准系数储存在0TP内存中,检测信号的时候,在处理过程中传感器内部要调用这些校准系数,采用单线制的串行接口。
首先将DHT11数据端口置低电平,发送开始信号,延时20毫秒,释放数据线,用于检测低电平应答信号。
若无应答信号,则EA为高电平,返回;有应答信号,等待应答信号结束,若超出检测范围,则读数据出错,退出函数;应答信号后有80us高电平,等待高电平结束后,读出温湿度值。
unsignedcharDHT11_ReadTempAndHumi(void)
{
unsignedchari=0,check_value=0,count=0;
EA=0;
dht11=0;//拉低数据线大于18ms发送开始信号
Delay_1ms(20);//需大于18毫秒
dht11=1;//释放数据线,用于检测低电平的应答信号
//延时20-40us,等待一段时间后检测应答信号,应答信号是从机拉低数据线80us
DHT11_Delay_10us();
DHT11_Delay_10us();
DHT11_Delay_10us();
DHT11_Delay_10us();
if(dht11!
=0)//检测应答信号,应答信号是低电平
{
//没应答信号
EA=1;
returnERROR;
}
else
{
//有应答信号
while(dht11==0&&count++if(count>=NUMBER)//检测计数器是否超过了设定的范围
{
dht11=1;
EA=1;
returnERROR;//读数据出错,退出函数
}
count=0;
dht11=1;//释放数据线
//应答信号后会有一个80us的高电平,等待高电平结束
while(dht11!
=0&&count++if(count>=NUMBER)
{
dht11=1;
EA=1;
returnERROR;//退出函数
}
//读出湿.温度值
for(i=0;i{
value_array[i]=DHT11_ReadValue();
if(status==ERROR)//调用ReadValue()读数据出错会设定status为ERROR
{
dht11=1;
EA=1;
returnERROR;
}
//读出的最后一个值是校验值不需加上去
if(i!
=SIZE-1)
{
//读出的五字节数据中的前四字节数据和等于第五字节数据表示成功
check_value+=value_array[i];
}
}//endfor
//在没用发生函数调用失败时进行校验
if(check_value==value_array[SIZE-1])
{
//将温湿度扩大10倍方便分离出每一位
humi_value=value_array[0]*10;
temp_value=value_array[2]*10;
dht11=1;
EA=1;
returnOK;//正确的读出dht11输出的数据
}
else
{
//校验数据出错
EA=1;
returnERROR;
}
}
}
4.2显示模块
LCD1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。
首先将LCD1602的各个引脚定义,然后算出指令码,将温度显示和湿度显示的子程序分别定义,以备调用。
voiddisplayfun1()
{
display_temp();
}
voiddisplayf