×
单片机 > 单片机程序设计 > 详情

51单片机控制的DHT11简易温湿度检测

发布时间:2021-11-13 发布时间:
|

简易温湿度测量仪,实现思路是通过温湿度传感器采集数据传送到最小系统上,并由最小系统对采集到的数据进行处理,随后发送到数码管或者液晶屏上进行显示,并对异常数据进行报警。


实验使用器材有DHT11温湿度传感器、IAP15W4K58S4最小系统、四位数码管、蜂鸣器以及发光二极管。通过最小系统发送开始信号使DHT11开始工作并采集数据判断DHT11是否正常工作,若DHT11正常工作,将采集数据进行校验,若校验结果正确,将其保存,并通过P1口显示到数码管上。随后判断数据是否超过预警值,如超过,将P2.4口电位拉高,使蜂鸣器示警,并让LED灯熄灭来进行警示。电路使用一个数码管对温湿度进行循环显示,相比较于使用2个数码管进行显示和使用液晶屏,成本和操作难度都有所降低。


实现原理图如图所示:

单片机源程序如下:

#include "STC15.h"

#include "stdio.h"

#include "Delay.h"

#include "uart.h"

#include "dht11.h"

unsigned char temp[2],humi[2];

unsigned char flag;

unsigned char code Num[16]={0x3F,

0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

int m,n,p,q;

long int i;


void main(void)

{

P0M1 = 0; P0M0 = 0; //设置为准双向口

P1M1 = 0; P1M0 = 1; //设置为准双向口

P2M1 = 0; P2M0 = 1; //设置为准双向口

P3M1 = 0; P3M0 = 0; //设置为准双向口

P4M1 = 0; P4M0 = 0; //设置为准双向口

P5M1 = 0; P5M0 = 0; //设置为准双向口

P6M1 = 0; P6M0 = 0; //设置为准双向口

P7M1 = 0; P7M0 = 0; //设置为准双向口

while(1)

{

flag=DHT11_Read_Data(temp,humi);

if(flag==0) //读取成功

{

m=(int)temp[0]/10;

n=(int)temp[0]%10;

p=(int)temp[1]/10;

i=100;

if(temp[0]>50||humi[0]>90)

{

P24=1;

}

else P24=0;

while(i--)

{

P23=1;

P1=~Num[12];

delay_ms(10);

P23=0;

P20=1;//P20十位供电

P1=~Num[m];//P1显示

Delay1ms();

P20=0;

P21=1;//P21个位供电

P1=~(Num[n]+0x80);

delay_ms(10);

P21=0;

P22=1;//P22十分位供电

P1=~Num[p];

delay_ms(10);

P22=0;

}

m=(int)humi[0]/10;

n=(int)humi[0]%10;

p=(int)humi[1]/10;

q=(int)humi[1]%10;

i=100;

while(i--)

{

P20=1;//P20十位供电

P1=~Num[m];//P1显示

Delay1ms();

P20=0;

P21=1;//P21个位供电

P1=~(Num[n]+0x80);

delay_ms(10);

P21=0;

P22=1;//P22十分位供电

P1=~Num[p];

……………………



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计