基于51单片机的DHT11湿度1602显示c程序Word格式文档下载.doc
《基于51单片机的DHT11湿度1602显示c程序Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《基于51单片机的DHT11湿度1602显示c程序Word格式文档下载.doc(4页珍藏版)》请在冰豆网上搜索。
![基于51单片机的DHT11湿度1602显示c程序Word格式文档下载.doc](https://file1.bdocx.com/fileroot1/2022-11/2/9af8cd9a-9cea-4b08-a1ee-7fc5c36e31d0/9af8cd9a-9cea-4b08-a1ee-7fc5c36e31d01.gif)
{
uchari;
i--;
}
voidDelay2(ucharms)
{//延时子程序
uchari;
while(ms--)
{
for(i=0;
i<
250;
i++);
}
voidmDelay(uchardelay)
uchari;
for(;
delay>
0;
delay--)
{
for(i=123;
i>
i--);
}
voiddelay(uintz)
for(x=z;
x>
x--)
for(y=110;
y>
y--);
voidwrite_com(ucharcom)
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
lcden=0;
voidinit()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
voidwrite_data(uchardat)
lcdrs=1;
P0=dat;
voidstart(void)//开始信号
DHT11_IO=1;
Delay1();
DHT11_IO=0;
Delay2(20);
//>
18ms
//20-40us
ucharreceive_byte(void)//接收一个字节
uchari,temp,count,data_byte;
for(i=0;
i<
8;
i++)
{
while(!
DHT11_IO);
//等待50us低电平结束
temp=0;
Delay1();
Delay1();
if(DHT11_IO==1)temp=1;
while(DHT11_IO);
data_byte<
<
=1;
data_byte|=temp;
}
returndata_byte;
voidreceive()//接收数据
ucharcheck,num_check,HZ,HX,WZ,WX;
start();
//开始信号
if(!
DHT11_IO)//读取DHT11响应信号
//DHT11高电平80us是否结束
HZ=receive_byte();
HX=receive_byte();
WZ=receive_byte();
WX=receive_byte();
check=receive_byte();
DHT11_IO=0;
//拉低延时50us
DHT11_IO=1;
num_check=HZ+HX+WZ+WX;
if(num_check=check)
{
check=num_check;
}
write_data(table[HZ/10]);
write_data(table[HZ%10]);
write_data('
.'
);
write_data(table[HX/10]);
write_data(table[HX%10]);
write_data('
R'
H'
%'
// write_com(0x80+0x40);
// write_data(table[WZ/10]);
// write_data(table[WZ%10]);
// write_data('
// write_data(table[WX/10]);
// write_data(table[WX%10]);
//write_data('
T'
voidmain()
init();
while
(1)
receive();