#include "DHT21.h"
#include "main.h"
#include "Display.h"
void delay_time(uint z)
{
uint i;
for(i=0;i<z;i++)
{
;
}
}
extern void DHT21_read_40Bit(void)
{
uchar i;
uint crc,Tem,Hum;
DHT21_IO_IN;
NOP();NOP();NOP(); NOP();NOP();NOP();
DHT21_IO_CLR;
delay_time(1000);
DHT21_IO_SET;
NOP();NOP();NOP(); NOP();NOP();NOP();
DHT21_IO_OUT;
NOP();
while(DHT21_IO_VAL==0x01)
{
}
NOP();NOP(); NOP();NOP();
while(DHT21_IO_VAL==0)
{
}
NOP();NOP();NOP();NOP();
while(DHT21_IO_VAL==0x01)
{
;
}
NOP();NOP();
for(i=0;i<16;i++)
{
while(DHT21_IO_VAL==0)
{
}
delay_time(36);
if(DHT21_IO_VAL==0x01)
{
while(DHT21_IO_VAL==0x01)
{}
Hum=(( Hum)<<1)|0x01;
}
else
{
Hum= (Hum)<<1;
}
}
measure_s.Hum_Data=Hum/10;
for(i=0;i<16;i++)
{
while(DHT21_IO_VAL==0)
{
}
delay_time(36);
if(DHT21_IO_VAL==0x01)
{
while(DHT21_IO_VAL==0x01)
{}
Tem=( Tem<<1)|0x01;// w=(w<<1)|0x01;
}
else
{
Tem= Tem<<1;
}
}
measure_s.Tem_Data=Tem/10;
for(i=0;i<8;i++)
{
while(DHT21_IO_VAL==0)
{
}
delay_time(36);
if(DHT21_IO_VAL==0x01)
{
while(DHT21_IO_VAL==0x01)
{}
crc=(crc<<1)|0x01;
}
else
{
crc=crc<<1;
}
}
}
extern void Display_TH(void)
{
Display_SZ(7,16,measure_s.Tem_Data/10);
Display_SZ(8,16,measure_s.Tem_Data%10);
Display_SZ(7,32,measure_s.Hum_Data/10);
Display_SZ(8,32,measure_s.Hum_Data%10);
}