#ifndef _DHT11_H__ //防止重载
#define _DHT11_H__
sbit p33= P3^7; //温度数据线,这里使用的是51单片机P37,根据个人情况修改
void Delay(U16 j) //100us延时
{
U8 i;
for(;j》0;j--)
{
for(i=0;i《27;i++);
}
}
void Delay_10us(void) //进入函数3us
{
U8 i; //1us
i--; //1us
i--;
i--;
i--;
i--;
i--;
}
void COM(void) //串行读一个字节数据
{
U8 i;
for(i=0;i《8;i++)
{
U8FLAG=2;
while((!p33)&&U8FLAG++);//自加254次 默认执行下面程序 50us低电平结束判断
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0; //判断数据位是0还是1 如果高电平高过预定0高电平值则数据位为 1
if(p33)U8temp=1;
U8FLAG=2;
while((p33)&&U8FLAG++); //等待0/1高电平信号结束
//超时则跳出for循环
// if(U8FLAG==1)break; //经历255us 在这里不会执行
U8comdata《《=1;
U8comdata|=U8temp;
}
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部1条评论
快来发表一下你的评论吧 !