《基于单片机的酒精浓度测试仪设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的酒精浓度测试仪设计.docx(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于单片机的酒精浓度测试仪设计摘 要中国经济的飞速发展使得私家车的占有量越来越高。人们生活水平的提高,车辆的大幅度增多,也使得道路安全问题越来越严重。有些事故是让人回天乏术的,而有些事故是完全可以避免的。比如酒后驾车,这种行为是对自己以及他人生命的严重不负责。为了遏制这种行为,对驾驶员进行酒精浓度测试不失为一种有效的方法。酒精浓度测试仪不仅要能准确测出酒精的浓度,而且要让测试人员读出该浓度。当然也要有报警装置,提醒人们浓度超标。本设计目的在于实现对不同的酒精浓度的检测和显示,通过适当改进可以用于对驾驶员进行是否酒后驾车的检测。本文主要采用STC89C52单片机与MQ-3型气体传感器,而且能够对
2、显示出所测量的数据,加之二极管的使用就可以简单地显示出所测的酒精浓度。当其浓度超过允许值时,检测仪将发出蜂鸣声。关键词: 酒精浓度检测;STC89C52单片机;MQ-3气体传感器;A/D转换, Alcohol tester based on MCUAbstractThe rapid development of Chinas economy makes the share of private cars increase. Whats more, the improvement of peoples living standards and a substantial increase in
3、the vehicle makes the road safety problem get worse. Some accidents are beyond resurrection, while others are completely can be avoided . Such as drunk driving. such behavior is serious not responsible to their and the others lives . In order to curb this behavior, the driver alcohol test is an effe
4、ctive method. Alcohol tester is not only able to accurately measure the concentration of alcohol, but also can let testers reads the concentration. Of course, we have an alarm system to alert people to the concentration exceeded. The design aims to achieve different alcohol concentration detection a
5、nd display. And it can be used for the driver is drunk driving tests through appropriate improvements. This paper uses STC89C52 MCU and MQ-3 Gas Sensor as the main devices. With the use of the diode, the alcohol tester can display the measured data and simply show the alcohol concentration measured.
6、 When the concentration exceeds the allowable value, the detector will beep.Keywords STC89C52 microcontroller; MQ-3 gas sensor; A/D conversion目 录第1章 绪论11.1 酒精测试仪现状和发展趋势11.2 酒精浓度检测仪设计的意义11.3 研究内容21.4 系统总体思路2第2章 系统总体方案设计32.1 总体设计32.2控制模块方案论证32.3显示模块方案论证3第3章 硬件电路设计53.1 单片机电路设计53.1.1 单片机介绍53.1.2 STC89C5
7、2的功能特性63.1.3 STC89C52的原理说明63.2 MQ3气体传感器73.2.1 MQ-3主要技术指标73.2.2 MQ-3结构、外形、测试电路83.2.3 MQ-3传感器调理电路103.3 电源电路113.4 ADC0809113.5 LCD液晶显示模块123.5.1 LCD1602显示模块技术参数123.5.2 LCD602显示模块功能133.6 发光二极管显示报警电路153.7阈值存储电路163.8 系统硬件设计原理图分析16第4章软件系统的设计与实现184.1 主程序设计184.2 分部分软件设计194.2.1 ADC程序流程图194.2.2 LCD程序流程图20第5章 系统
8、的调试及实验结果215.1 调试步骤215.1.1 按键修改酒精阈值程序215.1.2 模数转换测试215.1.3 液晶显示程序设计225.1.4 声光报警测试255.1.5 整体功能调试程序255.2 实验结果25结 论27致 谢28参 考 文 献29附录A 译文30STC89C51RC/ RD+系列MCU30附录B 外文原文38STC89C51RC/RD+ SERIES MCU38附录C51附录a:全局变量头文件和延时模块51附录b:AD转化模块53附录c:24c08存储模块54附录d:LCD显示模块59附录e:主函数6469 / 73第1章 绪论1.1 酒精测试仪现状和发展趋势汽车的发明
9、,使世界的文明跨出了一大步。汽车产业的飞速发展使得拥有汽车已不是遥不可及的梦。现在几乎每家每户都有汽车,汽车让人们的距离不再遥远,但交通事故却给人们带来了不可挽回的悲剧。交通事故多发的原因有很多,其中能避免的就是由于酒后驾车引起的交通事故。中国的酒桌文化由来已久,很多人认为自己虽然喝了酒,但是还是能掌控车辆。但是这是完全错误的,在酒精的作用下,人的大脑并不能做出正确的判断,容易错误的操控车辆,从而导致悲剧的发生。为了从根源上遏制由于酒后驾车引发的交通事故的发生,酒精浓度检测仪的诞生便可以方便快捷的解决这一问题。不仅如此,涉及到酒精浓度检测的食品加工、酿酒等行业,也广泛运用酒精浓度检测仪来提高生
10、产安全性。由于科技的飞速发展,用于检测酒精浓度的首要元件气体传感器越来越符合现代社会的生产需求。用来检测酒精浓度的传感器正朝着功耗低,功能多,方便,快捷的方向发展。地球上大部分国家使用的都是呼吸式酒精浓度检测仪,只要驾驶人员对着检测仪呼气,就可以现场检测出驾驶员体内的酒精浓度,确定他们有没有酒后驾车,以及是否为醉酒开车。这样就可以大大减少这种可避免的交通事故的发生。1.2 酒精浓度检测仪设计的意义进入二十一世纪以来,我国的经济发生了突飞猛进的发展,人们的生活水平越来越高,私家车几乎成为每家每户的必备品。凡事有利有弊,有私家车的人大多生活质量还不错,这种情况下,聚会,谈生意等场合下饮酒的可能性也
11、相对比较大。由于驾驶员饮用大量酒精后导致驾驶人员判断力降低,不能很好的操控机动车,从而导致非常严重的交通事故,家破人亡,惨绝人寰的事情频频发生。为什么喝酒以后不宜开车呢?那是因为酒后驾车,由于驾驶员体内酒精浓度比较高,会使其反应速度比较慢,对危险的评估能力比较低,因而不能对危险起到很好的控制,悲剧就此发生。而酒精浓度检测仪可以检测出驾驶员体内的酒精浓度,从而预防驾驶员酒后驾车,从而减少因酒后驾车导致的交通事故的发生。因此研究酒精浓度测试仪对这个社会的安定和谐是有重大意义的。1.3 研究内容本论文研究的主要内容如下:(1)气体传感器:本设计使用的是MQ-3气体传感器。主要研究MQ-3气体传感器的
12、性能特性,以及怎样将其运用到本设计中去;(2)单片机:选择STC89C52单片机,作为控制单元;(3)模数转换:模拟电压信号经放大电路被放大后,通过单片机内部的模数转换器,将模拟电压信号变成数字电压信号;(4)LCD显示器:数码管显示器上显示其测得的酒精浓度,并与所设置的浓度阈值进行对比,若超过阈值,则通过蜂鸣器发出报警;(5)软件方面:通过对单片机的编程,最终实现数据在数码管上的显示1.4 系统总体思路设计酒精浓度检测仪首先要有一个气体传感器将乙醇的浓度变成电信号。本设计选择的是MQ-3型气体传感器,该传感器灵敏度高,价格低,使用方便,是做酒精浓度检测仪的不二之选。而传感器得到的电信号不能直
13、接用来传输给单片机,因此得到的信号要经过一定的电路处理,变成05V的模拟电压后方能输出。由于这里得到的是模拟电压,要经过A/D转换器才能将其变成数字电压。这里选用STC89C52单片机的好处就体现出来了。因为STC89C52单片机内部自带的A/D转换模块,无需外接转换器,这样就大大地降低了设计难度和设计成本。模拟信号通过A/D转换后便会输出酒精浓度的数据,把该数据与预先设定的醉酒阈值进行对比。要想实现酒精浓度值在数码管上显示或报警,就要将该该数据送到单片机的P1口,再通过STC89C52单片机进行一些软件程序的处理。第2章 系统总体方案设计2.1 总体设计 图2-1 总体设计框图本论文的第一步
14、就是信号采集模块,即由传感器采集酒精浓度信号。然而采集到的仅仅是模拟信号,所以要通过一个模数转换器,将原本的模拟信号转变成数字信号。这就要求单片机内部能进行模数转换。出于这方面的考虑,就选择了STC89C51型单片机。这样省去了不少麻烦。单片机作为控制模块与LCD显示器相连接,并通过编程,控制其显示出所测试的乙醇的浓度。同时单片机还与键盘连接,这样就能改变阈值,使所设计的酒精浓度检测仪适应多种场合需要。另外所测得的酒精浓度与阈值做比较,当超过预设阈值时,报警器就会发出报警。2.2控制模块方案论证 控制模块主要是由单片机来完成。单片机接收酒精浓度传感器送来的模拟数据,首先要将其变成数字量。然后通
15、过对单片机的一系列编程,使其控制LCD显示器显示酒精浓度值。同时,通过键盘改变阈值,把设置的阈值传送给单片机,这样就能使测得的酒精浓度与实时阈值相比较,并将比较结果通过单片机传达给声光报警器。最终实现报警功能。2.3显示模块方案论证显示模块选择LCD液晶显示器来完成,因其符合设计的需求,将单片机的P0口与LCD相连便可传输经过单片机处理的数据,使酒精浓度值在LCD上显示。通过一系列编程,便能达到设计预想的结果。第3章 硬件电路设计3.1 单片机电路设计3.1.1 单片机介绍STC89C52单片机是宏晶公司生产的STC系列增强型8051单片机,这种单片机几乎囊括了采集数据和系统控制过程中所有的单
16、元模块。这种单片机的指令代码完全可以兼容传统的8051单片机,这样既能使元件性能提高,又不用大费周章的重新编写指令代码。STC89C52单片机在标准的8051基础上新增了许多实用功能:ISP/IAP编程方式,6时钟/机器周期模式,内部扩展RAM,双DPTR数据指针,扩展P4口,内置看门狗电路,多种复位方式,省电模式实现超低功耗,PCA/PWM功能。相较于传统的8051功能更加强大。其引脚图和内部结构如图3-1所示:图3-1 STC89C52单片机管脚图3.1.2 STC89C52的功能特性(1)内有增强型52内核。(2) 工作电压:3.45.5V。(3) 内部集成MAX810专用复位,使复位可
17、靠更高,8级可选复位门槛电压,彻底省掉外部复位电路。(4) 低功耗设计(5) 工作频率:035MHz,相当于普通8051:04205MHz。(6) 通用I/O口,无需上拉电阻便可作为总线扩展用,但必须加上上拉电阻才能作为I/O口使用。 (8)UART(通用异步串行口)。(9)具有片上集成512字节RAM数据存储器。(10)具有片内EEPROM功能(11) ISP/IAP,无需编程器/仿真器便可通过串口直接下载用户程序,而且速度非常快。(12) 8通道,8位逐次逼近式ADC。(13) 捕获/比较单元(PWM/PCA)3.1.3 STC89C52的原理说明图3-2 单片机系统原理图STC89C52
18、单片机为52内核8位单片机,选择这个型号的单片机的一个重大原因是它内部集成了8位多路A/D转换模块。如图3-2所示,这个单片机系统原理图适用于常用检测。该原理图中STC89C52占主要地位。MQ-3传感器模块将检测电压信号通过AOUT这条线送入单片机的ADC7端口进行处理,然后经过单片机内部的ADC0809处理后,变成数字电平信号,由单片机的P0口送出。P0口则与LCD显示器相连。通过把数据信号传送给LCD使其显示出测得的浓度。这样更加直观的让使用者知道浓度的具体值。然后比较测得的酒精浓度与阈值大小。如果测得的信号如果超出阈值,就会发出报警信号。另外上图最下方是一个时钟电路,用于产生时钟信号。
19、P1.0与P1.1是与外部存储器相连的,这个存储器用于存储设定的阈值,这样就能更加人性化,使该设计的应用场合更加广泛。3.2 MQ3气体传感器酒精浓度检测的准确性决定于其所用的传感器。而MQ-3乙醇气体传感器具有较高的灵敏度,和较好的稳定性,可以应用用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也用于其他场所乙醇蒸汽的检测。其技术特点为:l 灵敏度高,酒精浓度的细微变化,都能检测出来l 对于外界的干扰具有良好的选择性l 具有快速的响应恢复特性l 有效工作时间比较长而且比较稳定l 具有简单的驱动回路l 具有信号输出指示l 能够输出两路信号l TTL输出有效信号为低电平这时可直接接单片机3.
20、2.1 MQ-3主要技术指标表3-1 MQ-3主要技术指标3.2.2 MQ-3结构、外形、测试电路如图3-3所示,是MQ-3传感器的内部主要结构。因其良好的特性,而且价格便宜,所以这种传感器被广泛用于单片机学习中。和一般的电子元器件一样,它只需要5V电压为其供电,因此功耗比较低。使用时应注意要预热20s,这样更能确保其检测的准确性。图3-3 MQ-3气敏元件结构图表3-2 MQ-3传感器的主要组成材料表下图3-4为MQ-3乙醇气体传感器的灵敏度曲线。其工作原理是,当酒精气体浓度发生改变时,MQ-3的气敏电阻也随之改变,由图可以看出,该传感器的灵敏度非常高,因此准确性也比较高。图3-4 MQ-3
21、乙醇气体传感器灵敏度曲线 3.2.3 MQ-3传感器调理电路图3-5为MQ-3乙醇气体传感器接入电路原理图。其实物图如图3-6所示。MQ-3测得的信号,经过一定的电路处理后,在输入单片机的A/D转换模块。这样更便于单片机处理信号。图3-5 传感器模块原理图图3-6 MQ-3传感器模块实物图本论文所设计的传感器模块为了方便与单片机系统连接组成酒精浓度检测仪。RP是用来调节阈值的,当LM393的2脚(即测得的酒精浓度信号)比3脚高时,其1脚就会输出低电平。这时LED灯就会亮起。图中R3为限流电阻,C1为滤波电容。而且该电路有两路信号输出,另一路是MQ-3检测到的模拟量,通过AOUT与单片机ADC7
22、端口相连,实现模拟信号送入A/D转换模块。 3.3 电源电路本设计采用USB接口供电,供电电压为5V。当USB接口与电脑相连时,并不能直接供电,而要通过内含的PL2303芯片的转换电路才能实现对单片机进行程序编写。其电路原理如图所示。图3-7 供电及程序下载电路3.4 ADC0809ADC0809是8路8位逐次逼近式的A/D转换器。该器件的主要性能如下:1.采用单一的+5v电源逐次逼近式A/D转换。实现A/D转换所需要的时间极端,仅为100s 。2.分辨率为8位二进制码,总失调误差为1LSB。3.具有8通道模拟量选通开关控制,可以直接接入8个单端模拟量。4.转换后的数字信号采用三态逻辑,输出符
23、合TTL电平。ADC0809引脚功能如下:1.IN0-IN7:8个模拟输入通道的输入引脚。2.D0-D7:8位数字量输出引脚,输出转换结果。3.START:启动信号输入引脚。A/D转换由正脉冲启动,其上升沿使ADC0809复位,下降沿启动A/D转换。4.ALE:地址锁存允许信号,输入。A/B/C3位地址码被送入内部的地址锁存器中,以选择模拟输入通道。5.EOC:转换结束信号,输出。启动信号后经延时,使EOC降为低电平,待转换结束,恢复到高电平。6.OE:高电平允许输入。7.CLK:时钟信号,典型值为640KHz,范围为10KHz-1280KHz。8.(+)和(-):参考电压的正负端输入引脚。其
24、典型值为(+)=+5V.(-)=0V。9.和GND:+5V的电源和地。图3-8 模数转换IN0用于接收MQ-3传感器传来的模拟电压信号,IN1为比较器LM393的电压信号。D0-D7用来输出转换后的数字电压信号3.5 LCD液晶显示模块LCD即液晶显示器,是一种低功耗的显示器,其应用十分广泛。液晶显示器可根据需要将电极做成各种文字、数字、图形以获得各种形态的显示。1602是一款通用的字符型LCD,由于其价格低,采购容易,方便控制,得到广泛运用。1602有14和16条引脚线两种,区别在于多了2条背光电源线。主要功能有:40通道点阵LCD驱动;有行驱动和列驱动两种选择。3.5.1 LCD1602显
25、示模块技术参数表3-3 LCD1602的主要技术参数显示容量162个字符芯片工作电压4.55.5V最佳工作电压5.0V最佳工作电流2.0mA字符尺寸2.954.35mm 3.5.2 LCD602显示模块功能表3-4 LCD1602引脚,符号功能说明引脚标号状态说明Vss1接地VDD2电源正极(5V)VL3用于调整液晶显示器的对比度RS4输入用于选择用何种寄存器,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W5输入读写选择,高电平时进行读操作,低电平时进行写操作E6输入使能端,当E端从高电平变成低电平,液晶模块执行命令D0D7714三态8位双向数据IOBLA15输入背光源正极BLB16输
26、入背光源负极表3-5 LCD1602部分指令说明表指令码功能01H显示清屏,数据指针清0,所有显示清008H显示关闭06H显示光标移动设置0CH显示开及光标设置02H显示回车,数据指针清01602液晶显示器要想得到广泛运用,就需要包含数字,英文字母等常见字符。要能拥有这些字符,则需有存储器存储这些字符,即有字符发生存储器(CGROM)。如何将这些不同形式的字符存储到液晶显示器内,就需要一种代码。这种代码称为ASCII码。而且为了不造成混乱,每一个字符都有自己的专属代码,比如数字0的代码是30H,显示时模块把地址30H中的点阵字符图形显示出来,我们就能看到数字 “1”,具体寄存器的选择控制表3-
27、11有操作说明。通过对ASCII码赋值,实现对LCD显示器的操作。当然也可以直接用字符型常量或者变量赋值表3-6 LCD1602寄存器选择控制表单片机控制LCD的接口电路如图3-9所示。其中J2的3脚为背光引脚,与R9和R10电阻连接主要为了调节背光亮度,使其不至于出现鬼影。,单片机对LCD显示器的控制主要通过J2的4、5、6引脚,这三个引脚为液晶显示器的RS、E/W和E控制引脚与单片机的P2.5,P2.6,P2.7相连,。J2的714引脚与单片机的P0.0-P0.7相连,用于传输数据。图3-9 LCD与单片机接口电路3.6 发光二极管显示报警电路图3-10 声光报警电路 当经过A/D转换后的
28、数字信号值比预设的阈值大时,单片机的P3.3口输出低电平。而P3.3口语声光报警电路相连,当其为低电平时,三级管Q1就会导通,那么二极管就会发光,而且蜂鸣器也会发出蜂鸣声。当P3.3口输出高电平时,声光报警电路将不能导通,不会有报警现象。3.7阈值存储电路当对传感器模块的Rp进行调节时,所设立的阈值会相应的做出改变。这个值必须经过存储,才能用于比较大小。所以必须要有一个存储器。单片机通过P1.0和P1.1口对EEPROM进行编程,EEPROM将新的阈值存储到芯片中,从而实现阈值的重新设置。芯片AT24C04的SCL和SDA分别与单片机的P1.0和P1.1相连。图3-11 EEPROM存储电路3
29、.8 系统硬件设计原理图分析图3-12 系统硬件设计原理图上图中USB接口与电脑相连,与单片机的RXD0口和TXD口相连,给单片机提供5V电源。当按下K1键时,电路接通,指示灯亮起,说明有供电。EEPROM存储电路的SCL口和SDA口分别与单片机的P1.0和P1.1相连,用于存储新设定的阈值。下面要解决的问题就是怎样把传感器测得的信号传给单片机了。传感器的两个接口AOUT和DOUT分别与单片机的P1.7和P1.4相连,用来给单片机传输测得的模拟电压。经过单片机内部的模数转换功能,将模拟变压变成数字电压,并将其传送给LCD显示器。单片机通过P2.7,P2.6,P2.5与LCD显示器的4,5,6引
30、脚相连,控制其工作。7-14引脚分别与单片机的P0.0-P0.7相连,用于传输数据。第4章软件系统的设计与实现4.1 主程序设计图4-1 主程序流程图 程序设计的第一步便是使系统初始化,因为本设计可以自行设定阈值,所以只能通过中断来设定需要的阈值。如果没有中断即没有设置阈值,那么就用之前的阈值。如果有外部中断,那么就启动设定阈值操作。另一方面,气体传感器检测到酒精后,要经过A/D转换模块,然后经过一系列的数据处理,得到酒精浓度值。这个值一方面要在LCD上显示出来,另一方面要与阈值进行对比,若大于阈值,就要启动声光报警器,若小于阈值就不报警。程序的主要难点就在怎样得到酒精浓度值上面。而这项操作主
31、要在单片机内完成的。所以本论文设计的酒精浓度测试仪,功耗低,速度快,结果准确。4.2 分部分软件设计4.2.1 ADC程序流程图 ADC程序流程图图4-2 ADC程序流程图因为A/D转换必须依靠下降沿触发才能启动,所以编程时要注意做一定的延时,通常为10ms,再进入下一步操作。然后才进行A/D转换,如果转换完成,就会得到数字电压,然后经过调用数据处理程序就能够得到所测得的酒精浓度值。如果转换未完成,则继续转换。4.2.2 LCD程序流程图图4-3 LCD控制流程图在对系统进行初始化后,如果检测到该酒精浓度检测仪有外部中断,那么就可以重新设置酒精浓度阈值。这个阈值不仅要设置,还要储存起来,以便与
32、以后要检测的酒精浓度进行比较。如果没有外部中断响应,那么测得的酒精浓度值还是与之前的阈值比较。第5章 系统的调试及实验结果5.1 调试步骤5.1.1 按键修改酒精阈值程序设置酒精浓度阈值的程序的思路就是,如何让单片机知道使用者正在设置阈值。这就要求检测仪要不间断地检测。一旦发现有按键被按下,就知道要修改阈值。并且按照按键按下的次数修改。检测到的酒精浓度应与最新设置的阈值相比较,一旦比阈值大,蜂鸣器就要工作而且指示灯要亮起。 5.1.2 模数转换测试A/D转换模块首先要初始化,然后将得到的关于酒精浓度的模拟量经过一系列处理,变成数字量。而且要将其通过单片机传送到液晶显示上面。同时得到的数字量还要与预先设立的阈值相比较。 5.1.3 液晶显示程序设计 液晶显示器程序首先是要将其初始化,要实现其能接收单片机传来的数据。