DHT11湿度温度四数码管显示μvision4代码实现
时间: 2023-06-17 19:05:20 浏览: 251
以下是DHT11湿度温度传感器和四数码管显示的μVision4代码实现:
```
#include <reg52.h>
#define DHT11_DATA P1_0
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P2^5;
unsigned char code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
}; //共阴数码管0~9的编码
unsigned char RH,TEMP; //湿度和温度
unsigned char T_DATA_H,T_DATA_L,RH_DATA_H,RH_DATA_L,checkdata; //DHT11数据
void delay(unsigned int time) //延时函数
{
unsigned int i,j;
for (i=0;i<time;i++)
{
for (j=0;j<110;j++);
}
}
void delay_us(unsigned int time) //微秒延时函数
{
unsigned int i;
for (i=0;i<time;i++);
}
void start_work() //DHT11开始工作
{
unsigned char i;
DHT11_DATA=0; //主机将总线拉低至少18ms
delay(20);
DHT11_DATA=1; //发送起始信号,总线由上拉电阻拉高
delay_us(20); //主机延时20~40us
DHT11_DATA=0; //主机将总线拉低80us
delay_us(80);
DHT11_DATA=1; //主机将总线拉高,等待DHT11响应信号
while(DHT11_DATA);
while(!DHT11_DATA);
while(DHT11_DATA);
for (i=0;i<8;i++) //接收湿度整数部分数据
{
while(!DHT11_DATA);
delay_us(40);
RH_DATA_H<<=1;
RH_DATA_H|=DHT11_DATA;
while(DHT11_DATA);
}
for (i=0;i<8;i++) //接收湿度小数部分数据
{
while(!DHT11_DATA);
delay_us(40);
RH_DATA_L<<=1;
RH_DATA_L|=DHT11_DATA;
while(DHT11_DATA);
}
for (i=0;i<8;i++) //接收温度整数部分数据
{
while(!DHT11_DATA);
delay_us(40);
T_DATA_H<<=1;
T_DATA_H|=DHT11_DATA;
while(DHT11_DATA);
}
for (i=0;i<8;i++) //接收温度小数部分数据
{
while(!DHT11_DATA);
delay_us(40);
T_DATA_L<<=1;
T_DATA_L|=DHT11_DATA;
while(DHT11_DATA);
}
for (i=0;i<8;i++) //接收校验码
{
while(!DHT11_DATA);
delay_us(40);
checkdata<<=1;
checkdata|=DHT11_DATA;
while(DHT11_DATA);
}
}
void main()
{
unsigned char i;
while(1)
{
start_work(); //DHT11开始工作
RH=RH_DATA_H; //湿度整数部分
TEMP=T_DATA_H; //温度整数部分
LSA=0; //选中第一位数码管
P0=table[TEMP/10]; //写入温度整数位
delay(5);
LSA=1; //关闭第一位数码管
LSB=0; //选中第二位数码管
P0=table[TEMP%10]; //写入温度小数位
delay(5);
LSB=1; //关闭第二位数码管
LSC=0; //选中第三位数码管
P0=table[RH/10]; //写入湿度整数位
delay(5);
LSC=1; //关闭第三位数码管
LSA=0; //选中第四位数码管
P0=table[RH%10]; //写入湿度小数位
delay(5);
LSA=1; //关闭第四位数码管
}
}
```
注意事项:
1. 本代码中使用的是STC89C51单片机,如果使用其他型号的单片机需要修改对应的IO端口。
2. DHT11需要一定的时间来完成数据读取和校验,因此需要适当的延时,否则会出现读取错误。
3. 数码管显示的部分需要根据具体的电路连接进行修改。
阅读全文