DHT11湿度传感器在MSP430f5529下的驱动以P2.0为端口的程序
时间: 2024-02-24 20:57:24 浏览: 64
以下是DHT11湿度传感器在MSP430f5529下以P2.0为端口的驱动程序:
```c
#include <msp430.h>
#define DHT11 BIT0 // P2.0
void delay_us(unsigned int us)
{
while(us--)
{
__delay_cycles(1);
}
}
void DHT11_start()
{
P2DIR |= DHT11; // P2.0输出
P2OUT &= ~DHT11; // 输出低电平
delay_us(18000); // 等待18ms
P2OUT |= DHT11; // 输出高电平
delay_us(40); // 等待40us
P2DIR &= ~DHT11; // P2.0输入
}
unsigned char DHT11_read_byte()
{
unsigned char i, byte = 0;
for(i = 0; i < 8; i++)
{
while(!(P2IN & DHT11)); // 等待高电平
delay_us(30); // 等待30us
if(P2IN & DHT11)
{
byte |= (0x80 >> i); // 收到数据1
}
while(P2IN & DHT11); // 等待低电平
}
return byte;
}
void DHT11_read(unsigned char *hum, unsigned char *tem)
{
unsigned char buf[5], i;
DHT11_start(); // 启动DHT11
if(P2IN & DHT11) // 等待DHT11响应
{
return;
}
while(!(P2IN & DHT11));
while(P2IN & DHT11);
for(i = 0; i < 5; i++) // 读取40位数据
{
buf[i] = DHT11_read_byte();
}
if((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4]) // 校验数据
{
*hum = buf[0];
*tem = buf[2];
}
}
```
使用方法:
```c
unsigned char hum, tem;
DHT11_read(&hum, &tem); // 读取湿度和温度数据
```
阅读全文