写一个51的dht11驱动程序
时间: 2024-05-07 20:17:08 浏览: 51
好的,以下是一个简单的51的DHT11驱动程序:
```
#include <reg51.h>
sbit DHT11_PIN = P2^0;
unsigned char a = 0, b = 0, c = 0, d = 0;
void delay_us(unsigned int t)
{
while(t--);
}
void delay_ms(unsigned int t)
{
while(t--)
{
delay_us(1000);
}
}
void start()
{
DHT11_PIN = 0;
delay_ms(18);
DHT11_PIN = 1;
delay_us(30);
DHT11_PIN = 0;
}
void check_response()
{
delay_us(40);
if(DHT11_PIN == 0)
{
delay_us(80);
if(DHT11_PIN == 1)
{
delay_us(40);
}
}
}
unsigned char read_data()
{
for(int i=0;i<8;i++)
{
while(!DHT11_PIN);
delay_us(30);
if(DHT11_PIN == 0)
{
a = a<<1;
}
else
{
a = (a<<1) | 0x01;
}
while(DHT11_PIN);
}
return a;
}
void main()
{
start();
check_response();
d = read_data();
c = read_data();
b = read_data();
a = read_data();
P1 = a;
}
```
这个程序是一个简单的DHT11驱动程序,可以读取传感器的数据并将其输出到P1端口。在这个程序中,我们通过P2.0口连接到DHT11传感器,然后通过一些延迟和数据读取来获取传感器发送的温湿度数据。
阅读全文