一种基于51单片机的粉尘监测系统的设计—定稿

上传人:js****6 文档编号:64633650 上传时间:2022-03-21 格式:DOC 页数:25 大小:703.50KB
收藏 版权申诉 举报 下载
一种基于51单片机的粉尘监测系统的设计—定稿_第1页
第1页 / 共25页
一种基于51单片机的粉尘监测系统的设计—定稿_第2页
第2页 / 共25页
一种基于51单片机的粉尘监测系统的设计—定稿_第3页
第3页 / 共25页
资源描述:

《一种基于51单片机的粉尘监测系统的设计—定稿》由会员分享,可在线阅读,更多相关《一种基于51单片机的粉尘监测系统的设计—定稿(25页珍藏版)》请在装配图网上搜索。

1、-届 别 2021届 学 号 毕业设计 基于51单片机的PM2.5检测系统的设计与实现 姓 名 系 别、专 业 电子信息与电气工程学院 电子信息科学与技术专业 导 师 姓 名、职 称 完 成 时 间 2021年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 S

2、TC89C52单片机的简介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. z-摘 要 现在社会开展的越来越快,随着工业的开展,虽然给人们的生活带来很多便利。但是,在生产过程产生很多对人体有害的因素工业生产过程中会,例如煤炭灰开采、水泥生产等行

3、业中的粉尘污染。我的设计采用由LCD1602液晶模块、STC89C52单片机最小系统、ADC0832模数转换器模块、GP2Y1010AU粉尘传感器、电源模块、蜂鸣器报警模块和按键模块模块组成。单片机是通过ADC0832转换芯片采集GP2Y1010AU粉尘传感器的粉尘的浓度,通过单片机的数据转换处理后在液晶屏上显示空气中的质量,测量空间中的粉尘浓度如果大于当时设置粉尘浓度时,蜂鸣器就会产生报警的声音和发光二极管发出声光报警。当然,粉尘的浓度报警值我们可以通过按键来进展设置。关键字:GP2Y1010AU0F传感器;粉尘检测;空气质量AbstractWith the development of s

4、ociety and industry,whichbrings a lotof 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 mos

5、t serious.The dustharm to human body isthe most direct,the most serious is thecause of pneumoconiosis.When the dust concentration is too high,thehigh temperature drying timemay e*plode.The design used by STC89C52 MCU minimum system, gp2y1010au dust sensor, ADC0832 ADC module, LCD1602 LCD module, pow

6、er supply module, buzzer alarm module and a key module.Single-chip microputer real-time through the ADC0832 conversion chip acquisition gp2y1010au dust sensor dust concentration, through the single-chip microputer data conversion processing in the LCD screen display in the air quality, when the spat

7、ial measurement of dust concentration is higher than the set of dust concentration, buzzer and light-emitting diodes emit sound and light alarm.The dust concentrationalarmvalue can be setthrough the buttons.Key words:GP2Y1010AU0F detection sensors;Dust detection;dust and air quality. z-1 绪论1.1 课题背景粉

8、尘又称可吸入颗粒物,它是能被呼吸道粘连,直径有10um的颗粒物状,对人的眼睛、上呼吸道、鼻腔都非常有害。粉尘和烟雾它是做为病菌的载体,如果一旦分散到空气中,就会很容易传播各种疾病。人们长久呼吸或长久散落皮肤上会容易导致癌症。由此可以看出粉尘对人体*和生产的会产生巨大危害性,煤矿井下管道作业、煤炭生产都要产生大量的粉尘,加上煤炭井下没有通风的条件,煤尘浓度可高达1000mg/m以上。在这环境中工作中,工人会吸入大量的粉尘,如果粉尘长时间进入人的呼吸系统,大量粉尘会在肺泡中沉积,会引起慢性职业病,严重的危机人的身体*。因此,我们必须对煤矿井下粉尘进展实时检测和采取应急的措施,及时了解煤矿井下工人的

9、劳动环境和平安,并且掌握井下煤尘浓度及变化情况,以及采取应急措施来改变粉尘的浓度,为平安,防尘,降尘等措施提供必要现场数据和采取措施降低浓度。1.2 国外研究现状在我国大多采用先进的测试粉尘技术,有的是射线原理,其吸收量只与吸收物质的重量相关,而与吸收物质的物化性质无关,可直接读粉尘浓度。2 系统仿真软件及总体设计方案2.1 Keil4软件开发坏境Keil4 C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、构造性、可读性、可维护性上有明显的优势,因而易学易用。Keil4 软件开发环境如图1所示:图1 Keil4软件开发环境 我用

10、的是keil4软件开发坏境,该软件能够开发和调试软件,我用的是C语言作为开发语言,该语言是我们大学上的一门专业课语言,所以我的开发语言是C语言。2.2 软件烧录工具在keil4软件开发完成并且编译没有错误的情况下,为了要实现软件与硬件同时工作,软件来控制硬件来到达PM2.5检测系统与实现,这样就能到达毕业设计的目的,软件烧录我用的是STC_ISP软件,运用这个软件就能把我自己设计的工程软件烧录到STC51单片机里,在把单片机芯片放到我自己焊的硬件中,就能到达测试的效果,STC_ISP软件如图2所示,还有烧录的单片机如图3所示:图2 STC_ISP烧录软件图3 烧录工具2.3程序构造分析主程序对

11、所用到的外设资源进展初始化,还调用了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 GP2Y1010AU0F传感器简介一、GP

13、2Y1010AU0F物理特性GP2Y1010AU0F是一个采用光学传感系统的灰尘传感器。该设备由一个光电管成对角和红外线发光二极管IRED布置而成。它通过检测空气中的灰尘的反射光。特别是,它能够灵敏有效地检测到像香烟烟雾等非常细小的粒子。出此之外,它也还可以通过脉冲冲模拟输出来分别区分屋子的烟雾和灰尘。其部原理图如图5所示:图5 GP2Y1010AU0F部原理图其中IRED代表红外发光二极管,Dust through hole代表通孔的粉尘,Dust or Smoke particle代表粉尘或烟雾粒子,amplifier circuit代表放大电路,For sensitive adjustm

14、ent代表对于敏感的调整;其主要参数如表1所示:表1 GP2Y1010AU0F主要参数主要参数技术条件备注灵敏度0.5V/0.1mg/m3输出电压0.9TYP无灰尘供电电流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.5V输出电压围VohRl=4.7K3.4-VLED端

15、子电流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-5V之间 工作频率为250KHZ,转换时间为32S 一般功

17、耗仅为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 与单片机的接口电路如图9所示:图9 ADC0832 与单片机的接口电路图ADC0832

18、是八位分辨率A/D转换芯片,可以适应一般的模拟量转换要求。芯片的模拟电压输入在05V之间。单片机对ADC0832 的控制原理一般情况,DO端与DI端在通信时并不会同时有效的与单片机的接口是双向的,所以电路设计可以把DO和DI 并联在一起,在同一根数据线上使用输入输出数据,能够方便的传输数据。在进展A/D转换时,应该先将CS使能端拉到低电平,而且要保持低电平直到转换最后完全完毕。首先在第一个时钟脉冲的下沉之前,DI端必须从低电平拉到高电平,这个是启始信号。在第二、三个脉冲下沉之前,DI端应该输入二位数据,目的用于选择通道功能。ADC0832时序图如图10所示:图10 ADC0832时序图3.3

19、LCD1602液晶显示屏LCD1602 能够同时显示16*02 即32个字符,是一种字符型液晶显示屏。在日常生活中,液晶显示器在我们的生活中常常能够使用到。液晶显示模块也已经作为很多很多的电子产品的必要设备。液晶显示器每一个点在承受信号后就会一直保持着那个状态和颜色。一般1602字符型液晶显示器实物如图11,图12所示:图11 液晶屏正面图12 液晶屏反面LCD1602引脚:第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL是液晶显示器比照度调整端,当接地时,比照度就是最高了,当接正电源时,比照度就是最弱的,我们使用时就可以通过一个10K的电位器调整比照度,防止产生“鬼影。

20、第4脚:RS是存放器选择,当处于高电平时,是选择数据存放器,当处于低电平时,就是选择指令存放器。 第5脚:R/W是读写信号线,当处于高电平时,是进展读操作,当处于低电平时,是进展写操作。第6脚:E端为使能端,当E端由高电平跳变到低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。 LCD1602的RAM地址映射以及标准字库表的部的字符发生存储器就有一百六十个不同的字符,每一个字符都是由一个特定固定的代码组成。指令1:清显示。指令2:光标复位,光标返回到地址00H 。指令3:S:低电平则表示无效,高电平表示为有效。指令4:显示开关控

21、制。A:控制光标是否闪烁,高电平表示闪烁,低电平表示不闪烁 。B:控制整体显示的开与关,高电平表示的开显示,低电平表示的关显示。 指令5:光标或显示移位 S/C:低电平时移动光标,高电平时移动显示的文字。指令6:字符发生器RAM地址设置 。指令7:DDRAM地址设置 。指令8:读出光标地址和忙信号。指令10:写数据 。指令11:读数据 。1602部显示地址如图13所示:图13 1602部显示地址3.4 STC89C52单片机的简介STC89C52模块模块在整个系统中起着非常重要的作用,我们需要检测键盘,温度传感器等各种参数,同时也要驱动液晶显示的数据及相关参数,所以我闲着了在这里我们选用了ST

22、C89C52单片机作为系统芯片。Intel 公司是最早对51系列的单片机进展开发设计的,Intel 公司后来将51核的设计方案提供给Philip、Atmel、SST等这些电子设计生产商,这些公司根据Intel 公司提供的相关设计方案的根底之上,生产了多种以51为核的单片机。这些主要电子产品制造商已经介绍了微控制器兼容的51指令,并在51基于扩展的一些功能和部构造是一致的51。 STC89C52一共有40个引脚,1个全双工异步串行口,4个8位并行I/O口,2个16位定时/计数器同时含5个中断源,2个优先级。STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RA

23、M)组成。STC89C52单片机的根本组成框图见图14。图14STC89C52单片机构造图 单片机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.时钟电路引脚*TAL1 和*TAL2:*TAL2(18 脚):接外部晶体和微调电容的一端;该引脚输入外部时钟脉冲才能采用外部时钟电路。可用示波器查看*TAL2 端是否有脉冲信号输出才能检查振荡电路是否正常工作。*TAL1(19 脚):接外部晶体和微

25、调电容的另一端;在片它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。2.控制信号引脚RST,ALE,PSEN 和EA:RST/VPD(9 脚):RST 是复位信号,输入端高电平作为有效。RST 引脚的第二功能是VPD,就可以接入RST 端,可以为RAM 提供备用电源,为了不让存储在RAM 中的信息丧失和删除,然而合复位前方可继续正常运行。ALE/PROG(30 脚):地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚就不断地向外输出正脉冲信号。PSEN(29 脚):程序存储允许输出信号端。EA/Vpp(31 脚):当EA 引脚处于高电平时候,CPU片EPROM/RO

26、M且执行其部程序存储器中的指令代码。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:(R*D)串行数据接收。P3.1:(R*D)串行数据发送。P3.2:(INT0*)外部中断0输入。P3.3:(INT1*)外部中断1输入。P3.4:(T0)定时/计数器0的外部计数

27、输入。P3.5:(T1)定时/计数器1的外部计数输入。P3.6:(WR*)外部数据存储器写选通。P3.7:(RD*)外部数据存储器读选通。4 系统单元电路模块设计4.1主控制模块主控制最小系统电路如图15所示。单片机最小系统由复位电路、单片机、时钟电路构成。单片机的工作电压围:给单片机外界5V直流电源,其围在4V-5.5V,单片机中连接方式通常是20脚VSS接电源地端,而40脚VCC接正极5V。确定单片机的工作起始状态就是复位电路,从而顺利完成单片机的启动过程。完成单片机启动确定单片机起始工作状态就是单片机接通电源时产生复位信号。图15 单片主控制电路4.2显示模块电路液晶的命令操作脚是RS、

28、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做温湿度测量控制系统的电源,经过实验验证系统工作时,能够满足系统的要求就是单片机、传感器的工作电压稳定,而且电池更换方便。电源接口电路如图20,其中DC5V为电池接口,SW1为电源

30、开关,R6为二极管的限流电阻,POWER为电源指示灯,C5和C6为电源的滤波电容。图20 电源接口电路5 系统测试与实现5.1系统程序流图主程序的主要功能是对定时器,LCD1602,ADC0832,GP2Y1010AU0F,I/O口资源等所用到的资源进展初始化、对传感器及ADC0832、对按键动作的处理的实时电压值进展换算处理并显示。主程序流程见图21所示。 图21 主程序流程图 对ADC0832以及粉尘传感器数据处理程序 该局部子程序主要过程:GP2Y1010AU0F通过对当前环境中的粉尘浓度检测会有相应的电压值变化模拟信号,从而通过ADC0832的转化可以得到相关的数字信号,对已得到的数字

31、电压值以及GP2Y1010AU0F检出方法,通过数值计算可以得到当前环境粉尘浓度,误差比拟小。其程序流程图如图22所示:图22 传感器数值处理程序流程图5.2 仿真电路为了测试软件,我们一般软件开发要进展仿真电路,这样有方便又能够检测电路是否能够到达的效果,防止在硬件上的错误,该仿真电路就是通过所有用的单元电路设计组合到一起,再通过仿真软件ISIS来进展仿真,看能否软件上能到达效果,一个毕业设计首先是要软件上没有错误,才能在硬件上面跑,这样做出来的产品就不会有什么错误,在仿真软件找到自己要的元器件,根据电路图在进展仿真从而到达检测的效果,我的仿真电路如图23所示: 图23 仿真软件5.3 软件

32、跟硬件结合 软件是一个产品的控制指挥系统,这个是非常重要的,你要做的什么动作都要通过软件设计从而能够到达你想要的效果,通过运动C语言在Keil4软件开发坏境中,设计出了检测PM2.5检测系统并且编译没有错误,再通过仿真软件也能实现同样的功能,软件已经做好,接下来就要跟硬件结合到一起。通过单片机把程序烧录到单片机的芯片,再把芯片安装到硬件上面,该硬件是自己动手焊接的,如图24 焊接图所示,并且能产生正确的效果,如图25 实物效果图所示:如图24 焊接图 如图25 实物效果图5.4 测试结果分析根据实物测试结果分析,如图 实物效果图所示,该图就是测试室环境的PM值,现在是38ug/m3,测试的结果

33、是best,没有超过刚开场设置围200ug/m3,所以现在空气的质量是*无害的,该结果是通过ADC0832硬件测试的结果再通过模数转换再通过软件分析从而能够在液晶显示屏上看到我们测试的数据结果,该结果准确无误。5.5 系统实现系统最后实现的功能就是基于51单片机的PM2.5检测系统的设计与实现,系统通过软件和硬件最后能实现检测,该系统主要由粉尘传感器,按键,电源,STC89C52,LED显示灯,蜂鸣器报警等组成,软件是通过单片机烧录到STC89C52中,最后通过组装,反复验证,最后能够到达总个系统的实现与功能的实现。6、总结空气质量检测仪系统控制核心采用了单片机STC89C52,最大限度的将其

34、具备的资源应用到设计中,不仅表达了单片机最小系统的应用过程中的灵活性,同样也实现功能多样的智能化。采用了单片机对空气质量的检测尘埃、香烟、油烟等,可以检测出空气中的灰尘的程度,在液晶上进展显示具有非常重要的市场应用价值。虽然存在着系统功能单一等缺点,相信在以后的实践中能一步一步完善。自己在图书馆和上网查资料到写出具体的实施方案、画出电路图都要认真考虑,最后做出了自己想做出来的产品,并且能够实现理想的功能,从而顺利的完成毕业设计。致 首先感学校给我提了良好的学习环境和实践环境,在即将毕业之际,心中不舍之情难以言表,同时我相信在学校学习和生活的四年光阴是我一生中最难忘的经历! 在此论文撰写过程中,

35、感金桂教师在我做毕业设计过程中所给予的帮助。让我深切体会到探求知识的过程虽然困难重重,但同时也是充实快乐的。同时,在此次设计过程中,在我们院实验创新基地有丰富实践经历的同学给予了极大的指导和帮助,有许多技术上的难题都是通过请教他们或者书本从而得以解决,在此非常感他们。在这四年的大学生活中,教师教会我们很多,也得到了教师的肯定,教师们,你们辛苦啦。参考文献1 文忠,段朝玉 .短距离无线数据通信M.:航空航天大学,2006.2 艳红,海华.传感器原理及其应用M.:理工大学,2021.3 傅扬烈. 单片机原理与应用教程M.:电子工业,2002.4 谭浩强.C程序设计M.:清华大学,1999 .5 何

36、希才, 薛永毅.传感器及其应用实例M:机械工业,20046 Simon Haykin,Machael Moher,宝玉.现代无线通信M.:电子工业, 2006.7 武庆生,仇梅.单片机原理与应用M.:电子科技大学,1998.8 周航慈.单片机应用程序设计技术M.:航空航天大学,1991.9 郭天祥.51单片机C语言教程M.:电子工业,2021.36-9210 王新贤.通用集成电路速查手册第二版.M 科学技术,22-57附录1:系统整体电路原理图附录2:系统设计局部源程序*includeLCD1602.h /添加LCD1602头文件*includeadc0832.h/添加ADC0832头文件/*

37、includetime0.h sbit BUZZER = P13; /蜂鸣器驱动端口=P12sbit Reduc = P17; /按键键输入端口=P17sbit Add = P30; /按键加输入端口=P31sbit vled = P32;void Delay1us(uint t)/12MHzwhile(t-)_nop_();uint read_data(uchar N)uint val=0;vled=0;Delay1us(20);val=adc0832(N);vled=1;Delay1us(400);return val;/* 函数名称 : void main(void)* 函数功能 : 主

38、函数* 输 入 : 无* 输 出 : 无* 说 明 :*/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;/蜂鸣器报警变量 LCD_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) P

39、M_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;elsebueezr_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

40、_count=buzzer_time+1;if(bueezr_count%buzzer_time=0 & bueezr_flag)BUZZER=BUZZER;/蜂鸣器取反 发出声音提示if(!Reduc)Delay(100);HPM-;WriteDATA(0*C7,0);WriteDATA(HPM/1000+0*30,1);WriteDATA(HPM/100%10+0*30,1);WriteDATA(HPM/10%10+0*30,1);WriteDATA(HPM%10+0*30,1);if(!Add)Delay(100);HPM+;WriteDATA(0*C7,0);WriteDATA(HPM

41、/1000+0*30,1);WriteDATA(HPM/100%10+0*30,1);WriteDATA(HPM/10%10+0*30,1);WriteDATA(HPM%10+0*30,1);/* 作 者: liuweiliang* 程序功能: LCD1602头文件 * 使用说明: 在需要使用LCD1602显示时添加此头文件“LCD1602.h*/*ifndef _LCD1602_H_*define _LCD1602_H_*includedelay.h /添加延时函数头文件*define LCD_PINDATA P0 /数据端口定义 P2sbit RS = P14; /RS P07 sbit

42、RW = P15; /RW P06sbit E = P16; /E P05/* 函数名称 : WriteDATA(uchar LCD_DATA,uchar N)* 函数功能 : LCD1602写指令、数据函数* 输 入 : LCD_DATA:指令或者数据 N:指令方式还是数据方式 N=0时,LCD_DATA为指令,N=1时,LCD_DATA为数据* 输 出: 无* 说 明 : */void WriteDATA(uchar LCD_DATA,uchar N)Delay(1);E=1;RW=0;RS=N;LCD_PINDATA=LCD_DATA;E=0;/* 函数名称 : void LCD_ini

43、t(void)* 函数功能 : LCD1602初始化操作* 输 入 : 无* 输 出 : 无* 说 明 :*/void LCD_Init(void) WriteDATA(0*01,0);Delay(500);WriteDATA(0*38,0);Delay(10);WriteDATA(0*06,0);Delay(10);WriteDATA(0*0c,0);Delay(10);/* 函数名称 :void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer)* 函数功能 :在任意位置写指定个字符* 输 入 :Row : 要写的字符所在的行,只

44、能为1或2; Col : 要写的字符所在的列,只能为0-15 Num : 要写字符的个数 pbuffer : 要写字符的首地址* 输 出 :无* 说 明 :*/void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer)uchar i;if(Row=1)Row=0*80+Col;else Row=0*C0+Col;WriteDATA(Row,0);for(i=Num;i!=0;i-)WriteDATA(*pBuffer,1);pBuffer+;*endif*includedelay.h /添加延时函数头文件*includesbit C

45、S = P12;sbit Clk = P11;sbit DATI = P10;sbit DATO = P10;/*函数功能:AD转换子程序入口参数:CH出口参数:dat*/unsigned char adc0832(unsigned char CH)unsigned char dat = 0*00; /AD值 unsigned char i,test,adval; adval = 0*00; test = 0*00; Clk = 0; /初始化 DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_();if ( CH = 0*00 ) /通道选择

46、 Clk = 0; DATI = 1; /通道0的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 0; /通道0的第二位 _nop_(); Clk = 1; _nop_(); else Clk = 0; DATI = 1; /通道1的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; /通道1的第二位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; for( i = 0;i 8;i+ ) /读取前8位的值 _nop_(); adval = 1; Clk =

47、1; _nop_(); Clk = 0; if (DATO) adval |= 0*01; else adval |= 0*00; for (i = 0; i = 1; if (DATO) test |= 0*80; else test |= 0*00; _nop_(); Clk = 1; _nop_(); Clk = 0; if (adval = test) /比拟前8位与后8位的值,如果不一样舍去。假设一直出现显示为零,请将该行去掉 dat = test; _nop_(); CS = 1; /释放ADC0832 DATO = 1; Clk = 1; return dat;*included

48、elay.h sbit v_led = P32;uint count_100us;/* 函数名称 : Init_Timer0(void)* 函数功能 : 定时器0初始化子程序* 输 入 : 无* 输 出 : 无* 说 明 : 对定时器0进展初始化 模式1 16位定时器065536*/void Init_Timer0(void) /定时器初始化子程序TMOD |= 0*01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 TH0=0*FF; /定时器赋初值TL0=0*A4; ET0=1; /使能定时器中断TR0=1; /翻开定时器EA=1; /翻开总中断/* 函数名称 :

49、 Timer0_isr(void) interrupt 1 using 1* 函数功能 : 定时器中断程序* 输 入 : 无* 输 出 : 无* 说 明 : 定时器计数到65536溢出执行中断函数 定时器重新赋值及状态指示灯取反*/void Timer0_isr(void) interrupt 1 using 1/TH0=0*FF; /重新赋值/TL0=0*A4;/count_100us+;/if(count_100us30)TEST=0;/else if(count_100us90)TEST=1;/else count_100us=0;/TEST=TEST; /状态指示灯取反/* 文件功能: 延时函数头文件 * 使用说明: 在需要使用延时函数时添加此头文件“delay.h*/*ifndef _DELAY_H_*define _DELAY_H_*include /*include *define uchar unsigned char*define uint unsigned int/* 函数名称 : Delay(uint T)* 函数功能 : 延时函数* 输 入 : T-延时倍数 大小-065535* 输 出 : 无* 说 明 :*/void Delay(uint T) uchar i; for(T;T0;T-) for(i=200;i0;i-);*endif. z

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!