/****************************************************************************************************************
*************************
*Author:JYW
*Time:2019_04_22
*Describe:LetAllLinesOfCodeSpeak
*****************************************************/
/*************************************
*Auther:JYW
*Time:2019_04_22
*Describe:代码练习DHT11的驱动练习
*********************************/
void COM(void)
{
//首先读入的是高位
unsigned char i;
for(i=0;i<8;i++)
{
ucharFLAG = 2;
while((!DATA_PIN)&&ucharFLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
uchartemp = 0;
if(DATA_PIN) uchartemp = 1;
ucharFLAG = 2;
while((DATA_PIN)&&ucharFLAG++);
if(ucharflAG = 1) break;
ucharcomdata<<=1
ucharcomdata |=uchartemp;
}
}
void DHT11(void)
{
DATA_PIN = 0;
Delay_ms(19);
DATA_PIN = 1;
P0DIR &= 0x7F;
Delay_ms(10);
Delay_ms(10);
Delay_ms(10);
Delay_ms(10);
if(!DATA_PIN)
{
ucharFLAG = 2;
while((!DATA_PIN)&&ucharFLAG++);
ucharFLAG = 2;
while((DATA_PIN)&&ucharFLAG++);
COM();
ucharRH_data_H_temp=ucharcomdata;
COM();
ucharRH_data_L_temp=ucharcomdata;
COM();
ucharT_data_H_temp=ucharcomdata;
COM();
ucharT_data_L_temp=ucharcomdata;
COM();
ucharcheckdata_temp=ucharcomdata;
DATA_PIN = 1;
uchartemp=(ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+ucharRH_data_L_temp);
if(ucharcheckdata_temp == uchartemp)
{
ucharRH_data_H = ucharRH_data_H_temp;
ucharRH_data_L = ucharRH_data_L_temp;
ucharT_data_H = ucharT_data_H_temp;
ucharT_data_L = ucharT_data_L_temp;
ucharcheckdata = ucharcheckdata_temp;
}
wendu_shi = ucharT_data_H/10;
wendu_ge = ucharT_data_H%10;
shidu_shi = ucharRH_data_H/10;
shidu_ge = ucharRH_data_H%10;
}
else
{
wendu_shi = 0;
wendu_ge = 0;
shidu_shi = 0;
shidu_ge = 0;
}
P0DIR |= 0x80;
}