DHT11.c 文件
#include<reg52.h>
#include<Time_Delay.h>
//the main only needs to call getDHT11(),then the temperature and huminity was geted in
F16T,F16RH as float
sbit bit11=P2^0;
unsigned char U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
float F16T,F16RH; //用于最终读取的温湿度数据
// read 8 bits onice
char COM(void)
{
char i,U8temp,U8comdata;
for(i=0;i<8;i++)
{
while(!bit11); //表示 读取的高电位延时大于 20 多 us 则读取的是 1 否则读取的是 0
Delay_us(35); //通过 U8FLAG 可判断 bit11 显示数据的脉长
U8temp=0;
if(bit11)U8temp=1;
while(bit11);
U8comdata<<=1;
U8comdata|=U8temp; //0
}//rof
return U8comdata;
}
//--------------------------------
//-----温湿度读取子程序 ------------
//--------------------------------
//----以下变量均为全局变量--------
//----温度高 8 位== U8T_data_H------
//----温度低 8 位== U8T_data_L------
//----湿度高 8 位== U8RH_data_H-----
//----湿度低 8 位== U8RH_data_L-----
//----校验 8 位 == U8checkdata-----
//----调用相关子程序如下----------
//---- Delay();, Delay_10us();,COM();
//--------------------------------
评论14