收藏 分享(赏)

单片机PM2.5浓度检测仪毕业设计论文豪华版.doc

上传人:HR专家 文档编号:5026741 上传时间:2019-01-31 格式:DOC 页数:55 大小:1.86MB
下载 相关 举报
单片机PM2.5浓度检测仪毕业设计论文豪华版.doc_第1页
第1页 / 共55页
单片机PM2.5浓度检测仪毕业设计论文豪华版.doc_第2页
第2页 / 共55页
单片机PM2.5浓度检测仪毕业设计论文豪华版.doc_第3页
第3页 / 共55页
单片机PM2.5浓度检测仪毕业设计论文豪华版.doc_第4页
第4页 / 共55页
单片机PM2.5浓度检测仪毕业设计论文豪华版.doc_第5页
第5页 / 共55页
点击查看更多>>
资源描述

1、封面摘要因为空气质量的恶化,阴霾天气现象出现增多,危害现象加重。中国不少地区把阴霾天气现象并入雾一起作为灾害性天气预警预报。统称为“雾霾天气” 。雾霾主要由PM2.5、PM10、PM0.1 以及重金属镍砷铬铅等颗粒组成。有关雾霾的重大事件层出不穷,如1952 年伦敦烟雾事件,伦敦杀人雾在四天内夺走了 4000 多条人命;还有 2013 年初北京肆虐横行的雾霾事件,轰动一时。因此,对 PM2.5 的测量显得越来越重要。本设计采用AT89C52 单片机为控制中心,由 GP2Y1010AU0F 灰尘传感器测量空气粉尘浓度,LCD1602 显示屏显示当前空气粉尘浓度。当空气中粉尘浓度达到所设定限度启动

2、蜂鸣器自动报警,且能实时对应显示相应的 LED 灯,直观提醒当前的污染级别。该系统电路简单、工作稳定、集成度高,调试方便,测试精度高,具有一定的实用价值。关键字:PM2.5、单片机、粉尘浓度、GP2Y1010AU0F、自动检测目录第一章、概述 .11.1、设计的主要内容和意义 11.1.1、设计的主要内容 .11.1.2、设计的主要意义 .1第二章、主控制器及主要器件 .22.1、AT89S52 单片机 .22.2、A/D 转换芯片 ADC0832 .72.3、1602LCD 液晶显示屏 .92.4、夏普粉尘传感器 GP2Y1010AU0F 11第三章、硬件电路设计 .123.1、电路设计框图

3、 123.2、系统概述 133.3、单片机最小系统 133.4、粉尘传感器电路设计 173.5、A/D 转换 .183.6、LCD 显示模块设计 .193.7、按键电路 203.8、报警电路 213.9、污染级别提醒电路和程序下载电路 .21第四章、程序设计及软件应用 .224.1、主程序设计 224.2、主要子函数的设计 244.3、keil 的应用 .294.4、protel99se 的应用 304.5、Proteus 的应用 .31第五章、设计的应用及相关实验 .335.1、PM2.5 简介 .335.1、PM2.5 的主要来源 .345.2、PM2.5 的现状及常用数据 .355.2、

4、设计主要用途及应用的场景 375.2.1、主要用途 .375.2.2、应用场景 .375.3、应用设计进行的相关实验及结论分析 .375.3.1、实验一 :东湖公园检测测 375.3.2、实验二:路口检测 .375.3.3、实验三:常见生活场景检测 .385.3.4、检测分析 .385.3.5、应对方法 .39第六章、总结 .39致谢 .40参考文献 .41附录 .42附录 1. 原件清单 .42附录 2. 原理图 .43附录 3 程序源代码 441第一章、概述1.1、设计的主要内容和意义1.1.1、设计的主要内容本设计提出的“PM2.5 监测”的方案最基本的实现方法是由单片机、粉尘监测传感器

5、、显示模块、报警器等模块组成的电路, GP2Y1010AU0F 粉尘传感器采集空气中 PM2.5 的浓度值,经过 AT89C52 单片机处理后,在 LCD1602 液晶上显示,并且设置一个报警值,检测的 PM2.5 浓度值超过报警值后,蜂鸣器报警,报警值可以用按键手动调节。另外,该设计在实时检测浓度的同时,根据当前检测浓度亮起相应的灯,浓度范围分别为:检测的 PM2.5 的浓度值在 0-0.1,绿灯亮,表示环境良好;检测的 PM2.5 的浓度值在 0.1-0.3,黄灯亮,表示轻度污染;检测的 PM2.5 的浓度值在 0.3 以上,红灯亮,表示重度污染;1.1.2、设计的主要意义21 世纪的今天

6、,科学技术的发展日新月异,科学技术的进步同时也带动了测量技术的发展,现代控制设备不同于以前,它们在性能和结构发生了翻天覆地的变化。我们已经进入了高速发展的信息时代,测量技术是当今社会的主流,广泛地深入到应用工程的各个领域。因为空气质量的恶化,阴霾天气现象出现增多,危害现象加重。中国不少地区把阴霾天气现象并入雾一起作为灾害性天气预警预报。统称为“雾霾天气” 。雾霾主要由 PM2.5、PM10、PM0.1 以及重金属镍砷铬铅等颗粒组成。在空气动力学和环境气象学中,颗粒物是按直径大小来分类的,粒径小于 100 微米的称为TSP(TotalSuspendedParticle),即总悬浮物颗粒;粒径小于

7、 10 微米的称为 PM10(PM为 ParticulateMatter 缩写),即可吸入颗粒物;粒径小于 2.5 微米的称为 PM2.5,即可入肺颗粒物,它的直径仅相当于人的头发丝粗细的 1/20。虽然 PM2.5 只是地球2大气成分中含量很少的组分,但它与较粗的大气颗粒物相比,粒径小,富含大量的有毒、有害物质且在大气中的停留时间长、输送距离远,因而对人体健康和大气环境质量影响更大。世界卫生组织发布的报告显示,无论是发达国家还是发展中国家,目前大多数城市和农村人口均遭受到颗粒物对健康的影响。高污染城市中的死亡率超出相对清洁城市的 15%至 20%。据统计,在欧洲,PM2.5 每年导致 386

8、000 人死亡,并使欧盟国家人均期望寿命减少 8.6 个月。人体的生理结构决定了对 PM2.5 没有任何过滤、阻拦能力,而 PM2.5 对人类健康的危害却随着医学技术的进步,逐步暴露出其恐怖的一面。气象专家和医学专家认为,由细颗粒物造成的灰霾天气对人体健康的危害甚至要比沙尘暴更大。粒径 10 微米以上的颗粒物,会被挡在人的鼻子外面;粒径在 2.5 微米至 10 微米之间的颗粒物,能够进入上呼吸道,但部分可通过痰液等排出体外,另外也会被鼻腔内部的绒毛阻挡,对人体健康危害相对较小;而粒径在 2.5 微米以下的细颗粒物,直径相当于人类头发的 1/10 大小,不易被阻挡。被吸入人体后会直接进入支气管,

9、刺激呼吸道,干扰肺部的气体交换,从而引发咳嗽、呼吸困难、哮喘、慢性支气管炎等呼吸系统的疾病并导致心律不齐、非致命性心脏病等心血管方面的疾病。其中,老人、小孩以及心肺疾病患者是 PM2.5 污染的敏感人群。因此,对 PM2.5 的监测与治理便显得越来越重要。第二章、主控制器及主要器件2.1、AT89S52 单片机AT89S52 是一个低功耗,高性能 CMOS 8 位单片机,片内含 8k BytesISP 的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用 8

10、 位中央处理器和 ISP Flash 存储单元,功能强大的微型计算机的3AT89S52 可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52 具有以下标准功能:8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/ 计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/ 计数器、串口、中断继续工作。掉电保护方式下, RAM 内容被保存,振荡器被冻结,单片机一切工

11、作停止,直到下一个中断或硬件复位为止。内部数据存储器的高 128 个单元是为专用寄存器提供的,因此该区也称作特殊功能寄存器(SFR ) ,它们主要用于存放控制命令、状态或数据。除去程序计数器 PC 外,还有 21 个特殊功能寄存器,其地址空间为 80HFFH。这 21 个寄存器中有 11 个特殊功能寄存器具有位寻址能力,它们的字节地址刚好能被 8 整除。AT89S52 是一个高效的微型计算机。它的应用范围广,可用于解决复杂的控制问题,且成本较低。其结构框图如图 2.1 所示。4图 2.1 AT89S52 结构框图AT89S52 引脚功能与封装:图 2.2 AT89S52 引脚图按照功能,AT8

12、9S52 的引脚可分为主电源、外接晶体振荡或振荡器、多功能 I/O 口、控制和复位等。多功能 I/O 口:AT89S52 共有四个 8 位的并行 I/O 口:P0、P1 、P2 、P3 端口,对应的引脚分别是 P0.0 P0.7,P1.0 P1.7,P2.0 P2.7,P3.0 P3.7,共 32 根 I/O线。每根线可以单独用作输入或输出。P0 端口,该口是一个 8 位漏极开路的双向 I/O 口。在作为输出口时,每根引脚可以带动 8 个 TTL 输入负载。当把 “1”写入 P0 时,则它的引脚可用作高阻抗输入。当对外部程序或数据存储器进行存取时,P0 可用作多路复用的低字节地址/ 数据总线,

13、在该模式,P0 口拥有内部上拉电阻。在对 Flash 存储器进行编程时,P0 用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。P1 端口,该口是带有内部上拉电阻的 8 位双向 I/O 端口,P1 口的输出缓冲器可驱动(吸收或输出电流方式)4 个 TTL 输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P1 口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在对 Flash 编程和程序校验时,P1 口接收低 8 位地址。5另外,P1.0 与 P1.1 可以配置成定时 /计数器 2 的外部计数输入端(P1.0/T2 )与

14、定时/计数器 2 的触发输入端(P1.0/T2EX) ,如表 2.3 所示。表 2.3 P1 口管脚复用功能端口引脚 复用功能P1.0 T2(定时器/计算器 2 的外部输入端)P1.1 T2EX(定时器 /计算器 2 的外部触发端和双向控制)P1.5 MOSI(用于在线编程)P1.6 MISO(用于在线编程)P1.7 SCK(用于在线编程) P2 端口,该口是带有内部上拉电阻的 8 位双向 I/O 端口,P2 口的输出缓冲器可驱动(吸收或输出电流方式)4 个 TTL 输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P2 口作输入口使用时,因为有内部的上拉电阻,那些

15、被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器或 16 位的外部数据存储器时,P2 口送出高 8 位地址,在访问 8 位地址的外部数据存储器时,P2 口引脚上的内容(就是专用寄存器(SFR)区中 P2 寄存器的内容) ,在整个访问期间不会改变。在对 Flash 编程和程序校验期间,P2 口也接收高位地址或一些控制信号。 P3 端口,该口是带有内部上拉电阻的 8 位双向 I/O 端口,P3 口的输出缓冲器可驱动(吸收或输出电流方式)4 个 TTL 输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P3 口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉

16、低的引脚会输出一个电流。在 AT89S52 中,同样 P3 口还用于一些复用功能,如表 2.4 所列。在对 Flash 编程和程序校验期间,P3 口还接收一些控制信号。表 2.4 P3 端口引脚与复用功能表端口引脚 复用功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)6P3.2 INT0(外部中断 0)P3.3 INT1(外部中断 1)P3.4 T0(定时器 0 的外部输入)P3.5 T1(定时器 1 的外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)RST:复位输入端。在振荡器运行时,在此脚上出现两个机器周期的高电平将使其单片机复位。看门

17、狗定时器(Watchdog)溢出后,该引脚会保持 98 个振荡周期的高电平。在 SFR AUXR(地址 8EH)寄存器中的 DISRTO 位可以用于屏蔽这种功能。DISRTO 位的默认状态,是复位高电平输出功能使能。ALE/PROG:地址锁存允许信号。在存取外部存储器时,这个输出信号用于锁存低字节地址。在对 Flash 存储器编程时,这条引脚用于输入编程脉冲 PROG。一般情况下,ALE 是振荡器频率的 6 分频信号,可用于外部定时或时钟。但是,在对外部数据存储器每次存取中,会跳过一个 ALE 脉冲。在需要时,可以把地址 8EH 中的 SFR 寄存器的 0 位置为 “1”,从而屏蔽 ALE 的

18、工作;而只有在 MOVX 或 MOVC指令执行时 ALE 才被激活。在单片机处于外部执行方式时,对 ALE 屏蔽位置“1”并不起作用。PSEN:程序存储器允许信号。它用于读外部程序存储器。当 AT89S52 在执行来自外部存储器的指令时,每一个机器周期 PSEN 被激活 2 次。在对外部数据存储器的每次存取中,PSEN 的 2 次激活会被跳过。EA/Vpp:外部存取允许信号。为了确保单片机从地址为 0000HFFFFH 的外部程序存储器中读取代码,故要把 EA 接到 GND 端,即地端。但是,如果锁定位 1 被编程,则 EA 在复位时被锁存。当执行内部程序时,EA 应接到 Vcc。在对 Fla

19、sh 存储器编程时,这条引脚接收 12V 编程电压 Vpp。XTAL1:振荡器的反相放大器输入,内部时钟工作电路的输入。XTAL2:振荡器的反相放大器输出。72.2、A/D 转换芯片 ADC0832ADC0832 是美国国家半导体公司生产的一种 8 位分辨率、双通道 A/D 转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用 ADC0832 可是使我们了解 A/D 转换器的原理,有助于我们单片机技术水平的提高。ADC0832 具有以下特点:8 位分辨率;双通道 A/D 转换;输入输出电平与 TTL/CMOS 相兼容;5V 电源供电时输入

20、电压在 05V 之间;工作频率为 250KHZ,转换时间为 32S;一般功耗仅为 15mW;8P、14PDIP(双列直插) 、PICC 多种封装;商用级芯片温宽为 0C to +70C,工业级芯片温宽为40C to +85C;芯片顶视图:8芯片接口说明:CS_:片选使能,低电平芯片使能。CH0:模拟输入通道 0,或作为 IN+/-使用。CH1:模拟输入通道 1,或作为 IN+/-使用。GND:芯片参考 0 电位(地) 。DI:数据信号输入,选择通道控制。DO:数据信号输出,转换数据输出。CLK:芯片时钟输入。Vcc/REF:电源输入及参考电压输入(复用) 。ADC0832 为 8 位分辨率 A

21、/D 转换芯片,其最高分辨可达 256 级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V 之间。芯片转换时间仅为 32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过 DI 数据输入端,可以轻易的实现通道功能的选择。2.3、1602LCD 液晶显示屏 LCD 显示器分为字段显示和字符显示两种。其中字段显示与 LED 显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用 LCD1602 作为显示器

22、件输出信息。与传统的 LED 数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602 可以显示 2 行 16 个汉字。9LCD1602 主要技术参数显示容量为 162 个字符;芯片工作电压为 4.55.5V;工作电流为 2.0mA(5.0V) ;模块最佳工作电压为 5.0V;字符尺寸为 2.954.35(WH)mm。3.1.2 LCD1602 的引脚说明LCD1602 采用标准的 14 脚接口,其中:第 1 脚:VSS 为地电源。第 2 脚:VDD 接 5V 正电源。第 3 脚:V

23、0 为液晶显示器对比度调整端。第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS和 RW 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 RW 为高电平时可以读忙信号,当 RS 为高电平 RW 为低电平时可以写入数据。第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。第 714 脚:D0D7 为 8 位双向数据线。 第 1516 脚:空脚3.1.3 控制指令说明1602 液晶模块内部的控制器共有 11 条控制指令,如 3.8 表所示:表 3.8

24、 控制命令表序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D01 清显示 0 0 0 0 0 0 0 0 0 12 光标返回 0 0 0 0 0 0 0 0 1 *3 置输入模式 0 0 0 0 0 0 0 1 I/D S4 显示开/关控制 0 0 0 0 0 0 1 D C B105 光标或字符移位 0 0 0 0 0 1 S/C R/L * *6 置功能 0 0 0 0 1 DL N F * *7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址8 置数据存贮器地址 0 0 1 显示数据存贮器地址9 读忙标志或地址 0 1 BF 计数器地址10 写数到 CGR

25、A 或 DDRAM) 1 0 要写的数据内容11 从 CGRAM 或 DDRAM 读数 1 1 读 出的数据内容1602 液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1 为高电平、0 为低电平)指令 1:清显示,指令码 01H,光标复位到地址 00H 位置指令 2:光标复位,光标返回到地址 00H 指令 3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令 4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电

26、平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令 5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 指令 6:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符 指令 7:字符发生器 RAM 地址设置 指令 8:DDRAM 地址设置 指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令 10:写数据 指令 11:读数据 112.4、夏普粉尘传感器 GP2Y1

27、010AU0F日本夏普公司灰尘传感器 GP2Y1010AU,体积小巧,灵敏度高,可以用来测量 0.8 微米以上的微小粒子,可用于室内环境中烟气、粉尘、花粉等浓度的检测。此款产品不但可以检测出单位体积粒子的绝对个数,而且内置气流发生器,可以自行吸入外部空气。灰尘传感器 GP2Y1010AU 安装保养方便,使用寿命长,精度高,稳定性好。其内部对角安放着红外线发光二极管和光电晶体管,使得其能够探测到空气中尘埃反射光,即使非常细小的如烟草烟雾颗粒也能够被检测到,通常在空气净化系统中应用。该传感器具有非常低的电流消耗(最大 20mA,典型值 11mA) ,可使用高达 7VDC。该传感器输出为模拟电压,其

28、值与粉尘浓成正比。 夏普灰尘传感器 GP2Y1010AU0F传感器内部结构12应用领域:1、空气净化器和空气清新机;2、空调;3、空气质量监控仪;4、空调等相关产品。主要参数:灵敏度:0.5V/(0.1mg/m3) 输出电压:0.9V(TYP) 消耗电流:11mA 工作温度:-1065存储温度:-2080第三章、硬件电路设计3.1、电路设计框图133.2、系统概述本电路是由 AT89S52 单片机为控制核心,另外主要通过 6 个模块的电路设计实现功能,他们分别是 LCD 显示模块、粉尘传感器、A/D 转换、按键电路、报警电路、污染级别提醒电路。系统原理图如下:3.3、单片机最小系统单片机的最小

29、系统就是让单片机能正常工作并发挥其功能时所必须的组成部分,也可理解为是用最少的元件组成的单片机可以工作的系统。对 51 系列单片机来说, 最小系统一般应该包括: 单片机、时钟电路、复位电路、输入/ 输出设备等。单片机最小系统框图14时钟电路:在设计时钟电路之前,让我们先了解下 51 单片机上的时钟管脚:XTAL1(19 脚) :芯片内部振荡电路输入端。XTAL2(18 脚) :芯片内部振荡电路输出端。XTAL1 和 XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图 3 中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在 X

30、TAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容) ,内部振荡器便能产生自激振荡。一般来说晶振可以在 1.2 12MHz 之间任选,甚至可以达到 24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的 11.0592M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在 20 40pF 之间选择(本实验套件使用 30pF) ;当采用陶瓷谐振器件时,电容要适当地增大一些,在 30 50pF 之间。通常选取 33pF 的陶瓷电容就可以了。另外值得一提的是如果读者自己在设计单片机系统的印刷电路板(PCB) 时

31、,晶体和电容应尽可能与单片机芯片靠近,以减少引线的寄生电容,保证振荡器可靠工作。检测晶振是否起振的方法可以用示波器可以观察到 XTAL2 输出的十分漂亮的正弦波,也可以使用万用表测量( 把挡位打到直流挡,这个时候测得的是有效值)XTAL2 和地之间的电压时,可以看到 2V 左右一点的电压。时钟电路如图所示。时钟电路图15复位电路:在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。MCS-5l 系列单片机的复位引脚 RST( 第 9 管脚) 出现 2 个机器周期以上的高电平时,单片机就执行复位操作。如果 RST 持续为高电平,单片机就处于循环复位

32、状态。复位操作通常有两种基本形式:上电自动复位和开关复位 。上电瞬间 ,电容两端电压不能突变 ,此时电容的负极和 RESET 相连,电压全部加在了电阻上, RESET 的输入为高,芯片被复位。随之+5V 电源给电容充电,电阻上的电压逐渐减小,最后约等于 0 ,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后 ,通过按下按键使 RST 管脚出现高电平达到手动复位的效果。复位电路图如图所示。 图 4 复位电路图EA/VPP(31 脚)的功能和接法:51 单片机的 EA/VPP(31 脚) 是内部和外部程序存储器的选择管脚。当EA 保持高电平时,

33、单片机访问内部程序存储器;当 EA 保持低电平时,则不管是否有内部程序存储器,只访问外部存储器。对于现今的绝大部分单片机来说,其内部的程序存储器(一般为 flash 容量都很大,16因此基本上不需要外接程序存储器,而是直接使用内部的存储器。在本实验套件中,EA 管脚接到了 VCC 上,只使用内部的程序存储器。这一点一定要注意,很多初学者常常将 EA 管脚悬空,从而导致程序执行不正常。P0 口外接上拉电阻 :51 单片机的 P0 端口为开漏输出,内部无上拉电阻。所以在当做普通 I/O 输出数据时,由于 V2 截止,输出级是漏极开路电路,要使“1”信号(即高电平)正常输出,必须外接上拉电阻,如图所

34、示。图 5 P0 口外接上拉电阻另外,避免输入时读取数据出错,也需外接上拉电阻。在这里简要的说下其原因:在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器 Q 0, Q 1,场效应管 V1 开通,端口线呈低电平状态。此时无论端口线上外接的信号是低电平还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器 Q 1, Q 0,场效应管 V1 截止.如外接引脚信号为低电平, 从引脚上读入的信号就与从锁存器读入的信号不同。所以当 P0 口作为通用 I/O 接口输入使用时,在输入数据

35、前,应先向 P0 口写“1” ,此时锁存器的 Q 端为“0” ,使输出级的两个场效应管 V1、 V2 均截止,引脚处于悬浮状态,才可作高阻输入。总结来说:为了能使 P0 口在输出时能驱动 NMOS 电路和避免输入时读取数据出错,需外接上拉电阻。在本实验套件中采用的是外加一个 10K 排阻。此外,51 单片机在对端口 P0P3 的输入操作上,为避免读错,应先向电路中的锁存器写入“1”,使场效应管截止,以避免锁存器为“0”状态时对引脚读入的干扰。173.4、粉尘传感器电路设计根据粉尘传感器 GP2Y1010AU 的规划书中对管脚的描述:对应的管脚为:故粉尘传感器的电路设计如图:粉尘传感器 GP2Y

36、1010AU 通过对空气粉尘颗粒浓度的检测输出模拟电压,其18值与粉尘浓度成正比。故在仿真原理图中,我们用可变电阻设计的局部限压电路代替传感器:3.5、A/D 转换ADC0832 的封装机管脚说明:CS_:片选使能,低电平芯片使能。CH0:模拟输入通道 0,或作为 IN+/-使用。CH1:模拟输入通道 1,或作为 IN+/-使用。GND:芯片参考 0 电位(地) 。DI:数据信号输入,选择通道控制。19DO:数据信号输出,转换数据输出。CLK:芯片时钟输入。Vcc/REF:电源输入及参考电压输入(复用)电路设计如图所示:3.6、LCD 显示模块设计系统中采用 LCD1602 作为显示器件输出信

37、息。与传统的 LED 数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,根据各管脚的功能电路设计如下:20仿真电路图:3.7、按键电路本次设计的按键电路使用了单片机的 P3.3,P3.4 ,P3.5 三个口。设计如下图:213.8、报警电路本次设计的报警电路的控制输出使用了单片机的 P3.6 口,设计如下:3.9、污染级别提醒电路和程序下载电路根据不同的浓度范围提醒当前污染级别的电路,采用了绿,黄,红三个 LED灯,使用了单片机的 P2.2,P2.1 ,P2.0 实现提醒功能,设计如下:为方便程序的烧录,单片机的程序下载电路设计如下:22第四章、程

38、序设计及软件应用4.1、主程序设计主程序代码:/*主函数 */void main(void)InitTimer(); /初始化定时器LED=1;LED2=1;LED3=1;LED4=1;BEEP=0;lcd_init(); /初始化显示delay1ms(100);lcd_init(); /初始化显示delay1ms(100);while(1)checkkey(); /按键检测if(set_st=0) wr_com(0x0c);if(FlagStart=1) /1 次数据采集完成num+;ADC_Getnum=abc;if(num9)num=0;DUST=Error_Correct(ADC_Ge

39、t,10); /求取 10 次 AD 采样的值DUST_Value=(DUST/256.0)*5000; /转化成电压值 MVDUST_Value=DUST_Value*0.17-0.1; /固体悬浮颗粒浓度计算 Y=0.17*X-0.1 X-采样电压 Vif(DUST_Value760) DUST_Value=760; /限位DUST=(uint)DUST_Value;TL0 = (65536-10000)/256; TH0 = (65536-10000)%256; TR0 = 1; /开启定时器 023EA = 1;FlagStart=0;Alarm(); /报警检测disp(DUST);

40、 /显示粉尘浓度值baojing(); /显示报警值if(set_st=1) /报警值闪动wr_com(0xca);wr_com(0x0d);delay1ms(150);/*END*/说明:详细子函数请见附录 3主程序框图:4.2、主要子函数的设计除主程序外,程序设计中还定义了一些函数,方便主程序调用,主要有液晶24初始化程序,显示函数,报警显示,报警子函数,按键检测函数,A/D 转换函数,中值滤波等。以下主要介绍 A/D 转换函数。单片机对 ADC0832 的控制原理:正常情况下 ADC0832 与单片机的接口应为 4 条数据线,分别是 CS、 CLK、DO、DI 。但由于 DO 端与 DI

41、 端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将 DO 和 DI 并联在一根数据线上使用。 (见图 3)当 ADC0832 未工作时其 CS 输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS 使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端 CLK 输入时钟脉冲,DO/DI 端则使用 DI 端输入通道功能选择的数据信号。在第 1 个时钟脉冲的下沉之前 DI 端必须是高电平,表示启始信号。在第 2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能,其功能

42、项见下表 。如表 1 所示,当此 2 位数据为“1” 、 “0”时,只对 CH0 进行单通道转换。当 2 位数据为“1”、 “1”时,只对 CH1 进行单通道转换。当 2 位数据为“0”、 “0”时,将 CH0 作为正输入端 IN+,CH1 作为负输入端 IN-进行输入。当 2 位数据为“0” 、“1”时,将 CH0 作为负输入端 IN-,CH1 作为正输入端 IN+进行输入。到第 3 个脉冲的下沉之后 DI 端的输入电平就失去输入作用,此后 DO/DI 端则开始利用数据输出 DO 进行转换数据的读取。从第 4 个脉冲下沉开始由 DO 端输出转换数据最高位 DATA7,随后每一个脉冲下沉 DO

43、 端输出下一位数据。直到第 11 个脉冲时发出最低位数据 DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第 11 个字节的下沉输出 DATD0。随后输出 8 位数据,到第 19 个脉冲时数据输出完成,也标志着一次 A/D 转换的结束。最后将 CS 置25高电平禁用芯片,直接将转换后的数据进行处理就可以了。更详细的时序说明请下表:作为单通道模拟信号输入时 ADC0832 的输入电压是 05V 且 8 位分辨率时的电压精度为 19.53mV。如果作为由 IN+与 IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行

44、 IN+与 IN-的输入时,如果 IN-的电压大于 IN+的电压则转换后的数据结果始终为00H。ADC0832 数据读取程序流程:实际程序设计代码为:/*AD0832 转换程序*/uchar ADC0832(bit mode,bit channel) /AD 转换,返回结果26uchar i,dat,ndat;ADCS = 0;/拉低 CS 端_nop_();_nop_();ADDI = 1; /第 1 个下降沿为高电平ADCLK = 1;/拉高 CLK 端_nop_();_nop_();ADCLK = 0;/拉低 CLK 端,形成下降沿 1_nop_();_nop_();ADDI = mod

45、e; /低电平为差分模式,高电平为单通道模式。ADCLK = 1;/拉高 CLK 端_nop_();_nop_();ADCLK = 0;/拉低 CLK 端,形成下降沿 2_nop_();_nop_();ADDI = channel; /低电平为 CH0,高电平为 CH1ADCLK = 1;/拉高 CLK 端_nop_();_nop_();ADCLK = 0;/拉低 CLK 端,形成下降沿 3ADDI = 1;/控制命令结束 (经试验必需)dat = 0;/下面开始读取转换后的数据,从最高位开始依次输出(D7D0)for(i = 0;i 8;i+)dat = 1;ADCLK=1;/拉高时钟端_nop_();_nop_();ADCLK=0;/拉低时钟端形成一次时钟脉冲_nop_();_nop_();dat |= ADDO;ndat = 0; /记录 D0if(ADDO = 1)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报