DHT使用范例2.doc

上传人:b****1 文档编号:230284 上传时间:2022-10-07 格式:DOC 页数:4 大小:15KB
下载 相关 举报
DHT使用范例2.doc_第1页
第1页 / 共4页
DHT使用范例2.doc_第2页
第2页 / 共4页
DHT使用范例2.doc_第3页
第3页 / 共4页
DHT使用范例2.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DHT使用范例2.doc

《DHT使用范例2.doc》由会员分享,可在线阅读,更多相关《DHT使用范例2.doc(4页珍藏版)》请在冰豆网上搜索。

DHT使用范例2.doc

#include

#include

sbitled1=P2^0;

sbitled2=P2^1;

sbitled3=P2^2;

sbitdh=P2^6;//湿度传感器信号线

#defineucharunsignedchar

#defineuintunsignedint

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)

{

uchari;

i--;

i--;

i--;

i--;

i--;

i--;

}

voidCOM(void)

{

uchari;

for(i=0;i<8;i++)

{

FLAG=2;

while((!

dh)&&FLAG++);

Delay_10us();

Delay_10us();

Delay_10us();

U8temp=0;

if(dh)

{

U8temp=1;

}

FLAG=2;

while((dh)&&FLAG++);

//超时则跳出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();

Delay_10us();

Delay_10us();

Delay_10us();

//主机设为输入判断从机响应信号

dh=1;

//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行

if(!

dh)//T!

{

FLAG=2;

//判断从机是否发出80us的低电平响应信号是否结束

while((!

dh)&&FLAG++);

FLAG=2;

//判断从机是否发出80us的高电平,如发出则进入数据接收状态

while((dh)&&FLAG++);

//数据接收状态

COM();

RH_data_H_temp=comdata;

COM();

RH_data_L_temp=comdata;

COM();

T_data_H_temp=comdata;

COM();

T_data_L_temp=comdata;

COM();

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;

}

if(hum<0000000100101100&&hum>=0000000011001000)

{

led1=0;

led2=1;

led3=0;

}

if(hum>=0000000100101100)

{

led1=0;

led2=1;

led3=1;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1