当前位置:文档之家› 毕业论文:酒精浓度检测仪的设计

毕业论文:酒精浓度检测仪的设计

目录

1 引言 (3)

2 酒精浓度监测仪的硬件电路设计 (4)

2.1 89C51单片机系统 (4)

2.1.1 单片机片内结构 (4)

2.1.2 89C51芯片介绍 (7)

2.2 传感器的选择 (9)

2.3 A/D转换电路 (10)

2.3.1 ADC0809的引脚及功能 (10)

2.3.2 ADC0809的结构及转换原理 (11)

2.4 LED显示电路 (12)

2.4.1 LED显示器的结构 (12)

2.4.2 LED显示器的工作原理 (13)

3 酒精浓度监测仪的软件设计 (15)

3.1 主程序 (15)

3.2数据采集子程序 (16)

3.3数据处理子程序 (16)

3.4报警子程序 (17)

4 结论 (19)

参考文献 (20)

摘要

目前全世界绝大多数国家都采用呼气酒精测试仪对驾驶人员进行现场检测,以确定被测量者体内酒精含量的多少,以确保驾驶员的生命财产安全。酒精浓度监测仪是一种以气敏传感器和单片机为主,监测空气酒精浓度,并具有声光报警功能的空气酒精浓度监测仪。其可监测出空气环境中酒精浓度值,并根据不同的环境设定不同的阈值,对超过的阈值进行声光报警来提示危害。此外,空气酒精浓度监测仪还能监测某一特定环境的酒精浓度如酒精生产车间可避免发生起火、爆炸及工业场地酒精中毒等恶性事故,确保环境安全。

关键词: 单片机酒精浓度监测仪 A/D转换声光报警

酒精浓度监测仪的设计

1 引言

随着经济高速发展,越来越多的人有了自己的私家车,而酒后驾车造成的交通事故也频繁发生。为此,需要设计一智能仪器能够检测驾驶员体内酒精含量。本论文研究的是一种以气敏传感器和单片机为主,监测空气酒精浓度,并具有声光报警功能的空气酒精浓度监测仪。其可监测出空气环境中酒精浓度值,并可根据不同的环境设定不同的阈值,对超过的阈值进行声光报警来提示危害。

本课题分为两部分:硬件设计部分和软件设计部分。硬件部分为利用MQ3气敏传感器测量空气中酒精浓度,并转换为电压信号经A/D转换后传给单片机系统,由单片机及其外围电路进行信号的处理,显示浓度值以及超阈值声光报警。软件部分用汇编语言进行编程,程序采用模块化设计思想。各个子程序的功能相对独立,便于调试和修改。而硬件电路又大体可分为单片机小系统电路、A/D转换电路、声光报警电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程。

2 酒精浓度监测仪的硬件电路设计

硬件设计时,考虑酒精浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏的电压值并且电压值稳定,外部干扰小等。因此,可以直接把传感器输出电压值经过ADC0809采集数据送入单片机进行处理。酒精浓度监测仪的硬件电路设计主要包括:传感器测量电路、89C51单片机系统、A/D转换电路、声光报警电路、LED显示电路。酒精浓度监测仪硬件设计电路框图如图2-1。

图2-1硬件方案总体框图

2.1 89C51单片机系统

单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D 转换器等电路集成到一块单块芯片上,构成一个虽小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。

2.1.1 单片机片内结构

51单片机的片内结构如图2-2所示。它把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。按功能划分,它有如下功能部件组成:

⑴微处理器(CPU)。

⑵数据存储器(RAM)。

⑶程序存储器(ROM/EPROM)。

⑷4个8位并行I/O口(P0口、P1口、P2口、P3口)。

⑸一个串行口。

⑹2个16位定时器、计数器。

⑹2个16位定时器、计数器。

⑺中断系统。

⑻特殊功能寄存器(SER)。

上述功能部件都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但CPU对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。下面对框图2-1中各功能部件作一简单介绍:

图2-2 51单片机片内结构

1、中央处理器CPU

CPU是单片机的核心部件,它通常由运算器、控制器和中断电路等器件组成。CPU 进行算术运算和逻辑操作的字长有4位、8位、16位和32位之分,字长越长运算速度越快,数据处理能力也越强。

2、存储器

在单片机内部,ROM和RAM存储器是分开制造的。通常,ROM存储器容量较大,RAM存储器的容量较小,这是单片机用于控制的一大特点。

(1) ROM存储器

ROM存储器一般为1-64K字节,用于存放应用程序,故又称为程序存储器。

(2) RAM 存储器

通常,单片机片内RAM存储器容量为64-256字节,最多可达48K字节。RAM存储器主要用来存放实时数据或作为通用寄存器、数据堆栈和数据缓冲器之用。

3、中断系统

具有5个中断源,2级中断优先权。

4、定时器/计数器

片内有2个16位的定时器/计数器,具有4种工作方式。在应用中,往往需要精确的定时,或对外部事件进行计数,因而需在单片机内部设置定时器/计数器部件。

5、I/O接口和特殊功能部件

I/O接口电路有串行和并行两种。串行I/O用于串行通信,它可以把单片机内部的并行8位数据(8位机)变成串行数据向外传送,也可以串行接收外部送来的数据并把它们变成并行数据送给CPU处理。并行I/O口电路可以使单片机和存储器或外设之间并行地传送8位数据(8位机)。通常,特殊功能部件包括:定时器、计数器、A/D、 D/A、 DMA 通道和系统时钟等电路。定时器、计数器用于产生定时脉冲,以实现单片机的定时控制;A/D和D/A转换器用于模拟量和数字量之间的相互转换,以完成实时数据的采集和控制,DMA通道可以使单片机和外设之间实现数据的快速传送。总之,某一单片机内部究竟包括哪些特殊功能部件以及特殊功能部件的数量是和它的型号有关的。

单片机是整个系统的核心,对系统起监督、管理、控制作用,并进行复杂的信号处理,产生测试信号及控制整个检测过程。所以在选择单片机时,参考了以下标准。

(1) 运行速度。单片机运行速度一般和系统匹配即可。

(2) 存储空间。单片机内部存储器容量,外部可以扩展的存储器(包括I/0Fl)空间

(3) 单片机内部资源。单片机内部存储资源越多,系统外接的部件就越少,这可提高系统的许多技术指标。

(4) 可用性。指单片机是否能很容易地开发和利用,具体包括是否有合适的开发工具,是否适合于大批量生产、性能价格比,是否有充足的资源,是否有现成的技术资源等。

(5) 特殊功能。一般指可靠性、功耗、掉电保护、故障监视等。

从硬件角度来看,与MCS-51指令完全兼容的新一代AT89CXX系列机,比在片外

加EPROM才能相当的8031单片机抗干扰性能强,与87C51单片机技能相当,但功耗小。程序修改直接用+5V或+12V电源擦除,更显方便、而且其工作电压放宽至2.7V-6V,因而受电压波动的影响更小,而且4K的程序存储器完全能满足单片机系统的软件要求,故AT89C51单片机是构造本检测系统的更理想的选择。

2.1.2 89C51芯片介绍

掌握MCS-51单片机,应首先了解MCS-51的引脚,熟悉并牢记各引脚的功能,MCS-51系列中各种型号芯片的引脚是互相兼容的。制作工艺为HMOS的MCS-51的单片机都采用40只引脚的双列直插封装方式,如图2-3所示。

P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

RST

(TXD) P3.1 (INT0) P3.2 (INT1) P3.3 T0 P3.4 T1 P3.5 (WR) P3.6 (RD) P3.7

XTAL1

XTAL2

GND

Vcc

P0.0 (AD0)

P0.1 (AD1)

P0.2 (AD2)

P0.3 (AD3)

P0.4 (AD4)

P0.5 (AD5)

P0.6 (AD6)

P0.7 (AD7)

EA/VPP

PSEN

P2.7 (A15)

P2.6 (A14)

P2.5 (A13)

P2.4 (A12)

P2.3 (A11)

P2.2 (A10)

P2.1 (A9)

P2.0 (A8) PDIP

(RXD) P3.0

ALE/PROG

图2-3 AT89C51芯片管脚图

40只引脚按其功能来分,可分为如下3类:

⑴电源及时钟引脚:Vcc、Vss、XTAL1、XTAL2。

电源引脚接入单片机的工作电源。Vcc接+5V电源,Vss接地。

时钟引脚XTAL1、XTAL2外接晶体与片内的反相放大器构成了1个晶体振荡器,它为单片机提供了时钟控制信号。2个时钟引脚也可外接独立的晶体振荡器。XTAL1接外部的一个引脚。该引脚内部是一个反相放大器的输入端。这个反相放大器构成了片内振荡器。如果采用外接晶体振荡器时,此引脚接地。XTAL2接外部晶体的另一端,在该引脚内部接至内部反相放大器的输出端。若采用外部时钟振荡器时,该引脚接受时钟振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。

⑵控制引脚:PSEN、ALE、EA、RESET(RST)。此类引脚提供控制信号,有的还具有复用功能。

①RST/V PD引脚:RESET(RST)是复位信号输入端,高电平有效。当单片机运行时,在此引脚加上持续时间大于2个机器周期(24个振荡周期)的高电平时,就可以完成复位操作。在单片机工作时,此引脚应为≤0.5V低电平。V PD为本引脚的第二功能,即备用电源的输入。当主电源发生故障,降低到某一规定值的低电平时,将+5V电源自动接入RST端,为内部RAM提供备用电源,以保证片内RAM的信息不丢失,从而使单片机在复位后能正常进行。

②ALE/PROG引脚:ALE引脚输出为地址锁存允许信号,当单片机上电正常工作后ALE引脚不断输出正脉冲信号。当单片机访问外部存储器时,ALE输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器锁存的锁存控制信号。即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率为时钟振荡器频率的1/6。PROG为该引脚的第二功能。在对片内EPROM型单片机编程写入时,此引脚作为编程脉冲输入端。

③PSEN引脚:程序存储器允许输出控制端。在单片机访问外部程序存储器时,此引脚输出脉冲负跳沿作为读外部程序存储器的选通信号。此引脚接外部程序存储器的OE(输出允许端)。

④EA/V PP引脚:EA功能为片内程序存储器选择控制端。当EA引脚为高电平时,单片机访问片内程序存储器,但在PC值超过0FFFH时,即超出片内程序存储器的4KB 地址范围时将自动转向执行外部程序存储器内的程序。当EA引脚为低时,单片机只访问外部程序存储器,不论是否有内部程序存储器。

⑶I/O口引脚:P0、P1、P2、P3,为四个8位I/O口的外部引脚。P0口、P1口、P2口、P3口是3个8位准双向的I/O口,各口线在片内均有固定的上拉电阻。当这3个准双向I/O口作输入口使用时,要向该口先写1,另外准双向口I/O口无高阻的“浮空”状态。

由于单片机具有体积小、质量轻、价格便宜、耗电少等突出特点,所以本系统采用89C51单片机,硬件设计电路图如图1所示。89C51内部有4KB的EPROM,128字节

的RAM,所以一般都要根据所需存储容量的大小来扩展ROM和RAM。本电路EA接高电平,没有扩展片外ROM和RAM。

2.2 传感器的选择

由于本系统直接测量的是呼气中的酒精浓度,再转换为血液中的酒精含量浓度,故采用气敏传感器。考虑到周围空气中的气体成分可能影响传感器测量的准确性,所以传感器只能对酒精气体敏感,对其他气体不敏感,故选用MQ3型气敏传感器。其有很高的灵敏度、良好的选择性、长期的使用寿命和可靠的稳定性。MQ3型气敏传感器由微型Al2O3,陶瓷管和SnO2敏感层、测量电极和加热器构成的敏感元件固定在塑料或不锈钢的腔体内,加热器为气敏元件的工作提供了必要的工作条件。传感器的标准回路有两部分组成。其一为加热回路,其二为信号输出回路,它可以准确反映传感器表面电阻值的变化。传感器的表面电阻RS的变化,是通过与其串联的负载电阻RL上的有效电压信号VRL输出面获得的。二者之间的关系表述为:RS/RL=(VC-VRL)/VRL,其中VC为回路电压为10V。负载电阻RL可调为0.5-200K。加热电压Uh为5v。上述这些参数使得传感器输出电压为0-5V。MQ3型气敏传感器的结构和外形、标准回路、传感器阻值变化率与酒精浓度、外界温度的关系图如图2-4所示。为了使测量的精度达到最高,误差最小,需要找到合适的温度,一般在测量前需将传感器预热5分钟。

图2-4 传感器电路、结构及关系图

2.3 A/D转换电路

在单片机应用系统中,被测量对象的有关变化量,如温度、压力、流量、速度等非电物理量,须经传感器转换成连续变化的模拟电信号(电压或电流),这些模拟电信号必须转换成数字量后才能在单片机中用软件进行处理。实现模拟量转换成数字量的器件称为A/D转换器(ADC)。

A/D转换器大致分有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。

该设计中选用的是ADC0809属第二类,是8位A/D转换器。每采集一次需100μs。0809具有8路模拟信号输入端口,地址线(23-25脚)可决定那一路模拟信号进行A/D 转换。22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。6脚为测试控制,当输入一个2μs的高电平脉冲时,就开始A/D转换。7引脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。9脚为A/D转换数据输出允许端,当OE脚为高电平时,A/D转换数据输出。10脚为0809的时钟输入端。

2.3.1 ADC0809的引脚及功能

根据A/D转换器的转换原理可将A/D转换器分为两大类。一类是直接型A/D转换器,另一类是间接型A/D转换器。该设计中的ADC0809属于直接A/D转换器中的逐次比较型A/D转换器。逐次比较型A/D转换器在精度、速度、和价格上都适中,是最常用的A/D转换器件。芯片采用的是ADC0809,以下介绍ADC0809的引脚及功能。芯片如图2-4所示。

图2-4 ADC0809的引脚

ADC0809是一种逐次比较式8路模拟输入、8位数字量输出的A/D转换器。由图可见,ADC0809共有28个引脚,采用双列直插式封装。主要引脚功能如下:

⑴IN0-IN7是8路模拟信号输入端。

⑵D0-D7是8位数字量输入端。

⑶A、B、C与ALE控制8路模拟通道的切换,A、B、C分别与3根地址线或数据线相连,3位编码对应8个通道地址端口。C、A、B = 000-111分别对应IN0-IN7通道的地址。

需要注意的是:ADC0809虽然有8路模拟通道可以同时输入8路模拟信号,但每个瞬间只能换1路,各路之间的切换由软件改变C、A、B引脚上的代码来实现。

⑷OE、START、CLK为控制信号端,OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。

⑸V R(+)和V R(-)为参考电压输入端。

2.3.2 ADC0809的结构及转换原理

ADC0809的结构框图如图2-5。ADC0809采用逐次比较的方法完成A/D转换的,由单一的+5V电源供电。片内有锁存功能的8路选1的模拟开关,由C、B、A引脚的功能来决定所选的通道。0809完成一次转换需100μs左右,输出具有TTL三态锁存缓冲器,可直接连接到MCS-51的数据总线上。

通过适当的外接电路,0809可对0-5V的模拟信号进行转换。

2.4 LED显示电路

89C51的P3.0-P3.3端口作为四位LED数码管显示控制。P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。P0端口作0809的A/D转换数据读入用,P2端口用作0809的A/D转换控制。

START

I

N7

C

B

A

图2-5 ADC0809的结构框图

2.4.1 LED显示器的结构

LED显示器是由发光二极管构成的,常用的LED显示器为8段(或7段,8段比7段多了1个小数点“dp”段),每一个段对应1个发光二极管。为了使LED显示器显示不同的符号或数字,就要把不同段的发光二极管点亮,这样就要为LED显示器提供代码,因为这些代码可使LED相应的段发光,从而显示不同字型,因此该代码称之为段码(或称之为字型码)。

7段发光二极管,再加上1个小数点位,共计8段。因此提供给LED显示器的段码正好是1B。

表2-1 各段与字节中各位对应个关系

图2-6 4位LED 显示器的构成

由N 个LED 显示块可拼成N 位的LED 显示器。 图2-6是4位的LED

显示器的结构原理图。

N 个LED 显示块由N 位位选线和8×N 根段码线。段码线控制显示字符的字型,而位选线为各个LED 显示块中各段的公共端,它控制该LED 显示位的亮或暗。 2.4.2 LED 显示器的工作原理

LED 显示器有静态显示和动态显示2种显示方式。静态显示电路中,各位可独立显示,只要在该位的段码线上保持段码电平,该位就能保持相应的显示字符。由于各位分别由1个8位的数据输出口控制段码线,故在同一时间里,每一位显示的字符可以不相同。这种显示方式虽然接口编程容易,但付出的代价是占用口线较多。若用I/O 口线接口,则要占用4个8位I/O 口,若用锁存器接口,则要用4片74L373

芯片。如果显示

位选线

的位数增多,则需要增加锁存器。因此在显示位较多的情况下,一般都采用动态显示方式。该设计中采用的就是LED 动态显示方式,原理如下。

在多位LED 显示时,为简化硬件电路,通常将所有位的段码线相应段并联在一起,由1个8位I/O 口控制,形成段码线的多路复用,而各位的共阳极或共阴极分别由相应的I/O 线控制,形成各位的分时选通。由于各位的段码线并联,8位I/O 口输出的段码对各个显示位来说是相同的。因此,在同一时刻,如果各位位选线都处于选通状态的话,4位LED 将显示相同的字符。若要各位LED 能够同时显示出与本位相应的显示字符,就必须采用动态显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要显示的字符的段码。这样,在同一时刻4位LED 中只有选通的那一位显示出字符,而其他3位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由于LED 显示器的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可以造成多为同时亮的假象,达到同时显示的效果。4位8 段LED 动态显示电路如图2-7所示。

图2-7 4位8 段LED 动态显示电

该设计中采用了4位LED 显示,如图2-1数字电压表硬件设计电路图所示,第一个显示通道位,第二个显示所测电压的个位数值,第二和第三个显示小数位数值,精确度为0.01V 。

位选线4

3 酒精浓度监测仪的软件设计3.1 主程序

主程序流程图如下图3-1所示。

图3-1 主程序流程图

3.2数据采集子程序

A/D转换子程序流程图如下图3-2所示。ADC0809初始化后,把0通道输入的0-5V 的模拟信号转换为对应的数字量OOH-FFH,然后将对应数值存储到3FH内存单元。

图3-2 A/D转换子程序流程图

3.3数据处理子程序

数据处理子程序主要是系数调整和数制转换,将ADC0809采集的模拟电压值转换为8位二进制数。系数是酒精浓度的最大测量值1500/255=5.88确定。(89C51为8位处理器,当0809输入电压为5.00V时输入数据为255(FFH)。)系数调整是为了使十六进制与十进制转换方便,将转换系数.5.88放大10倍取整后为59即3BH作为转换系数。

图3-3 数据处理子程序流程图

3.4报警子程序

系统设定阈值并保存在以50H开始的3个单元,为了便于比较和显示,阈值的千位放入50H中,百位和十位放入5lH,个位放人52H中。报警电路分为蜂鸣器报警电路和LED发光报警电路组成。当输入端P1.0为低电平时,有电流通过蜂鸣器,蜂鸣器发出声音报警。而当输入端为高电平时不报警。当输人端P1.1为低电平时,LED点亮报警,反之输入端P1.1为高电平则不报警。

报警子程序执行之前,将报警阈值转换为压缩的BCD码并存放在两个存储单元中。传感器输入值A/D转换后,调用比较程序,经过数据处理后显示的测量值与阈值比较,小于阈值则继续执行显示程序。若大于阈值则将单片机的P1.0、P1.1两端口清零进行声光报警。40H、4lH、42H单元存放A/D转换后,并进行十进制转换后的结果。40H和50H分别存放的是处理后的测量值与阈值的千位的压缩BCD码,41H和51H分别存放的是处理后的测量值与阈值的百位、十位压缩的BCD码,42H和52H分别存放的是处理后的测量值与阈值的个位的压缩BCD码。程序首先对40H、50H中的值进行比较大小,如果40H中的值大于50H中的值,则进行报警。依此类推,比较41H和51H,42H 和52H

图3-4 报警子程序流程框图

4 结论

本设计过程包括了硬件电路设计和软件程序的编写两部分。硬件电路部分结构简单,使用方便,适合大众化使用。软件部分采用模块化设计思想,各个子程序的功能相对独立,便于调试和修改。由于时间和条件的限制,该系统还可以进一步完善,实现更多功能。

参考文献

[1] 张毅刚.单片机原理及应用 [M].高等教育出版社

[2] 黄惠媛.单片机原理与接口技术 [M].海洋出版社

[3] 徐新民.单片机原理与应用 [M].浙江大学出版社

[4] 何道清.传感器与传感器技术 [M].科学出版社

[5] 电子制作.2007年第6期 [J].北京:电子制作编辑部,42—43

[6] 电子制作.2007年第12期 [J].北京:电子制作编辑部,62

相关主题
文本预览
相关文档 最新文档