基于单片机的室内空气质量检测系统

基于单片机的气体质量检测系统的设计

                                                                                       

摘  要

研究设计了一种用于公共场所及室内具有检测及超限报警功能的室内空气质量检测系统。其设计方案基于89C51单片机,选择瑞士蒙巴波公司的CH20/S-10甲醛传感器和MQ-5气体传感器。系统将传感器输出的4~20mA的标准信号通过以AD0832为核心的A/D转换电路调理后,经由单片机进行数据处理,最后由LCD显示甲醛浓度值。文中详细介绍了数据采集子系统、数据处理过程以及数据显示子系统和报警电路的设计方法和过程。系统对于采样地点超出规定的甲醛容许浓度和天然气规定浓度时采用三极管驱动的单音频报警电路提醒监测人员。同时,操作人员对于具体报警点的上限值可以通过单片机编程进行设置。
    另外,该系统对浓度信号进行了信号补偿等处理,减少了测量误差,因此,具有较高的测量精度,而且结构简单,性能优良。本系统的量程为0-10ppm,精度为0.039ppm 。

关键词: 甲醛检测/天然气检测/AT89C52单片机

原文档内含文档内各种作图,如需原文档参考学习,请关注微信公众号
回复文章标题即可免费获取。文档仅供参考学习使用。

ABSTRACT

This thesis design of a paper for public places and indoor testing and over-limit alarm functions with indoor air quality testing system. Its design is based on 89C51 single chip, with the choice of MQ-5 gas sensors and CH20/S-10 formaldehyde sensor from Switzerland mengbabo company. Sensor system will output 4 ~ 20mA standard signal through the core ADC0832 for A / D conversion circuit after conditioning, by the single-chip microcomputer for data processing, at last display the formaldehyde concentration on the LCD . The article detailed the data acquisition subsystem, data processing and data display and alarm system circuit design method and process. When the sampling sites when the formaldehyde and Natural gas concentration exceeded,To the single-transistor drive circuit audio alarm will sound the alarm,Testing staff to remind. At the same time,The concentration of formaldehyde, Can be set through the single-chip programming.

In addition, the system signals a concentration compensation signal processing, a reduction of measurement error, therefore, have a high measurement accuracy, and simple structure, excellent performance. The range of the system for 0-10ppm, accuracy 0.039ppm.

Keywords: Formaldehyde detection, Natural gas detection, AT89C52 single-chip

目  录

中文摘要

英文摘要

1绪论

1.1 引言

2  概述

2.1系统总概述

2.2总体方案设计

2.3硬件设计

2.4软件设计

2.5 硬件结构

2.6 软件结构

3  硬件设计

3.1  硬件设计主电路图

3.2  硬件选择

3.2.1  MCU的选择与简介

3.2.2  单片机最小系统的实现

3.2.3  数据采集系统

3.2.4  模数转换的选择与简介

3.2.5  按键选择与简介

3.2.6  外围扩充存储器

3.2.7  时钟芯片选择与简介

3.2.8  上拉电阻

3.2.9  液晶显示器简介

3.2.10 报警电路

3.2.11 硬件仿真环境介绍

4软件设计

4.1 编写语言的选择

4.2 编译软件介绍

4.3 主程序模块

4.4模数转换

4.5按键模块

4.6时钟模块

4.7液晶显示模块

5系统仿真

结束语

致  谢

参考文献

附录

附录一 硬件设计主电路图

附录二 检测主程序程序

1  绪论

1.1 引言

甲醛是一种无色,有强烈刺激性气味的气体。易溶于水、醇和醚。甲醛在常温下是气态,通常以水溶液形式出现。其37%的水溶液称为福尔马林,医学和科研部门常用于标本的防腐保存。此溶液沸点为19.5℃故在室温时极易挥发,随着温度的上升甲醛的挥发速度加快。在我国有毒化学品优先控制名单中甲醛列居第二位。甲醛已被世界卫生组织确定为致癌和致畸形物质。甲醛是原浆毒物,能与蛋白质结合,吸入高浓度甲醛后会出现呼吸道的严重刺激和水肿、眼刺痛、头痛,也可发生支气管哮喘皮肤直接接触甲醛,可引起皮炎、色斑、坏死。经常吸入少量甲醛,能引起慢性中毒,出现粘膜充血、皮肤刺激症、过敏性皮炎、指甲角化和脆弱等。全身症状有头痛、乏力、心悸、失眠、体重减轻以及植物神经紊乱等。

天然气、液化天然气(俗称煤气罐)是一种多组分的混合气体,主要成分是烷烃,其中甲烷占绝大多数,另有少量的乙烷、丙烷和丁烷,此外一般还含有硫化氢、二氧化碳、氮和水气,以及微量的惰性气体,如氦和氩等。在标准状况下,甲烷至丁烷以气体状态存在,戊烷以上为液体。天然气在燃烧过程中产生的能影响人类呼吸系统健康的物质极少,产生的二氧化碳仅为煤的40%左右,产生的二氧化硫也很少。天然气易燃易爆和空气混合后,温度达到550℃左右就会燃烧;其混合物浓度达到5%-15%,遇到火种就会爆炸。天然气热值高,约8500-10000千卡/米3,天然气燃烧后发出的热量是相同体积的城市煤气的2.5倍左右。 

2  概述

2.1系统总概述

本论文主要完成室内空气质量检测仪的软件设计,设计内容包括:A/D转换器程序、控制程序、超标报警、键盘检测、数据显示等。

本系统采用单片机为控制核心,以实现室内空气质量检测仪的基本控制功能。系统主要功能内容包括:数据处理、时间设置、开始测量、超标报警、键盘检测、自动休眠:仪器若不进行称量操作,5分钟后自动进入休眠模式,以降低电源消耗。

本系统设计采用功能模块化的设计思想,系统主要分为总体方案设计、硬件和软件的设计三大部分。

2.2总体方案设计

室内甲醛污染和天然气泄露对人身体健康影响较大,标准规定的方法绝大多数是化学分析法,使用的手段是实验室分析仪器 主要有比色计、 分光光度计、化学滴定、 气相和液相色谱。但这些方法费力费时、成本高、自动化程度低过程复杂、大多数过程是人工操作很难做到现场实时控制随着传感器和计算机技术的不断发展,现已有了基于单片机的空气质量检测仪,并且测试测试范围、分辨率、精度、稳定性已接近标准要求。因此本设计可选用基于电化学原理的甲醛传感器与MQ-5气体传感器。甲醛传感器其原理是空气中的甲醛在电极下发生氧化反应,产生的扩散电极电流与空气中的甲醛浓度成正比,通过检测放大电路和放大倍数的调整经A/D转换后送单片机;MQ-5气体传感器由微型AL2O3 陶瓷管、SnO2 敏感层,测量电极和加热器构成的敏感元件组成,通过检测放大电路和放大倍数的调整经A/D转换后送单片机,由单片机现场自动控制检测并显示甲醛浓度和煤气、天然气主要参数。

2.3硬件设计

硬件设计部分主要包括:(MCU、A/D、时钟芯片、LCD、外围扩展数据RAM)等芯片的选择; 硬件主电路设计、数据采集、模数转换电路设计、液晶显示电路设计、外围扩充存储器接口电路、时钟电路、复位电路、键盘接口电路等功能模块电路设计[1] 。 

2.4软件设计

软件设计部分主要包括:编写语言的选择、主程序/子程序流程的设计、功能模块程序的编写、软/硬件结合调试与演示。主要包括一下功能模块:51驱动、检测、液晶显示、时钟、键盘、模数软换。

2.5 硬件结构

硬件结构如图2-1

图2-1硬件电路结构图

2.6 软件结构

软件结构如图2-2

                             

图2-2软件结构框图

3  硬件设计

3.1  硬件设计主电路图

硬件设计住电路图见附录一。

3.2  硬件选择

3.2.1  MCU的选择与简介

1).单片机的概念和特点

 现代社会中,尽管PC机的应用已经相当普遍,但是,在工控领域,在日益追求小而精、轻而薄的自动化控制器、自动化仪器仪表、家电产品等方面,PC机仍有所不相适宜的地方。而工业控制、仪器仪表、家电产品等市场广阔,要求PC机技术与之相适应。在这种情况下,单片机应运而生了(也称作微型计算机)。

微型计算机的基本机构是由中央处理器、储存器、和I/O设备构成的。所谓的单片机是指将微型计算机3个单元的多个分体中的主要功能用1个集成电路芯片来实现,该芯片具有一个微型计算机的基本功能。这种超大规模集成电路芯片即称为单片微型计算机,通常简称单片机。

单片机具有以下特点:

(1) 受集成度限制,片内存储容量较小,一般8位单片机的ROM小于8/16K字节,RAM小于256字节,但可在外部扩展,通常ROM、RAM可分别扩展至64K字节。

(2) 可靠性好。芯片本身是按工业测控环境要求设计的,其抗工业噪声干扰优于一般通用CPU;程序指令及常数、表格固化在ROM中不易破坏;许多信号通道均在一个芯片内,故可靠性高。

(3) 易扩展。片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。

(4) 控制功能强。为了满足工业控制要求,一般单片机的指令系统中具有极丰富的条件分支转移指令、I/O口的逻辑操作以及位处理功能。一般说来,单片机的逻辑控制功能及运行速度均高于同一档次的微处理器。

(5) 一般单片机内无监控程序或系统通用管理软件,只放置有用户调试好的应用程序。但近年来也开始出现了在片内固化有BASIC解释程序的单片机[4]。

2). 单片机的发展与趋势

由于单片机具有以上特点,因此在工业控制、数据采集、智能仪器仪表、智能化设备和各种家用电器等领域得到广泛的应用。随着微电子工艺水平的提高,近十年来单片微型计算机有了飞速的发展。归纳起来,它是沿着两条路发展的:

  • 改进集成电路制造工艺,提高芯片的工作速度,降低工作电压和降低功耗:
  • 在保留共同的CPU体系结构,最基本的外设装置(如异步串行口,定时器等)和一套公用的指令系统的基础上,根据不同的应用领域,把不同的外设装置集成到芯片内,在同一个家族内繁衍滋生出各种型号的单片机。近年来,单片机的生产厂家在单片机设计上采用了各种提高可靠性的新技术,主要表现在一下几点:

(1)  EFT(Electrical Fast Transient)技术

(2)  低噪音布线技术及驱动技术

(3)  采用低频时钟

单片机在目前的发展形势下,表现出几大趋势:

  1. 可靠性及应用水平越来越高,和internet连接已是一种明显的走向;
  2. 所集成的部件越来越多;
  3. 功耗越来越低;
  4. 和模拟电路结合越来越多。

3).单片机选择

(1)本系统采用单片机为控制核心。单片机/MCU主要有51基本型和52增强型,而相比之下52型比51型功能更为强大,ROM和RAM存储空间更大,52还兼容51指令系统。

(2)AT89C52介绍

AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes的可反复擦写的只读程序存储器(PEROM)和256K bytes的随机存取数据存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器和FLASH存储单元,功能强大,AT89C52单片机适合于许多较为复杂控制应用场合。

主要性能参数:

  1. 与MCS-51产品指令和引脚完全兼容
  2. 8K字节可重擦写FLASH闪存存储器
  3. 1000次写/擦循环
  4. 时钟频率:0Hz—24MHz
  5. 三级加密存储器
  6. 256字节内部RAM
  7. 32个可编程I/O口线    
  8. 3个16位定时/计数器                   
  9. 6个中断源
  10. 可编程串行UART通道
  11. 低功耗的空闲和掉电模式               
  12. 片内振荡器和时钟电路                  图3-1 引脚图

3.2.2  单片机最小系统的实现

介绍完以上的单片机系统的核心芯片之后,我们采用AT89C52来实现一个单片机系统能运行起来的需求最小的系统,电路图见图3-2:

图3-2 单片机最小系统图

上图由晶振电路和复位电路,AT89C52芯片组成,构成最小的单片机系统,

下面详细介绍其中的两个电路。

(1)晶振电路

单片机工作的过程中各指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序,单片机的时钟信号用来为单片机芯片内部各种微操作提供时间基准,89c52的时钟产生方式有两种,一种是内部时钟方式,一种是外部时钟方式。内部时钟方式即在单片机的外部接一个晶振电路与单片机里面的振荡器组合作用产生时钟脉冲信号,外部时钟方式是把外部已有的时钟信号引入到单片机内,此方式常用于多片89C52单片机同时工作,以便于各单片机的同步,一般要求外部信号高电平的持续时间大于20ns.且为频率低于12MHz的方波。对于CHMOS工艺的单片机,外部时钟要由XTAL1端引入,而XTAL2端应悬空。

本系统中为了尽量降低功耗的原则,采用了内部时钟方式。

电路图如图3-3:

图3-3  晶振电路图

在89C52单片机的内部有一个震荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振)就构成了自激振荡器并在单片机内部产生时钟脉冲信号,图中电容器C1和C2稳定频率和快速起振,电容值在5—30pF,典型值是22pF,晶振CYS选择的是12MHz。

(2)复位电路

复位的意义:片机开始工作的时候,必须处于一种确定的状态,否则,不知哪是第一条程序和如何开始运行程序。端口线电平和输入输出状态不确定可能使外围设备误动作,导致严重事故的发生;内部一些控制寄存器(专用寄存器)内容不确定可能导致定时器溢出、程序尚未开始就要中断及串口乱传向外设发送数据……..因此,任何单片机在开始工作前,都必须进行一次复位过程,使单片机处于一种确定的状态。

复位电路原理:当在89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。实际应用中,复位操作有两种基本形式:一种是上电复位,另一种是上电与按键

均有效的复位,上电复位位见图3-4,要求接通电源后,单片机自动实现复位操作。常用的上电复位电路如下图所示。上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。

图3-4  上电复位电路图

RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。该电路典型的电阻和电容参数为:晶振为12MHz时,C1为22uF:R1为8.2 

;振为6MHz时,C1为22uF,R1为1

.

本设计中复位电路采用的是开关复位电路,开关S9未按下是上电复位电路,上电复位电路在上电的瞬间,由于电容上的电压不能突变,电容处于充电(导通)状态,故RST脚的电压与VCC相同。随着电容的充电,RST脚上的电压才慢慢下降。选择合理的充电常数,就能保证在开关按下时是RST端有两个机器周期以上的高电平从而使AT89C52内部复位。开关按下时是按键手动复位电路,RST端通过电阻与VCC电源接通,通过电阻的分压就可以实现单片机的复位。复位电路图如图3-5:                       

图3-5   复位电路图

3.2.3  数据采集系统

从传感器过来的电压信号,必须放大,滤波,采集,转换才能被MCU识别和处理。由于假若每一路都设置放大、滤波等器件,那么成本会很大,所以信号的采集一般用多路模拟通路进行选择。然而选择多路模拟开关时必须考虑以下的几个因素:通道数量、切换速度、开关电阻和器件的封装形式。总之数据采集与硬件的选择有很大的关系[4]。

甲醛传感器的选择:

甲醛传感器由甲醛探头CH20传感器组成。甲醛传感器/甲醛模块(CH2O传感器)详细介绍如下表3-3:

MQ-5气体传感器的选择:

MQ-5气体传感器由微型AL2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件组成。MQ-5气体传感器详细介绍如下表3-4。

(3)测量电路

测量电路由CH20/S-10甲醛传感器,MQ-5气体传感器,ADC0832组成。 甲醛传感器由甲醛探头和CH20传感器组成。当空气被内部的采样系统吸收后,产生一个与甲醛浓度成正比的电压信号, 该电压信号经AD0832与AT89C52单片机相连,在显示器上显示出甲醛的浓度值,当超过国家规定的标准时报警。MQ-5传感器通过+热气对敏感层加热,当有烟雾性煤气接触单敏感层会产生电压信号经AD0832与AT89C52单片机相连超过国家规定的标准时报警。

表3-3甲醛传感器参数表

名称

甲醛传感器  CH2O/S-10:

测量范围

0- 10 ppm

最大负荷

50ppm

工作寿命

空气中3年

输 出

1200±300nA/ppm4-20mA(甲醛模块

分辨率

0.05 ppm

温度范围

-20℃ to 45℃

压力范围

大气压±10%

响应时间 (T 90)

〈 50 seconds

湿度范围

-20℃ to 45℃

零点输出 (纯净空体,20℃)

〈 0.1 ppm

最大零点漂移(20℃to 40℃)

0.1 ppm

长期漂移

〈2% /每月

推荐负载值

10Ω

线性度输出

线性

重 量

约32克

表3-4 MQ-5气体传感器参数表

名称

MQ—5气体传感器

加热电压

5.0V±0.2V AC or DC

负载电阻

可调

加热电阻

31Ω±3Ω室温

加热功耗

≤900mW

回路电压

≤15V AC or DC

使用温度

-10℃-50℃

储存温度

-20℃-70℃

相对湿度

小于95%Rh

氧气浓度

21%(标准条件)

敏感体电阻

10KΩ-60KΩ

浓度斜率

≤0.6

标准工作条件

温度:20℃±2℃Vc:5.0V±0.1V

相对湿度:65%±5%Vh:5.0V±0.1V

预热时间

不少于24小时

探测范围

300-5000ppm

液化气,天然气,煤气。

3.2.4  模数转换的选择与简介

(1)实现A/D转换的基本方法很多,有计数法、逐次逼近法、双斜积分法和并行转换法。由于逐次逼近式A/D转换具有速度,分辨率高等优点,而且采用这种方法的ADC芯片成本低,所以我们采用逐次逼近式A/D转换器。逐次逼近型ADC包括1个比较器、一个模数转换器、1个逐次逼近寄存器(SAR)和1个逻辑控制单元。逐次逼近型是将采样信号和已知电压不断进行比较,一个时钟周期完成1位转换,依次类推,转换完成后,输出二进制数。这类型ADC的分辨率和采样速率是相互牵制的。优点是分辨率低于12位时,价格较低,采样速率也很好。

(2)由于ADC0832模数转换器具有8位分辨率、双通道A/D转换、输入输出电平与TTL/CMOS相兼容、5V电源供电时输入电压在0~5V之间、工作频率为250KHZ 、转换时间为32 微秒、一般功耗仅为15MW等优点,适合本系统的应用,所以我们采用ADC0832为模数转换器件。电路图见图3-6如下:

图3-6  模数转换电路图

 ADC0832 具有以下特点:

· 8位分辨率;

· 双通道A/D转换;

· 输入输出电平与TTL/CMOS相兼容;

· 5V电源供电时输入电压在0~5V之间;

· 工作频率为250KHZ,转换时间为32μS;

· 一般功耗仅为15mW;

· 8P、14P—DIP(双列直插)、PICC 多种封装;

· 商用级芯片温宽为0°C to +70°C,工业级芯片温宽为−40°C to +85°C;

  芯片接口说明:

· CS_ 片选使能,低电平芯片使能;

· CH0 模拟输入通道0,或作为IN+/-使用;

· CH1 模拟输入通道1,或作为IN+/-使用;

· GND 芯片参考0 电位(地);

· DI 数据信号输入,选择通道控制;

· DO 数据信号输出,转换数据输出;

· CLK 芯片时钟输入;

· Vcc/REF 电源输入及参考电压输入(复用);

ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。

单片机对ADC0832 的控制原理:

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

(4)测量量程

本系统的量程为0-10ppm。由于我所使用的是8位ADC0832,所以本系统的精度为:10ppm/256=0.039ppm。

3.2.5 按键选择与简介

本系统应用有人机对话功能,该功能即能随时发出各种控制命令和数据输入以及和LCD连接显示运行状态和运行结果。键盘分为:独立式和矩阵式两类,每一类按其编码方法又可以分为编码和非编码两种。由于本系统只有UP、DOWN 、OK 、CANCEL4个控制命令,所需按键较少,所以本系统选择独立式按键。电路图见图3-7:

图3-7  按键电路图

独立式按键是直接用I/O口线构成的单个按键电路。每个独立式按键占有一根I/O口线。各根I/O口线之间不会相互影响。在此电路中,按键输入部采用低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平,(AT89C52 .P1口内部接有上拉电阻)所以就不需要再外接上拉电阻。

键盘抖动的消除:抖动的消除大致可以分为硬件削抖和软件削抖。

硬件削抖是采用硬件电路的方法对键盘的按下抖动及释放抖动进行削抖,经过削抖电路后使按键的电平信号只有两种稳定状态。

软件削抖的基本原理是当检测出键盘闭合时,先执行一个延时子程序产生数毫秒的延时,待接通时的前沿抖动消失后再判别是否有健按下。当按键释放时,也要经过数毫秒延时,待后沿抖动消失后再判别键是否释放。

由于应用硬件削抖还需要外加器件,成本相对较高,所以本系统选择软件延时削抖的方法。

3.2.6  外围扩充存储器

基于AT89C52单片机具有8KB的程序存储器(ROM),256B的数据存储器(RAM),由于考虑到本系统的数据处理与存储所需的容量,现在需要扩充存储器的容量。在应用中要保存一些参数和状态,据了解基于EEPROM的存储芯片是一种很好的选择,选定了AT24C128存储器。电路图见图3-8:

                 图3-8 外围扩充存储电路图

3.2.7  时钟芯片选择与简介

因为此系统需要记录测量发生的时间,所以需要时钟芯片来记录不同人在不同时间的监测数据,因此我们在系统中加入了时钟芯片。对时钟芯片的要求首先是低功耗,其次是编程简单,缩短程序开发时间,实际上也就缩短了系统用于实际生产所用的开发周期以及成本,在本系统,我们选择了DS1302时钟芯片。

时钟电路选择的芯片是 DS1302,其内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机通信。而通信时,仅需要3个口线:(1)RES(复位),(2)I/O数据线,(3)SCLK(串行时钟)。时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。其工作时功耗很低,广泛应用于电话,传真,便携式仪器等产品领域[3]。

DS1302主要性能有:时实时钟能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年的调整能力;读/写时钟或RAM数据时,有单字节和多字节传送两种方式;与DS1202/TTL兼容。

DS1302引脚概述:X1,X2:振荡源,外接32。768KHZ晶振;SCLK:串行时钟输入端。

其电路图如图3-9:

                     图3-9  时钟电路图

3.2.8  上拉电阻

在主电路图中接在P0口处有一个排阻RP1 ,由于P0口没有内接上拉电阻,为了为P0口外接线路有确定的高电平,所以要接上排阻RP1,以确保有P0口有稳定的电平。电路连接图如图3-10:

图3-10 上拉电阻电路图

 3.2.9  液晶显示器简

对于本系统要有显示装置完成显示功能。显示器最好能够显示数据、图形。考虑到同种LCD显示器的屏幕越大体积越大,功耗越大的特点,在同类产品中选用了AMPIRE128X64液晶显示模块。该型号显示器消耗电量比较低,可以满足系统要求。该类液晶显示模块采用动态的液晶驱动,可用5V供电。

以下为液晶显示电路接线原理图如图3-11

                     图3-11 液晶电路图

在单片机系统中应用液晶显示器作为输出器件有以下几个有点:

显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。

数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻的多。

功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其他显示器要少的多[5]。

3.2.10 报警电路

报警信号通常有三种类型:一是闪光报警,因为闪动的指示灯更能提醒人们注意;二是鸣音报警,发出特定的音响,作用于人的听觉器官,易于引起和加强警觉;三是语音报警,不仅能起到报警作用,还能直接给出警报种类的信息。其中,前两种报警装置因硬件结构简单,软件编程方便,常常在单片机应用系统中使用;而语音报警虽然警报信息较直接,但硬件成本高,结构较复杂,软件量也增加。

单频音报警:实现单频音报警的接口电路比较简单,其发音元件通常可采用压电蜂鸣器,当在蜂鸣器两引脚上加3~15V直流工作电压,就能产生3kHZ左右的蜂鸣振荡音响。压电式蜂鸣器结构简单、耗电少,更适于在单片机系统中应用。压电式蜂鸣器,约需10mA的驱动电流,可在某端口接上一只三极管和电阻组成的驱动电路来驱动,基于本系统的需求和功耗要求,只需要基本的报警功能即可,我选择采用的是三极管驱动的单音频报警电路。

以下为报警电路接线图如图3-12

图 3-12 报警电路图

3.2.11 硬件仿真环境介绍

Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。

④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS软件的工作环境和一些基本操作。

本章小结

本章具体的说明了系统硬件设计的内容,通过模块化的设计思想,把一个复杂的单片机系统按照功能划分成一个个单独的电路模型,分别进行设计,最后在集成到一起。这种方法对于设计复杂的单片机系统很有效。大大提高系统设计的效率与质量。

4  软件设计

4.1 编写语言的选择

对于单片机的开发应用中,逐渐引入了高级语言,C语言就是其中的一种。汇编语言的可控性较高级语言来说更具优越性。程序编写语言比较常见的有C语言、汇编语言。汇编语言的机器代码生成效率高,控制性好,但就是移植性不高。

C语言编写的程序比用汇编编写的程序更符合人们的思考习惯。还有很多处理器都支持C编译器,这样意味着处理器也能很快上手。且具有良好的模块化、容易阅读、维护等优点,且编写的模块程序易于移植。基于C语言和汇编语言的优缺点,本系统采用C语言编写方法。软件编写的主体思路是将系统按功能模块化划分,然后根据模块要实现的功能写各个子程序。整个软件程序的编写采用查询式方式编写的。

4.2 编译软件介绍

Keil软件简介:

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统[5]

4.3 主程序模块

主程序实现的功能:与硬件相结合实现便携式甲醛检测仪的各个功能。主要是检测与显示,时间调整与显示,数据存储。功能子函数的调用。见图4-1

图4-1  主程序流程图

4.4模数转换 

  1. 模数转换模块的主要功能就是将经放大器放大的模拟电压信号转化为MCU能够处理的数字信号,并传送给MCU。
  2. ADC0832转换的流程图如下图4-2

  

图 4-2数转换流程图

4.5按键模块

  1. 按键时显现人机对话的一个控制按钮,通过按键的操作,对系统进行发送操作指令,后经与MCU串行通信,然后在液晶上显示。
  2. 按键查询式的流程图如下图:

                        

  

图 4-3 按键查询式的流程图

4.6时钟模块

  1. DS1302模块主要是用于设置时间和与MCU通信经LCD显示时间。
  2. 时钟模块操作流程图如下图:

图 4-4时钟模块操作流程图

4.7液晶显示模块

LCD模块在本系统中主要起着开界面汉字显示,以及各控制效果的显示。采用直接访问方式。

液晶显示的操作流程图如下图4-5:

图 4-5液晶显示的操作流程图

5  系统仿真

前面已经把单片机系统的硬件设计和软件设计完成了,下一步就可以着手进行仿真,因为在设计的过程之中肯定有许多的错误,需要进行仿真来发现错误和调试错误。这样才能使单片机低功耗计数系统的设计更加完善,本次系统仿真采用的是软件仿真,使用的是proteus软件。

Proteus软件由ISIS和ARES两个软件构成,其中ISIS是原理图编辑与仿真软件,ARES是布线编辑软件。本次系统的硬件设计其中的原理图编辑和PCB布线就是在这个软件环境中完成的,至于软件设计,则是采用proteus软件中的ISIS和Keil uVision进行联合调试[8]

当硬件设计和软件设计都完成的时候就可以看到虚拟的基于单片机的低功耗计数系统的运行,以下为仿真效果:

一、编译结束,添加HEX文件单击PROTEUS运行按钮,本系统主界面显示图

如图5-1所示

图 5-1主界面显示图

二、系统接下来显示,4个基本操作功能,小对号为该操作显示项,如图5-2

图5-2 功能界面

三、选择“开始测量”,单击“OK”键,便有下面测量选择界面,如图5-3

                       图 5-3 测量选择界面

四、再按“OK”,则显示检测数据,范围0-10ppm.如图5-4

图 5-4测量界面显示图

五、4个功能的操作和演示是相同的,以下为“时间设置”显示图,如图5-5

图 5-5当前时间显示图

六、小结:本系统原先打算设计“开始测量”、“数据存储”、“时间设置”“通讯设置”等4个基本功能,后由于条件所限,我们并未做出全部的功能,但这次的毕业设计,收获还是很多的!今后我们会进一步进完善该系统。

结束语

目前,公共场所民用建筑室内需要检测甲醛气体,同样建筑材料中甲醛含量也需要检测。由于甲醛含量超量的话,将对人体健康造成很大的影响。随着使用天然气的居民越来越多,天然气存在的潜性危害、天然气泄露也在一步步威胁着居民的身体健康,设计能够满足生活需要,携带方便的室内空气质量检测仪迫在眉睫。针对目前的现状,该系统设计遵守体积小,质量轻,性价比高的原则[9]。

室内空气质量检测系统的设计主要分为硬件设计和软件设计。根据设计前对该系统所要实现功能的要求,综合考虑采用AT89C52单片机为控制核心。

由于所学知识的限制,本系统实现的功能不是很健全 ,但在设计该系统的过程中,让我学会了系统设计的方法,和养成了系统思考的思维方式。

首先要了解系统所要实现的功能;其次根据功能去选择相应的硬件资源;再次将一个大的系统进行模块化划分,然后逐一去攻破。最后把所有模块进行优化整合,便得到了一个完整的系统。基于这样的思路,我们共同完成了室内空气质量检测系统的基本设计。

同时由于本设计是采用在proteus上进行仿真,在keil软件上进行编程,最后二者联调,实现设计任务,但在仿真是无法实现甲醛传感器和MQ-5气体传感器的,因此本设计采用滑动变阻器模拟传感器检测甲醛和天然气时输出的模拟信号,经AD0832转换输入单片机。

致  谢

本论文是在李锐君老师的悉心指导下完成的。李老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。。

我的毕业课题是室内空气质量检测系统的设计,是一个实际的小工程。作为一个本科生,我对实际的工程设计认识不够,经验不足,难免在设计的整体框架中,有很多的细节没有考虑。我们的指导老师:李锐君老师并没有指责,而是给予我们鼓励和很多宝贵的建议,并且悉心引导,给予我一个比较清晰的设计思路。我们沿着这条经验之路,不断地尝试摸索,慢慢地也掌握了设计的基本流程和思考的方法。我们遇到了很多的难题,比如硬件器件的选择,功能的实现等。然而这样的问题并不是我一个能所能解决的,幸运的是有我们的指导老师的悉心指导和小组搭档的全心帮助,所以一个个看似复杂的问题便迎刃而解。              

最后我还要再次深深地感谢李锐君老师,正是基于李老师的悉心指点和大家的全心的帮助,我才能比较顺利地完成毕业设计。谢谢你们!

参考文献

  1. 何立民. 《MCS-51系列单片机应用设计》、系统配置与接口技术.
  2. 郭强.《液晶显示应用技术》 北京:电子工业出版社,2000年.
  3. 新民.《智能仪器原理及设计》  哈尔滨工业大学出版社,1995。
  4. 华成英. 童诗白. 《模拟电子技术基础第三版》 北京: 高等教育出版社, 2004.4.
  5. 马忠梅等.《单片机的C语言应用程序设计》 北京:北京航空航天大学出版社,1997
  6. 李刚 林凌 王焱 编著 新概念单片机教程. 天津大学出版社,2004年
  7. 彭爱华.《单片机高级语言C51应用程序设计》〔M〕.北京工业出版社,1999。
  8. 何立民. 《MCS-51系列单片机应用设计》、系统配置与接口技术.
  9. arek,H.P.Trah,Y.Suzuki.Sensors for Automotive echnology[M],2004.

[10] R.C.et al.Dynamic Multi-sensor Data FusionSystem for Intelligent Robotics and Automation[M],1998

附录

附录一 硬件设计主电路图

附录二 检测主程序程序

#include <AT89X52.H>      //调用外函数//

#include <ctype.h>

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

#include <LCD.h> /**********初始化CPU************/

void init_cpu()           //初始化cPu

{        EA=1;

TR0=1;

TR1=1;

TMOD=0x11;

TH1=0x3c;

TL1=0xb0;

}

/*void time1(void) interrupt 3 using 1

{    

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

        keyval=P1;  

} *                        //初始化CPU结束//

void main_menu_initial()          //LCD主菜单初始化.//

{

main1_menu[0].menu_count=4;        //有4个菜单项.//

main1_menu[0].display=measurearray;   //定义一个”开始测量“数组//

main1_menu[0].subs=NULL;  

main1_menu[0].children_menus=measure_menu; //当前菜单子菜单的指针

main1_menu[0].parent_menus=NULL;

……                       //还有“数据存储”、“时间设置”……//

}

void measure_menu_initial()             //“开始测量”菜单设置//

{

    measure_menu[0].menu_count=2;

    measure_menu[0].display=qr;       //开始测量函数,  确认.

 measure_menu[0].subs=start_measure_function;  //开始测量函数

 measure_menu[0].children_menus=NULL;

 measure_menu[0].parent_menus=main1_menu;

 measure_menu[1].menu_count=2;

 measure_menu[1].display=qx;   //开始测量函数,  取消.

    measure_menu[1].subs=NULL;

    measure_menu[1].children_menus=NULL;

 measure_menu[1].parent_menus=main1_menu;

}

……    //还有void store_menu_initial()、void time_menu_initial()//

void led_menu_pro()               {

max_item=menu_led->menu_count;

switch(keyval)

{

case 0: break;

case 1:    //向上键.

if(user_choosen==0)

{

user_choosen=max_item;

}

shuaxin=1;

user_choosen--;

break;

}

……                  //“向上”“向下”“确认”“取消”键//

if(shuaxin) //是否需要刷新LCD标志位.

{   Clr_Scr();

shuaxin=0;

}

led_menu_show();

}

v oid led_menu_show()

{

uchar n;

max_item=menu_led->menu_count;

if (max_item>=4)    //菜单项为3则表示为主菜单.

{

for(n=0;n<4;n++)

{  draw_bmp(n*2,20,96,0,menu_led[n].display);

}

select_item(user_choosen);   //标记出当前菜单项.

}

else

{

switch(temp_choosen)

{   case 0:

draw_bmp(0,20,96,0,measurearray);     //“开始测量”数组//

break;

……

          default:

break;

}

for(n=0;n<max_item;n++)

{

draw_bmp((n+1)*2,20,32,0,menu_led[n].display);

}

select_item(user_choosen+1); } }  

void select_item(uchar n)

{

draw_bmp(n*2,2,16,0,curflag);

}  

void start_measure_function(void)        //开始测量函数//

{main_Menu();

}

……

/*----------------主函数-------------------*/

main()

 {

  init_cpu();

  Init_Clock();

  init_lcd();

  Disp_Img(FirstPage);

delay(2000);                 //延时//

ClockMsg();

 Refresh();

 delay(2500);

 Clr_Scr();

 main_Menu();

 Clr_Scr();

   main_menu_initial();

   measure_menu_initial();

   store_menu_initial();

   time_menu_initial();

   communication_menu_initial();

 while(1)

 {  keyval=get_key();     //读键.

led_menu_pro();

}

 }              // 适当延时防止因为不断查忙而耗费大量CUP资源 //

原文档内含文档内各种作图,如需原文档参考学习,请关注微信公众号
回复文章标题即可免费获取。文档仅供参考学习使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值