51单片机dht11代码
时间: 2023-11-06 19:08:36 浏览: 13
以下是51单片机使用DHT11传感器的示例代码:
```
#include <reg51.h>
#define DHT11_PIN P1_0
sbit DHT11_PIN = P1^0; // 定义DHT11引脚
unsigned char humidity, temperature; // 湿度和温度变量
void delay_us(unsigned int us) { // 微秒级延时函数
while(us--);
}
void delay_ms(unsigned int ms) { // 毫秒级延时函数
while(ms--) {
delay_us(1000);
}
}
void wait_DHT11_response(void) { // 等待DHT11响应
unsigned char i = 0;
DHT11_PIN = 0;
delay_ms(20);
DHT11_PIN = 1;
delay_us(30);
while(DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
if(i >= 100) {
printf("DHT11响应超时!");
}
i = 0;
while(!DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
if(i >= 100) {
printf("DHT11响应超时!");
}
i = 0;
while(DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
if(i >= 100) {
printf("DHT11响应超时!");
}
}
unsigned char read_DHT11_data(void) { // 读取DHT11数据
unsigned char i, j;
for(j = 0; j < 8; j++) {
i = 0;
while(!DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
delay_us(30);
if(DHT11_PIN) {
humidity |= (1 << (7 - j));
}
i = 0;
while(DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
}
for(j = 0; j < 8; j++) {
i = 0;
while(!DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
delay_us(30);
if(DHT11_PIN) {
temperature |= (1 << (7 - j));
}
i = 0;
while(DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
}
unsigned char check_sum = 0;
for(j = 0; j < 8; j++) {
i = 0;
while(!DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
delay_us(30);
if(DHT11_PIN) {
check_sum |= (1 << (7 - j));
}
i = 0;
while(DHT11_PIN && i < 100) {
delay_us(1);
i++;
}
}
if(check_sum == (humidity + temperature)) {
return 1;
} else {
return 0;
}
}
void main() {
while(1) {
humidity = 0;
temperature = 0;
wait_DHT11_response();
if(read_DHT11_data()) {
printf("湿度:%d %%RH\n", humidity);
printf("温度:%d ℃\n", temperature);
} else {
printf("DHT11数据校验失败!");
}
delay_ms(2000);
}
}
```
注意:以上代码仅供参考,实际使用时需要根据自己的需求进行适当的修改。同时,由于各个单片机厂家的编译器可能存在差异,可能需要对代码进行一些微调才能成功编译。
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)