酒精浓度测试仪的设计
目 录
1 引言 ........................................................ 1
1.1 本课题设计的目的和意义..................................... 1
1.2 国内外发展现状............................................. 1
1.3 酒精浓度测试仪科技新动向................................... 2
2.1 酒精浓度检测仪的原理说明................................... 4
2.1.1 酒精浓度检测仪构成部分................................... 4
2.1.2 酒精浓度检测仪原理....................................... 4
2.1.3 呼出气体的测量方法....................................... 4
2.1.4 数据的显示方法........................................... 5
2.1.5 关于气体收集测量方法不同造成的影响....................... 5
2.2 酒精浓度监测仪的硬件电路设计............................... 5
2.2.1 传感器................................................... 6
2.2.2 A/D转换电路 ............................................. 8
2.2.3 ADC0809的引脚及功能 ..................................... 9
2.2.4 AT89S52单片机 .......................................... 11
2.2.5 LCD显示 ................................................ 15
2.2.6 键盘.................................................... 15
2.2.7 声光报警................................................ 17
3.1 主程序流程图.............................................. 18
3.1.1 数据采集子程序.......................................... 18
3.1.2 数据处理子程序.......................................... 19
3.1.3 键盘扫描子程序.......................................... 20
3.1.4 提示界面键盘子程序...................................... 20
3.1.5 键盘阈值设定子程序...................................... 20
3.1.6 显示子程序.............................................. 20
3.1.7 报警子程序.............................................. 21
3.2 调试分析.................................................. 22
3.2.1 硬件调试................................................ 22
3.2.2 软件调试................................................ 23
3.3 软件与硬件结合调试........................................ 23
3.4 调试故障及原因分析........................................ 23
4 结论........................................................ 24
参 考 文 献.................................................... 25
致 谢......................................................... 26
1 引言
1.1 本课题设计的目的和意义
酒后驾车是导致交通事故的一个主要因素,为了防止机动车辆驾驶人员酒后驾车,现场测试人体呼气中酒精含量已经受到重视,所以酒精浓度测试仪正在慢慢的得到广泛的关注与应用。
当酒精在人体血液内达到一定浓度时,就会麻痹神经,造成大脑反应迟缓,肢体不受控制等症状。人对外界的反应能力及控制能力就会下降,处理紧急情况的能力也随之下降。对于酒后驾车者而言,其血液中酒精含量越高,发生撞车的几率越大。根据世界组织的事故调查,大约50%—69%的交通事故与酒后驾驶有关,酒后驾驶已经被列为车祸致死的主要原因[1]。从工厂企业到居民家庭,酒精泄露的检测、监控以及对酒后驾车的监测对居民的人身和财产安全都是十分重要且必不可少的。现如今,由于人们安全意识逐渐加强,对环境安全性和生活舒适性要求的提高,再加上气体传感器已经向低功耗、多功能、集成化方向的发展。因此,酒精浓度测试仪具有十分广阔的现实市场和潜在的市场需求。
为了实现对人权的尊重,对生命的关爱,使更多人的生命权、健康权及幸福美满的家庭能得到更好的保护,需要设计一款酒精浓度测试仪。
1.2 国内外发展现状
对气体中的酒精含量进行检测的设备有五种类型。分别是:燃料电池型(电化学)、半导体型、红外线型、气体色谱分析型和比色型[2]。但由于价格和使用方便的原因,目前常用的只有燃料电池型(电化学型)和半导体型两种类型[3]。
燃料电池是当前全世界都在广泛研究的环保型能源,它可以直接把可燃气体转变成电能,还能不产生污染,酒精传感器只是燃料电池的一个分支。燃料电池酒精传感器采用贵金属白金作为电极,在燃烧室内充满特种催化剂,使进入燃烧室内的酒精充分燃烧转变为电能,也就是在两个电极上产生电压,电能消耗在外接负载上,电压与进入燃烧室内气体的酒精浓度成正比。与半导体型相比,燃料电池型呼气酒精测试仪具有稳定性好,精度高,抗干扰性好的优点[4]。但是由于燃料电池酒精传感器的结构要求非常精密,制造难度相当大,加上材料成本高,因此价格相当昂贵,是半导体酒精传感器的几十倍[5]。
受20世纪信息技术的快速发展的影响,传感技术逐渐走向成熟,在生活生产中的得到了广泛的应用。由于传感器在各个领域都有着举足轻重的作用,因此,高精度,高可靠性,微型化,微功耗无源化和智能数字化成为其发展方向[6]。气敏元件传感器作为新型敏感元件传感器在国家列为重点支持发展的情况下,国内已有一定的基础。其现状是:
(1)烧结型气敏元件仍是生产的主流,占总量90%以上;接触燃绕式气敏元件已具备了生产基础和能力;电化学气体传感器有了试制产品。
(2)在工艺方面引入了表面掺杂、表面覆膜以及制作表面催化反应层和修隔离层等工艺,使烧结型元件由广谱性气敏发展成选择性气敏;在结构方面研制了补偿复合结构、组合差动结构以及集成化阵列结构;在气敏材料方面SnO2和Fe2O3材料已用于批量生产气敏元件,新研究开发的Al2O3气敏材料、石英晶体和有机半导体等也开始用于气敏材料。
(3)低功耗气敏元件(如一氧化碳,甲烷等气敏元件)已从产品研究进入中试。
(4)国内气敏元件传感器产量已超过“九五”初期的400万支。产量超过20万支的主要厂家有5家,黑龙江敏感集团、太原电子厂、云南春光器材厂、天津费加罗公司(合资)、北京电子管厂(特种电器厂),其中前四家都超过100万支,据行业协会统计,1998年全国气敏元件总产量已超过600万支。
总的看来,我国气敏元件传感器及其应用技术有了较快进展,但与国外先进水平仍有较大的差距,主要是产品制造技术、产业化及应用等方面的差距,与日本比较仍要落后10年。
1.3 酒精浓度测试仪科技新动向
为检查醉酒驾车,警察常常使用一种便携式的酒精呼吸检测仪,通过检测驾驶者呼出的气体判断驾驶者是否饮酒。但我国警方目前使用的酒精呼吸检测仪只能初步显示驾驶员是否饮酒,有醉驾嫌疑的驾驶员还需要接受血检,以确定其体内酒精含量是否超标。目前英国内政部已推出一种超级酒精呼吸检测仪,能根据体温、呼吸频率等情况,当场判断出驾驶者体内的酒精含量。
奔驰、大众、宝马等厂家也研制出一些预防酒后驾车的车内设备,其中包括“酒精锁”。驾驶者在发动引擎前,须向车内一种小型酒精检测装置吹气,如果酒
精浓度超过标准值,引擎将无法启动。另外一种酒精锁则是一种情景对话设备。这种设备会询问驾驶者的家庭地址等问题,如果驾驶者在酒后意识不清醒,不能正确答对所的问题,就无法启动汽车。
一些新的光学手段也可应用于对付醉驾。俄罗斯圣彼得堡一家激光公司发明了激光酒精检测仪,可对驾驶员是否饮酒进行远距离探测。检测时,检测仪发射一束激光透过挡风玻璃对车内空气进行检测,如果空气中酒精含量超过百万分之一,仪器就会报警。
还有一些更新锐的检测技术正在研究之中。比如,英国布里斯托尔大学的研究人员试图通过检测驾驶员眼睛的动作来识别是否醉驾。正常状态下,驾驶员转动方向盘时,会提前0.185s左右将目光转向一边。而饮酒将明显缩短这个时间差。2小杯伏特加酒就会使时间差降到0.15s以下,4小杯伏特加会完会消除这一时间差。
2 酒精浓度监测仪的硬件电路设计
2.1 酒精浓度检测仪的原理说明
2.1.1 酒精浓度检测仪构成部分
酒精浓度检测仪主要是用来检测酒精浓度的,它主要由酒精传感器、模数转换器、单片机、LCD显示、键盘以及声音报警构成。
本课题选择MQ-3型酒精传感器.MQ-3型气敏传感器灵敏度高,响应速度快
[7]。AT89S52是低功耗、高性能、采用CMOS工艺的8位单片机,其片内具有8KB的可在线编程的Flash存储器[8]。
ADC0809为8路8位的A/D转换器,具有转换起停控制端,转换时间为100μs,模拟输入电压值范围是0~+5V,+5V电压供电[11]。三位数码管显示具体数值。
8279对键盘部分提供一种扫描工作方式,能对64个按键键盘阵列不断扫描,自动消抖,自动识别出闭合的键并得到键号,能对双键或N键同时按下进行处理。
LJDl28X64液晶显示模块是128X64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
2.1.2 酒精浓度检测仪原理
人饮酒后,酒精通过消化系统被人体吸收,经过血液循环,约有90%的酒精通过肺部呼气排出,因此测量呼气中的酒精含量,就可判断其醉酒程度。大量的统计研究结果表明,如果被测者深吸气后以中等力度呼气达三秒钟以上,这时呼出的气就是从肺部深处出来的气体。呼气中的酒精含量与血液中的酒精含量有如下关系:BAC(mg/L)=BrAC(mg/L)*2200,BAC(blood alcoholconcentration)为血液酒精浓度,BrAC(breath alcoholconcentration)为呼气酒精浓度,二者具有固定的比例关系。mg/L是物理单位,为毫克每升。该检测仪正是在这个关系上进行了数值理论计算[9]。
2.1.3 呼出气体的测量方法
对人呼出气体的测量不同于对其它气体的测量。因为人呼出一口气的时间仅一秒种左右,而且传感器感受到的乙醇气体浓度有一个从低到高再到低的过程,在这个过程中,浓度有一个最大值[10]。
2.1.4 数据的显示方法
如果采用即时显示,检测者在短短的一秒钟内既要观察被检者呼气方式是否正确,又要观察读数并读取最大值.眼睛会应接不暇,极易漏读、误读。用微型计算机处理,可以在一秒种内采样数百次,对每次的结果逐一进行比较,保留最大值,在测量过程结束后将最大值显示出来供检测者读取,并能长时间锁存,供被检者和其他有关人员察看。
综上所述,在酗酒检测仪中采用单片微型计算机可以集模数转换、非线性校正、结果处理、存储、译码显示于一身,从而使电路结构紧凑、功能强、性能价格比高,并使检测仪智能化,因此有着十分突出的优点[11]。采用微机的数字化气体检测仪,采用同一电路结构,只要更换传感器和程序存储器,就可以适用于多种气体的检测,这也是其优点之一。
2.1.5 关于气体收集测量方法不同造成的影响
对人体呼出气体的测量方式及其对测量结果的影响对人体呼出气体进行测量的方式基本上分为三种。
第一种是密闭式的测量。被测者将呼出气体吹入一塑料袋中,然后将传感器探头深入袋内测量。测量过程中塑料是密闭的,袋中气体不溢出。第二种是连续气流式的测量。传感器装在一个气室中。被测者通过吹管将气从气室一端吹入,经过传感器后从气室另一端排出。测量过程L中要求气流不中断并保持一定的压力。第三种是开启或半开启式的测量。被测者将气体直接吹向传感器进行测试。要达到定量测量的目的,应采用前面两种方法,而且以第二种方法为好。但这两种方法都要用到辅助的器具,如塑料袋和吹管。从卫生的角度,每次测试后要更换一次辅助器具。这在大量普查中不仅繁琐,而且要耗费大量辅助器具,显然是很不经济的。我们采用开启式和精确式测量相结合的方法。在普查时用开启式进行定性测量,被测者如果饮了酒,仪器就会报警,然后进行复测,采用精确式进行定量测量.根据超标与否判罚。对未饮酒者,不进行复测。这样可以节省大量辅助器具,又达到定量检的目的[12]。
2.2 酒精浓度监测仪的硬件电路设计
硬件设计时,考虑酒精浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏的电压值且电压值稳定,外部干扰小等。因此,可以直接把传感器输出
电压值经过ADC0809采集数据送入单片机进行处理。此外,还需接人LCD显示,8279键盘/显示器接口芯片,声光报警电路等。
图2.1硬件方案总体框图
2.2.1 传感器
国外气体传感器发展很快,一方面是由于人们安全意识增强,对环境安全性和生活舒适性要求提高;另一方面是由于传感器市场增长受到政府安全法规的推动。目前,气体传感器的发展趋势集中表现为:一是提高灵敏度和工作性能,降低功耗和成本,缩小尺寸,简化电路,与应用整机相结合,这也是气体传感器一直追求的目标。如日本费加罗公司推出了检测(0.1~10)×10-6硫化氢低功耗气体传感器,美国IST提供了寿命达10年以上的气体传感器,美国FirstAlert公司推出了生物模拟型(光化反应型)低功耗CO气体传感器等。二是增强可靠性,实现元件和应用电路集成化,多功能化,发展MEMS技术,发展现场适用的变送器和智能型传感器。如美国GeneralMonitors公司在传感器中嵌入微处理器,使气体传感器具有控制校准和监视故障状况功能,实现了智能化;还有前已涉及的美国IST公司的具有微处理器的“MegaGas”传感器实现了智能化、多功能化[14]。
由于本课题直接测量的是呼气中的酒精浓度,所以采用气敏传感器。考虑到周围空气中的气体成分可能影响传感器测量的准确性,所以传感器只能对酒精气体敏感,对其他气体不敏感,故选用MQ3型气敏传感器。它具有很高的灵敏度、良好的选择性、长期的使用寿命和可靠的稳定性。
图2.2 酒精浓度同输出电压的近似函数关系
图2.3 传感器阻值变化率与酒精浓度、外界温度之间的关系
MQ3型气敏传感器由微型Al2O3,陶瓷管和SnO2敏感层、测量电极和加热器构成的敏感元件固定在塑料或不锈钢的腔体内,加热器为气敏元件的工作提供了必要的工作条件。传感器的标准回路有两部分组成。其一为加热回路,其二为信号输出回路,它可以准确反映传感器表面电阻值的变化。传感器的表面电阻RS的变化,是通过与其串联的负载电阻RL上的有效电压信号VRL输出面获得的。二者之间的关系表述为:RS/RL=(VC-VRL)/VRL,其中VC为回路电压为10V。负载电阻RL可调为0.5-200K。加热电压Uh为5v。上述这些参数使得传感器输出电压为0-5V。为了使测量的精度达到最高,误差最小,需要找到合适的温度,一般在测量前需将传感器预热5分钟[15]。
表2.1标准工作条件
表2.2酒精传感器的环境条件
2.2.2 A/D转换电路
在单片机应用系统中,被测量对象的有关变化量,如温度、压力、流量、速度等非电物理量,须经传感器转换成连续变化的模拟电信号(电压或电流),这些模拟电信号必须转换成数字量后才能在单片机中用软件进行处理。实现模拟量转换成数字量的器件称为A/D转换器(ADC)。
A/D转换器大致分有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
在本设计中选用的是ADC0809属于第二类,是8位A/D转换器。每采集一次需100μs。ADC0809具有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的时钟输入端。
模数转换电路的作用是将传感器电路输出的模拟量信号转换为适合单片机处理的数字信号,并输入给单片机。本课题采用的是ADC0809 A/D转换芯片。ADC0809是8路8位逐次比较式A/D转换器,它能分时地对8路模拟量信号进行A/D转换,结果为8位2进制数据。其由+5V电源供电,片内有带锁存功能的8路选1的模拟开关,由A,B,C的编码来决定选择通道。0809完成一次转换需要1001xS左右。输出具有TTI三态锁存缓冲器,可以直接连到MCS一5l单片机数据总线上。ADC0809可对0-5V的模拟信号进行转换。
2.2.3 ADC0809的引脚及功能
根据A/D转换器的转换原理可将A/D转换器分为两大类。一类是直接型A/D转换器,另一类是间接型A/D转换器。该设计中的ADC0809属于直接A/D转换器中的逐次比较型A/D转换器。逐次比较型A/D转换器在精度、速度、和价格上都适中,是最常用的A/D转换器件。芯片采用的是ADC0809,以下介绍ADC0809的引脚及功能。芯片如图2.8所示。
图2.4 ADC0809的引脚
ADC0809是一种逐次比较式8路模拟输入、8位数字量输出的A/D转换器。由图可见,ADC0809共有28个引脚,采用双列直插式封装。主要引脚功能有:
(1)IN0-IN7是8路模拟信号输入端。(2)D0-D7是8位数字量输入端。(3)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引脚上的代码来实现。
(4)OE、START、CLK为控制信号端,OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。(5)VR(+)和VR(-)为参考电压输入端。
ADC0809的结构及转换原理如下:ADC0809的结构框图如图2.5。ADC0809采用逐次比较的方法完成A/D转换的,由单一的+5V电源供电。片内有锁存功能的8路选1的模拟开关,由C、B、A引脚的功能来决定所选的通道。0809完成一次转换需100μs左右,输出具有TTL三态锁存缓冲器,可直接连接到MCS-51的数据总线上。通过适当的外接电路,0809可对0-5V的模拟信号进行转换。
图2.5 ADC0809的结构框图
图2.6 ADC0809与单片机接口
2.2.4 AT89S52单片机
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
单片机的主要功能有:(1)拥有灵巧的8位CPU和在系统可编程Flash(2)晶片内部具时钟振荡器(传统最高工作频率可至12MHz)(3)内部程序存储器(ROM)为8KB(4)内部数据存储器(RAM)为256字节(5)32个可编程I/O口线(6)8个中断向量源(7)三个16位定时器/计数器(8)三级加密程序存储器(9)全双工UART串行通道
图2.7 AT89S52芯片管脚图
单片机主要性能有:(1)与MCS-51单片机产品兼容(2)8K字节在系统可编程Flash存储器(3)1000次擦写周期(4)全静态操作:0Hz~33Hz(5)三级加密程序存储器(6)32个可编程I/O口线 (7)三个16位定时器/计数器(8)八个中断源(9)全双工UART串行通道(10)低功耗空闲和掉电模式(11)掉电后中断可唤(12)看门狗定时器(13)双数据指针(14)掉电标识符
单片机引脚功能有:
VCC:AT89S52电源正端输入,接+5V。
GND:电源地端。
XTAL1:单芯片系统时钟的反相放大器输入端。
XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S52便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存
于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用8751内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
ALE/PROG:ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
PORT0(P0.0~P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。
PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。
PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输
出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。
PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
单片机的引脚分配如下:
P3.0:RXD,串行通信输入。
P3.1:TXD,串行通信输出。
P3.2:INT0,外部中断0输入。
P3.3:INT1,外部中断1输入。
P3.4:T0,计时计数器0输入。
P3.5:T1,计时计数器1输入。
P3.6:WR,外部数据存储器的写入信号。
P3.7:RD,外部数据存储器的读取信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),
不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
2.2.5 LCD显示
LJDl28X64液晶显示模块是128X64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8一位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。
图2.8 点阵式LCD与单片机连接原理图
2.2.6 键盘
8279对键盘部分提供一种扫描工作方式,能对64个按键键盘阵列不断扫描,自动消抖,自动识别出闭合的键并得到键号,能对双键或N键同时按下进行处理。显示部分为显示器提供了按扫描方式工作的显示接口,可以显示多达16位的字符或数字。传感器输出的信号经ADC0809和单片机采集、处理后输出的信号为BCD码形式,它经过8279及显示电路处理后送入LCD显示[18]。此外,酒精浓度监测仪的阈值浓度的设置是由键盘输入的,因此需有一个键盘/显示器接口电路。
键盘有两种工作方式:编码式键盘和非编码式键盘。当键盘中某一个按键被按下时,键盘编码器会自动产生相对应的按键代码,并输出一选通脉冲信号与CPU进行信息联络。编码式键盘使用很方便,目前已有数种大规模集成电路键盘编码器出售。非编码键盘不含编码器,当某键被按下时,键盘只能送出一个简单的闭合信号,对应的按键代码的确定必须借助于软件来完成[19]。所以,非编码键盘的软件是比较复杂的,并且要占用较多的CPU时间,这是非编码键盘的不足之处。但是非编码键盘可以任意组合、成本低、使用灵活,因而智能仪器大多采用非编码式键盘。本设计选用非编码键盘,键盘工作方式为编程扫描方式。3个键盘分别接单片机P2.0,P2.1,P2.2。如下图使用时先将键盘接口初始化,即将P2.0~P2.2全部置1,然后判断是否有键按下,若键盘输入端变为低电平,表明此键盘按下,在软件编程时,注意键盘消抖[20]。
图2.9 键盘电路
图2.10 可编程键盘接口芯片82C79及键盘的链接原理图
2.2.7 声光报警
报警电路分为蜂鸣器报警电路和LCD发光报警电路组成。当输入端P1.0为低电平时,有电流通过蜂鸣器,蜂鸣器发出声音报警。而当输入端为高电平时不报警[21]。当输人端P1.1为低电平时,LCD点亮报警,反之输入端P1.1为高电平则不报警。
图2.11 声光报警电路连接图
3 酒精浓度监测仪的软件设计
方案主要包括键盘扫描、数据采集、数据处理、显示、声光报警等子程序。仪器开机后经初始化,调用LCD显示子程序显示提示界面、阈值设置界面、测量结果界面等。键盘扫描程序判断是否有键按下。由数据处理程序完成数据间的转换和数制间转换。当测量数据超过阈值时,报警子程序启动,发出声光报警。
软件设计包括分析仪器系统对软件的要求,程序整体结构设计和程序模块化设计,画出每一子程序的详细流程图,选择合适语言编写程序。最后,将各子程序模块连接成一个完整的程序。
3.1 主程序流程图
图3.1 主程序流程图
3.1.1 数据采集子程序
ADC0809初始化后,把0通道输入0-5V的模拟信号转换为对应的数字量OOH-FFH,再储存到3FH单元中。
图3.2 数据采集子程序流程图
3.1.2 数据处理子程序
数据处理子程序主要是系数调整和数制转换,将ADC0809采集的模拟电压值转换为8位二进制数。系数是酒精浓度的最大测量值1500/255=5.88确定。(89C51为8位处理器,当0809输入电压为5.00V时输入数据为255(FFH)。)系数调整是为了使十六进制与十进制转换方便,将转换系数.5.88放大10倍取整后为59即3BH作为转换系数。
图3.3 数据处理子程序流程图
3.1.3 键盘扫描子程序
键盘扫描子程序为通过扫描判断是否有键按下,如有键按下则读出各个按键值。并根据键值判断是进人提示界面还是完成阈值设定的输入,或返回。
3.1.4 提示界面键盘子程序
首先判断是否有键按下,若按下的是"D"键,则进入阈值设定界面。如果不是则返回提示界面继续判断。
3.1.5 键盘阈值设定子程序
键盘阈值设定子程序首先判断是否有键按下,若有键按下,判断是"0-9"键,还是"F"键。如果是"0-9"这些数字键。则进行数字键处理,是"F"键则返回重新设定阈值。键盘输入的数字键即为阈值,将其保存在50H开始的3个单元,为了便于比较和显示,阈值的千位50H中,百位和十位放入5lH,个位放人52H中。
3.1.6 显示子程序
本课题显示为LCD显示。显示子程序分为开机界面显示程序,提示界面显示程序,阈值设定界面显示程序,测量界面结果显示程序。
显示部分用4个数码管显示当前数据,数码管分别用2个74HC573锁存器控制段选和位选,锁存器与单片机I/O口连接,位锁存器输出端分别与数码管片选连接,段锁存器输出端接数码管段输入端连接。锁存器片选输入端为高电平时,I/O口数据输入锁存器,当输入为低电平时,锁存器关闭并将数据保持住。如下图所示。段选接单片机P2.6,位选接单片机P2.7。
图3.4 显示子程序流程图
3.1.7 报警子程序
系统设定阈值并存在以50H开始的3个单元,为了便于比较和显示,阈值的千位放入50H中,百位和十位放入5lH,个位放人52H中。报警电路分为蜂鸣器报警电路和LCD发光报警电路组成。当输入端P1.0为低电平时,有电流通过蜂鸣器,蜂鸣器发出声音报警。而当输入端为高电平时不报警。当输人端P1.1为低电平时,LCD点亮报警,反之输入端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.5 报警子程序流程框图
3.2 调试分析
调试分析包括硬件调试分析和软件调试分析及软、硬件联调。由于硬件调试分析和软件调试分析是独立进行的,所以可以先调硬件再调软件。
3.2.1 硬件调试
硬件调试包括传感器电路、显示电路、键盘电路、单片机外围电路、声光报警电路等。下面主要介绍传感器电路、报警电路的调试。首先把MQ3型气敏传感器按照说明书介绍,接上+6伏工作电源,进行预热5-10分钟。由于气敏传感器里已经集成了放大电路,而用万用表测量可证实其输出是一稳定的0-5V的电压信号,符合ADC0809及单片机的输入条件,因此此信号可以直接接人进行A/D转换而不需要放大、滤波等[13]。
其次对于声光报警电路的调试分为蜂鸣器和LCD的调试。经试验可知LJD一2008型实验箱的蜂鸣器和LCD只有在低电平工作。
误、缺陷,判断各种故障,并作出软硬件的修改。直至没有错误。
3.2.2 软件调试
软件调试为利用伟福软件进行模块化调试。调试过程中观察存储单元数据的变化,查找所写程序的错误,并改正。
3.3 软件与硬件结合调试
利用伟福仿真器及其自带实现一个模拟仿真系统。把伟福软件模拟器伟福6000的仿真器设置中语言选为"伟福汇编器"。选择仿真器用"。H5l/L"选择仿真头为"POD-H8X5X"选择CPU用"AT89C52"。调入程序编译运行,并把传感器接人电路,看LCD显示器是否显示提示界面。显示提示界面后根据LCD显示器上的提示按键进行下一步操作。看键盘是否能够设定阈值,并显示。设定阈值后,用浸有酒精的棉签靠近气敏传感器,并对着棉签缓缓吹气观察LCD显示的数值。按"F"键重新设定小于测量值的阈值,观察蜂鸣器是否发声及LCD是否被点亮。当过了一两分钟后,LCD显示器上数值下降,当小于阈值时蜂鸣器停止发声,LCD也熄 灭。上述这些功能能够实现则表明达到了课题要求。
3.4 调试故障及原因分析
报警电路出错,体现在软硬件联调时,程序刚一运行,声音报警电路就发出报警声音而LCD正常。经程序检查及对LJD一2008型实验箱蜂鸣器及LCD灯的实验,发现该实验箱的蜂蜂鸣器及都是在低电平时工作。而主程序开始就把P1.0口清零了,P1.O口接的是蜂鸣器,这就使程序刚运行蜂鸣器就发出报警声音了。发现这个错误,把程序中不报警时的P1.O口都置高电平,报警时置低电平。
传感器输出电压不稳定。把传感器工作电路接好后急于接到ADC0809上,运行程序发现还未吹酒精气体进传感器而LCD显示的测量数值明显偏大。经看M03型气敏传感器的严原理和使用说明得知该传感器工作时需加热到300~C左右,因此需预热5分钟,使传感器内部敏感元件恢复到初始状态。便于测量结果准确。找到错误原因,在测量前传感器先预热5分钟,接人后续电路,测量结果正常。
4 结论
本课题任务是设计一个基于单片机的空气酒精浓度监测仪。实现了可用键盘输入阈值,并且LCD可以显示,对超过阈值的浓度值可进行声光报警。
本设计过程包括了硬件电路设计和软件程序的编写两部分。硬件电路部分结构简单,使用方便,适合大众化使用。软件部分采用模块化设计思想,各个子程序的功能相对独立,便于调试和修改。
空气酒精浓度监测仪将越来越深入的运用到普通人民的生活中。
参 考 文 献
[1]岳睿.呼吸式酒精传感器的研究进展[J].化学传感器,2006(3):6-9。
[2]刘丰年.气体传感器测试系统[D].吉林:哈尔滨理工大学,2003。
[3]何希才《常用集成电路实用实例》电子工业出版社,2007
[4]张培仁.MCS-51单片机原理与应用[M].北京:清华大学出版社,2003
[5]何立民.单片机高级教程应用与设计[M].北京:北京航空航天大学出版社,2000.
[6]何希才.传感器技术与应用[M].北京:北京航空航天大学出版社,2005。
[7]陈有卿《通用集成电路应用于实例分析》中国电力出版社,2007.
[8]梁森,王侃夫等.自动检测与转换技术.北京:机械工业出版社2005
[9]王幸之.AT89系列单片机原理与接口技术[M].北京:北京航空航天大学出版社,2004。
[10]郑学坚,周斌.微型计算机原理及应用[M].北京:清华大学出版社,2006.
[11]纪宗南.单片机外围器件使用手册——输入通道器件分册[M].北京:北京航空航天大学出版社,2005.
[12]郑义,陈俊.用AT89C52和TLC1543实现数据采集系统[J].电子世界,2004,
(12):24-25.
[13]卢丽君.基于TLC1543的单片机多路采样监测系统的设计[J].仪器仪表与分析监测,2007,(04):5-7.
[14]马中梅《单片机C语言程序设计》北京航空航天大学出版社,2007
[15]魏英智.DS18B20在温度控制中的应用.煤炭机械。2005(3):92-93
[16]电子制作.2007年第6期[J].北京:电子制作编辑部,42—43
[17]电子制作.2007年第12期[J].北京:电子制作编辑部,62
[18]A.S.K Kasalkin.Electrical Engineering[M].Mir Publishers Moscow,2004:270—275
致 谢