51单片机数字湿度计代码
时间: 2024-01-22 13:17:22 浏览: 83
以下是一个基于51单片机的数字湿度计代码:
```
#include <reg51.h>
#include <stdio.h>
#define DHT11_PIN P2_0
sbit DHT11_PIN = P2^0;
void delay_us(unsigned int us)
{
while(us--)
{
_nop_();
}
}
void delay_ms(unsigned int ms)
{
while(ms--)
{
delay_us(1000);
}
}
void send_start_signal()
{
DHT11_PIN = 0;
delay_ms(18);
DHT11_PIN = 1;
delay_us(30);
}
unsigned char read_byte()
{
unsigned char byte = 0;
for(int i=0; i<8; i++)
{
while(!DHT11_PIN);
delay_us(30);
if(DHT11_PIN)
{
byte |= (1 << (7-i));
}
while(DHT11_PIN);
}
return byte;
}
void main()
{
unsigned char humi = 0, temp = 0, checksum = 0;
while(1)
{
send_start_signal();
if(!DHT11_PIN)
{
delay_us(80);
if(DHT11_PIN)
{
delay_us(80);
humi = read_byte();
temp = read_byte();
checksum = read_byte();
if(humi + temp == checksum)
{
printf("Humidity: %d%%\n", humi);
printf("Temperature: %dC\n", temp);
}
}
}
delay_ms(2000);
}
}
```
这个代码使用了DHT11传感器来测量温度和湿度。在主函数中,它会不断地发送开始信号,然后读取传感器返回的数据并计算校验和。如果校验和正确,就会输出湿度和温度值。注意:这个代码使用了printf函数,因此需要在编译时包含对应的库文件。
阅读全文