基于单片机的酒精浓度检测系统_本科毕业论文.doc_第1页
基于单片机的酒精浓度检测系统_本科毕业论文.doc_第2页
基于单片机的酒精浓度检测系统_本科毕业论文.doc_第3页
基于单片机的酒精浓度检测系统_本科毕业论文.doc_第4页
基于单片机的酒精浓度检测系统_本科毕业论文.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着经济的快速发展,私家车数量增长迅速,但酒后驾驶、醉酒驾驶导致的交通事故比例在不断增加,给人民的生命财产造成巨大的损失。为了预防和减少交通事故的发生,设计了一种基于单片机的酒精浓度检测系统,本设计采用mq-3气敏传感器采集气体相关数据,经过酒精浓度传感器模块进行调制和数据转化处理,最后将数据传送给单片机进行a/d转换和执行相应的功能。具有液晶实时显示气体中酒精浓度,通过按键进行阀值设定,超过设定的阀值会发光报警等功能。关键词:单片机;酒精浓度检测系统;气敏传感器abstractwiththerapideconomicdevelopment,thenumberofprivatecarsisgrowingrapidly,buttheproportionoftrafficaccidentsofdrunkdriving,drunkdrivingcauseisincreasing,causinghugelossestothelivesandpropertyofthepeople.inordertopreventandreducetheoccurrenceoftrafficaccidents,designedakindofalcoholconcentrationdetectionsystembasedonsinglechip,usingtherelevantdataofmq-3gassensorscollectgasinthisdesign,modulationanddataconversiontreatmentafteralcoholconcentrationsensormodule,thedataistransmittedtothemcua/dconversionandexecutesthecorrespondingfunction.aliquidcrystaldisplaythealcoholconcentrationinair,forthresholdsetbythekey,morethanthesetthresholdvaluewillbeluminousalarmfunction.keywords:singlechipmicrocomputer;alcoholconcentrationdetectionsystem;gassensor目录第一章 前言11.1 概述12.1总体方案设计22.2单片机系统总体设计22.3芯片简介32.3.1 stc12c5a16ad单片机32.3.2 mq-3酒精传感器52.3.3 eeprom-24c02阀值存储芯片92.3.4 lcd1602显示模块12第三章 硬件电路设计163.1 主程序/cpu模块163.2 at24c02阀值存储模块163.3 mq-3传感器调理电路173.4 lcd液晶显示模块183.5按键单元设计18第四章 系统软件设计194.1主程序设计194.2 lcd1602显示程序设计204.3 24c02阀值存储程序设计204.4系统调试20总结21致谢22参考文献23附录24第一章 前言1.1 概述随着经济的高速发展,更多的人拥有私家车,而且近几年的增长率在不断提高,酒后驾车造成的交通事故也频繁发生,占据交通事故的很大比重。在中国,每年由于酒后驾车引发的交通事故达数万起,其危害触目惊心,已成为交通事故的第一大“杀手”。饮酒后酒精在人体血液内达到一定浓度时,会产生麻痹神经、大脑反应迟缓、肢体不受控制等症状。人对外界的反应能力及控制能力都会下降,处理紧急情况的能力也随之下降。对于酒后驾车者而言,其血液中酒精含量越高,发生交通事故的几率越大。酒后驾车发生事故的机率高达27%随着摄入酒精量的增加,选择反应错误率显著增加,当血液中酒精含量由0.5增至1,发生车祸的可能性便增加5倍,如果增至1.5,可能性再增加6倍机动车驾驶人员“酒后驾车” 及“醉酒驾车”极易发生道路交通事故, 严重危害了道路交通安全和人民生命财产安全根据世界卫组织的事故调查,大约50%69%的交通事故与酒后驾驶有关,酒后驾驶已经被列为车祸致死的主要原因。人饮酒后, 酒精通过消化系统被人体吸收, 经过血液循环, 约有90%的酒精通过肺部呼气排出, 因此测量呼气中的酒精含量, 就可判断其醉酒程度开车司机只要将嘴对着传感头使劲吹气,仪器就能发上显示出酒精浓度的高低,从而判断该司机是否酒后驾车,避免事故的发生最理想的办法是将酒精检测系统应用在机动车内,司机一进入车内检测仪就检测司机的酒精含量,如果超出允许值,机动车系统控制引擎无法启动,这样就可从根本上解决酒后驾车问题为了实现对人权的尊重,对生命的关爱,使更多人的生命权、健康权及幸福美满的家庭能得到更好的保护,需要设计一种智能的酒精检测系统能够检测驾驶员体内酒精含量。本论文研究的是一种以气敏传感器和单片机为主,监测酒精浓度,并具有显示和报警功能的基于单片机的酒精检测系统。酒精检测系统在生产生活中也有重要的应用,比如,在一些环境要求严格的生产车间,用这种酒精浓度探测仪,可随时检测车间内的酒精气体浓度,当酒精气体浓度高于允许限定值时,发出警报、提醒,有着相当的前景和意义。第二章 总体方案设计2.1总体方案设计本设计研究的是一种以mq-3型气敏传感器和stc12c5a16ad单片机为主,并具有灯光报警及lcd1602来实时显示数据功能的酒精浓度检测系统。其可检测出空气环境中酒精浓度值,并需要根据不同环境不同驾驶员的水平设置不同的阈值,对超过的阈值进行灯光报警,来提示危害。所以需要增设键盘控制模块实现人机交互功能,超过阈值进入灯光报警功能。如下框图2-1stc12c5a16ad单片机mq-3气敏传感器信号调制独立按键液晶显示器模块报警提示图2-1 系统结构框图2.2单片机系统总体设计当启动该系统时,气敏传感器检测到酒精气体信号,然后对气敏传感器的输出信号进行调制,最后经过stc12c5a16ad单片机内部的a/d转换部分进行模数转换。单片机对转换后的数字信号进行相应的处理,将数据通过液晶显示出来,酒精浓度超过设定的阀值也会发出灯光报警提示。各个单元进行模块化设计,以单片机为核心进行整合使整个系统达到预期的结果。2.3芯片简介本设计采用了stc12c5a16ad单片机、mq-3酒精传感器、at24c02、lcd1602等芯片.2.3.1 stc12c5a16ad单片机stc12c5a16ad是宏晶科技生产的新一代8051单片机,包含有中央处理器(cpu)、程序存储器(flash)、数据存储器(sram)、定时/计数器、uart串口、串口2、i/o接口、高速a/d转换、spi接口、pca、看门狗及片内r/c振荡器和外部晶振振荡等模块,几乎包含了数据采集和控制中所需的所有单元模块。stc12c5a16ad单片机相比传统c51功能更加强大,有些特殊功能寄存器被扩展为专用的特殊寄存器。其引脚图和内部结构如图2-3所示:图2-3 stc12c5a16ad引脚排列图stc12c5a16ad的具体功能特性如下:1、高速:1 个时钟/ 机器周期,增强型8051 内核,速度比普通8051 快812 倍2、宽电压:5.53.3v,2.23.6v(stc12le5a60s2 系列)3、 增加第二复位功能脚(高可靠复位,可调整复位门槛电压,频率= 500) flagstartal = 1; alcounter = 0; void port_init() p1m0 = 0x80; /10000000,p1.7作为ad输入 p1m1 = 0x80; void adc_init() uint i; p1asf = 0x80; /设p1.7口为ad输入 adc_res = 0; /清零先前的结果 adc_contr|=0x80; /power=1,打开adc电源 for(i=5000;i0;i-) ; /延时一会 adc_contr = adc_contr&0xe0; /1110,0000 清adc_flag,adc_start位和低3位 adc_contr = adc_contr&0xf8|0x07; /设置当前通道号为p1.7 for(i=2500;i0;i-) ; /延时/进行ad转换,得到当前酒精值uchar getadval() uint i; adc_contr&=0xf7; for(i=250;i0;i-); /待输入电压稳定后开始转换 /adc_res = 0; adc_contr |= 0x08; /adc_start=1, 启动转换 while(adc_contr&0x10)=0); /等待转换结束adc_flag=1 adc_contr&=0xe7; /清adc_flag和adc_start位,停止转换 return adc_res;/存入设定值void save_setting() psave = (char *)&threshold; /地址低位对应低8位,高位对应高8位 wrteeprom(0, *psave); /存醉酒阈值低8位 delay(300); psave +; wrteeprom(1, *psave); /存醉酒阈值高8位 delay(300);void load_setting() /加入设定值 psave = (char *)&threshold; *psave+ = rdeeprom(0); *psave = rdeeprom(1); if (threshold=255)|(threshold0) threshold = 80;void keyprocess(uint num) /按键处理程序, 1为up键,2为down键 switch (num) case 1: if (threshold1) threshold-; break; default: break; l1602_int(2,9,threshold); save_setting();void main() uint i,j; ea = 0; data_init(); /数据初始化 timer0_init(); /定时器0初始化 port_init(); /端口初始化 adc_init(); /adc初始化 ea = 1; l1602_init(); l1602_string(1,1,welcome to alct! ); l1602_string(2,1,designed by aaa ); for (i=0;i1000;i+)/延时 for (j=0;j1000;j+) ; l1602_string(1,1, ); /清屏 l1602_string(2,1, ); l1602_string(1,1,alcohol: mg/l); l1602_string(2,1,thresho: mg/l); load_setting();/加入设定值 l1602_int(2,9,threshold); while(1) if (flagstartal = 1)/如果flagstartal标志置位,则进行ad转换 /酒精浓度换算,50mg/l=62.5ppm,传感器灵敏度应事先校准 alvalue = 500 * getadval() / 256; /8位adc,首先得到电压值,单位10毫伏 alvalue = alvalue - k_zero; /首先减去零点漂移,一般是130mv if (alvalue threshold) led_warn1 = 0; /超过阈值,则 led_warn1灯报警,否则报警灯灭。 else led_warn1 = 1; flagstartal = 0; /查询乙醇传感器ttl电平,该指示灯为传感器模块报警 if (dout = 0) led_warn2 = 0; else led_warn2 = 1; if (key_up)&(keyup=0) /键盘查询,在弹起时响应flagkeypress = 1; keyvalue = 1; else if (key_down)&(keydown=0) flagkeypress = 1; keyvalue = 2; if (flagkeypress = 1) keyprocess(keyvalue); flagkeypress = 0; if (!key_up) keyup = 0; else keyup = 1; if (!key_down) keydown = 0; else keydown = 1; delay(100); 1602.c/*#include 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论