辽宁工程技术大学智能仪器课程设计1综述对于酒后驾车行为的监督在人民的人身和财产安全中起着重要的作用。随着社会的发展,气体传感器逐渐向着低功耗、多功能、集成化方向的发展,以便于更准确更方便的检测出酒精浓度,更大程度上防范事故发生,因此,便携式酒精浓度检测仪具有十分广阔的现实市场和潜在的市场要求。目前国际公认的酒后驾车的限定有两种,一种是酒后驾车,一种是酒醉驾车。根据我国2003年的修订规定,当驾驶者每毫升血液中酒精含量大于或等于0.2mg时,就会被认定为酒后驾车;大于或等于0.8mg时,则会被认定为醉酒驾车。当驾驶者血液中酒精含量达到80mg/100ml时,发生交通事故的几率是血液中不含酒精时的2.5倍;达到100mg/100mg时,发生交通事故的几率是血液中不含酒精时的4.7倍。即使在少量饮酒的状态下,交通事故的危险也可达到未饮酒状态的2倍左右。本文设计的基于单片机的便携式酒精浓度检测仪以单片机和酒精传感器为核心,具有LCD实时显示浓度值的功能,不同颜色LED彩灯显示酒精浓度的不同范围,从而判断司机是否处于酒驾状态,如若酒驾则判断是酒后驾驶还是醉酒驾驶,一旦超过一定阈值即蜂鸣器报警同时报警灯亮。而且还可以通过按键进行待机与检测功能随时切换,在待机时进行简易计时,超过十分钟则自动进入休眠状态,可用硬件复位来唤醒单片机。本设计采用C语言来实现其软件功能。该仪器硬件电路设计简单、软件功能完善、灵敏度高、工作性能好,并且具有尺寸小、方便携带的优点。邱微:基于单片机的便携式酒精浓度检测仪21方案论证1.1方案设计与分析本文设计的便携式酒精浓度测试仪具有以下特点:(1)数据采集系统以AT89S52单片机为控制核心,外围电路带有LCD显示以及键盘电路,无需其他计算机,用户就可以与其进行交互工作,完成数据的采集、存储、计算、分析,显示,休眠等功能。其中显示功能如下:A.酒精含量20mg/100ml时,安全灯(绿色LED灯)亮;B.20mg/ml≤酒精含量≤80mg/ml时,警告灯(黄色LED灯)闪烁;C.80mg/ml≤酒精含量时,危险灯(红色LED灯)闪烁,蜂鸣器报警;本仪器酒精含量测试范围:0-190mg/100ml,要求其测量精度优于0.5%。(2)系统具有低功耗、方便携带、高性价比,低成本等特点。(3)从便携式的角度设计,系统成功使用了大屏幕LCD显示器以及小键盘。由单片机系统控制键盘和LCD显示来实现人机交互操作,界面友好。(4)软件系统采用C语言编写,既兼顾实时性处理的要求又能很方便地进行数据处理。1.2设计总体框图MCU控制中心(AT89S52)LCD显示模块报警与待机指示灯电路按键MQ3传感器放大电路A/D转换模块图1-1总体设计框图辽宁工程技术大学智能仪器课程设计3本设计采用的是AT89S52单片机,传感器则选用MQ—3酒精浓度传感器。系统将由MQ-3酒精浓度传感器输出的微弱电流经具有放大滤波等功能的调理电路后,输入以模数转换芯片ADC0804为核心的转换电路转换为八位数字信号,再由单片机进行处理,最终送入LCD液晶显示屏显示实时检测的酒精浓度以及实现超值报警功能,通过判断酒精浓度范围,实现酒后驾驶和醉酒驾驶的判断。系统上电后自动进入待机状态,在工作时可以随时通过按键控制进入待机状态,待机状态中系统不进行酒精浓度采集、显示和报警,而是给传感器预热并显示十分钟以内的简易计时,让使用者大致掌握预热时间。待机状态中也可随时通过按键进入工作状态。2信号采集与放大的硬件设计2.1酒精浓度传感器的选择气体传感器是气体检测系统的核心,通常安装在探测头内。探测头通过气体传感器对气体样品进行调理,通常包括滤除杂质和干扰气体、干燥或制冷处理、样品抽吸,甚至对样品进行化学处理,以便化学传感器进行更快速地测量【1】。在选择传感器的时候,一定要考虑到稳定性、灵敏度、选择性和抗腐蚀性,MQ3酒精传感器具有很高的灵敏度、良好的选择性、长期的使用寿命和可靠的稳定性,所以本系统选择MQ3型酒精传感器。2.2采集信号与放大电路图MQ-3气体传感器有6个针状管脚,其中4个用于信号取出,2个用于提供加热电流.LM393是由两个独立的、高精度电压比较器组成的集成电路,失调电压低,最低为2.0mV,专为获得宽电压范围、单电源供电而设计,也可以用双电源供电,电源电流低.即使采用单电源供电,比较器的共模输入电压范围也接近低电平。LM393被设计成能直接连接TTL和CMOS,当用双电源供电时,它能兼容MOS逻辑电路,这是低功耗LM393相较于标准比较器的独特优势【2】。邱微:基于单片机的便携式酒精浓度检测仪4图2-1MQ-3酒精浓度传感器采集信号与放大电路图MQ-3酒精浓度传感器探头感知到酒精气体,MQ3开始起作用,输出的微弱电流送入由LM393运算放大器和电阻电容构成的调理电路,使信号放大并滤去杂波,经放大滤波后有OUT输出。模拟信号输出端口能输出0到+VCC(+5v)的模拟信号,当检测的酒精浓度越大时输出电压越高。此端口接入ADC0804的6号引脚,实现AD转换【3】。3AD转换硬件设计3.1AD转换器的选择及介绍A/D转换其的主要技术指标包括分辨率(位数)、量化误差、转换精度和转换时间【4】。根据本文设计的技术参数要求:测量精度优于0.5%。从精度方面考虑方案如下:方案一:用8位的A/D转换器,其测量精度为0.39%方案二:用12位的A/D转换器,其测量精度为0.02%从测量精度的方面考虑都符合要求。从A/D转换器的分类方面考虑方案如下:1、逐次比较式A/D转换器:转换时间一般在μs级,转换精度一般在0.1%上下,适用于一般场合。2、积分式A/D转换器:其核心部件是积分器,因此转换时间一般在ms级或更长,但抗干扰性能强,转换精度可达0.01%或更高。适于数字电压表类仪器采用。3、并行比较式又称闪烁式:采用并行比较,其转换时间可达ns级,但抗干扰性能较辽宁工程技术大学智能仪器课程设计5差,由于工艺限制,其分辨率一般不高于8位。可用于数字示波器等要求转换速度较快的仪器中。4、改进型是在上述某种形式A/D转换器的基础上,为满足某项高性能指标而改进或复合而成的。例如余数比较式即是在逐次比较式的基础上加以改进,使其在保持原有较高转换速率的前提下精度可达0.01%以上。基于以上比较,综合性价比,选择8为主次逼近式A/D转换器:ADC0809和ADC0804。ADC0809的功能是将输入模拟量转换为与其成正比例的数字量,它具有8路模拟输入端口,地址线可决定对哪一路模拟输入做AD转换.ADC0804的功能与ADC0809基本相同,不同点在于它有一路输入。对于本设计的要求是有一路的输入信号,所以从性价比的方面考虑选择ADC0804更优。3.2本设计中ADC0804外围硬件连接图3-1ADC0804外围电路连接邱微:基于单片机的便携式酒精浓度检测仪63.3本设计中AD转换软件实现3.3.1ADC程序流程图开始初始化判断ADC是否转换完毕读出数据计算YN图3-2ADC程序流程图单片机对ADC进行初始化,使其能进入正常工作状态,通过判断ADC转换判断标志EOC,看其是否转换完毕,如果没有,则继续判断,如若完成则将ADC转换的数据由单片机读取并计算,然后进入下一环节。3.3.2ADC转换原则及程序转换原则:ACD0804有八位数据输出口,即转换精度为256,它将最高值分为255份,当得到一个转换数据时,用最大值除以255,再乘以该数据值便是最终转换值。AD转换子函数分析:voidad(){wr=0;//将WR拉低,让芯片开始读6、7号引脚电压值delay(1);//延时约一毫秒,让芯片忙完wr=1;//将WR拉高,上升沿到来时,AD转换开始delay(5);//软件延时约五毫秒,等待AD转换完成P3=0xff;//将P3口全部拉高,等待测试数据delay(1);//延时一会,避免紊乱rd=0;//将RD拉低,芯片送出数据delay(1);//延时约一毫秒,让P3口辽宁工程技术大学智能仪器课程设计7temp=P3;//将数据存入temprd=1;//将RD拉高}4单片机最小系统模块设计CPU最小系统是单片机运行工作起来所必需的最基本电路组成。它包括电源电路、时钟电路、复位电路。最小硬件电路组成见图4-1。图4-1最小系统电路图4.1AT89S52简介本设计以AT89S52单片机为控制核心。单片机也就是MCU,即微控制单元。AT89S52是低功耗、高性能、采用CMOS工艺的8位单片机,其片内具有8KB的可在线编程的Flash存储器,该单片机采用了ATMEL公司的高密度、非易失性存储器技术,与工业标准型80C51单片机的指令系统和引脚完全兼容,它能以3V的超低电压工作,晶振时钟最高可达24MHz。通用的8位CPU与在线可编程Flash集成在一块芯片上,从而使AT89S52功能更加完善,应用更加灵活;具有较高的性能价格比,使其在嵌入式控制系统中有着广泛的应用前景【5】。4.2复位电路设计图4-2复位电路电路图单片机复位的两种基本形式:上电复位和RST按键复位。邱微:基于单片机的便携式酒精浓度检测仪8本设计采用RST按键复位。在复位电路的设计中,要选择合适的元器件参数,电阻的阻值不宜过大或者过小,过大使得RST不可能获得高电平,过小也不能起到限流作用。另外电容容值也应该合适,要保证放电时,RST引脚上的高电平也能保持两个机器周期以上的高电平。4.3晶振电路设计图4-3晶振电路电路图本系统中为了尽量降低功耗的原则,采用了内部时钟方式。晶振全称为晶体振荡器(英文CrystalOscillators),其作用在于产生原始的时钟频率。内部时钟方式的电路实现方法是在XTAL1和XTAL2引脚外接石英晶体,与单片机片内震荡电路形成震荡回路,图中电容C3和C4的容值为22pF,它们的作用是加快起振和稳定频率。5显示模块软硬件设计5.1LCD1602简介LCD1602每行可以输出16个字符,可以显示两行,故称1602,它不带中文字库,故只能显示数字、字母和普通字符。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。在本设计中不检测液晶的忙与闲,用前面对待ADC0804的方法,用软件延时来等待液晶的忙操作时间。液晶显示输出D0到D7口接P0.0到P0.7,单独使用一个口,另外还要接上10K上拉电阻来提高P0口带负载能力。当处于读状态时,RS处于低脉冲,R/W为高脉冲,E为高脉冲,D0~D7=状态字当处于读数据时,RS为高脉冲,R/W为高脉冲,E为高脉冲,D0~D7=数据。当处于写指令时,RS为低脉冲,R/W为低脉冲,D0~D7=指令码,E=高脉冲。当处于写数据时,RS为高脉冲,R/W为低脉冲,E为高脉冲,D0~D7=数据。5.2本设计中LCD1602的硬件连接辽宁工程技术大学智能仪器课程设计9图5-1LCD1602硬件连接图5.3液晶写命令子函数和写数据子函数程序分析在初始化函数voidinit(){…}中,已将R/W拉低(对应lcden=0;语句),即只对液晶进行写操作,不读液晶状态。之前有位定义sbitlcdrs=P2^5;sbitlcdrw=P2^6;sbitlcden=P2^7;写命令函数各语句分析:voidwrite_com(ucharcom){lcdrs=0;//将RS拉低,对指令操作,上电时是默认高电平P0=com;//对P0赋值,该值是对应命令码,com为形参delay(5);//延时约五毫秒lcden=1;//E拉高,让液晶读P0口,写入对应命令码delay(5);//延时约五毫秒,让液晶忙完再对其操作,防止数据丢失lcden=0;//将E拉低}写数据函数各语句分析:voidwrite_com(ucharda){lcdrs=1;//将RS拉低高(读写数据),说明对数据操作P0=da;//对P0赋值,该值是要写入的数据,da为形参delay(5);//延时约五毫秒lcden=1;//E拉高,让液晶读P0口,写入数据delay(5);//延时约五毫