《毕业设计(论文)一种基于51单片机的粉尘监测系统的设计—定稿.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)一种基于51单片机的粉尘监测系统的设计—定稿.doc(40页珍藏版)》请在三一办公上搜索。
1、 届 别 2016届 学 号 毕业设计 基于51单片机的PM2.5检测系统的设计与实现 姓 名 系 别、 专 业 电子信息与电气工程学院 电子信息科学与技术专业 导 师 姓 名、职 称 完 成 时 间 2016年5月10日 目 录摘 要IAbstractII1 绪论11.1 课题背景11.2 国内外研究现状12 系统仿真软件及总体设计方案12.1 Keil4软件开发坏境12.2 软件烧录工具22.3程序结构分析42.4 整体的设计方案42.5电源模块53 主要元器件简介53.1 GP2Y1010AU0F传感器简介53.2 ADC0832模数转换器简介83.3 LCD1602液晶显示屏103.4
2、 STC89C52单片机的简介134 系统单元电路模块设计164.1主控制模块164.2显示模块电路174.3关于报警模块的设计174.4按键模块的设计184.5粉尘模块电路设计184.6电源部分的设计195 系统测试与实现205.1系统程序流图205.2 仿真电路215.3 软件跟硬件结合225.4 测试结果分析245.5 系统实现246、总结25致 谢26参考文献27附录1:系统整体电路原理图28附录2:系统设计部分源程序29摘 要 现在社会发展的越来越快,随着工业的发展,虽然给人们的生活带来很多便利。但是,在生产过程产生很多对人体有害的因素工业生产过程中会,例如煤炭灰开采、水泥生产等行业
3、中的粉尘污染。 我的设计采用由LCD1602液晶模块、STC89C52单片机最小系统、ADC0832模数转换器模块、GP2Y1010AU粉尘传感器、电源模块、蜂鸣器报警模块和按键模块模块组成。单片机是通过ADC0832转换芯片采集GP2Y1010AU粉尘传感器的粉尘的浓度,通过单片机的数据转换处理后在液晶屏上显示空气中的质量,测量空间中的粉尘浓度如果大于当时设置粉尘浓度时,蜂鸣器就会产生报警的声音和发光二极管发出声光报警。当然,粉尘的浓度报警值我们可以通过按键来进行设置。关键字:GP2Y1010AU0F传感器;粉尘检测;空气质量 AbstractWith the development of
4、society and industry,whichbrings a lot of convenienceto peoples life.However, it will produce a lot of harmful factors in the process of industrial production, such as coal mining, cement production and other industries in the dust pollution.Ina variety of risk factorson human health effects ofthe m
5、ost serious.The dust harm to human body isthe most direct,the most serious is thecause of pneumoconiosis.When the dust concentration is too high,thehigh temperature drying timemay explode.The design used by STC89C52 MCU minimum system, gp2y1010au dust sensor, ADC0832 ADC module, LCD1602 LCD module,
6、power supply module, buzzer alarm module and a key module.Single-chip microcomputer real-time through the ADC0832 conversion chip acquisition gp2y1010au dust sensor dust concentration, through the single-chip microcomputer data conversion processing in the LCD screen display in the air quality, when
7、 the spatial measurement of dust concentration is higher than the set of dust concentration, buzzer and light-emitting diodes emit sound and light alarm.The dust concentrationalarm value can be setthrough the buttons. Key words: GP2Y1010AU0F detection sensors;Dust detection;dust and air quality1 绪论1
8、.1 课题背景粉尘又称可吸入颗粒物,它是能被呼吸道粘连,直径有10um的颗粒物状,对人的眼睛、上呼吸道、鼻腔都非常有害。粉尘和烟雾它是做为病菌的载体,如果一旦分散到空气中,就会很容易传播各种疾病。人们长久呼吸或长久散落皮肤上会容易导致癌症。由此可以看出粉尘对人体健康和生产的会产生巨大危害性,煤矿井下管道作业、煤炭生产都要产生大量的粉尘,加上煤炭井下没有通风的条件,煤尘浓度可高达1000mg/m以上。在这环境中工作中,工人会吸入大量的粉尘,如果粉尘长时间进入人的呼吸系统,大量粉尘会在肺泡中沉积,会引起慢性职业病,严重的危机人的身体健康。因此,我们必须对煤矿井下粉尘进行实时检测和采取应急的措施,及
9、时了解煤矿井下工人的劳动环境和安全,并且掌握井下煤尘浓度及变化情况,以及采取应急措施来改变粉尘的浓度,为安全,防尘,降尘等措施提供必要现场数据和采取措施降低浓度。1.2 国内外研究现状在我国内大多采用先进的测试粉尘技术,有的是射线原理,其吸收量只与吸收物质的重量相关,而与吸收物质的物化性质无关,可直接读粉尘浓度。2 系统仿真软件及总体设计方案2.1 Keil4软件开发坏境 Keil4 C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil4 软件开发环境如图1所示:图1 K
10、eil4软件开发环境 我用的是keil4软件开发坏境,该软件能够开发和调试软件,我用的是C语言作为开发语言,该语言是我们大学上的一门专业课语言,所以我的开发语言是C语言。2.2 软件烧录工具在keil4软件开发完成并且编译没有错误的情况下,为了要实现软件与硬件同时工作,软件来控制硬件来达到PM2.5检测系统与实现,这样就能达到毕业设计的目的,软件烧录我用的是STC_ISP软件,运用这个软件就能把我自己设计的工程软件烧录到STC51单片机里,在把单片机芯片放到我自己焊的硬件中,就能达到测试的效果,STC_ISP软件如图2所示,还有烧录的单片机如图3所示: 图2 STC_ISP烧录软件 图3 烧录
11、工具2.3程序结构分析主程序对所用到的外设资源进行初始化,还调用了LCD显示程序、键值设定程序、对ADC0832以及粉尘传感器数据处理程序3个子程序,LCD显示程序都需要更新数值,键值动作变化或者粉尘浓度数据有改变时。在本章主要介绍主程序流程,和对ADC0832以及粉尘传感器数据处理子程序流程。2.4 整体的设计方案毕业设计采用ADC0832模数转换器模块、LCD1602液晶模块、STC89C52单片机最小系统、GP2Y1010AU粉尘传感器、电源模块、蜂鸣器报警模块和按键模块模块等模块组成。单片机实时通过ADC0832转换芯片采集GP2Y1010AU粉尘传感器的粉尘的浓度,通过单片机的数据转
12、换处理后在液晶屏上显示空气中的质量,当测量空间中的粉尘浓度大于设置粉尘浓度时,蜂鸣器和发光二极管发出声光报警。粉尘的浓度报警值可以通过按键进行设置。系统总体框图如图4所示:电源模块按键模块ADC0832单片机STC89C52最小系统LCD显示粉尘传感器蜂鸣器报警 图4 总体结构框图 该系统主要由粉尘检测模块GP2Y1010AU、按键设置模块、报警模块和液晶显示模块态显电路组成,下面我分别介绍实现这个系统功能的方案。2.5电源模块采用5V蓄电池为系统提供电源。蓄电池是具有稳定的电压输出性能以及较强的电流驱动能力。可以运用电脑和充电宝,用起来也比较方便也很实惠。3 主要元器件简介3.1 GP2Y1
13、010AU0F传感器简介一、GP2Y1010AU0F物理特性GP2Y1010AU0F是一个采用光学传感系统的灰尘传感器。该设备由一个光电管成对角和红外线发光二极管(IRED)布置而成。它通过检测空气中的灰尘的反射光。特别是,它能够灵敏有效地检测到像香烟烟雾等非常细小的粒子。出此之外,它也还可以通过脉冲冲模拟输出来分别区分屋子内的烟雾和灰尘。其内部原理图如图5所示:图5 GP2Y1010AU0F内部原理图其中IRED代表红外发光二极管,Dust through hole代表通孔的粉尘,Dust or Smoke particle代表粉尘或烟雾粒子,amplifier circuit代表放大电路,
14、For sensitive adjustment代表对于敏感的调整;其主要参数如表1所示:表1 GP2Y1010AU0F主要参数主要参数技术条件备注灵敏度0.5V/(0.1mg/m3)输出电压0.9(TYP)无灰尘供电电流11mA体积规格46.0*30.0*17.6单位 mm兼容性兼容无铅ROHS指令供应电压Vcc-0.3+0.7单位 V输入终端电压-0.3VccVled单位 V适应温度-1065单位 其电光特性如表2所示:表2 GP2Y1010AU0F 光电特性参数符号工作条件最小典型值最大单位灵敏度K1*2*30.350.50.65V/(0.1mg/m3)输出电压Voc1*2*300.91
15、.5V输出电压范围VohRl=4.7K3.4-VLED端子电流I (led)LED端子=0V-1020mA消耗电流IccRL=无穷大-1120mA其中灵敏度是由输出电压变化量规定时粉尘浓度有0.1毫克/立方米指定。LED输入端子输入的条件如表3所示:表3 LED输入端子输入条件参数符号数值单位脉冲周期T101ms脉冲宽度Pw0.320.02ms工作电源电压VCC50.5V其引脚定义和实物图如图6所示:图6 GP2Y1010AU引脚定义和实物图二、GP2Y1010AU0F检出方法GP2Y1010AU0F插上电源或者接上干电池后,1秒内就会稳定、正常的工作,可以进行检出。我们使用的方法是:从输出的
16、电压来进行分析和判定。首先测出无尘无烟时的电压值并且保存下来。灰尘和烟检出时输出的区别:一般,烟是细小的颗粒,密度很高,狂撒速度非常的快。灰尘粉尘是一个一个的大颗粒,密度非常低,陆陆续续式的进入灰尘传感器的检出区域并且进行检测。就如图7所示,图7 GP2Y1010AU0F检测灰尘和烟雾输出电压波形比较3.2 ADC0832模数转换器简介ADC0832功能与引脚简介ADC0832 是双通道A/D转换芯片,也一种8 位分辨率。因为它体积非常小,兼容性也比较强,性价比高。ADC0832 具有以下特点: 8位分辨率; 双通道A/D转换 输入输出电平与TTL/CMOS相兼容 5V电源供电时输入电压在0-
17、5V之间 工作频率为250KHZ,转换时间为32S 一般功耗仅为15mW 8P、14PDIP(双列直插)、PICC 多种封装 商用级芯片温宽为0C +70C,工业级芯片温宽为-40C +85C ADC0832实物引脚图如图8所示:图8 ADC0832实物引脚图芯片引脚接口说明: CS_ 片选使能,低电平芯片使能。 CH0 模拟输入通道0,或作为IN+/-使用。 CH1 模拟输入通道1,或作为IN+/-使用。 GND 芯片参考0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 Vcc/REF 电源输入及参考电压输入(复用)。ADC0832 与单片机的接口电路
18、如图9所示:图9 ADC0832 与单片机的接口电路图ADC0832 是八位分辨率A/D转换芯片,可以适应一般的模拟量转换要求。芯片的模拟电压输入在05V之间。单片机对ADC0832 的控制原理一般情况,DO端与DI端在通信时并不会同时有效的与单片机的接口是双向的,所以电路设计可以把DO和DI 并联在一起,在同一根数据线上使用输入输出数据,能够方便的传输数据。在进行A/D转换时,应该先将CS使能端拉到低电平,而且要保持低电平直到转换最后完全结束。首先在第一个时钟脉冲的下沉之前,DI端必须从低电平拉到高电平,这个是启始信号。在第二、三个脉冲下沉之前,DI端应该输入二位数据,目的用于选择通道功能。
19、ADC0832时序图如图10所示:图10 ADC0832时序图3.3 LCD1602液晶显示屏LCD1602 能够同时显示16x02 即32个字符,是一种字符型液晶显示屏。在日常生活中,液晶显示器在我们的生活中常常能够使用到。液晶显示模块也已经作为很多很多的电子产品的必要设备。液晶显示器每一个点在接受信号后就会一直保持着那个状态和颜色。一般1602字符型液晶显示器实物如图11,图12所示:图11 液晶屏正面 图12 液晶屏背面LCD1602引脚:第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL是液晶显示器对比度调整端,当接地时,对比度就是最高了,当接正电源时,对比度就是最弱
20、的,我们使用时就可以通过一个10K的电位器调整对比度,避免产生“鬼影”。 第4脚:RS是寄存器选择,当处于高电平时,是选择数据寄存器,当处于低电平时,就是选择指令寄存器。 第5脚:R/W是读写信号线,当处于高电平时,是进行读操作,当处于低电平时,是进行写操作。第6脚:E端为使能端,当E端由高电平跳变到低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。 LCD1602的RAM地址映射以及标准字库表的内部的字符发生存储器就有一百六十个不同的字符,每一个字符都是由一个特定固定的代码组成。指令1:清显示。指令2:光标复位,光标返回到地址
21、00H 。指令3:S:低电平则表示无效,高电平表示为有效。指令4:显示开关控制。A:控制光标是否闪烁,高电平表示闪烁,低电平表示不闪烁 。B:控制整体显示的开与关,高电平表示的开显示,低电平表示的关显示。 指令5:光标或显示移位 S/C:低电平时移动光标,高电平时移动显示的文字。指令6:字符发生器RAM地址设置 。指令7:DDRAM地址设置 。指令8:读出光标地址和忙信号。 指令10:写数据 。指令11:读数据 。1602内部显示地址如图13所示: 图13 1602内部显示地址3.4 STC89C52单片机的简介STC89C52模块模块在整个系统中起着非常重要的作用,我们需要检测键盘,温度传感
22、器等各种参数,同时也要驱动液晶显示的数据及相关参数,所以我闲着了在这里我们选用了STC89C52单片机作为系统芯片。Intel 公司是最早对51系列的单片机进行开发设计的,Intel 公司后来将51核的设计方案提供给Philip、Atmel、SST等这些电子设计生产商,这些公司根据Intel 公司提供的相关设计方案的基础之上,生产了多种以51为内核的单片机。这些主要电子产品制造商已经介绍了微控制器兼容的51指令,并在51基于扩展的一些功能和内部结构是一致的51。 STC89C52一共有40个引脚,1个全双工异步串行口,4个8位并行I/O口,2个16位定时/计数器同时内含5个中断源,2个优先级。
23、STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。STC89C52单片机的基本组成框图见图14。图14 STC89C52单片机结构图 单片机STC89C52主要特性如下:1. 一个8 位的微处理器(CPU)。2. 片内数据存储器RAM(128B),用以存放可以读写的数据。3. 单片机的发展趋势主要是将RAM 和ROM 都集成在其单片机当中,这样不仅让用户进行设计时方便及快捷的同时又提升对其系统的抗干扰性。4. 四个8 位并行IO 接口P0P3,每个口不仅用作输入,仍可以用作输出。5. 两个定时器计数器,每个定时器计数器都可以设置成计数方式,对外
24、部事件进行计数,同样也可以设置成定时方式,为了实现计算机控制可以根据计数或定时的结果。为方便设计串行通信,提供3 个16 位定时器/计数器目前就是52 系列单片机。6. 目前新推出的单片机都不只5 个中断源,比如SST89E58RD 就有9 个中断源。五个中断源的中断控制系统。7. 为了提高其指令的执行速度,最高允许振荡频率为12MHz。最高允许振荡频率达40MHz,图3-2 STC89C52单片机管脚图STC89C52单片机部分引脚说明1.时钟电路引脚XTAL1 和XTAL2:XTAL2(18 脚):接外部晶体和微调电容的一端;该引脚输入外部时钟脉冲才能采用外部时钟电路。可用示波器查看XTA
25、L2 端是否有脉冲信号输出才能检查振荡电路是否正常工作。XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。2.控制信号引脚RST,ALE,PSEN 和EA:RST/VPD(9 脚):RST 是复位信号,输入端高电平作为有效。RST 引脚的第二功能是VPD,就可以接入RST 端,可以为RAM 提供备用电源,为了不让存储在RAM 中的信息丢失和删除,然而合复位后方可继续正常运行。ALE/PROG(30 脚):地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚就不断地向外输出正脉冲信号。PSEN(29 脚):程序存
26、储允许输出信号端。EA/Vpp(31 脚):当EA 引脚处于高电平时候,CPU访问片内EPROM/ROM且执行其内部程序存储器中的指令代码。P0口(P0.0P0.7,3932 脚):P0口是一个 位准双向I/O口。P1口(P1.0P1.7,18 脚):P1口是一个带内部上拉电阻的,8 位准双向I/O口。P2口(P2.0P2.7,2128 脚):P2口是一个带内部上拉电阻的8 位准双向I/O口。P3口(P3.0P3.7,1017 脚):P3口是一个带内部上拉电阻的8 位准双向I/O口。P3口每个引脚都有第二功能,如下:P3.0:(RXD)串行数据接收。P3.1:(RXD)串行数据发送。P3.2:
27、(INT0#)外部中断0输入。P3.3:(INT1#)外部中断1输入。P3.4:(T0)定时/计数器0的外部计数输入。P3.5:(T1)定时/计数器1的外部计数输入。P3.6:(WR#)外部数据存储器写选通。P3.7:(RD#)外部数据存储器读选通。4 系统单元电路模块设计4.1主控制模块主控制最小系统电路如图15所示。单片机最小系统由复位电路、单片机、时钟电路构成。单片机的工作电压范围:给单片机外界5V直流电源,其范围在4V-5.5V,单片机中连接方式通常是20脚VSS接电源地端,而40脚VCC接正极5V。确定单片机的工作起始状态就是复位电路,从而顺利完成单片机的启动过程。完成单片机启动确定
28、单片机起始工作状态就是单片机接通电源时产生复位信号。 图15 单片主控制电路4.2显示模块电路 液晶的命令操作脚是RS、RW、EN接在单片机的P35、P36、P37脚,数据脚D0D7分别接单片机的的P1口。具体电路图如图16所示:图16 显示模块电路4.3关于报警模块的设计本设计中声光报警电路采用NPN型S8550三极管驱动,当单片机的P13口输出低电平时,三极管的VEVBVC0。三极管的集电结反偏,发射结正偏,此时发光二极管和蜂鸣器发出声光报警,当单片机的P13口输出高电平时,三极管截止,声光报警停止工作。具体电路图如图17所示:图17 报警模块电路图4.4按键模块的设计可以通过按键进行设置
29、空气质量检测系统的灰尘参数。其中一个参数加键,另一个则是参数减键。通过这两个按键(参数加键、参数减键)进行设置。具体电路图如图18所示:图18 按键模块电路图4.5粉尘模块电路设计灰尘传感器是作为经常用的空气净化器系统,能偶检测非常细小的颗粒,比如香烟的烟雾,是非常有效果的。传感器的第一脚接了一个220uF的电解电容和150欧姆的电阻。第二脚接到单片机的P32外部中断0口,第五脚是粉尘浓度的模拟量输出脚,接在模数转换器ADC0832的通道1上。具体电路图如图19所示:图19粉尘模块电路4.6电源部分的设计采用3节1.5 V干电池共4.5V做温湿度测量控制系统的电源,经过实验验证系统工作时,能够
30、满足系统的要求就是单片机、传感器的工作电压稳定,而且电池更换方便。电源接口电路如图20,其中DC5V为电池接口,SW1为电源开关,R6为二极管的限流电阻,POWER为电源指示灯,C5和C6为电源的滤波电容。图20 电源接口电路5 系统测试与实现5.1系统程序流图主程序的主要功能是对定时器,LCD1602,ADC0832,GP2Y1010AU0F,I/O口资源等所用到的资源进行初始化、对传感器及ADC0832、对按键动作的处理的实时电压值进行换算处理并显示。主程序流程见图21所示。 图21 主程序流程图 对ADC0832以及粉尘传感器数据处理程序 该部分子程序主要过程:GP2Y1010AU0F通
31、过对当前环境中的粉尘浓度检测会有相应的电压值变化(模拟信号),从而通过ADC0832的转化可以得到相关的数字信号,对已得到的数字电压值以及GP2Y1010AU0F检出方法,通过数值计算可以得到当前环境粉尘浓度,误差比较小。其程序流程图如图22所示: 图22 传感器数值处理程序流程图5.2 仿真电路为了测试软件,我们一般软件开发要进行仿真电路,这样有方便又能够检测电路是否能够达到的效果,避免在硬件上的错误,该仿真电路就是通过所有用的单元电路设计组合到一起,再通过仿真软件ISIS来进行仿真,看能否软件上能达到效果,一个毕业设计首先是要软件上没有错误,才能在硬件上面跑,这样做出来的产品就不会有什么错
32、误,在仿真软件找到自己要的元器件,根据电路图在进行仿真从而达到检测的效果,我的仿真电路如图23所示: 图23 仿真软件5.3 软件跟硬件结合 软件是一个产品的控制指挥系统,这个是非常重要的,你要做的什么动作都要通过软件设计从而能够达到你想要的效果,通过运动C语言在Keil4软件开发坏境中,设计出了检测PM2.5检测系统并且编译没有错误,再通过仿真软件也能实现同样的功能,软件已经做好,接下来就要跟硬件结合到一起。通过单片机把程序烧录到单片机的芯片,再把芯片安装到硬件上面,该硬件是自己动手焊接的,如图24 焊接图所示,并且能产生正确的效果,如图25 实物效果图所示: 如图24 焊接图 如图25 实
33、物效果图5.4 测试结果分析根据实物测试结果分析,如图 实物效果图所示,该图就是测试室内环境的PM值,现在是38ug/m3,测试的结果是best,没有超过刚开始设置范围200ug/m3,所以现在空气的质量是健康无害的,该结果是通过ADC0832硬件测试的结果再通过模数转换再通过软件分析从而能够在液晶显示屏上看到我们测试的数据结果,该结果准确无误。5.5 系统实现系统最后实现的功能就是基于51单片机的PM2.5检测系统的设计与实现,系统通过软件和硬件最后能实现检测,该系统主要由粉尘传感器,按键,电源,STC89C52,LED显示灯,蜂鸣器报警等组成,软件是通过单片机烧录到STC89C52中,最后
34、通过组装,反复验证,最后能够达到总个系统的实现与功能的实现。6、总结空气质量检测仪系统控制核心采用了单片机STC89C52,最大限度的将其具备的资源应用到设计中,不仅体现了单片机最小系统的应用过程中的灵活性,同样也实现功能多样的智能化。采用了单片机对空气质量的检测尘埃、香烟、油烟等,可以检测出空气中的灰尘的程度,在液晶上进行显示具有非常重要的市场应用价值。虽然存在着系统功能单一等缺点,相信在以后的实践中能一步一步完善。自己在图书馆和上网查资料到写出具体的实施方案、画出电路图都要认真考虑,最后做出了自己想做出来的产品,并且能够实现理想的功能,从而顺利的完成毕业设计。致 谢首先感谢学校给我提了良好
35、的学习环境和实践环境,在即将毕业之际,心中不舍之情难以言表,同时我相信在学校学习和生活的四年光阴是我一生中最难忘的经历! 在此论文撰写过程中,感谢金桂老师在我做毕业设计过程中所给予的帮助。让我深切体会到探求知识的过程虽然困难重重,但同时也是充实快乐的。同时,在此次设计过程中,在我们院实验创新基地有丰富实践经验的同学给予了极大的指导和帮助,有许多技术上的难题都是通过请教他们或者书本从而得以解决,在此非常感谢他们。在这四年的大学生活中,老师教会我们很多,也得到了老师的肯定,谢谢老师们,你们辛苦啦。参考文献1 李文忠,段朝玉 .短距离无线数据通信M.北京:北京航空航天大学出版社,2006.2 李艳红
36、,李海华.传感器原理及其应用M.北京:北京理工大学出版社,2010.3 傅扬烈. 单片机原理与应用教程M.北京:电子工业出版社,2002.4 谭浩强.C程序设计M.北京:清华大学出版社,1999 .5 何希才, 薛永毅.传感器及其应用实例M北京:机械工业出版社,20046 Simon Haykin,Machael Moher,郑宝玉.现代无线通信M.北京:电子工业出版社, 2006.7 武庆生,仇梅.单片机原理与应用M.成都:电子科技大学出版社,1998.8 周航慈.单片机应用程序设计技术M.北京:北京航空航天大学出版社,1991.9 郭天祥.51单片机C语言教程M.北京:电子工业出版社,20
37、09.36-9210 王新贤.通用集成电路速查手册第二版.M 山东科学技术出版社,22-57附录1:系统整体电路原理图附录2:系统设计部分源程序#includeLCD1602.h /添加LCD1602头文件#includeadc0832.h/添加ADC0832头文件/#includetime0.h sbit BUZZER = P13; /蜂鸣器驱动端口=P12sbit Reduc = P17; /按键键输入端口=P17sbit Add = P30; /按键加输入端口=P31sbit vled = P32;void Delay1us(uint t)/12MHzwhile(t-)_nop_();u
38、int read_data(uchar N)uint val=0;vled=0;Delay1us(20);val=adc0832(N);vled=1;Delay1us(400);return val;/* 函数名称 : void main(void)* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无* 说 明 :*/void main(void)double PM,pm1,pm2;int PMVAL=0,HPM=200,PM_count=0,pm1_count=0;uchar bueezr_flag=0,bueezr_count=0,buzzer_time=25;/蜂鸣器报警变量 L
39、CD_Init(); WriteChar(1,0,16,PM:0020ug/m3); WriteChar(2,0,16,HPM2.5:0200ug/m3);while(1) Delay(120); pm1+=read_data(1);if(+PM_count=40) PM_count=0; pm1=pm1/40;pm2+=pm1;if(+pm1_count=3)PM=pm2/3;PM=PM*50/255;PM-=4; PM/=5;PM*=1000;PMVAL=PM;PMVAL+=235;if(PMVAL=9999)PMVAL=9999;if(PMVALHPM)bueezr_flag=1;els
40、ebueezr_flag=0;BUZZER=1; if(PMVAL=100)WriteChar(1,12,4,weak);else if(PMVAL=50)WriteChar(1,12,4,good);else if(PMVALbuzzer_time*10)bueezr_count=buzzer_time+1;if(bueezr_count%buzzer_time=0 & bueezr_flag)BUZZER=BUZZER;/蜂鸣器取反 发出声音提示if(!Reduc)Delay(100);HPM-;WriteCOMDATA(0xC7,0);WriteCOMDATA(HPM/1000+0x30
41、,1);WriteCOMDATA(HPM/100%10+0x30,1);WriteCOMDATA(HPM/10%10+0x30,1);WriteCOMDATA(HPM%10+0x30,1);if(!Add)Delay(100);HPM+;WriteCOMDATA(0xC7,0);WriteCOMDATA(HPM/1000+0x30,1);WriteCOMDATA(HPM/100%10+0x30,1);WriteCOMDATA(HPM/10%10+0x30,1);WriteCOMDATA(HPM%10+0x30,1);/* 编写时间: 2016.05.09* 作 者: liuweiliang* 程序功能: LCD1602