51单片机dht11代码
时间: 2023-11-09 21:08:49 浏览: 64
以下是基于51单片机的DHT11温湿度传感器示例代码:
```
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit DHT11 = P2^1;
uchar dat[5];
void delay(uint z) {
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void start() {
DHT11 = 0;
delay(20);
DHT11 = 1;
delay(30);
while(DHT11);
delay(80);
while(!DHT11);
delay(50);
}
uchar read() {
uchar i,j,dat;
for(j=0;j<8;j++) {
while(!DHT11);
delay(30);
if(DHT11 == 0)
dat &= ~(1<<(7-j));
else
dat |= (1<<(7-j));
while(DHT11);
}
return dat;
}
uchar check() {
uchar i,sum;
sum = dat[0] + dat[1] + dat[2] + dat[3];
if(sum == dat[4])
return 1;
else
return 0;
}
void main() {
uchar a,b;
while(1) {
start();
for(b=0;b<5;b++)
dat[b] = read();
if(check()) {
printf("Temperature = %d.%d C\n",dat[2],dat[3]);
printf("Humidity = %d.%d %%\n",dat[0],dat[1]);
}
else
printf("Error!\n");
delay(1000);
}
}
```
具体使用方法:
1. 将DHT11的VCC引脚连接到单片机的5V,GND引脚连接到单片机的GND,DATA引脚连接到单片机的P2.1。
2. 将以上代码保存为.c文件,并用Keil等软件进行编译和下载到单片机中。
3. 在串口调试助手等工具中调试,可以看到温湿度数据的输出。
注意:在读取温湿度传感器数据时,需要保证DHT11引脚的操作时间和延时时间准确无误,否则可能出现数据不准确或读取失败的情况。
阅读全文