找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4499|回复: 3
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:873526 发表于 2021-1-5 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小型气象站

一、实验目的

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 口

  • 光敏传感器

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
  1. #include <config.h>
  2. #include <dht11.h>
  3. #include <PCF8591.h>
  4. #include <I2C.h>
  5. #include <1602.h>
  6. #include <led.h>
  7.               float value;
  8.               u8 print1[20];              
  9.               u8 DATA[3];
  10.                             u8 RHum=0,Temp=0;
  11.               u8 print[20];
  12. void delay_us(u8 n)//微秒延时
  13. {
  14.     while(--n);
  15. }

  16. void delay_ms(u16 x)//毫秒延时函数
  17. {u16 i,j;
  18. for(i=0;i<x;i++)
  19.     for(j=0;j<115;j++);
  20. }

  21. void main()
  22. {
  23.               u8 i;
  24.               TMOD=TMOD&0x0F;//清除定时器T1原有工作方式,T0工作方式不变
  25.               TMOD=TMOD|0xA0;//设置定时器T1为工作方式2,硬启动;T0工作方式不变

  26.               TL1=0x48;//晶振11.0592MHz,定时200us对应计数值184,计数初值72
  27.               TH1=0x48;//自动重装初值
  28.             
  29.               EA=1 ;              //总中断允许
  30.               ET1=1 ;  //T1中断允许
  31.               TR1=1;
  32.               LCD1602_Init();              //1602初始化
  33.               while(1)
  34.               {
  35.                             DATA[0]=Pcf8591_AD(0);//通道0:光敏
  36.                             DATA[1]=Pcf8591_AD(1);//通道1:热敏
  37.                             DATA[2]=Pcf8591_AD(3);//通道3:可调电阻
  38.                             value=(float)DATA[1]*5/256;
  39.                             value=100/value;
  40.                             sprintf(print1,"light:%.1f",value);
  41.                             LCD1602_disstr(print1,1,0);//输出到1602液晶显示屏
  42.                                                                                       
  43.               }
  44. }
  45. void ET1_INT() interrupt 3              //              T1中断服务程序
  46. //
  47. {
  48.                             u16 c;
  49.                             c++;
  50.               //中断次数加1,每200us中断一次,中断5000次即为1秒
  51. if(c==750){
  52.                             DHT11_receive(&RHum,&Temp); //读取传感器传送过来的温湿度数据
  53.                            
  54.                             sprintf(print,"Temp:%bd;RHum:%bd%%",Temp,RHum);
  55.                             LCD1602_disstr(print,0,0);//输出到1602液晶显示屏
  56. }
  57. }
复制代码

3. 将hex文件下载到实验板运行,描述实验现象

实验现象:

DHT11温湿度,光照强度等情况分别显示在单片机的1602液晶显示屏上。


实验总结
通过本次实验知道了如何使用DHT11温湿度传感器,学会使用光敏电阻检测环境光强度,也学会使用1602液晶显示模块显示气象参数。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:496636 发表于 2022-6-24 18:01 | 只看该作者
#include <config.h>
#include <dht11.h>
#include <PCF8591.h>
#include <I2C.h>
#include <1602.h>
#include <led.h>
以上的文件呢?
回复

使用道具 举报

板凳
ID:67185 发表于 2022-11-30 10:07 | 只看该作者
要是有完整文件就好啦!
回复

使用道具 举报

地板
ID:824664 发表于 2023-3-14 22:55 | 只看该作者
思路全面完整,好好学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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