DHT使用范例2Word文档格式.doc
《DHT使用范例2Word文档格式.doc》由会员分享,可在线阅读,更多相关《DHT使用范例2Word文档格式.doc(4页珍藏版)》请在冰点文库上搜索。
ucharFLAG,U8temp,T_data_H,T_data_L,RH_data_H,RH_data_L,checkdata,T_data_H_temp,T_data_L_temp;
ucharRH_data_H_temp,RH_data_L_temp,checkdata_temp,comdata,temp,hum;
voiddelay(uintj)
{
uchari;
for(;
j>
0;
j--)
{
for(i=0;
i<
27;
i++);
}
}
voidDelay_10us(void)
{
i--;
}
voidCOM(void)
uchari;
for(i=0;
8;
i++)
{
FLAG=2;
while((!
dh)&
&
FLAG++);
Delay_10us();
Delay_10us();
U8temp=0;
if(dh)
{
U8temp=1;
}
while((dh)&
//超时则跳出for循环
if(FLAG==1)break;
//判断数据位是0还是1
comdata<
<
=1;
//如果高电平高过预定0高电平值则数据位为1
comdata|=U8temp;
//0
}
ucharRH()
uintRH;
dh=0;
//主机拉低18ms
delay(5);
dh=1;
//总线由上拉电阻拉高主机延时20us
Delay_10us();
//主机设为输入判断从机响应信号
//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行
if(!
dh)//T!
{
FLAG=2;
//判断从机是否发出80us的低电平响应信号是否结束
while((!
FLAG=2;
//判断从机是否发出80us的高电平,如发出则进入数据接收状态
while((dh)&
//数据接收状态
COM();
RH_data_H_temp=comdata;
RH_data_L_temp=comdata;
T_data_H_temp=comdata;
T_data_L_temp=comdata;
checkdata_temp=comdata;
dh=1;
//数据校验
U8temp=(T_data_H_temp+T_data_L_temp+RH_data_H_temp+RH_data_L_temp);
if(U8temp==checkdata_temp)
{
RH_data_H=RH_data_H_temp;
RH_data_L=RH_data_L_temp;
T_data_H=T_data_H_temp;
T_data_L=T_data_L_temp;
checkdata=checkdata_temp;
RH_data_H<
=8;
RH=RH_data_H|RH_data_L;
}//fi
}//fi
returnRH;
voidmain()
while
(1)
hum=RH();
if(hum<
=0000000001100100)
{
led1=0;
led2=0;
led3=1;
}
if(hum>
0000000001100100&
hum<
=0000000011001000)
led1=1;
led2=1;
led3=0;
0000000100101100&
hum>
=0000000011001000)
=0000000100101100)
}