ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:300.80KB ,
资源ID:5540144      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5540144.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的温湿度DHT11采集word文档良心出品.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的温湿度DHT11采集word文档良心出品.docx

1、基于51单片机的温湿度DHT11采集word文档良心出品一.设计目的温湿度控制系统早己经成为当今社会研究的热门领域之一,同时温湿 度也是现今工农业生产生活中必须要首先考虑的崑要因素之一。因此现今 社会生产生活中就迫切需要一种价格便宜、容易操作而且精确度高的温湿 度控制系统。本系统设计就是利用AT89C52单片机对温湿度参最进行检测 进而实现对温湿度参量的控制。本系统设计通过使用AT89C52单片机、DHT11传感器模块、LCD 1602 液晶显示屏模块以及LED闪烁和蜂鸣器报警模块。简单的系统设计就可以 基本上满足本系统设计的系统设计耍求。DHTU数字温湿度传感器负责把 采集到的温湿度信号传送

2、给AT89C52单片机。温湿度经过AT89C52单片机 处理,然后AT89C52准确地把温湿度信号发送到LCD1602液晶显示屏模块, 温湿度数据就可以准确地显示到LCD1602液晶屏上面,同时我们可以分别 对温度和湿度设置上下限,越限LED闪烁和蜂鸣器报警模块。二.设计要求和方案选择LCD1602能够实时、准确的显示AT89C52采样温度值和湿度值,显示设定 报警的温度和风扇的状态。DHT11采集温度及湿度值,AT89C52能够将DHT11输送过來的采集信息, 准确的判断标准值与设定值之间的差异,及吋的启动报警装置(LED闪烁 和蜂鸣器)进行报警。根据采集温湿度的数据进行判断,控制继电器进行

3、风扇的开闭传感器选择方案方案一:利用两个传感器分别检测温度和湿度值,温度检测模块选用DS18B20温度传恋器(+-0.5C)o湿度检测模块选用HS1101电容式湿度传 感器(+-5%RH) o这两款传感器都是我们大学实践电子设计中非常常见和常 用的传感器。方案二:检测温湿度数值选用DHT11传感器作为系统设计的温湿度检测模 块。DHT11传感器能够同时对温度和湿度数值进行检测,而且其精确度能 过完全满足本课程设计的精度要求。湿度、温度测量误差:+-5% +-2度 经过上述分析,方案一虽然精度更精确。却稍显复杂。方案二虽然DHT11传感器没怎么使用过,即便不能达到方案一那么高的精度要求,仍也能满

4、 足系统设计要求,而且更加简单,更加容易实现,也更加稳定可靠。所以 我选择方案二。DHT11数字温湿度传感器是一款4针单排引脚封装的传感器模块。DHT11 传感器主要应用于场所温湿度的检测,性能稳定可靠。DHT11传感器主要 由一个电阻式感湿元件和一个NTC测温元件组成,DHT11传感器引脚可以 宜接与AT89C52宜接相连接。该传感器连接十分方便,所以利用该传感器 制作本系统设计可以使系统制作变得十分简单。一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据 +8bit湿度小数数据+8bi温度整数数据十8bit温度小数数据+8bit校验和 数据传送正确时校验和数据等于“8

5、bit湿度整数数据+8bit湿度小数数据 +8bi温度整数数据+8bit温度小数数据”8bit湿度整数数据+8bit湿度小 以数据+8bi温度楼数数据+8bit温度小数数据”所得结果的末8位。 用户MCU发送一次开始信号后,DHTU从低功耗模式转换到高速模式,等待 主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一 次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号 触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主 动进行温湿度采集采集数据后转换到低速模式。总线空闲状态为高电半,主机把总线拉低等待DHT11响应,主机把总线拉 低必

6、须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的 开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主 机发送开始信号结束后,延吋等待20-40us后,读取DHT11的响应信号, 主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线 由上拉电阻拉髙。他号线说酬:主机信号DHTtt 号总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总 线拉高80us,准备发送数据,每一 bit数据都以50us低电平时隙开始,高 电半的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为 高电平,则DHT11没有响应,请检查线路是否

7、连接正常.当最后一 bit数据 传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状 态。数字0信号表示方法如信号线说明:数字1信号表示方法信号线说明:主机信号 DHT信号DHTU软件流程显示器选择方案方案一:采用12864液晶显示屏。12864液晶显示模块口身内置8192个 中文汉字、128个字符及64X256点阵显示RAM。可以显示汉字以及图案。方案二:选择使用LCD1602液晶显示屏。LCD1602能够显示16列2行, 但是只能显示字母、数字和符号能显示16*2个字符,不能显示汉字。由 于LCD1602寄存器不止32个,所以软件编写可以使字符一个个显示、字 符从左到右

8、或从右到左显示等等,显示效果比较简单。经过上述分析,在编程使用方面,12864液晶显示屏和LCD1602难度差不 多,虽然12864液晶屏可以显示更多的字符,汉字,乃至图案,有更多 LCD 1602不具备的功能。但是LCD1602液晶屏也能实现系统设计的要求, 而且LCD1602价格比较便宜,而12864液晶显示屏最至少四十块钱。综上 所述,LCD1602就是最好的选择。LCD1602能够同时显示32个字符(16列2行)LCD1602液晶模块里面的字符发生存储器已经存储了 160个不同的字符图,但是没有汉字,12864 液晶模块可以显示汉字。我们是通过指令编程來实现LCD1602的读写操作、

9、屏幕和光标的操作等操作的(1为高电平,0为低电平)写操作时序读操作时序1C程序流程图卄始三、硬件部分总电路图:;一三耳pq II-th e 7rJ- .1/OOO&OCT: 18 1/OC2BJO2K3 JO7rTF 4QCgfS:黑.frrAM IMAWTZELIW *esrWCMF2 UT2:xuu XTM: 32 3c c4TtOMr jTirrrcuwrr iff nU*2! UM*1DF2! um 4UWMLAYEDHT11模块电路GND无源蜂鸣器电路VCC 5VIK!NDR GKD继电器电路P44四、软件设计LCD1602显示程序tifndef _LCD_H# de fine 二

10、LCD口sbit rw=P36;7/ebit a=P3八5;sbxt ep=P34;sbit dula=P26;sbit wela=P27;/ /常穴黑仃六理常穴理禅穴曲禅穴和黑常打穴禅*穴常片穴穴常比黑W穴碎育穴常需畀bit lcd_bz () /检测lcdB?jtr碌状态bit reault=0xS0;PO=Oxff;rS=a; /i卖忙信号rw=l;皀 p-1;_nop_();_nop_();_nop_():_nop_();result = (bit)(PO&Ox80);ep-0;return result:;void writecmd (uchar cmd)/写指令 while (lc

11、d_bz();PO=crr.d;rs-O;皀 p=0;delay(l);ep-1;delay(1);ep=O;void wxice_addr (uchar mdd:)/写入的地址/ /addr写入的地址,q写入的字苻或者数字delay(10;wrire_addr(addr;wrce_byte(q);delay720;/LCD显示数据跳变的频率 4endif延时函数#ifndef _DELAY_H_#define _DELAY_H_#define uint unsigned intdefine uchar unsigned char/ / *void delay (uchar ms) /延时模块

12、/uchar i;while(ms)for(i=0;i100;i+);void delayl () /大概8us的延时uchar i;for(i=0;il;i+);#endif温湿度DHT11“fnctof DET“ 5#define DHT11Hfincludo DELAY.hnuchar data_byte;uchar RHfRLTH/TL;qbit io=P17; /DHT11 接收塔sbit relay=P2/s2;sbit bop=P23;sbit led-PlA4;void st曰工t () /开始吉号io=l;dolayl (;io=0;delay(25) ;/3Z低忌线大Tbl

13、Sms,保证能捡测到起始侶号 io=l; 脸测到开始信号后,将电平拉高20-403delayl ();delayl ();delayl () #/3个延时差不多3*e=24suchar receive_byte () /接收一个宇节/ _uchar i f temp;for (i=0;i8;i+) /接受3b的数拓while (! io) 待503的低电平开始信号结束delayl () ;/幵始信号结束之后,5i32 6us-2 8us delayl (;delayl ():tempeh /如果时问为26us-23us 则表示汝收至的救捱是10#if (io=l)temp=l; / /如杲:时

14、间扭过26us-26us 则表示按收到的数攥是 while (io);等芍数捱信号高电干 3为26us-28us1/为7Ous data_byte= ;/将無爭的数梅 向高位左瘗dzrta bytc | f cmp;return databyte;void “give ()/多受数拒/uchar T_Hr T_Lr R_H, R_L, check# num_ch.ecZr i;start ()次/ /开始倍号/io=l; 主机沒为输入 判断从机nHf 的响应的信号if仁io) /判断从机是否有响血詹号whig (! io) /判断从机发出BOX低电平啊应信号是否结束while (io);/判断

15、从机奖出80us低电平网卫侶号是否结束,若结束进入效堀按受状态R_E=rGcexve_byre ) ;/湿更整数R_L=rece 1 ve_by te () f / /湿皮小叛T_K=recoxvG_bye () ;/温竟整数T_L=receivebyte () ;/温肾小数checlv=receive_byte () ;/校骏位io=0; /当所宥的数据接收完成后,将从机电平拉低50“for (i-0;irsTH=T_H;TL=T_L;chGck=num_chGck;lendif主程序和按键t includeuchar table(=-0123456789; sbit Sl-P37;sbit

16、 S2=P3八6;uchar 11=50,12=50;/设定勿始湿度报警值y*r*ir*v* * * 函 * void main()led一ini匕():/初始化LCD2.6O2 / display(OxOOr table1);while (1)receive () ;/姿受数据display(0x00r R) ;/LCD 行显示display(0x01r1:);display(0x02r tableRH/10);display (0x03r table RH%10);湿度整数显示display(0X04r;display(0x40, T1) ;/LCD第二行显示display(0x41r1:

17、);display(0x42r table(TH/10);display (0x43r Cable (TH%10);温麦整数显示dx3play(0x44r C);display (0x97R) /LCD第行蠹示dioplay(0x38r :);display(0x39,table11/10);display(0x3ar tableIl%:0); display(0x0br Z);display (0x47 J ) ;/LCD第一行显示display(0x48,八);display(0x49r table12/iO);display(Ox4bz1C1);设定湿度报警范围if (Sl=0)dela

18、y(5);if(!S1)11=11+1;display (0x09, t-able 11/10); display(0x0ar tabl包; delay(200);while(!SI)I1+;if(Il99)11=0;delay(50);display(0x09r tablm11/10); display(0x0ar tabl七Tl%10); if(S2=0)delay(5);if(!S2)12=12+1;display(0x49r tabIm12/10); display(0x4ar tablel2%10); delay(200);while ( IS2)I2+;if(I299)12=0;d

19、elay(50);display(0x49r table12/10); display(0x4af tfiLblmI2%1O); /进行湿度判断/当湿度太高的时候,进行报警if(|(THI2)/进行湿度判断当湿度太高的时候,进行报警 if(RHI1)|(THI2) Irelay=O; led=O; beep=O;delay(400); led=l;beep=L; delay(400);显示风.扇的开关状态display(0x0dr ro1); display(0x0er rn1);display(0x4dz r *); display(0x4er r *);display(0x4fr r 1)

20、;当湿度降低时J取消报鲁if ( | THI2)led=L;beep=L; relay=l;显示风扇的开关状态display(0x4dr r o1); display(0x4ez T f *);display(0x4fr r f1); display(0x0dr r 1);display(0x0er r 1);五、调试及运行结果当渥度达到设定的范围的时候,显示风扇开当湿度低于设定的范围的时候,显示风扇关六、总结(感想和心得等)此次的课程设计做的是我最心塞的一次,因为队友实在是太不给力了,本来是打了一张板了,可是不知道什么原因LCD1602 一直显示 不出来,也没有在检查,后来就只能用直接用开发板做了。这个温湿 度釆集控制系统,最最关键的就是温湿度模块HT11o因为要根 据DHT11的参考手册里面的时序来写,才能读取到DHT11传回来的数 据,一开始怎么也不能读取到,最后还是万能的XX帮了忙,学到了 一个FOR循环大概是8us才能准确的控制时间来读取数据。还有一个 问题不能解决的是LCD的判斷忙的程序不知道为什么不能用。一直处 于忙的状态。和网上的写法是一样的,可是LCD就是一直是忙的状态。 这个我也是不能解决。学会了键盘的更多功能。例如不用通过延时来 消抖,按键长按的功能都是很使用的。由于开发板的P3是键盘和LCD 相连接的,所以就不能说控制多个按键实现不同的功能。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1