基于51单片机的DHT11温湿度传感器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Delay_10us()//进入函数3us
{
uchar i;//每条语句1us
i--;
i--;
i--;
i--;
i--;
i--;
}
void display(uchar th,uchar tl)
{
uchar ih=0,il=0,jh=0,jl=0,kh=0,kl=0;
基于
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit dth=P1^0;
sbit dula=P2^6;
sbit wela=P2^7;
uchar s8h,s8h_temp,s8l,s8l_temp,w8h,w8h_temp,w8l,w8l_temp,check8,check8_temp,flag=0;
ih=th/100;
jh=th%100/10;
kh=th%10;
il=tl/100;
jl=tl%100/10;
kl=tl%10;
P0=0xfe;
wela=1;
wela=0;
P0=table[ih];
dula=1;
dula=0;
delayms(2);
P0=0xfd;
wela=1;
wela=0;
P0=table[jh];
w8h=w8h_temp;
w8l=w8l_temp;
check8=check8_temp;
}
}
sd=s8h+(float)s8l/256;
wd=w8h+(float)w8l/256;
}
void main()
{
while(1)
{
getdth();
display(s8h,w8h);
}
}
wela=1;
wela=0;
P0=table[jl];
dula=1;
dula=0;
delayms(2);
P0=0xdf;
wela=1;
wela=0;
P0=table[kl];
du源自文库a=1;
dula=0;
delayms(2);
}
char com()
{
uchar i,j,temp,cdata=0;
for(i=0;i<8;i++)
{
flag=2;
while((!dth)&&(flag++)); //等待拉高
//Delay_10us();
//Delay_10us();
//Delay_10us();
j=3;while(j--);//延时30us
temp=0;
if(dth==1)temp=1;
flag=2;
while(dth&&(flag++));//等待拉低
//Delay_10us();
i=4;while(i--);//延时40us
dth=1;
if(dth!=1)//dth11响应
{
flag=2;while((!dth)&&(flag++)); //等待拉高
flag=2;while(dth&&(flag++));//等待读入数据
s8h_temp=com();
dula=1;
dula=0;
delayms(2);
P0=0xfb;
wela=1;
wela=0;
P0=table[kh+10];
dula=1;
dula=0;
delayms(2);
P0=0xf7;
wela=1;
wela=0;
P0=table[il];
dula=1;
dula=0;
delayms(2);
P0=0xef;
float sd,wd;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
void delayms(uint z)
s8l_temp=com();
w8h_temp=com();
w8l_temp=com();
check8_temp=com();
dth=1;
if((s8h_temp+s8l_temp+w8h_temp+w8l_temp)==check8_temp) //校验
{
s8h=s8h_temp;
s8l=s8l_temp;
//if(flag==1)break;
cdata<<=1;
cdata=cdata|temp;
}
return cdata;
}
void getdth()
{
uchar i;
dth=0;
delayms(18);//18ms
dth=1;
//Delay_10us();
//Delay_10us();
//Delay_10us();
相关文档
最新文档