void delay(uint n)
{
uint x, y;
for (x = n; x > 0; x--)
for (y = 110; y > 0; y--)
;
}
void write_com(uchar com)
{
lcdrs = 0;
P0 = com;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
void write_dat(uchar dat)
{
lcdrs = 1;
P0 = dat;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
void init_lcd()
{
lcden = 0;
lcdrw = 0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void DHT11_delay_us(uchar n)
{
while (--n)
;
}
void DHT11_delay_ms(uint z)
{
uint i, j;
for (i = z; i > 0; i--)
for (j = 110; j > 0; j--)
;
}
void DHT11_start()
{
Data = 1;
DHT11_delay_us(2);
Data = 0;
DHT11_delay_ms(30);
Data = 1;
DHT11_delay_us(30);
}
uchar DHT11_rec_byte()
{
uchar i, dat = 0;
for (i = 0; i < 8; i++)
{
while (!Data)
;
DHT11_delay_us(8);
dat <<= 1;
if (Data == 1)
dat += 1;
while (Data)
;
}
return dat;
}
void DHT11_receive()
{
uchar revise;
DHT11_start();
if (Data == 0)
{
while (Data == 0)
;
DHT11_delay_us(40);
R_H = DHT11_rec_byte();
R_L = DHT11_rec_byte();
T_H = DHT11_rec_byte();
T_L = DHT11_rec_byte();
revise = DHT11_rec_byte();
DHT11_delay_us(25);
if ((R_H + R_L + T_H + T_L) == revise)
{
RH = R_H;
RL = R_L;
TH = T_H;
TL = T_L;
}
rec_dat[0]='0'+((RH+ER)/10);
rec_dat[1]='0'+((RH+ER)%10);
rec_dat[2]='.';
rec_dat[3]='0'+(RL/10);
rec_dat[4]='%';
rec_dat[5]=' ';
rec_dat[6]='0'+((TH+ET)/10);
rec_dat[7]='0'+((TH+ET)%10);
rec_dat[8]='.';
rec_dat[9]='0'+(TL/10);
}
}
void main()
{
uchar i;
init_lcd();
while (1)
{
if (addr == 0)
{
delay(30);
ER += 1;
}
if (reducer == 0)
{
delay(30);
ER -= 1;
}
if (addt == 0)
{
delay(30);
ET += 1;
}
if (reducet == 0)
{
delay(30);
ET -= 1;
}