《dht11源文件》由会员分享,可在线阅读,更多相关《dht11源文件(3页珍藏版)》请在金锄头文库上搜索。
1、/*DHT11温湿度模块源文件作者:天道酬勤修改:2012、8、11DHT11: 带窗口的是正面,贴纸的是反面pin(1): VCCpin(2): DATApin(4): GND*/#include dht11.huchar g_Temperature,g_RH;/*/函数说明:DHT11单字节读函数/入口参数:无/出口参数:读出字节/作者信息:天道酬勤,2012、8、11*/uchar ReDht11Byte()uchar i,flag,temp;uchar dat;for (i=0; i8; i+)flag=200;while(!sb_dht11)&flag+);Delay11XUs(3)
2、;temp=0;if(sb_dht11)temp=1;flag=200;while(sb_dht11)&flag+);/超时则跳出for循环if(flag=1)break;/判断数据位是0还是1/ 如果高电平高过预定0高电平值则数据位为 1dat=1;dat|=temp;/0return dat;/*/函数说明:DHT11温湿度读出函数,读出的温度值与湿度值分别存放在全局变量g_Temperature,g_RH中/入口参数:无/出口参数:读出字节/作者信息:天道酬勤,2012、8、11*/void ReDht11Inf()uchar temp;uchar tDataHTemp,tDataLTe
3、mp,RHDataHTemp,RHDataLTemp,checkDataTemp;/主机拉低18ms sb_dht11=0;DelayXMs(15);sb_dht11=1;/总线由上拉电阻拉高 主机延时20usDelay11XUs(4);/主机设为输入 判断从机响应信号 sb_dht11=1;/判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行if(!sb_dht11) /T ! /判断从机是否发出 80us 的低电平响应信号是否结束 while(!sb_dht11);/判断从机是否发出 80us 的高电平,如发出则进入数据接收状态while(sb_dht11);/数据接收状态TR1=0;RHDataHTemp=ReDht11Byte();RHDataLTemp=ReDht11Byte();tDataHTemp=ReDht11Byte();tDataLTemp=ReDht11Byte();checkDataTemp=ReDht11Byte();sb_dht11=1;TR1=1;/数据校验temp=(tDataHTemp+tDataLTemp+RHDataHTemp+RHDataLTemp);if(temp=checkDataTemp)g_RH=RHDataHTemp;g_Temperature=tDataHTemp;