欢迎来到天天文库
浏览记录
ID:57677679
大小:168.00 KB
页数:4页
时间:2020-08-31
《驱动dht11温湿度传感器.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、DHT11是数字的湿度传感器....6元一个买的...与它的通信方式类似于I2C总线通信.串行数据一次返回40位.数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。如果模块离芯片距离近,建议在数据线接一5k电阻上拉.时序图如下:第一次拉低要求至少18ms,之后拉高20-40us,之后DHT拉低80us后再拉高80us..之后进入数据阶段.
2、每个数据,0,1以高电平的时间长短区分.0数据高电平时间为26-28us,1为70us..不论1或者0,之前都先输出50us的低电平..数据传输完成后拉高总线.在此次的程序中用P2.1作为信息口.程序如下#include#defineHIGHP2OUT
3、=BIT1;#defineLOWP2OUT&=~BIT1;voidDelayNus(intn){CCR0=n;TACTL
4、=MC_1;//增计数到CCR0while(!(TACTL&BIT0));//等待TACTL&=~MC_1;//停止计数TACTL
5、&=~BIT0;//清除中断标志}charreceive(void)//接受函数{chartem,cnt=0;//临时变量用于存储接受数据while(cnt<8){while(!(P2IN&BIT1));//等待50us的低电平结束DelayNus(45);if(P2IN&BIT1)//长于30us定义为1{tem++;tem<<=1;while(P2IN&BIT1);//结束高电平}else{tem<<=1;}if(cnt!=7)while(!(P2IN&BIT1));//最后一次给函数返回留下时间cnt++;}returnt
6、em;}intmain(void){inti;chartemph,templ,humdh,humdl,check,cal;WDTCTL=WDTPW+WDTHOLD;_DINT();BCSCTL1&=~XT2OFF;do{IFG1&=~OFIFG;for(i=0xff;i>0;i--);}while(IFG1&OFIFG);_EINT();BCSCTL2
7、=SELM_2+SELS;//SMCLK8分频P2DIR
8、=BIT1;P2OUT
9、=BIT1;TACTL
10、=TASSEL_2+ID_3;//initedLOW;DelayNus(
11、18000);HIGH;DelayNus(30);P2DIR&=~BIT1;while(P2IN&BIT1);while(!(P2IN&BIT1));while(P2IN&BIT1);//Datacomeshumdh=receive();humdl=receive();temph=receive();templ=receive();check=receive();cal=humdh+humdl+temph+templ;if(check==cal){LPM0;}return0;}
此文档下载收益归作者所有