51单片机温湿度传感器dht11完整代码
时间: 2023-05-12 12:00:19 浏览: 1397
DHT11是一款低成本数字温湿度传感器,其数据传输格式为单线总线,非常适合于各种物联网项目的应用。
以下是51单片机温湿度传感器DHT11的完整代码:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DHT11=P3^6;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar hum,temp;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void waitting(void)
{
uchar i;
DHT11=0;
delay(80);
DHT11=1;
delay(30);
i=DHT11;
while((DHT11==1)&&(i<100))
{
delay(1);
i++;
}
}
uchar read_byte(void)
{
uchar i,dat;
dat=0;
for(i=0;i<8;i++)
{
while(DHT11==0);
delay(3);
dat<<=1;
if(DHT11==1)
dat|=1;
while(DHT11==1);
}
return dat;
}
void read_DHT11(void)
{
waitting();
hum=read_byte();
hum<<=8;
hum|=read_byte();
temp=read_byte();
temp<<=8;
temp|=read_byte();
read_byte();
}
void display(void)
{
P0=table[hum/10];
P2=0xfe;
delay(5);
P0=table[hum%10];
P2=0xfd;
delay(5);
P0=table[temp/10];
P2=0xfb;
delay(5);
P0=table[temp%10];
P2=0xf7;
delay(5);
}
void main(void)
{
while(1)
{
read_DHT11();
display();
}
}
此代码由4个函数组成:
延迟函数 delay()
等待函数 waitting()
读取一个字节的数据 read_byte()
读取温湿度数据并显示 display()
其中,主函数中实现了无限循环,反复调用读取温湿度数据和显示数据的函数,从而实时地获取并显示温湿度数据。
阅读全文