news 2026/6/10 0:52:42

基于51单片机的PM2.5检测仪设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于51单片机的PM2.5检测仪设计

摘要

我国现代社会迅速发展,人们也提高了对生活的质量的要求,都想在健康、安逸的环境生活。我国也正在加强生态文明建设,不断减少各种空气污染。PM2.5这种污染物随着雾霾加重被人们数值,由于其颗粒极小,含有高浓度的有毒、有害物质并且具有长时间停留漂浮等特性。尽管近年来雾霾已经大大减少,但对于PM2.5的监测依然不能掉以轻心。
本设计采用STC89C51单片机为控制器件,利用传感器监测大气中颗粒物含量,通过AD转换器将传感器输出信号处理后传给单片机处理,最终LCD显示含量。系统还可以通过按键进行设置上限值,当浓度超过设定值时将会触发报警。结果表明,该PM2.5检测仪电路简单小巧、检测精度高,具有良好的稳定性,具备良好的实用意义。
关键词 STC89C51单片机、空气质量传感器、LCD

1 系统硬件设计

1.1 主控芯片选择

单片机是本PM2.5监测仪设计的核心,负责的是接收传感器传递过来的信息,并且发送命令给执行系统的作用。单片机发明自上个世纪七十年代,自发明之日起,就作为了各项系统的控制核心,其功能一直都在被升级改善。现如今的单片机相对于发明之初,性能在各方面都得到了极大的提升,已经不可与之前同日而语了。现在的单片机已经广泛应用于航空航天、军事、仪器仪表以及各种智能设备上面,一直都是作为中枢大脑的存在,发挥着极其关键的作用。
目前市场上的单片机芯片很多,高中低端能够满足多样化的需求。考虑到功能需求和成本,我们经过多次选择与比较决定采用STC89C51单片机作为主控芯片——这是由于它使用C语言易开发、可在线编程、价格实惠。

2 STC89C51芯片介绍

STC89C51是由STC公司生产的小型控制器,装配了8K的线上编程闪存。STC89C51有8位中央控制器和在线可编程闪存,可以给小型电子应用系统提供核心数据处理。此外,STC89C51 还支持0Hz的静态逻辑操作。单芯片机器在下一次中断和硬件复位之前全部停止动作。 STC89C51单片机主要特性有:
(1)增强型1T 流水线/精简指令集结构8051 CPU。
(2)(5V单片机)/ 2.0V-3.8V
(3)时钟频率0~35MHz,实际工作频率可达48MHz。
(4)用户应用程序空间2K / 4K / 6K / 8K / 10K / 12K字节。
(5)片上集成了512 字节RAM。
(6)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器。可通过串口(P3.0/P3.1)直接下载用户程序。
(7)具有2个16 位定时器/ 计数器。

2.1 STC89C51单片机的最小系统

仅仅靠STC89C51单芯片是无法实现单片机的功能的,因此我们需要设计一个能让单片机运行起来的最小的电路系统,如上图所示。最小单片机系统包含有STC89C51核心控制芯片,电源电路、晶振电路和复位电路等。
(1)电源电路
单片机作为一个电子产品,需要提供能源才能运作,在本设计中由于51单片机的工作电压在4.5~5.5V之间都可以正常工作,所以我采用了USB电源线连接手机充电器插头给系统进行供电。
(2)晶振电路
程序的执行有先后,顺序的不同自然产生的效果不同,这种微操作的时间顺序称作时序。那么谁来控制顺序呢?毫无疑问,是时间。而在单片机中,时间先后的确定视由晶振电路来实现的——晶振电路就相当于单片机中的时钟,因此被称为时钟电路。STC89C51单片机时钟产生方式有两种——内部时钟和外部时钟。本系统中采用内部时钟,尽可能降低单片机系统的功耗——这也符合我们的低功耗设计原则。具体的晶振电路图如图2.1所示。通常晶振电路中的XTAL1和XTAL2,可以选择1.2 MHz到12MHz之间的频率,本设计中采用的12MHz 的石英晶振。我们采用的石英晶振,选取30 pF 的陶瓷电容。

图2.1 晶振电路

2.2 LCD1602显示器简介

LCD1602液晶显示器可以显示字母、数字、符号等。LCD1602液晶屏内含有的HD44780控制器可以提供操作简单,功能强大的指令,包括文字的任意方向移动,闪烁等功能。LCD1602液晶实物图如图2.4所示。

图2.4 液晶实物图

3 系统软件设计

PM2.5监测仪系统的平稳运行内部是需要软件程序控制的,而硬件电路只是具体功能的具体执行者。要执行什么任务、什么时间执行、以什么顺序执行、遇到突发情况如何处理都需要适当的程序逻辑来协调系统的各个硬件组件,并根据PM2.5检测仪系统的工作需要进行工作以实现特定的功能,最终组合成复杂的完整电子秤系统。本节主要设计各个模块的软件程序流程图,有关于电子秤系统的各个硬件组成部分。

3.1 系统函数设计

3.1.1 主函数设计

主函数是程序的入口,该函数必不可少。该函数开头进行初始化,初始化后进去死循环,如果不进入死循环程序运行一次就会退出,如加入死循环就会进行循环达到实时检测。一般都是主函数进行调用子函数,这样既方便阅读也有利于修改。具体流程图如下3.1所示。

图3.1 主函数流程图

3.2 系统软件测试

通过Keil编写程序,生成.HEX文件后通过PL2303下载器下载到单片机中。观察系统运行状态,反复修改调试程序,最终得到一个能够正常实现预期功能的程序。系统调试中遇到的问题有:
(1)向LCD1602液晶发送清屏指令时,未清楚地显示屏幕。
解决方法:查阅LCD1602使用手册,得到清屏的指令的确是0x01和程序上写的完全相同,而显示屏可显示这表明程序发送指令是没有错误,但显示并未清屏。添加40 ms延时,重新下载进程序后发现清屏指令被执行。LCD1602清屏的确需要1.64 ms的执行时间,最终程序采用了4 ms的延时。
(2)开始直接读取GP2Y1050AU0F传感器采集PM2.5时,没有电压输出。
解决方法:查阅手册,得知在控制该传感器采集PM2.5需要先置低电平9.68 ms的低电平,然后置高电平0.32 ms,在0.28 ms是开始采集,整个采集周期为10ms。通过修改程序时序后,传感器正常工作。

4 总结

本次课题设计基于单片机的PM2.5监测系统具有操作简单,原件实物体积小、质量轻,性价比高,智能化程度较高等特点。基于单片机的室内环境监测系统的实现分为硬件设计和软件设计,充分考察了我们所学的专业知识和技能。从选题到设计,从软件编程到硬件制作,经过各种挫折和困难,在自己反复思考、查阅资料和老师同学的帮助下,最终还是基本实现了设计前对该系统所要求实现功能的展现。本次课题虽然初步实现了的需求,但在未来还会有很大的发展空间,例如实现远程通信等,将紧跟时代发展趋势即人居环境智能化,自动化的发展。
由于PM2.5监测仪系统涉及的部分较多如信号采集模块、A/D转换模块、LED1602显示器模块的,因此我们采取分解模块的思路,将复杂的系统功能实现分解成小的功能模块去依次实现。在设计该测试仪的时候,我先是按照检测仪的功能构思出其大致的电路方框图,然后分析各个功能模块。选好各个模块的型号后画出电路原理图,到编写程序,最后进行仿真,这次课题设计才算是完成。但是编程花了很多功夫,因为该设计需要精确到小数点后一位,这给我带来了困难,在同学和老师的帮助下才解决了这个问题。实验结果表明此测试仪实现后有很多好处,比如容易读取、显示明确、电路简单,符合电子仪器仪表的发展趋势,具有良好的市场前景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:06:41

使用Git Commit规范管理lora-scripts项目版本控制

使用 Git Commit 规范管理 lora-scripts 项目版本控制 在 AI 模型微调日益普及的今天,LoRA(Low-Rank Adaptation)凭借其高效、轻量的特点,已成为 Stable Diffusion 和大语言模型定制训练中的主流技术。围绕这一需求,lo…

作者头像 李华
网站建设 2026/6/9 22:10:19

编译时报错如天书?,深度剖析C++元编程调试的隐秘陷阱与破解之道

第一章:编译时报错如天书?C元编程调试的困境与认知重构C元编程赋予开发者在编译期执行计算与类型推导的能力,但其代价是常伴随冗长且晦涩的编译错误。这些错误信息往往深埋于模板实例化栈中,如同天书般难以解读,极大阻…

作者头像 李华
网站建设 2026/6/9 21:37:57

【AIGC高性能计算必修课】:基于C++的吞吐量极限测试与突破方案

第一章:AIGC高性能计算中的C吞吐量挑战在AIGC(人工智能生成内容)的高性能计算场景中,C作为底层系统与计算密集型模块的核心实现语言,面临严峻的吞吐量挑战。随着模型规模扩大和实时性要求提升,传统串行处理…

作者头像 李华
网站建设 2026/6/8 15:16:52

C++分布式系统容错设计:如何在3步内完成故障自愈?

第一章:C分布式系统容错机制概述在构建高可用的C分布式系统时,容错机制是确保系统稳定运行的核心组成部分。由于分布式环境中的节点可能因网络中断、硬件故障或软件异常而失效,系统必须具备检测错误、隔离故障并自动恢复的能力。良好的容错设…

作者头像 李华
网站建设 2026/6/8 14:57:58

errno vs. exceptions vs. std::expected:C++网络编程中错误处理技术大比拼

第一章:C网络编程中的错误处理概述在C网络编程中,错误处理是确保程序健壮性和可靠性的核心环节。由于网络环境的不确定性,诸如连接超时、主机不可达、资源耗尽等问题频繁发生,程序必须能够及时检测并响应这些异常情况。常见网络错…

作者头像 李华
网站建设 2026/6/8 15:13:40

为什么你的游戏画面总是差一截?,深度剖析C++渲染质量关键因素

第一章:为什么你的游戏画面总是差一截?——C渲染质量的宏观视角在高性能游戏开发中,C依然是构建底层图形引擎的首选语言。然而,即便使用了DirectX或Vulkan这样的先进API,许多开发者仍发现最终呈现的画面质感与商业大作…

作者头像 李华