基于51单片机的DHT11数字温湿度计

基于51单片机的DHT11数字温湿度计

ID:38790249

大小:16.37 KB

页数:5页

时间:2019-06-19

基于51单片机的DHT11数字温湿度计_第1页
基于51单片机的DHT11数字温湿度计_第2页
基于51单片机的DHT11数字温湿度计_第3页
基于51单片机的DHT11数字温湿度计_第4页
基于51单片机的DHT11数字温湿度计_第5页
资源描述:

《基于51单片机的DHT11数字温湿度计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#include#defineucharunsignedchar#defineuintunsignedintucharbyte,SH,SL,WH,WL,CHECK,FLAG;sbitLCDRS=P3^2;sbitLCDEN=P3^3;//sbitLCDRW=P2^2;sbitBUS=P3^4;voiddelay(ucharms)//精确1ms{uchari,j;for(i=ms*5;i>0;i--)for(j=100;j>0;j--);}v

2、oiddelay1()//约7us{uchari;for(i=3;i>0;i--);}/***************LCD配置**********************//********************bitcheck_busy()//检测busy{uchartemp;bitBB;LCDRS=0;LCDRW=1;LCDEN=1;P0=temp;delay(5);LCDEN=0;BB=(bit)(temp&0x80);//检测D7是否为1,为1则忙returnBB;}********

3、*************/voidwrite_com(ucharcom){//while(check_busy());//检测LCD是否忙delay(5);LCDRS=0;//LCDRW=0;LCDEN=0;P1=com;delay(5);LCDEN=1;delay(5);LCDEN=0;}voidwrite_data(uchardat){//while(check_busy());//检测LCD是否忙delay(5);LCDRS=1;//LCDRW=0;LCDEN=0;P1=dat;dela

4、y(5);LCDEN=1;delay(5);LCDEN=0;}voiddis(ucharadd,uchardat){delay(10);write_com(add);///送地址delay(5);write_data(dat);///送数据delay(5);}voidinit(){FLAG=0;delay(50);write_com(0x38);_nop_();write_com(0x0c);_nop_();write_com(0x06);_nop_();write_com(0x80);_nop

5、_();write_com(0x01);_nop_();TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}/*********************DHT11**********************/voidstart(){BUS=1;//起始总线为高电平_nop_();BUS=0;//主机拉低delay(25);//延时大于18msBUS=1;//主机拉高delay1();delay1();de

6、lay1();delay1();}ucharreceive_byte(){uchari,temp;for(i=0;i<8;i++){while(!BUS);//检测50us低电平延时是否结束delay1();delay1();delay1();delay1();temp=0;//26~28us为数据“0”if(BUS==1)//70us为数据“1”temp=1;while(BUS);//检测数据高电平结束byte<<=1;//数据存储在bite里,每次右移一位byte

7、=temp;//bite右

8、移空位补零,然后与temp进行或运算,赋值给bite}returnbyte;}voidreceive_data(){ucharS_H,S_L,W_H,W_L,CHECK_;while(FLAG);//采集周期标志位start();BUS=1;//设定总线为输入状态while(BUS);//检测DHT响应低电平while(!BUS);//检测DHT拉高总线电平while(BUS);//检测80us后拉低电平S_H=receive_byte();S_L=receive_byte();W_H=rece

9、ive_byte();W_L=receive_byte();CHECK_=receive_byte();//40bit数据while(BUS);delay1();delay1();delay1();delay1();delay1();delay1();delay1();delay1();delay1();//延时50usBUS=1;//总线经上拉电阻拉高CHECK=S_H+S_L+W_H+W_L;//校验运算if(CHECK==CHECK_)//校验{SH=S_H-7;SL=S_L;WH=W_H

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。