DHT11温湿度传感器.docx
- 文档编号:24692613
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:24
- 大小:411.99KB
DHT11温湿度传感器.docx
《DHT11温湿度传感器.docx》由会员分享,可在线阅读,更多相关《DHT11温湿度传感器.docx(24页珍藏版)》请在冰豆网上搜索。
DHT11温湿度传感器
基于单片机的DHT1温湿度
传感器设计
姓名:
史延林指导老师:
黄智伟学院:
电气工程学院
学号:
20094470321
摘要:
温湿度是生活生产中的重要的参数。
本设计为基于单片机的温湿度检测与控制
系统,采用模块化、层次化设计。
用新型的智能温湿度传感器DHT1住要实现对温度、
湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C5进行数据的分析和处理,为显示和报警电路提供信号,实现对温湿度的控制报警。
报警系统根据设定报警的上下限值实现报警功能,显示部分采用LCD160液晶显示所测温湿度值。
系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。
关键词:
单片机;DHT1温湿度传感器;LCD1602显示
第一章:
课程构思
1.1课题背景
温湿度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用。
在生产中,温湿度的高低对产品的质量影响很大。
由于温湿度的检测控制不当,可能使我们导致无法估计的经济损失。
为保证日常工作的顺利进行,首要问题是加强生产车间内温度与湿度的监测工作,但传统的方法过于粗糙,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。
这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。
目前,在低温条件下(通常指100C以下),温湿度的测量已经相对成熟。
利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。
但人们对它的要求越来越高,要为现代人工作、科研、学习、生活提供更好的更方便的设施就需要从数字单片机技术入手,一切向着数字化,智能化控制方向发展。
对于国内外对温湿度检测的研究,从复杂模拟量检测到现在的数字智能化检测越发的成熟,随着科技的进步,现在的对于温湿度研究,检测系统向着智能化、小型化、低功耗的方向发展。
在发展过程中,以单片机为核心的温湿度控制系统发展为体积小、操作简单、量程宽、性能稳定、测量精度高,等诸多优点在生产生活的各个方面实现着至关重要的作用。
温湿度传感器除电阻式、电容式湿敏元件之外,还有电解质离子型湿敏元件、重量型湿敏元件(利用感湿膜重量的变化来改变振荡频率)、光强型湿敏元件、声表面波湿敏元件等。
湿敏元件的线性度及抗污染性差,在检测环境湿度时,湿敏元件要长期暴露在待测环境中,很容易被污染而影响其测量精度及长期稳定性。
1.2
主要内容
本文设计的是基于单片机STC89C5的温湿度检测和控制系统,主要以广泛应用的DHT1作为温度和湿度的检测,该仪器具有测量精度较高、硬件电路简单、并能很好的进行显示,可测试不同环境温湿度的特点。
另外和控制电路相连,可以进行加湿电路和除湿电路的控制,使温度和湿度参数在预先设定的范围内,不需要人的直接参与。
单片机是系统的控制核心,所以单片机的性能关系到整个系统的好坏。
因此单片机的选择,对所设计系统的实现以及功能的扩展有着很大的影响。
本设计中,最终选用的集成温度传感器DHT11采集到的温湿度信号送至单片机,实现温湿度的显示与控制。
系统主要由以上元器件组成,通过硬件电路和软件程序的设计,实现系统的基本功能
1.3系统总体方案设计
用新型的智能集成温温度传感器DHT1主要实现检测温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C5进行数据的分析和处理,并在LCD160上显示当前温湿度。
1、DHT11产品概述
DHT1数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应
用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NT(测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比
极高等优点。
每个DHT1传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在0T内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
3、电源引脚
DHT1的供电电压为
3—5.5V。
传感器上电后,要等待1s以越过不稳定状
态在此期间无需发送任何指令。
电源引脚(VDDGND之间可增加一个100nF的电
容,用以去耦滤波。
4、串行接口(单线双向)
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,用户MCU发送一次开始信号后QHT11从低功耗模式转换到高速模式,等待主机开始信号结束后QHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据•从模式下QHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号QHT11不会主动进行温湿度采集•采集数据后转换到低速模式。
1.4单片机STC89C52
STC89C5是一种低功耗、高性能CMO八位微控制器,具有8K在系统可编程Flash存储器,使用ATME公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许RO在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPI和在系统可编程Flash,使其为众多嵌入式控制应用系统提供灵活的解决方案。
1、主要特性如下:
1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051
2.工作电压:
5.5V〜3.3V(5V单片机)/3.8V〜2.0V(3V单片机)
3.工作频率范围:
0〜40MHz相当于普通8051的0〜80MHz实际工作频率可达48MHz
4.用户应用程序空间为8K字节
5.片上集成512字节RAM
6.通用I/O口(32个),复位后为:
P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成
8.具有EEPRO功I能
9.具有看门狗功能
10.共3个16位定时器/计数器。
即定时器T0、T1、T2
11.外部中断4路,下降沿中断或低电平触发电路,PowerDown莫式可由外部中断低电平触发中断方式唤醒
12.通用异步串行口(UART,还可用定时器软件实现多个UART
13.工作温度范围:
-40〜+85C(工业级)/0〜75C(商业级)
14.PDIF封装
2、STC89C52R(单片机的工作模式
掉电模式:
典型功耗<0.1小,可由外部中断唤醒,中断返回后,继续原程序空闲模式:
典型功耗2mA
正常工作模式:
典型功耗4Ma〜7mA
40
掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备
POO.ADOPCI.ADIPC.2'AmP03AD3P0.4AD4PO.3/AD5P 如图芯片引脚图 Vcc: 电源 Vss: 地 P(端口(P0.0〜P0.7,39〜32引脚): P0口是一个漏极开路的8位双向I/O口。 作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入1”时,可以作为高阻抗输入。 在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。 此时,P0口内部上拉电阻有效。 在FlashRO编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。 验证时,要求外接上拉电阻。 P1端口(P1.0〜P1.7,1〜8引脚): P1口是一个带内部上拉电阻的8位双向I/O口。 P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。 对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。 P1口作输入口使 用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。 此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。 P2端口(P2.0〜P2.7,21〜28引脚): P2口是一个带内部上拉电阻的8位双向I/O端口。 P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL俞入。 对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。 P2作为输入口使 用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 在访问外部程序存储器和16位地址的外部数据存储器(如执行MOVX@DF”R令)时,P2送出高8位地址。 在访问8位地址的外部数据存储器(如执行MOVX@R1指令)时,P2口引脚上的内容(就是专用寄存器(SFR区中的P2寄存器的内容),在整个访问期间不会改变。 在对FlashROM编程和程序校验期间,P2也接收高位地址和一些控制信号。 P3端口(P3.0〜P3.7,10〜17引脚): P3是一个带内部上拉电阻的8位双向I/O端口。 P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL俞入。 对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。 P3做输入口使用 时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。 在对FlashROM编程或程序校验时,P3还接收一些控制信号。 RST(9引脚): 复位输入。 当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。 看门狗计时完成后,RST引脚输出96个晶振周期的高电平。 特殊寄存器AUXFR地址8EH上的DISRTO位可以使此功能无效。 DISRT(默认状态下,复位高电平有效。 ALE/PROG(30引脚): 地址锁存控制信号(ALE是访问外部程序存储器时,锁存低8位地址的输出脉冲。 在Flash编程时,此引脚也用作编程输入脉冲。 在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。 然而,特别强调,在每次访问外部数据存储器时,ALE永冲将会跳过。 如果需要,通过将地址位8EH勺SFR勺第0位置1”,ALE操作将无效。 这一位置1”,ALE仅在执行MOV或MO指令时有效。 否则,ALE各被微弱拉高。 这个ALE使能标志位(地址位8EH勺SFR勺第0位)的设置对微控制器处于外部执行模式下无效。 PSEN(29引脚): 外部程序存储器选通信号是外部程序存储器选通信号。 当AT89C51R从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而访问外部数据存储器时,PSEN将不被激活。 EA/VPP(31引脚): 访问外部程序存储器控制信号。 为使能从0000H到FFFFH勺外部程序存储器读取指令,EA必须接GND注意加密方式1时,EA将内部锁定位 RESET为了执行内部程序指令,EA应该接VCC在Flash编程期间,EA也接收12伏VPP电压。 XTAL1(19引脚): 振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2(18引脚): 振荡器反相放大器的输入端。 第2章系统的硬件设计和连接 2.1、时钟电路 STC89C5内部有一个用于构成振荡器的高增益反相放大器,引脚RXD叮XD分别 是此放大器的输入端和输出端。 时钟可以由内部方式产生或外部方式产生。 如下: C3 Cap 30pF 22、复位电路 RST引脚是单片机复位端,高电频有效。 在引脚端输入至少连续两个单片 机周期的高电频,单片机复位。 使用时,在引脚与VSS引脚之间接一个10KQ的 下拉电阻,与VCC引脚之间接一个约10疗的电解电容,即可保证上电自动复位。 如下: 2.2、显示模块 ||*GND 4-VJEIs9Qs吕scnEoa AUMsu 200> *azo 9 10 VCC 寸gcjUIXI巴: 弐二-一M壬01G 8一〔二L0|°一 |pGND GND<| E: 1( RPOT IK vcc LCD160引脚功能图: 引脚号 引脚名 电平 输入/输出 作用 1 Uss 电沁 2 Ucc 电源(*5«) 3 Uee 对比调整电压 4 RS 0/1| 输入 "端入数据 5 R/W 0/1| 输入 丽向L怕写入韻今或数据"从LC醮取曙盒 6 E 1,1-*0 输入 使能信号J哎诱甲信息,—肌下虑沿)换厅指茅 1 DEB 0/1 输入席i出 数据总銭肌最低位> e DU1 0/1 输入/输岀 数据总线UnM 9 DB2 0/1 输入/输出 数据总线line2 10 0/1 输入/输出 数据总线lines 11 DB4 0/1 输入箱出 数据总线llnZ 12 DBS 0/1 输入/输岀 数据总| 15 DBA 0/1 输入/输岀 数据总线15"| 14 DB7 0/1 输入/输岀 数据总线linM(最高位〉 15 A +Vcc LCD背光电源正极 16 K 接地 LU)背光电源负极 vcc R4 2.3、传感器模块 第3章总结 回顾起此次单片机课程设计,我仍感慨颇多,从理论到实践,在接近二星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题。 首先,说说焊接的美观程度,这是我所骄傲的,我焊接的很美观、明了。 但在设计的过程中也发现了自己的不足之处,对以前所学过的知识理解得不够深,把硬件焊接出来后,由于编程不熟,导致推迟了对硬件功能的检测,最终在指导老师的耐心指导下完成所有功能检测,两位老师的耐心指导,使我意识到专业知识的重要性,以后会更加努力! 第4章 程序: U8codetable2[]="wendushidu" U8codetable3[]=" sbitRS=P2A6; sbitRW=P2A5; sbitE=P2A7; voidwrite_com(U8com) { E=0; RS=0; RW=0; Delay(5); E=1; PO=com; E=0; } voidwrite_date(U8date) { E=0; RS=1; RW=0; Delay(5); E=1; P0=date; E=0; P0=0; } voidinit() { U8num; Delay(15); write_com(0x38); write_com(0x38); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); for(num=0;num<15;num++) { write_date(table2[num]); Delay (1); } write_com(0x80+0x40); for(num=0;num<15;num++) { write_date(table3[num]); Delay (1); } } voidwrite_dht11(U8add,U8date) { U8shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } typedefunsignedcharU8; typedefunsignedintU16; sbitP1_0=P2A0; U8U8FLAG,k; U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp; U8U8comdata; voidDelay(U16z) { U8x,y; for(x=z;x>0;x__) for(y=110;y>0;y--); } voiddelay_10us() { U8i; i--; i--; i--; i--; i--; i--; } voidCOM(void)//数据01确认 { U8i; { U8FLAG=2; while((! P1_0)&&U8FLAG++);〃1bit是否结束 delay_10us(); delay_10us(); delay_10us(); U8temp=0;〃26us~28us表示为0 if(P1_0)U8temp=1;//超过28us依然为高电平表示为1 U8FLAG=2; while((P1_0)&&U8FLAG++); if(U8FLAG==1)break;//U8FLAG溢出超时则跳出for循环 //判断数据位是0还是1 //如果高电平高过预定0高电平值则数据位为1 U8comdata<<=1; U8comdata|=U8temp; } } voidRH(void)//-----湿温度读取子程序 { //总线由上拉电阻拉高主机延时20us delay_10us(); delay_10us(); delay_10us(); delay_10us(); P1_0=1;〃主机设为输入判断从机响应信号 if(! P1_0)〃判断从机是否有低电平响应信号如不响应则跳出,响应则向 下运行 { U8FLAG=2; while((! P1_0)&&U8FLAG++);//判断从机是否发出80us的低电平响应 信号是否结束 U8FLAG=2; while((P1_0)&&U8FLAG++);//判断从机是否发出80us的高电平,如发出则进入数据接收状态 COM();〃数据接收状态 U8RH_data_H_temp=U8comdata;〃湿度整数8位 COM(); U8RH_data_L_temp=U8comdata;//湿度小数8位 COM(); U8T_data_H_temp=U8comdata;//温度整数8位 COM(); U8T_data_L_temp=U8comdata;//温度小数8位 COM(); U8checkdata_temp=U8comdata;//校验位 P1_0=1; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_tem P); if(U8temp==U8checkdata_temp)//数据校验正确执行 { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; } #include #include U16a,b,t; U8flag,i;voidmain() { RW=1; t=0; flag=O; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; init(); P1_0=1; P2=0xff; Delay(40); while (1) { RH(); write_dht11(0,U8T_data_H); write_dht11(3,U8T_data_L); write_dht11(9,U8RH_data_H); write_dht11(12,U8RH_data_L); if(flag==2)//100后flag为2,进行比较 { if(a==U8T_data_H&&b==U8RH_data_H)Buzzer=0; while(a==U8T_data_H&&b==U8RH_data_H);flag=0; } test(); voidtimerO()interrupt1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t++; if(t==2000)//100秒检测一次 { t=0; flag=2;//100秒后flag为2 } if(flag==0)//最开始flag为0赋值 { a=U8T_data_H; b=U8RH_data_H; flag=1;//flag变化 } } 电路原理图: TO n| JnAL IP— ;3tF 电路PC图: Lil 二丄 ;? jz m-j XIiClvk J匸■=■BC5] GN2 Hv? P AH ISTAll^5AD-MtAHPi^AE72JAII圉二AE MJJU i.;-rllnF-二IL<一工OHS MB»ineUhlt .-F"rj Jr l±r二 元件参数表: Oorment □escriptior DesiquatoT Footprint LibRef QjarW DHT HDR1X4 DHT11 B9C5I 39C51 勺 89C52 Cap2 O(i[Mci(or c7 CAPRS4誉 Cflp2 Cap WgGlkK C2,C3.t^ CAPH^.M-51x32 LEDI DI RAD3.4 LEDI 1 DC DC DC1 DC DC KEY-E KEY-1 KEY-1 KEY-1 key-i KEY-C KEY-G KLY-2 KEY-G KEY-6 LDClfO? LDCi602 ICD1 LCOTen2 LCD1602 Headw2 Header,2-FTi 円
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DHT11 温湿度 传感器
![提示](https://static.bdocx.com/images/bang_tan.gif)