用dht11做温湿度显示全套_第1页
用dht11做温湿度显示全套_第2页
用dht11做温湿度显示全套_第3页
用dht11做温湿度显示全套_第4页
用dht11做温湿度显示全套_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用dht11做温湿度显示DHT11是一款有已校准数字信号输出的温湿度传感器。精度湿度+-5%RH,温度+-2℃,量程湿度20-90%RH,温度0~50℃。一.电路连接分析1.引脚图2.接线图DHT11器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。单总线通常要求外接一个约5.1kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。由于它们是主从结极,只有主机呼叫从机时,从机才能应答,因此主机访问器件都必须严格遵循单总线序列,如果出现序列混乱,器件将不响应主机。二.数据采集分析1.数据总时序用户主机(MCU)发送一次开始信号后,DHT11从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,幵触发一次信采集2.主机发送起始信号单片机连接DHT11的DATA引脚的I/O口输出低电平,且低电平保持时间不能小于18ms,然后等待DHT11作出应答信号。3.检测从机应答信号DHT11的DATA引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后DHT11的DATA引脚处于输出状态,输出80微秒的低电平作为应答信号,紧接着输出80微秒的高电平通知外设准备接收数据。4.接收数据(1)数据判定规则位数据“0”的格式为:50微秒的低电平和26-28微秒的高电平,位数据“1”的格式为:50微秒的低电平加70微秒的高电平。接收数据时可以先等待低电平过去,即等待数据线拉高,再延时60us,因为60us大于28us且小于70us,再检测此时数据线是否为高,如果为高,则数据判定为1,否则为0。(2)数据格式一次传送40位数据,高位先出8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验位。(3)数据校正判断“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”的结果是否等于8bit校验位。如果等于则数据接收正确,否则应该放弃这一次的数据,重新接收。三.驱动程序#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitData=P3^6;//定义数据线ucharrec_dat[9];//用于显示的接收数据数组voidDHT11_delay_us(ucharn){while(--n);}voidDHT11_delay_ms(uintz){uinti,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}voidDHT11_start(){Data=1;DHT11_delay_us(2);Data=0;DHT11_delay_ms(20);//延时18ms以上Data=1;DHT11_delay_us(30);}ucharDHT11_rec_byte()//接收一个字节{uchari,dat=0;for(i=0;i<8;i++)//从高到低依次接收8位数据{while(!Data);////等待50us低电平过去DHT11_delay_us(8);//延时60us,如果还为高则数据为1,否则为0dat<<=1;//移位使正确接收8位数据,数据为0时直接移位if(Data==1)//数据为1时,使dat加1来接收数据1dat+=1;while(Data);//等待数据线拉低}returndat;}voidDHT11_receive()//接收40位的数据{ucharR_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;DHT11_start();if(Data==0){while(Data==0);//等待拉高DHT11_delay_us(40);//拉高后延时80usR_H=DHT11_rec_byte();//接收湿度高八位R_L=DHT11_rec_byte();//接收湿度低八位T_H=DHT11_rec_byte();//接收温度高八位T_L=DHT11_rec_byte();//接收温度低八位revise=DHT11_rec_byte();//接收校正位DHT11_delay_us(25);//结束if((R_H+R_L+T_H+T_L)==revise)//校正{RH=R_H;RL=R_L;TH=T_H;TL=T_L;}/*数据处理,方便显示*/rec_dat[0]='0'+(RH/10);rec_dat[1]='0'+(RH%10);rec_dat[2]='R';rec_dat[3]='H';rec_dat[4]='';rec_dat[5]='';rec_dat[6]='0'+(TH/10);rec_dat[7]='0'+(TH%10);rec_dat[8]='C';}}/*这里使用lcd1602来显示采集到的数据*/voidmain(){uchari;lcd_init();//lcd1602初始化while(1){DHT11_delay_ms(1500);//DHT11上电后要等待1S以越过不稳定状态在此期间不能发送任何指令DHT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论