基于单片机室内空气质量监控系统设计

来源:成考 发布时间:2021-01-05 点击:

  目

 录 摘

 要 ................................................................................................................... I Abstract .................................................................................................................... II 引

 言 .................................................................................................................. 1 1 控制系统设计 ...................................................................................................... 3 1.1 方案选择 ..................................................................................................... 3 1.2 系统控制原理 ............................................................................................. 4 2 系统硬件设计 ....................................................................................................... 5 2.1 单片机的选择与设计 ................................................................................. 5 2.2 温湿度模块设计 ......................................................................................... 6 2.3 甲醛采集模块设计 ..................................................................................... 8 2.4 显示器模块设计 ......................................................................................... 9 2.5 按键模块设计 ........................................................................................... 10 2.6 报警模块设计 ........................................................................................... 11 2.7 加湿及风扇模块设计 ............................................................................... 11 3 系统软件设计 ..................................................................................................... 13 3.1 总流程方案设计 ....................................................................................... 13 3.2 温湿度获取的软件设计 ........................................................................... 14 3.3 液晶屏 LCD1602 的软件设计 ................................................................. 15 4 系统调试 ............................................................................................................. 13 4.1 硬件调试 ................................................................................................... 16 4.2 软件调试 ................................................................................................... 16 结

 论 ................................................................................................................ 17 参考文献 ................................................................................................................ 18 附录 1 原理图 ....................................................................................................... 20 附录 2 源程序清单 ............................................................................................... 21 致

 谢 ................................................................................................................ 31

 本科论文

  摘

 要

 室内的温度和湿度是两种最基本的环境参数,与人们的生活环境息息相关,监控温湿度可以更好地控制我们的生活环境错误 ! 未找到引用源。

 。而甲醛是一种原生质毒物,对人体健康的危害具有长期性、潜伏性、隐蔽性等特点,它无处不在,不仅在新装修的家里也在各种的生产车间,因此为了人们的身体健康设计了一款基于单片机的温湿度及甲醛浓度监控系统 [1][1] 。

 本设计利用单片机控制功能结合传感器检测功能,提出一种以单片机为主控单元的空气质量监控系统。它的主要功能实现是通过温湿度传感器进行检测,并使数据显示在 LCD 屏上 [3] 。此设计通过按键设置温湿度和甲甲醛浓度的限值。低于湿度设定值时启动雾化片实现加湿功能,高于温度设定值蜂鸣器报警。当甲醛浓度超出标准值时控制风扇转动保持车间内空气流通,减少甲醛浓度。最后结合软件模块设计,利用代码对硬件进行驱动,经软硬件实物调试后,从而实现本设计功能的执行和控制。

 本设计不仅能够监控车间温湿度的情况,还可以改善人们在车间长期工作导致的健康问题。本系统设计遵守体积小,质量轻,性价比高的原则,大大提高了轮胎的生产质量和工人的生活质量,这对于生产车间空气质量的研究有着很大的意义将进一步推动目前轮胎工业的进步和发展。

 关键词:温湿度传感器; 单片机; 甲醛浓度

 本科论文

  Abstract

 Indoor temperature and humidity are two basic environmental parameters, which are closely related to people"s living environment错误 ! 未找到引用源。

 . Measuring temperature and humidity can better control our living environment. And formaldehyde is a kind of protoplasm poison, which has the characteristics of long-term, latent and concealed. It is everywhere, not only in the newly decorated home but also in a variety of production workshops. So design a temperature and humidity based on the MCU and formaldehyde concentration monitoring system for peoples’ health [1] . This design uses a single-chip microcomputer control function combined with the sensor detection function to propose an air quality monitoring system with a single-chip microcomputer as the main control unit. The function realization is to detect through the temperature and humidity sensor, and make the data displayed on the LCD screen [3] . This design sets the limits of temperature, humidity and formaldehyde concentration through the buttons. When the humidity is lower than the set value, the atomizer is activated to realize the humidification function and the buzzer alarms above the temperature. The fan will rotate automatically to keep the air circulating in the workshop and reduce the formaldehyde concentration when the formaldehyde exceeds the standard value. Finally, combined with the software module design and used code to drive the hardware, after the hardware and software debugging, so as to achieve the implementation and control of functions. This design can not only monitor the temperature and humidity of the workshop, but also improve the health problems caused by people working in the workshop for a long time. The design greatly improve the quality of tire production and the quality of life of workers by following the principle of small volume, light weight and high cost performance, which is of great significance to the research on the air quality of production workshops and will further promote the progress and development of the current tire industry.

 Keywords:

 temperature and humidity sensor; singlechip microcomputer; formaldehyde concentration

 本科论文

  引

 言 随着科技的发展,测量技术也不断精进,人们越来越重视空气质量指数,比如说温湿度、甲醛、一氧化碳、PM2.5 等。而在轮胎的生产车间也要实时监控温湿度以防止由于湿度过高导致的轮胎生霉和由于温度过高导致的橡胶发粘、强度下降等情况。除此之外,在生产车间更要监控甲醛的浓度。甲醛是在室温下是一种易溶于有机溶剂的无色且具有刺激性气味的气体。它可用于医学被制成福尔马林溶液。甲醛的毒理作用是通过与蛋白质的结合危害呼吸道、皮肤组织从而致癌致畸。甲醛这种有毒物质被人们吸入后慢慢累积,长期危害人们的身体健康且不易被发觉,如果人们经常待在甲醛浓度高的地方可导致中毒以及不可逆的疾病 [4] 。已经有报道称某工工厂的工人长期吸入甲醛造成一些血液疾病,这种情况已受到国家重视并将甲醛列为一级危险化学品严格管理。因此为了工人们的身体健康和提高轮胎的生产率非常有必要设计一款可以实时监控空气质量的仪器。

 由于人们开始追求健康的生活环境,出现了一些甲醛浓度的测定方法。现在,测定方法和标准已经有很多,并形成了较为统一的测定方法。标准规定的方法绝大多数是化学分析法,使用的手段是实验室分析仪器,主要有比色计、分光光度计、化学滴定、气相和液相色谱 [5] 。但这些方法普遍要要求检测人员按照标准采集空气样本,并用专业仪器按照严格的化学实验步骤检测样本的甲醛浓度,费力费时、成本高、自动化程度低,过程复杂,很难做到现场实时控制。同时,各国之间在测试方法上基本相同,但是根据相关国家法律规定不同,得出结果标准也不同,这并不影响结论,只要结果在标准之下即可。

 因此,我认为研究带有温湿度控制功能的甲醛浓度监控系统是有必要的,它具有一定的实用价值与广阔的应用前景,能够改善人们在车间长期工作而导致的健康问题以及提高轮胎的生产质量和效率。

 本文基于单片机设计的空气质量监控系统,本篇论文共分为四部分,主要内容如下。

 第一部分为系统总体方案设计。根据课题要求选择合适的主控制器并设计出系统的总体方案。

 本科论文

 第二部分为系统的硬件设计。主要是温湿度采集和甲醛采集模块的选择。还包括显示模块、按键模块、报警模块、加湿及风扇模块的设计。

 第三部分为系统的软件设计。简要介绍了总体流程、温湿度和甲醛浓度获取及液晶屏显示实现的方式与流程图。

 第四部分为系统调试。完成本系统的硬件焊接及调试,并将编写并调试完的程序烧录到单片机中,搭建系统硬件联调。

 本科论文

 1 控制系统设计 本课题实现的是基于单片机的空气质量监控系统的设计,选用单片机为本设计的主控制器,配合各模块协助运行。本系统的主要原理是通过传感器采集车间内温、湿度,并将采集到的参数进行处理,实现温、湿度测量及显示。还可通过按键自行设置温湿度限值,高于温度设定值可报警,低于湿度设定值启动雾化片实现加湿功能,并当甲醛超出设定值时控制风扇转动,保持车间内空气流通,减少甲醛浓度。

 本设计的具体任务如下:完成主控制器的选择和主控制电路的设计,使本设计具备信息处理功能;完成室内温湿度的采集及控制功能;完成参数的显示功能;使实物具有按键调节功能及报警功能;并通过设置限值自动开启加湿和风扇功能;完成整体电路的设计及程序的编写,并焊接电路完成实物模型的制作,最后撰写出基于单片机的空气质量监控系统的毕业设计说明书一份。

 1.1

 方案选择 为了能够改善人们在车间长期工作导致的健康问题,本文拟设计一款带有温湿度功能的甲醛浓度监控系统,通过主控制器来控制各个模块运作,达到项目的要求,这就要求主控制器要具有高速运算的能力,能够将实时温度准确、快速的显示出来,并能控制风扇、加雾片运行,且开发环境完备、开发工具齐全。现阶段有很多控制器均可以满足上述要求,但考虑到成本和操作难易度,有两种方案最贴合实际。

 方案一:采用 DSP 数字信号处理器来进行控制。它是利用数字的形式将信号转换成所需要的形式,高集成度,适用于运算量大的场合,广泛应用于数字控制和运动控制方面以及低功耗、便携手持设备中,但是成本较高 [6] 。

 方案二:采用单片机进行控制。它是拥有中央处理单元、存储器、时钟、定时/计数器、多种功能的串行和并行 I/O 口的单片微型计算机 [7] 。它常应用于测控领域,可以通过数据寄存器实现对所使用的端口的控制,且具有完整的开发环境和开发工具,多种应用资料和价格低廉等特点。

 根据以上两种方案,可以看出 DSP 与单片机都广泛的应用于工业自动

 本科论文

 化中,相比较于单片机,DSP 注重数字信号的处理,较为复杂,适用于运算量大的场合,本身针对了不同的需求。而本次设计侧重于控制,并没有很大的运算量,因此,选择功能较为齐全、成本更为低廉的单片机为本设计的主控制系统就可以满足本次设计的需求。

 1.2 系统控制原理 为了监测轮胎车间的空气质量,本设计利用单片机控制理论结合传感器检测原理来实现,此空气质量系统设计由温湿度采集模块、甲醛采集模块、参数显示模块、加湿及风扇控制模块、按键模块以及报警模块组成 [8] 。。采用单片机作为微控处理器协助系统各模块的运行,利用温湿度传感器采集参数,并通过显示模块来显示数值,利用按键来设置温湿度限值的报警控制值。设计主要包括三个方面,一个是设置温湿度,根据车间内生产的轮胎等物品及人们适宜的最佳温湿度设置限值;二是报警加湿功能,当低于湿度设定值时触发报警并立即启动雾化片进行加湿,保持车间内的湿度正常;三是报警风扇系统,设置甲醛检测限值,超限则触发报警,蜂鸣器发出警报声及风扇转动,以保证车间内空气质量稳定。风扇启动,将外界空气带入车间内,缓解车间内部有毒气体,在达到降温效果的同时还能起到排风作用,保证车间内部空气通畅,防止轮胎生产时的甲醛浓度增加影响人们的身体健康。系统设计框图如图 1.1 所示。

  图 1.1 系统设计框图

 温湿度采集模块 按键模块 电源模块 甲醛采集模块 显示模块 蜂鸣器 控制加湿片 控制风扇

  单片机

 本科论文

 2 系统硬件设计 2.1 单片机的选择与设计 为了实现课题要求,需要选择一款最适合的单片机来作为主控制器。因为本设计中涉及到温湿度采集模块、甲醛采集模块、显示模块、按键模块、报警模块、加湿及风扇模块。其中,温湿度采集、甲醛采集和按键是输入,显示屏、蜂鸣器、加湿片和风扇是输出,所以需要单片机的 I/O 口要多,对单片机的处理速度也有一定的要求,且因为需要记录温湿度及甲醛浓度数据并显示,为了方便后期调试,还需要选择可重复烧写程序的单片机,就目前情况,满足条件的单片机有 STM32 系列单片机和 51 系列单片机。

 首先,传统的 51 单片机操作简单,具有实行各种功能的指令,但 A/D、EEROM 等功能需要靠扩展才能运行,使单片机高负荷工作,运行速度缓慢,易高热引发损坏 [17] 。

 对于本次设计,我们选择的是 32 位微控制器,最高工作频率为 72MHz的经济型半导体微控制器 STM32F103C8T6 单片机,具备性能高、功能消耗低、电路集成等特点,内部自带阻容震荡器、复位电路和时钟模块 [10] 。此此单片机和 51 系列相比多了很多功能,不但运行速度比 51 单片机要快很多,自带两个 AD 转换,使我们在进行甲醛模块设计的时候免去了需要加外部 ADC 进行转换,非常方便。STM32 还有着很强大的通信功能和控制功能。这一点是 51 单片机无法比拟的。STM32 单片机比 51 单片机多了 4个串口进行通信,所以对一些要求用串口进行通信的模块而且就不需要通过 CD4052 等双串口模块来转换,所以这一点被市场上广泛的运用,32 单片机因为本身可以进行多种不同的时钟模数来进行工作,所以在功耗要求比较严格的产品中占有一席之地 [11] 。综上,最终选择满足课题要求的STM32F103C8T6 单片机作为本次设计的主控制器。

 本科论文

 STM32 是基于 Cortex-M3 内核的 32 位的微控制器。20~64K 字节SRAM,功耗 36mA,是 32 位市场上功耗最低的产品,相当于 0.5mA/MHz [12] 。

 引脚图如图 2.1 所示。

  图 2.1 STM32F103C8T6 引脚图 主要特点:

  引脚个数为 48 个。

  工作频率为 72MHZ。

  单片机具有 2 个 32 位/16 通道的 ADC 模数转换。

  使用了 3.3V 稳压芯片,可以保证最大输出 300MA 电流。

  支持 ST-LINK 和 JTAG 调试下载。

  存储资源为 64kb byte FLASH 和 20byte Sram。

 2.2 温湿度模块设计 2.2.1 温湿度传感器选择 因为本设计需要实时检测车间内的温湿度,根据轮胎所需的车间内温湿度自行设置限值,以此来控制加湿片启动,使车间内温湿度趋于稳定。因为橡胶制品在空气中与氧气发生化学反应易老化和发霉,造成轮胎质量下降、安全性降低等问题,所以必须有一个严格的温湿度范围,一般温度在-10℃-25℃之内,湿度在 50%-70%RH 之内 [14] 。因此,使用低功耗、稳定定性高的温湿度传感器对车间内温湿度进行监控,并转换为数字信号显示

 本科论文

 在显示模块上,保证轮胎正常生产加工及贮藏。目前市面上符合要求的主流温湿度传感器有以下两种。

 一种是 HMP60 温湿度传感器,该传感器适合于实验室用的电气设备的场合。但此传感器是探头形式,运用到工厂不易操作且价格昂贵不适用此设计。

 一种是 DHT11 温湿度传感器,40bit 二进制数据输出。测量范围:湿度20-90%RH,温度 0~50℃ [15] 。它长期使用也可保持稳定,耗能低,它有四四个引脚,可以实现测温功能。

 因此,此设计的温湿度采集模块将选用能快速进行采集与处理,价格合适、质量高的 DHT11。DHT11 实物图如 2.3 所示。

 图 2.3 DHT11 实物图

 2.2.2 温湿度采集原理 本设计采用的是 DHT11 数字温湿度传感器,它是一款含有已校准数字信号输出的温度和湿度的复合传感器。

 DHT11 温湿度传感器如果在化学物质复杂的条件下会腐蚀里面的元器件,易发生失灵和老化,性能下降,使用效果不佳,影响测量;如果在一个正常的工作环境下可以长期使用。

 DHT11 温湿度传感器内部分包括一个随湿度变化而变化的传感器和一个热敏电阻,它在 3.5~5.5V 可以正常工作,且不需要进行模数转换,这大大简化了硬件设计。

 DHT11 一共有 4 个引脚,1 脚为 VDD 连接外部的 3~5V 电源。其中 2脚可接单片机 I/O 口,3 脚可不接,4 脚为 GND,接地端。这款温度传感器转换时间为 75ns,比传统 DS1820 速度要快很多 [16] 。检测的结果以数字量量方式串行传送。

 本科论文

 DHT11 温湿度传感器模块电路图如图 2.4 所示。

 图 2.4 DHT11 温湿度传感器电路图

 2.3 甲醛采集模块设计 测量电路由单片机串口和甲醛模块进行串口通信。甲醛传感器由甲醛探头和 CH 2 0 传感器组成 [17] 。其原理是将传感器接触到的被测气体立即转化化为数据并传输到单片机中,并通过元器件读出数值,一旦超过设置的数值立即报警。

 本设计选用空气质量模块,利用电化学原理对空气中存在的甲醛气体进行采集。该模块是一种气体模块,它将电化学的原理与电路设计相结合。它具有使用方便、不易受外界影响、性价比高的特点。

 表 2-1 传感器参数表 名称 甲醛传感器 CH 2 O/S-10 干扰气体 酒精,一氧化碳等气体 输出数据 UART 输出 工作电压 3.3V 或 5V 预热时间 ≤3 分钟 响应时间 ≤60 秒 恢复时间 ≤60 秒 量程 0~1.00 mg/m 3

 分辨率 ≤0.01 mg 工作温度 0~50℃ 工作湿度 15%RH-90%RH 存储温度 0~50℃ 使用寿命 5 年(无腐蚀空气)

 本科论文

 甲醛模块电路图如图 2.5 所示。

 图 2.5 甲醛模块电路图

 其中,1-(GND)电源负端,2-UART(TX)电源输出,3-UART(RX)电源输入,4-(VCC)电源正端。

 2.4 显示器模块设计 本设计需要清晰的显示出温湿度限定值、实时温湿度与甲醛指数,显示的内容较多,而传统的数码管显示这些内容显然很困难,还要求单片机供电为 5V。因此,选择便于控制、容易实现功能、可显示各种字符的性价比更高的 LCD 液晶显示屏作为本设计的参数显示模块。

 LCD 液晶显示屏,是集电子和信息处理等多种技术相结合的一种数据显示,它具有非常强大的显示能力,可以一次显示 32 个字符及各种其他字符,显示器中的字符是 5*7 的点阵组成的,显示分辨率高。同时,在传输数据时它既可以使用并行也可以使用串行传输,无论哪一种传输方式,在控制方面难度都比较低,容易实现功能。与 LED 显示屏在单片机技术中的运用相比,性价比更高且使用范围更广,成为了最受欢迎的显示器件。具备成本低、无辐射、易处理、使用便捷、使用年限长等特点。

 液晶显示器是由彩色或者黑白像素组成的显示屏,具备简单、灵敏、功耗较低等特点,现在市面上的液晶显示屏,主要有字符型和汉字型液晶显示器,如汉字型 LCD12864 液晶显示屏、字符型 LCD1602 液晶显示屏 [18] 。

 由于本系统并不需要直接显示汉字,因此显示模块选择价格相对较低的 LCD1602 液晶显示屏。

 LCD1602 的液晶连接电路如图 2.6 所示。

 本科论文

 图 2.6 LCD1602 电路图

 模块中的 VSS 为接地端;VDD 接 5V 电源;VL 为液晶显示器对比度调整端;RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作;E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令;D0~D7 为 8 位双向数据线。其内部储存了大量字符,包括外文字符和数字等,多数情况都可以使用。

 2.5 按键模块设计 由于本系统只有转换命令、数值加、数值减这 3 个控制命令,所需按键较少,所以本系统选择独立式按键。如图 2.9 所示,按键 K1 的作用是完成进入设置界面,转换设置的参数以及退出设置界面,K1 第一次按下时,此时将进入湿度设置界面,如果低于设定值报警时字符闪动(需要结合液晶的控制代码来完成),按下第二次时,进入温度设置界面,按下第三次时,进入甲醛浓度设置界面。再按下 K1 按键,就跳出参数设置,进入到主界面。按键 K2 的作用是选中的参数数值上加,按键 K3 的作用是选中的参数数值下调。

 按键连接电路图如图 2.7 所示。

 图 2.7 按键连接电路图

 K1、K2、K3 这 3 个按键一端接地,另一端分别连在单片机的 B12、B13、B14 的 I/O 口,在我们不操控按键的情况下,3 个引脚全部出于断开

 本科论文

 不导通状态,当按键按下去时,此时单片机的引脚和地导通,使得该引脚的电平由高电平变为低电平。因为每个按键实现的操作功能都不同,因此在硬件模块组装时按键和单片机上的功能引脚,一定要按软件 C 语言编程与之相对应。

 2.6 报警模块设计 本设计添加报警模块是为了可以使相关安全管理人员察觉到空气质量的异常,立即采取急救措施,同时防止突然启动加湿片和风扇浪费资源 [19] 。

 报警模块电路图如 2.8 所示。

 图 2.8 报警模块电路图

 此设计采用 STM32 单片机,单片机上电后引脚默认是低电平,所以使用 8050 蜂鸣器,使其高电平导通,就实现了蜂鸣器报警。

 2.7 加湿及风扇模块设计 为实现低于湿度设定值立即启用加湿功能,本设计选用电压 5V,电流300mA,功率 2W,频率 108KHz,孔数 740,孔径 5um 的微孔雾化片。微孔雾化片在陶瓷片表面涂有特殊釉层保护层,能耐酸碱且无毒环保。它具有超细喷雾颗粒,大雾化量,电压低功率小、阻抗低效率高的特点。

 加湿模块如图 2.9 所示。

 图 2.9 加湿模块电路图

 本科论文

 如果高于设置的甲醛浓度则自动开启风扇,使其转动气流加速,减少室内甲醛浓度 [20] 。本设计选用电压 5V,电流 0.20A,转速为 4500-9000RPMM 的风扇。

 风扇模块如图 2.10 所示。

 图 2.10 风扇模块电路图

 本科论文

 3 系统软件设计 3.1 总流程方案设计 程序代码是一个单片机控制系统的灵魂,没有程序控制整个系统就不能运行。基于单片机的室内空气质量监控系统将利用 Keil 软件来编写 C 语言程序来驱动硬件的运行。本设计需要编写的模块程序包含了温湿度采集程序、参数显示程序、按键控制程序、声音报警程序。

 系统软件设计主程序流程如图 3.1 所示,按下电源开关后,单片机开始工作,首先把温湿度采集模块以及液晶显示等相关模块进行初始化,初始化完成之后就开始进入 while(1)循环中一行一行的执行代码。先从温湿度传感器中,可通过按键设置温湿度限值,其中,通过传感器检测到车间内温、湿度的变化,将获取到的参数显示在液晶屏上,利用按键限制数值,高于温度设定值触发报警,低于湿度设定值触发报警并启动雾化片实现加湿功能,当甲醛超出标准值时触发报警同时使风扇转动保持车间内空气流通,减少甲醛浓度。

 系统软件主程序流程图如图 3.1 所示。

  开始

 DHT11 初始化

 甲醛串口初始化

 LCD 显示当前信息

 加

 蜂鸣器报警,led 亮

 返回

 按键扫描

 减

 是否超出限定值

 N

 Y

 N

 Y

 本科论文

  图 3.1 系统程序主流程图

 3.2 温湿度获取的软件设计 温湿度采集需要利用一定的时序才能获取具体的温湿度值,需要先根据 DHT11 生产公司提供的时序图,完成温湿度采集基本函数的编写,包含读取温湿度数据函数,写数据函数,匹配函数等,编写完函数后就调用函数完成温湿度的获取。

 执行到获取温湿度的时候,首先对总线复位。复位不成功则返回值为 1,成功则返回值为 0,此时,则开始读取温湿度值,先发送跳过 ROM 操作的命令,发送读命令,接着读取温湿度低字节,然后读取温湿度的高字节,并合成 16 位的整型数,最后把判断复位成的变量取反。

 温湿度采集软件流程图如图 3.2 所示。

  开始 初始化 DHT11 应答脉冲 合并,算出温湿度数值 发出转换命令 延时等待温湿度转换 发出扫描命令 应答脉冲 发出读操作 否 否 是 是

 本科论文

 图 3.2 温湿度采集软件流程图

 3.3 LCD1602 的软件设计 本设计需要利用字符型液晶显示屏 LCD1602 来显示采集到的具体参数值。LCD1602 的软件流程图如图 3.3 所示。

  图 3.3 LCD1602 显示内容流程图

 程序执行到需要利用 LCD1602 液晶屏来显示特定内容时,需要利用调用函数的方式来显示的内容。具体的显示的流程为:第一步,设置好显示固定字符的初始位置坐标值,也就是利用设置起始坐标函数设置起始坐标;第二步,等待液晶做好将要写数据的准备,如果液晶准备好就会返回数据 0,否则返回数据 1,直到液晶返回的数据为 0 为止;第三步,从指针 str 中把数据一个一个的从设置的起始位置处显示到液晶屏上,直到 str 写入的数据为结束字符’/0’,此时停止写数据,返回程序执行其他的代码。

 入口 初始化 LCD1602 BF=0 写入数据 检测忙信号 获得现实 RAM 地址 延时 延时 返回 否 是

 本科论文

  4 系统调试

 4.1 硬件调试 本设计利用电路板来焊接实物,根据系统的方案与需求来购买相关材料。根据绘制好的系统原理图来焊接实物。在焊接过程中要及时检测焊接的电路是否存在虚焊,对照电路图检查是否存在焊接错误现象,以保证焊接的实物可以完成设计的全部功能。焊接完成后将 Keil 软件编译后的 HEX文件下载到单片机上,通电后,检查硬件电路是否可以按照程序运行,完成预期功能。

 4.2 软件调试 本次设计的空气质量监控系统,利用 C 语言的程序编写来实现预期功能,将采用模块化的程序编写方式来完成本论文的程序编写。实物焊接成功后将该驱动程序烧写到单片机中,多次修改直至实现本设计的全部功能。由于温湿度下限及实时温使度及甲醛浓度参数需要显示在 LCD1602 液晶屏上,因此第一步应该调试 LCD 显示屏,接着再建立 LCD1602.C 文件,在编写一个显示函数用于测试液晶屏最终显示的代码。最后建立 main.c 文件,编写该函数时先把之前建立的头文件(.h 文件)包含在最前面,然后再编写 voidmain()函数,在 main()函数中调用显示函数,把数据显示出来,接着编译代码,生成 hex 文件,下载到开发板中,查看液晶屏是否按照编写代码的功能执行。如果执行成功,这样就可以完成显示模块的测试。接着可以利用 LCD1602 的显示功能来测试温湿度获取代码及甲醛浓度代码。这些模块都调通之后,就把功能结合起来在 LCD1602.c 中编写动作函数,在 main函数中调用动作函数,这样就可以逐步的完成了整个控制代码的结合调试。通过这种方式就可以完成这个控制的代码的编写,该种代码编写方式各个 C文件分工明确,一旦出现错误,查找非常方便。

 本科论文

 结

 论

 本论文针对空气质量监控系统工作时所存在的问题,利用单片机微控制器的自动化控制功能结合传感器检测功能,设计出一种基于单片机的室内空气质量监控系统,并对其进行了论证与设计 STM32F103C8T6 作为本系统的控制器,完成系统的程序和总功能的控制执行。利用按键来设置参数的报警控制值,当采集到参数值出现异常时启动蜂鸣器报警,利用 LCD1602显示相关参数信息,利用 DHT11 传感器采集当前的温湿度值,超出温度设定值可报警,低于湿度设定值启动雾化片实现加湿功能,并当甲醛超出标准值时控制风扇转动保持车间内空气流通,减少甲醛浓度。利用 keil 软件来编写 C 语言程序代码驱动各硬件模块来实现功能,经软硬件实物调试后,最后完成实物设计实现基于单片机的空气质量监控系统。

 在此次毕设中我认为首先要有大体思路计划要实现的功能;其次根据功能去选择相应的硬件型号;再次将一个大的系统进行模块化划分,然后再根据模块进行设计。最后把所有模块进行优化整合,便得到了一个完整的系统。基于这样的思路,最终完成了基于单片机的空气质量检测系统的基本设计。本设计虽然有一定的市场应用前景,但是仍需进一步的改善与提高。目前,不仅刚装修完的室内需要检测温湿度和甲醛气体,同样工厂车间中温湿度和甲醛含量也需要检测。如果吸入大量甲醛会对人体健康造成不可逆的伤害,所以在未来设计一个不仅能够满足生活需要而且还要携带方便的温湿度和甲醛检测仪受到了人们的高度重视。

 从这次的毕业设计中,我真真正正的意识到,在以后的学习工作中,要理论联系实际,脚踏实地将所学的理论知识运用到实际中,我想这就是我在这次毕业设计中的最大收获。

 本科论文

  参考文献

 [1] 王耀平. 基于单片机的温湿度监测系统[J]. 电子测试, 2017(4). [2] Yue-Lin D , Unit N O , Troops. The Realization of Low Power Dissipation Temperature and Humidity Collector Based on STM32[J]. Computer engineering & Software, 2015. [3] Shigang Cui. Design of a Temperature and Humidity Monitoring System for Plant Growth Cabinets Based on Data Fusion[C]. 中国自动化学会智能自动化专业委员会.2017 中国智能自动化会议(CIAC 2017)论文集.中国自动化学会智能自动化专业委员会: 中国自动化学会智能自动化专业委员会, 2017: 375-381. [4] 仝庆华. 基于单片机的甲醛监测报警系统[J]. 山西大同大学学报(自然科学版), 2011(2). [5] 范卫,王法弟,贾晓东,金复生,金锡鹏. 近十年国内有关甲醛的环境与职业危害调查研究[J]. 劳动医学, 2004(2). [6] 金福杰. 便携式室内空气甲醛快速连续监测系统设计研究[J]. 环境科学与管理, 2018(6). [7] 张毅刚,王少军,付宁编著. 单片机原理及接口技术 第 2 版[M]. 北京: 人民邮电出版社, 2015.01. [8] 张晴,刘青正. 基于单片机的仓库温湿度智能测控系统[J]. 电子世界, 2019(21). [9] 姚希文. 基于 STM32 的空气质量监测系统的设计[C]. 天津市电子工业协会.天津市电子工业协会 2019 年年会论文集.天津市电子工业协会: 天津市电子工业协会, 2019: 124-127. [10] 张淑清等编著. 嵌入式单片机 STM32 原理及应用[M]. 北京: 机械工业出版社, 2019.10. [11] 郑定超. 基于 STM32 的嵌入式实验教学平台设计[J]. 电子世界, 2016(21): 17-18. [12] 武奇生编著. 基于 ARM 的单片机应用及实践 STM32 案例式教学[M]. 北京: 机械工业出版社, 2014.06.

 本科论文

 [13] 李惠东,桂宏远,纵榜峰. 基于 STM32 单片机室内有害气体安全监测系统的设计[J]. 数字化用户, 2018(28). [14] 任衍峰,陈建军,李卫国. 环境温湿度对轮胎硫化性能的影响[J]. 轮胎工业, 2017(10). [15] 许岩,全书海,魏五星. 燃料电池发动机空气加湿器的设计[J]. 仪表技术, 2009(12). [16] 颜丽娜,王顺忠,张铁民. 基于DHT11温湿度测控系统的设计[J]. 海南师范大学学报(自然科学版), 2013(4). [17] 段晓丽. 一种基于单片机的甲醛浓度监测系统的设计[J]. 电子技术, 2013(11). [18] 胡祖芳,林峻光,史春笑. 基于 LCD 液晶屏的温湿度显示[J]. 科技展望, 2017(17). [19] 万松峰. 基于 ARM&LINUX 的手持式室内甲醛气体检测设备设计[J]. 西华大学学报(自然科学版), 2013(2). [20] 彭璐佳,张莉萍,黄勃,谭莲子,童宏伟. 基于 STM32 的车载智能风扇系统的设计与实现*[J]. 传感器与微系统, 2018(12).

 本科论文

  附录 1 原理图

 本科论文

  附录 2 源程序清单 主程序:

 #include "led.h" #include "delay.h" #include "sys.h" #include "timer.h" #include "usart1.h" #include "LCD1602.h" #include "string.h" #include "stdio.h" #include "dht11.h" u16 CH20_MAX_val = 100;//甲醛报警值 u16 CH2O_mgvalue = 0;//甲醛 void Change_data_handle(void); void

 SHOW_AND_BAOJING_Handle(void); u8 KEY_SCAN(void);//按键函数 u8 SHOW_BUF[16],SEND_BUF[16]; u8 key,Temperature,HUM; u16 HUM_MIN=15;//湿度下限初始值 extern char RxCounter,Usart1RecBuf[64];//串口 1 接收数据缓存 extern char bUsart1RecFlag;

  //串口 1 收到数据标志位 void Get_CH2O(void)//获取甲醛 {

 char i = 0;

 if(Usart1RecBuf[i+5] == Usart1RecBuf[i]+Usart1RecBuf[i+1]+Usart1RecBuf[i+2]+Usart1RecBuf[i+3]+Usart1RecBuf[i+4])//校验

  {

 CH2O_mgvalue = Usart1RecBuf[1]*256 + Usart1RecBuf[2];//计算甲醛

 bUsart1RecFlag = 0;

 }

  RxCounter = 0; } int main(void) {

  u16 test,test_adc;

 delay_init();//延时函数初始化

  NVIC_Configuration();//设置 NVIC 中断分组 2:2 位抢占优先级,2 位响应优先级

 KEY_IO_Init();

 Usart1_Init(9600);

 TIM2_Int_Init(1000,72-1);//定时器初始化,定时 1MS

 delay_ms(300);

 DHT11_Init(); //DHT11 初始化

 本科论文

  BEEP_DISENABLE();//蜂鸣器初始化

 LCD_Init();//1602 初始化

  LCD_Write_String(0,0,"

 ");

 while(1)

 {

  DHT11_Read_Data(&Temperature,&HUM);//读取温湿度值

  Get_CH2O();//获取甲醛值

  SHOW_AND_BAOJING_Handle(); Change_data_handle();//按键调节 delay_ms(100);

 } } extern u8 FLICKER; void

 SHOW_AND_BAOJING_Handle(void) {

 unsigned char show_buf[16];//显示缓存区

 sprintf(show_buf,"TEMP:%02dC",(u16)Temperature);//转换显示格式为 TEMP:00C

 LCD_Write_String(0,0,show_buf);//显示

 if(HUM <= HUM_MIN)//湿度低于下限

  {

 JSQ = 1;

 if(FLICKER)//超标显示闪烁

  {

  LCD_Write_String(9,0,"

  ");

  }

  else

  {

  sprintf(show_buf,"HUM:%02d%%",(u16)HUM);//转换显示格式为 HUM:00%

  LCD_Write_String(9,0,show_buf);//显示

  }

  }

  else

  {

 sprintf(show_buf,"HUM:%02d%%",(u16)HUM);//转换显示格式为 HUM:00%

 LCD_Write_String(9,0,show_buf);

 JSQ = 0;

  }

  if(CH2O_mgvalue >= CH20_MAX_val)FAN = 1;else FAN = 0;

  if(CH2O_mgvalue >= CH20_MAX_val && FLICKER)//甲醛超限

  {

 LCD_Write_String(0,1,"

 ");

  }

  else

  {

 本科论文

 LCD_Write_Char(0,1,"C"); LCD_Write_Char(1,1,"H"); LCD_Write_Char(2,1,"2"); LCD_Write_Char(3,1,"O"); LCD_Write_Char(4,1,":");

  LCD_Write_Char(5,1,CH2O_mgvalue/100+"0");

  LCD_Write_Char(6,1,".");

  LCD_Write_Char(7,1,CH2O_mgvalue%100/10+"0");

  LCD_Write_Char(8,1,CH2O_mgvalue%10+"0");

  LCD_Write_Char(9,1,"m");

  LCD_Write_Char(10,1,"g");

  LCD_Write_Char(11,1,"/");

  LCD_Write_Char(12,1,"m");

  LCD_Write_Char(13,1,"3");

  }

  if(HUM <= HUM_MIN|| CH2O_mgvalue >= CH20_MAX_val)//温度湿度甲醛超限

  {

 BEEP_ENABLE(); //蜂鸣器报警

  }

 else

 {

 BEEP_DISENABLE();

  }

 } u8 KEY_SCAN(void) {

 u8 res = 0;

  if(!KEY1)

  {

 delay_ms(10);

 if(!KEY1)

 {

  while(!KEY1);//卡死

  res = 1;

  }

 }

  if(!KEY2)

  {

 delay_ms(10);

 if(!KEY2)

 {

  while(!KEY2);//卡死

  res = 2;

  }

 }

  if(!KEY3)

 本科论文

 {

 delay_ms(10);

 if(!KEY3)

 {

  while(!KEY3);//卡死

  res = 3;

  }

 }

  return res; } void Change_data_handle(void) {

  u8 key;

 static u8 MODE = 0;

 key = KEY_SCAN();//读取按键值

 if(key == 1)//按键 1 按下

  {

  MODE++;

  LCD_Clear();//清屏

  delay_ms(100);

 }

  while(MODE)

  {

  key = KEY_SCAN();

 switch(MODE)

  {

 case 1: //设置湿度 LCD_Write_String(0,0,"Set

 the

 HUM "); LCD_Write_String(0,1,"min:"); LCD_Write_String(8,1,"%"); if(key == 2 && HUM_MIN < 99) HUM_MIN += 1;//按键 2 按下,值加 1 if(key == 3 && HUM_MIN > 0) HUM_MIN -= 1;//按键 3 按下,值减 1 LCD1602_write_long(6,1,HUM_MIN,2); delay_ms(10); break;

 case 2: //设置甲醛

  LCD_Write_String(0,0,"Set the

 CH2O

 ");

  LCD_Write_String(0,1,"max:");

  LCD_Write_String(9,1,"mg/m3"); if(key == 2 && CH20_MAX_val < 999) CH20_MAX_val += 1;//按键 2按下值加 1 if(key == 3 && CH20_MAX_val > 0) CH20_MAX_val -= 1;//按键3按下值减 1 LCD_Write_Char(5,1,CH20_MAX_val/100+"0"); LCD_Write_Char(6,1,".");

 本科论文

 LCD_Write_Char(7,1,CH20_MAX_val%100/10+"0"); LCD_Write_Char(8,1,CH20_MAX_val%10+"0"); delay_ms(10); break;

 default: break;

  }

  if(key == 1)

  {

  MODE++;

  LCD_Clear();

 if(MODE == 3)//按下次数等于 3 退出设置

 {

  MODE = 0;

  }

  }

 }

 }

  LCD1602 程序:

 #include "LCD1602.h" #include "delay.h" #include "sys.h" u8 BitReversed(u8 x)//把 8 位数按位逆序 {

 u8 temp[8];

 u8 i = 0;

 u8 j = 7;

 u8 result = 0;

 for(i = 0;i<8;i++)

 {

  temp[i] = (x>>i)&0x01;

 }

 for(i = 0;i<8;i++)

 {

  result = result|(temp[j]<<(i));

  j--;

 }

 return result; }

 void

 LCD_Check_Busy(void) {

 LCD1602_RS0;

 delay_us(1);

 LCD1602_RW1;

 delay_us(1);

 本科论文

  LCD1602_EN0;

 delay_us(1);

 GPIO_Write(GPIOC,0Xff);

 delay_ms(1);

 LCD1602_EN1;

  delay_us(100); }

 void LCD_Write_Com(unsigned char com) //写入命令函数 {

 LCD1602_RS0;

  delay_us(1);

 LCD1602_RW0;

 delay_us(1);

 LCD1602_EN1;

 delay_us(1);

 com = BitReversed(com);

 GPIO_Write(GPIOA,(GPIO_ReadOutputData(GPIOA)&0XFF00)+com);

  delay_us(100);

 LCD1602_EN0; }

 void LCD_Write_Data(unsigned char Data) //写入数据函数 {

 LCD1602_RS1;

 delay_us(1);

 LCD1602_RW0;

 delay_us(1);

  LCD1602_EN1;

 delay_us(1);

 Data = BitReversed(Data);

 GPIO_Write(GPIOA,(GPIO_ReadOutputData(GPIOA)&0XFF00)+Data);

 delay_us(100);

 LCD1602_EN0; }

 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) //写入字符串函数

 {

  if (y == 0)

 {

 LCD_Write_Com(0x80 + x);

 }

 else

 {

 LCD_Write_Com(0xC0 + x);

 }

 while (*s)

 {

  LCD_Write_Data( *s);

 本科论文

  s ++;

 }

 }

 void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) //写入字符函数

 {

  if (y == 0)

 {

 LCD_Write_Com(0x80 + x);

 }

 else

 {

 LCD_Write_Com(0xC0 + x);

 }

 LCD_Write_Data( Data);

 }

 void LCD1602_write_long(unsigned char x,unsigned char y,u32 data,unsigned char num)

 {

  unsigned char temp[12],i = 12;

  while(i--)

  {

 temp[i] = " ";

  }

  temp[num] = "\0";

  while(num--)

  {

  if(data || data%10)

 temp[num] = data % 10 + 0x30;

  data = data/10;

  }

 LCD_Write_String(x,y,temp);

 }

 void LCD_Clear(void) //清屏

 {

  LCD_Write_Com(0x01);

  delay_ms(5);

 } void LCD_Init(void)

 {

 GPIO_InitTypeDef GPIO_InitStructure;

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);//开启 GPIOA GPIOB GPIOC 时钟

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |

  GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出速度 50MHZ

 本科论文

 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14|GPIO_Pin_15;

 // LCD1602 RS-RW-EN?

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

  //推挽输出

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  //输出速度 50MHZ

  GPIO_Init(GPIOC, &GPIO_InitStructure);

  //GPIOC LCD_Write_Com(0x38); delay_ms(5); LCD_Write_Com(0x08);

 /*显示关闭*/ delay_ms(5); LCD_Write_Com(0x01);

 /*显示清屏*/ delay_ms(5); LCD_Write_Com(0x06);

 /*显示光标移动设置*/ delay_ms(5); LCD_Write_Com(0x0C);

 /*显示开及光标设置*/ delay_ms(5);

 }

 DHT11 程序:

 #include "dht11.h" #include "delay.h" void DHT11_Rst(void)//复位 DHT11 {

  DHT11_IO_OUT();

 //SET OUTPUT

 DHT11_DQ_OUT=0;

 //拉低 ...

推荐访问:空气质量 单片机 监控系统
上一篇:九年级化学上册化学碳和碳氧化物推断题专题训练含答案
下一篇:城市愿景规划报告

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有