历史上的今天
今天是:2024年11月10日(星期日)
2020年11月10日 | 51单片机控制的DHT11简易温湿度检测
2020-11-10 来源:51hei
简易温湿度测量仪,实现思路是通过温湿度传感器采集数据传送到最小系统上,并由最小系统对采集到的数据进行处理,随后发送到数码管或者液晶屏上进行显示,并对异常数据进行报警。
实验使用器材有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];
……………………
上一篇:51单片机风扇和测温程序
史海拾趣
|
去做人生的那棵树,关于工程师命运的感慨。 做为一个在嵌入式系统行业从业十年的工程师来说,为了生存与发展,现在也还一天天忙于奔命,连以前最常来的这个BBS论坛也有近一个多月没来,以下有些想法希望能与大家分享。希望能给刚入道的工程师或已经 ...… 查看全部问答> |
|
天嵌科技继推出Linux2.6.25完整移植教程之后,再推出TQ2440精品视频教程, 使你更容易上手,更快捷入门,更早进入嵌入式开发的殿堂。 欢迎大家到http://www.embedsky.net/technical/homePage.html 下载, 到http://www.embedsky.net/bbs 开题讨 ...… 查看全部问答> |
|
利用SOPC Builder生成系统时,需要添加一个SSRAM模块进去,但是QUARTUS II 7.2版本的SSRAM型号是CY7C1380C,而我的板子上面用到的是IS61LPS12836A_200TQLI,我查看了二者的datasheet,发现二者引脚完全一致,以及真值表也一样,请问能否用CY7C1380C ...… 查看全部问答> |
|
1 引言 本文介绍的音量控制IC为M62429,市面上有很多类似的产品,例如:FM62429、CD62429、CSC62429等。其实,掌握了一两种IC的编程方法,稍作改动就很容易移植到其它产品上。M62429是日本三菱公司的音量控制IC,音量调节范围是0~-83 ...… 查看全部问答> |
|
在wince 6.0下,相同的代码,用在两个环境下,s3c2442x的芯片 在一个环境下正常,在另一个环境下: IIC数据发送出去后,从设备不返回完成标志是什么原因?就是说CON寄存器的第5位没有被置一。 哪位大侠碰到过,指点下,不胜感激~… 查看全部问答> |
|
在一个51中有这样一个关于地址的宏定义,是cc2430里面的51: #define XREG (addr) ((unsigned char volatile __xdata *) 0 ) [addr] 请问这个宏定义什么意思? 上面的0又是什么意思呢?这是 ...… 查看全部问答> |




