基于51单片机的温湿度检测系统

AT89C52+DHT11+LCD1602显示,文件包含完整实验报告,PCB板,原理图,源代码

 

大气温湿度检测

基于51单片机的大气温湿度检测系统

 

 

 

目录

1 实验背景 2

2 设计目的 2

3 设计要求 2

4 设计思路 2

5 设计方案 3

5.1 DHT11传感器的介绍: 3

5.1.2 DHT11电源引脚说明 3

5.1.3 数据时序 3

5.2 单片机数据采集硬件系统 4

5.3 电路模拟仿真 6

5.4 程序设计 6

6 实地采集数据及分析 9

6.1 数据采集 9

6.2 数据处理及分析 10

6.2.1 处理方法一——整体分布呈现 10

6.2.2 处理方法二——时间序列性 12

6.2.3 处理方法三——温湿度的相关性 13

7 总结 14

8 附录 14

8.1 主函数 15

 

 

 

实验背景

随着全球气候变化和城市化进程的加快,对大气环境的监测变得越来越重要。温湿度是大气环境的基本参数,对人类生活、农业生产以及气候变化研究都有着重要的影响。温湿度是生产生活中最重要的环境指标之一,不仅人需要在适宜的温湿度条件下保持良好的精神状态和敏捷的思维,食品、药品、各种仪器设备等都对环境温湿度有特殊的要求。本实验旨在通过设计和实施一套大气温湿度检测方案,收集相关数据,以便更好地理解和预测大气环境变化。

设计目的

1.学习了解DHT11温湿度传感器的工作原理。

2.学习掌握设计硬件电路以及PCB的制作。

3.学习了解使用AT89C51芯片以及51单片机最小系统的运用以及DHT11的数据传输。

设计要求

1. 阅读相关手册,熟悉掌握DHT11温湿度传感器的工作时序以及通信方式。

2. 设计的系统能正常测量温湿度,并能在LED模块时实显示。

设计思路

1.选取合适的温湿度传感器:本实验采用具有较高精度的DHT11温湿度传感器进行温湿采集,以确保数据的准确性。

2.设计合适的数据采集电路:使用以AT89C51芯片为核心电路的51单片机开发板作为数据采集器,实时读取传感器数据。

3.实验电路模拟仿真:使用Proteus电路模拟仿真软件对设计好的电路先进行仿真实验,在仿真完成后,即可通过PCB打板制作实现采集器。

4.程序设计:设计一个程序将AT89C51与DHT11传感器、LCD液晶显示器、蜂鸣器联系起来。

5.采集数据:利用设计好的采集器去校园不同点位,不同时间点对环境进行数据采集。

6.数据处理:完成数据采集后,使用作图法、列表法进行数据处理。

7.数据分析:使用MATLAB进行数据的后期处理和分析,提取有用信息。

8.总结:对数据进行总结分析。

设计方案

DHT11传感器的介绍:

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。

 

DHT11产品信息

DHT11电源引脚说明

DHT11的供电电压为3-5.5V。传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。

c591fb53898e4997bd79b4649be5a58f.png

引脚说明

数据时序

用户主机(MCU) 发送一次开始信号后,DHT11从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11发送响应信号,送出 40bit 的数据,并触发一次信号采集。信号发送如下图所示。

08c7b4bb29a1469ead848ba28a58ba95.png

数据时序图

单片机数据采集硬件系统

根据设计要求,本系统须由温湿度传感器DHT11、AT89C51单片机开发板、蜂鸣器和 LED 显示模块组成。系统大致框图如图4:

26105ca342b7438c809966ff7c71f755.png

 

系统框架

根据系统功能要求,本系统电路设计在Altium Designer软件设计功能电路以及PCB排版,功能电路如下图5, PCB板图如图6:

393ca3a8d2004fbf9245e04d18d7b367.png

 

系统电路

3331e2f9c44f4aec93f574b08e4ac3bc.png

 

PCB板

这里介绍一下:STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案;实验这个它来处理传感器以及显示温湿度完全是没有任何问题的。

电路模拟仿真

由于Altium Designer软件并不能给予仿真,所以本系统的仿真,我采用了Proteus仿真软件进行了仿真实验,仿真效果如下图7;仿真的作用是检测软件程序的运行效果以及调试程序。

6779d5dad2a64d53823cd221ae7f1730.png

 

仿真效果图

程序设计

在熟悉传感器工作原理、工作时序、传送方式等后,就可以去设计程序,让AT89C51与DHT11传感器之间进行通信,然后在LCD液晶显示器显示并能在到达条件后蜂鸣器能报警。程序设计的过程如下思维导图如图8:

c138bd2c95e74e6580f6ff7dd282bac9.png

 

 

系统程序设计总思路

当然如上思维导图只是大体框架以及简单流程,各个板块独立,在完成各个板块后,还需要这个主函数来让单片机运行起来,下图是我所编写主程序的流程图,其主要作用是建立AT89C51与DHT11之间的通信以及在LCD液晶显示器显示以及蜂鸣器报警。流程图如下:

23bd3fb6447943269ee088c6847aa1f4.png

 

主函数流程图

系统软硬件设计完成,设计完成之后,我们便去实验室去调试程序以及管脚连接。至此系统软硬件设计完成!

实地采集数据及分析

数据采集

数据的采集我采用定点分时采集,所谓定点就是选定校园里边的一个受人为影响较小的地点进行温湿度的采集,而分时就是分不同时间段进行数据采集,由于环境温湿度接触以及接触的时间足够长,DHT11传感器可以充分收集数据,所以我们采取安装传感器在指定地点,如下图是我们的实验地点以及检测设备:

9d91974dfc394f0cba94e2d09591ad00.jpeg

 

实地采集温度图

这里的分时我采用的是一天中的8:00、12:00和18:00进行采集,在这三个时间点分别进行温湿度的测量以及记录,原始数据记录表如下表1;需要注意的是温湿度的采集过程中,需要等DHT11温湿度传感器和周围环境达到平衡时再进行温湿度的读取,不然数据的误差性会很大。

大气温湿度检测数据

3480bcb68704441098954463075e62a9.jpg

 

原始数据表

我们采集了连续5天的温湿度,其中阴雨天较多,从上表可知,凡是湿度达到99.9%的要么就是大雾,要么就是下小雨,显然不能这么简单分析,所以下边我们就实验数据进行详细分析。

数据处理及分析

处理方法一——整体分布呈现

数据处理我采用了三种方法进行分析,方法一是3D直观图,从3D图中,我们可以直观看出这5天温度的起伏程度以及变化趋势,这个3D直观图是为了呈现出温度以及湿度独立的显示处理。温度3D直观图如图2;湿度3D直观图如图3。

 

67e265e614284ed896457888cd742cb9.jpg

 

3D温度图

 

 

cb295c15e74945d9ad3050c3b42aeb06.jpg

 

3D湿度图

3D直观图的横坐标分别为日期和一天的时间点分别为8:00,12:00以及18:00。

处理方法二——时间序列性

数据处理的方法二是时间序列分析,分析温湿度随时间的变化趋势,从图中可以看出这5天8:00和12:00温度的变化基本一致,而18:00的变化和前两个时间点的变化规律有所不同,不同的原因可能是和这5天的傍晚下雨。温度的总体趋势是在下降的,所以从时间序列来看,从23日——27日这5天的温度在下降。而从湿度的时间序列来看,23日——27日这5天的湿度都呈现出上升的趋势,注意的是其中湿度达到99.9%的时间点,天气是大雾或者下小雨,这从数据的准确性来看我们的测量温湿度的系统的准确的。其中温度的变化趋势如图3,湿度的变化趋势如图4。

cdeb20dc18d24c58a6afda652ecef7d4.jpg

 

 

温度变化趋势

4516e9b4f2134b44abbc95e4415a4db3.jpg

湿度变化趋势

处理方法三——温湿度的相关性

第3种数据分析方法是分析温湿度的相关性,作图方法采用Origin作图,采用双y轴呈现,左侧y轴是湿度轴,右侧y轴是温度图,而图中的蓝色柱状图表示湿度,橙色柱状图表示温度,如图5。

从整体柱状图的呈现来看,温度和湿度呈负相关,即温度越高,湿度越低,而且不难看出这5天湿度整体上升,而温度整体下降,从单一日期来看一天的温湿度变化,温度从上午开始上升,下午下降,图中早中晚的温度属中午最高。而且湿度恰恰相反,8:00和18:00的湿度要高于中午,这里的3月24日没有显示出这样的规律,原因在于24日这天是下雨天气,一直下着小雨,所以湿度一直在升高直至99.9%。

所以从实验的结果可以得出:温度和湿度呈现出负相关。

0386c8ada8614672a8f115be980a4e31.jpg

温湿度相关性图

总结

在本次设计中,我们所要做的是大气温湿度检测系统,在按照老师讲义要求的前提下我还新增了温度报警模和温馨提示语,我们实验电路的总体功能主要分为温湿度传感器模块感受温度变化然后通过单片机程序显示到LCD液晶显示屏,在设计之初,我们首先了解所要用到的必备资料,比如DHT11用户手册,ATC89C52原理图等等,在设计时,我们先设计好温湿度传感器模块,其中包括了DHT11初始化时序图、读取数据的时序图等等都要一步一步设计,切记不要慌不要乱,否则可能导致程序运行不了,在程序的调试过程中,主要注意的就是时间延时的设置,是实物调试成功与否的关键之处。

在本次的实验中,我们不仅学到了如何设计电路、如何进行PCB电路打板设计以及设计环境类调查报告的撰写,其中我还另外学会了仿真软件Proteus和专业的绘图软件Origin。通过此次的创新实践课程,我们收益良多。

附录

主函数

#include "public.h"

#include "lcd1602.h"

#include "dht11.h"

#include <intrins.h>

sbit fft=P2^5;

 

void main()

 u8 temp=0,humi=0;

 u8 i=0;

 u8 temp_buf[3],humi_buf[3];

 

 lcd1602_init();

 while(DHT11_Init()) 

 {

  lcd1602_show_string(0,0,"Error");  

 }

 

 while(1)

 {

  i++;

  if(i%200==0)

  {

   DHT11_Read_Data(&temp,&humi);

   if(temp>=30)

   {

   temp_buf[0]=temp/10+0x30; 

   temp_buf[1]=temp%10+0x30;

   temp_buf[2]='\0';

   lcd1602_show_string(6,0,temp_buf);

 

   humi_buf[0]=humi/10+0x30; 

   humi_buf[1]=humi%10+0x30;

   humi_buf[2]='\0';

   lcd1602_show_string(6,1,humi_buf);

   lcd1602_show_string(0,0,"Temp: *C ZYJW");

     lcd1602_show_string(0,1,"Humi: %RH DHS");

    fft=0;

    delay_ms(50);

    fft=0;

    delay_ms(1);

   }

   else

   {

   temp_buf[0]=temp/10+0x30; 

   temp_buf[1]=temp%10+0x30;

   temp_buf[2]='\0';

   lcd1602_show_string(6,0,temp_buf);

 

   humi_buf[0]=humi/10+0x30; 

   humi_buf[1]=humi%10+0x30;

   humi_buf[2]='\0';

   lcd1602_show_string(6,1,humi_buf);

   lcd1602_show_string(0,0,"Temp: *C ZYBN");

     lcd1602_show_string(0,1,"Humi: %RH DHS");

    delay_ms(1);

   }    

  }

   

  delay_ms(1);  

 }

}

 

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值