找回密码
 注册
关于网站域名变更的通知
查看: 220|回复: 2
打印 上一主题 下一主题

单片机DHT11温湿度传感器实战 小型气象站源程序

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-28 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
小型气象站

一、实验目的

1. 了解温湿度传感器工作原理

2. 了解光强大气压力传感器工作原理

3. 学会使用DHT11温湿度传感器检测环境温湿度

4. 学会使用光敏电阻检测环境光强度

5. 会使用1602液晶显示模块显示气象参数

二、实验设备

1. 51单片机实验板,以及电源线、下载线、杜邦线等

2. DHT11温湿度传感器、光敏电阻、PCF8591数模转换模块、1602液晶显示模块

三、实验项目要求

请设计一个小型的气象监测站,检测温湿度、光强等参数,并显示在1602液晶显示屏上。

1602液晶显示示例:

请按要求设计一个可行方案,包括设备选型、系统连接图等,并编写程序实现上述功能。

四、实验步骤

1. 设计方案

①方案:采用dht11温湿度传感器来采集温湿度,光敏电阻来采集光强情况,然后把检测到的信息送给单片机处理,并在1602液晶显示屏上显示。

②设备选型:

1、DHT11温湿度传感器

DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感

器。它应用专用的数 字模块采集技术和温湿度传感技术,

确保产品具有枀高的可靠性与卓越的长期稳定性。传感器

包括一个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接                                      

接线说明

1 VCC      外接3.3V-5V

2 GND      外接GND               

3 DATA     小板开关数字量输出接口接单片机IO 口

  • 光敏传感器  E6 V  L2 d0 ?% h* }, a0 R0 H/ [

PCF8591是一个单独供电、低功耗、

具有I2C总线接口的8位A/D及D/A 转

换器。它有4路A/D转换输入(A/D转

换为逐次比较型),1路D/A 模拟输

出,电源电压典型值为5V。采用8位的DAC时,分辨率为5V/256=19.5mV。

3、TX51单片机实验板(带LCD1602、蜂鸣器)

③系统连接图:

2. 编写源程序,编译,生成hex文件

源程序:

//本工程基于普中单片机开发板,晶振12MHz
  • #include <config.h>
  • #include <dht11.h>
  • #include <PCF8591.h>
  • #include <I2C.h>
  • #include <1602.h>
  • #include <led.h>
  •               float value;
  •               u8 print1[20];
  •               u8 DATA[3];
  •                             u8 RHum=0,Temp=0;
  •               u8 print[20];
  • void delay_us(u8 n)//微秒延时
  • {
  •     while(--n);
  • }
  • void delay_ms(u16 x)//毫秒延时函数
  • {u16 i,j;
  • for(i=0;i<x;i++)
  •     for(j=0;j<115;j++);
  • }
  • void main()
  • {
  •               u8 i;
  •               TMOD=TMOD&0x0F;//清除定时器T1原有工作方式,T0工作方式不变
  •               TMOD=TMOD|0xA0;//设置定时器T1为工作方式2,硬启动;T0工作方式不变
  •               TL1=0x48;//晶振11.0592MHz,定时200us对应计数值184,计数初值72
  •               TH1=0x48;//自动重装初值
  •               EA=1 ;              //总中断允许
  •               ET1=1 ;  //T1中断允许
  •               TR1=1;
  •               LCD1602_Init();              //1602初始化
  •               while(1)
  •               {
  •                             DATA[0]=Pcf8591_AD(0);//通道0:光敏
  •                             DATA[1]=Pcf8591_AD(1);//通道1:热敏
  •                             DATA[2]=Pcf8591_AD(3);//通道3:可调电阻
  •                             value=(float)DATA[1]*5/256;
  •                             value=100/value;
  •                             sprintf(print1,"light:%.1f",value);
  •                             LCD1602_disstr(print1,1,0);//输出到1602液晶显示屏
  •               }
  • }
  • void ET1_INT() interrupt 3              //              T1中断服务程序
  • //
  • {
  •                             u16 c;
  •                             c++;
  •               //中断次数加1,每200us中断一次,中断5000次即为1秒
  • if(c==750){
  •                             DHT11_receive(&RHum,&Temp); //读取传感器传送过来的温湿度数据
  •                             sprintf(print,"Temp:%bd;RHum:%bd%%",Temp,RHum);
  •                             LCD1602_disstr(print,0,0);//输出到1602液晶显示屏
  • }
  • }8 q/ H& d/ q; ]* f. L3 e

, l1 ^$ d0 V6 Z8 H复制代码
; S6 _* f! }! E6 Z  n" E5 e3 X( q: w8 I% p- A/ Q. F4 z+ s% T
3. 将hex文件下载到实验板运行,描述实验现象
2 K1 _$ Q3 H; O
$ r( B* s% I6 c6 ]3 p5 W实验现象:
# D2 V4 ?( K* s2 F: b; E4 K; O$ d1 U$ ~5 [' ?& L% V1 u+ r
DHT11温湿度,光照强度等情况分别显示在单片机的1602液晶显示屏上。/ N/ G/ j0 j5 D2 D1 b

1 q6 E- X6 n0 L- f) W' M3 u0 {
6 D) s* f% g! g9 ~4 T实验总结  i) P& g$ h0 B: a( p, X9 T
通过本次实验知道了如何使用DHT11温湿度传感器,学会使用光敏电阻检测环境光强度,也学会使用1602液晶显示模块显示气象参数。

0 t% w1 C8 C4 O* ?) ^# C% D* N

该用户从未签到

2#
发表于 2022-6-28 11:09 | 只看该作者
学习学习。啊哈哈

该用户从未签到

3#
发表于 2022-6-28 13:07 | 只看该作者
学习学习。||ヽ(* ̄▽ ̄*)ノミ|Ю
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-12 12:25 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表