基于单片机的酒精浓度检测系统_第1页
基于单片机的酒精浓度检测系统_第2页
基于单片机的酒精浓度检测系统_第3页
基于单片机的酒精浓度检测系统_第4页
基于单片机的酒精浓度检测系统_第5页
已阅读5页,还剩33页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

1、摘要 随着经济的快速发展,私家车数量增长迅速,但酒后驾驶、醉酒驾驶导致 的交通事故比例在不断增加,给人民的生命财产造成巨大的损失。为了预防和 减少交通事故的发生,设汁了一种基于单片机的酒精浓度检测系统,本设计釆 用MQ-3气敏传感器采集气体相关数据,经过酒精浓度传感器模块进行调制和数 据转化处理,最后将数据传送给单片机进行A/D转换和执行相应的功能。具有 液晶实时显示气体中酒精浓度,通过按键进行阀值设定,超过设定的阀值会发 光报警等功能。 关键词:单片机;酒精浓度检测系统;气敬传感器 Abstract With the rapid economic development, the numbe

2、r of priva te cars is growing rapidly, but the proportion of traffic accidents of drunk driving, drunk driving cause is increasin g, causing huge losses to the lives and property of the p eople In order to prevent and reduce the occurrence of tr affic accidents, designed a kind of alcohol concentrat

3、ion de tection system based on single chip, using the relevant dat a of MQ-3 gas sensors collect gas in this design, modulati on and data conversion treatment after alcohol concentration sensor module, the data is transmitted to the MCU A/D co nversion and executes the corresponding function. A liqu

4、id c rystal display the alcohol concentration in air, for thresho Id set by the key, more than the set threshold value will be luminous alarm function. Keywords: single chip microcomputer; alcohol concentration det ection system; gas sensor 目录 第一章前言1 1.1概述1 2. 1总体方案设计2 2. 2单片机系统总体设计2 2. 3芯片简介3 2.3.

5、1 STC12C5A16AD单片机3 2.3.2 MQ-3酒精传感器5 2. 3. 3 EEPR0M-24C02 阀值存储芯片9 2.3.4 LCD1602 显示模块12 第三章硬件电路设计16 3.1主程序/CPU模块16 3.2 AT24C02阀值存储模块16 3.3 MQ-3传感器调理电路17 3.4 LCD液晶显示模块18 3. 5按键单元设计18 第四章 系统软件设计19 4.1主程序设计19 4. 2 LCD1602显示程序设计20 4.3 24C02阀值存储程序设计20 4. 4系统调试20 总结21 致谢错误!未定义书签。 参考文献22 附录23 第一章前言 1.1概述 随着经

6、济的高速发展,更多的人拥有私家车,而且近儿年的增长率在不断 提高,酒后驾车造成的交通事故也频繁发生,占据交通事故的很大比重。在中 国,每年山于酒后驾车引发的交通事故达数万起,其危害触LI惊心,已成为交 通事故的第一大“杀手”。 饮酒后酒精在人体血液内达到一定浓度时,会产生麻痹神经、大脑反应迟 缓、肢体不受控制等症状。人对外界的反应能力及控制能力都会下降,处理紧 急情况的能力也随之下降。对于酒后驾车者而言,其血液中酒精含量越高,发 生交通事故的儿率越大。酒后驾车发生事故的机率高达27%。随着摄入酒精量的 增加,选择反应错误率显著增加,当血液中酒精含量山0. 5%。增至1%。,发主车祸 的可能性便

7、增加3倍,如果增至1. 5%0,可能性再增加6倍。机动车驾驶人员“酒后 驾车”及“醉酒驾车”极易发生道路交通事故,严重危害了道路交通安全和 人民生命财产安全。根据世界卫组织的事故调查,大约50%-69%的交通事故与酒 后驾驶有关,酒后驾驶已经被列为车祸致死的主要原因。 人饮酒后,酒精通过消化系统被人体吸收,经过血液循环,约有90%的酒 精通过肺部呼气排出,因此测量呼气中的酒精含量,就可判断其醉酒程度。开 车司机只要将嘴对着传感头使劲吹气,仪器就能发上显示出酒精浓度的高低,从 而判断该司机是否酒后驾车,避免事故的发生。最理想的办法是将酒精检测系统 应用在机动车内,司机一进入车内检测仪就检测司机的

8、酒精含量,如果超出允许 值,机动车系统控制引擎无法启动,这样就可从根本上解决酒后驾车问题。 为了实现对人权的尊重,对生命的关爱,使更多人的生命权、健康权及幸 福美满的家庭能得到更好的保护,需要设计一种智能的酒精检测系统能够检测 驾驶员体内酒精含量。本论文研究的是一种以气敬传感器和单片机为主,监测 酒精浓度,并具有显示和报警功能的基于单片机的酒精检测系统。酒精检测系 统在生产生活中也有重要的应用,比如,在一些环境要求严格的生产车间,用这 种酒精浓度探测仪,可随时检测车间内的酒精气体浓度,当酒精气体浓度高于允 许限定值时,发出警报、提醒,有着相当的前景和意义。 第二章总体方案设计 2. 1总体方案

9、设计 本设计研究的是一种以曲-3型气敏传感器和STC12C5A16AD单片机为主, 并具有灯光报警及LCD1602来实时显示数据功能的酒精浓度检测系统。其可检 测出空气环境中酒精浓度值,并需要根据不同环境不同驾驶员的水平设置不同 的阈值,对超过的阈值进行灯光报警,来提示危害。所以需要增设键盘控制模 块实现人机交互功能,超过阈值进入灯光报警功能。如下框图2-1 独立按键 图2-1系统结构框图 2. 2单片机系统总体设计 当启动该系统时,气敬传感器检测到酒精气体信号,然后对气敬传感器的 输出信号进行调制,最后经过STC12C5A16AD单片机内部的A/D转换部分进行模 数转换。单片机对转换后的数字

10、信号进行相应的处理,将数据通过液晶显示出 来,酒精浓度超过设定的阀值也会发出灯光报警提示。各个单元进行模块化设 计,以单片机为核心进行整合使整个系统达到预期的结果。 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振荡器和外部

11、 晶振振荡等模块,儿乎包含了数据采集和控制中所需的所有单元模块。 STC12C5A16AD单片机相比传统C51功能更加强大,有些特殊功能寄存器被扩 展为专用的特殊寄存器。其引脚图和内部结构如图2-3所示: 图2-3 STC12C5A16AD引脚排列图 STC12C5A16AD的具体功能特性如下: 1、高速:1个时钟/机器周期,增强型8031内核,速度比普通8051快812倍 2、宽电压:5. 53. 3V, 2. 23. 6V (STC12LE5A60S2 系列) 3、增加第二复位功能脚(高可幕复位,可调整复位门槛电压,频率12MHz时, 无需此功能) 4、增加外部掉电检测电路,可在掉电时,及

12、时将数据保存进EEPR0M,正常工作时无 需操作EEPR0M 低功耗设计:空闲模式,(可由任意一个中断唤醒) 5、低功耗设计:掉电模式(可由外部中断唤醒),可支持下降沿/上升沿和远程 唤醒 6、工作频率:035MHz,相当于普通8051: 0420MHz 7、时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置 8、8/16/20/32/40/48/52/56/60/62K字节片内Flash程序存储器,擦写次数10 万次以上 9、1280字节片内RAM数据存储器 10、芯片内EEPROM功能,擦写次数10万次以上 11、ISP / IAP,在系统可编程/在应用可编程,无需编程器/

13、仿真器 12、8通道,10位高速ADC,速度可达25万次/秒,2路PWM还可当2路D/A使 用 13、2通道捕获/比较单元(PWM/PCA/CCP), 也可用来再实现2个定时器或2个外部中断(支持上升沿/下降沿中断) 14、4个16位定时器,兼容普通8051的定时器T0/Tl,2路PCA实现2个定时 器 15、可编程时钟输岀功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在 P1.0输出时钟 16、硬件看门狗(W D T ) 17、高速SPI串行通信端口 18、全双工异步串行口 (UART),兼容普通8051的串口 19、先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指

14、令 20、通用I/O 口 (36/40/44个),复位后为:准双向口/弱上拉(普通8051传 统I/O 口) 可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏 21、每个I/O 口驱动能力均可达到20mA,但整个芯片最大不得超过100mA STC12C5A16AD的引脚说明: 单片机釆用40引脚的双列直插封装方式。图3-2为引脚排列图,40条 引脚说明如下: 1)主电源引脚Vss和Vcc 2)外接晶振引脚XTAL1和XTAL2 3)控制或与其它电源复用引脚RST, ALE和NA 4)输入/输出引脚 P0.0P0. 7, P1.0Pl. 7, P2.0P2.7, P3. 0

15、P3. 7 (1)P0 口(P0.0P0.7)是一个漏极开路型准双向I/O 口。在访问外部存储 器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活 了内部的上拉电阻。 (2)P1 口(P1.0P1.7)是带内部上拉电阻的8位双向I/O 口。在EPROM 编程和程序验证时,它接收低8位地址。 (3)P2 口(P2.0P2.7)是一个带内部上拉电阻的8位双向I/O 口。在访 问外部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间, 它接收高8位地址。 (4)P3 口(P3.0P3.7)是一个带内部上拉电阻的8位双向I/O 口。在访问外部存储 器时,它送岀高8位地址。在对E

16、FROM编程和程序验证期间,它接收高8位地址。 2. 3. 2 MQ-3酒精传感器 半导体酒精传感器MQ-3所使用的气敏材料是在清洁空气中电导率较低的 二氧化锡(SnO:) o当传感器所处环境中存在酒精蒸汽时,传感器的电导率随空 气中酒精气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为 与该气体浓度相对应的输出信号。曲-3气体传感器对酒精的灵敬度高,可以抵 抗汽油、烟雾、水蒸气的干扰。这种传感器可检测多种浓度酒精气氛,是一款 适合多种应用的低成本传感器。其主要用于机动车驾驶人员及其他严禁酒后作 业人员的现场检测;也用于其他场所乙醇蒸汽的检测。 曲-3传感器模块具有的特点: 1. 具

17、有信号输出指示 2. 双路信号输出(模拟量输出及TTL电平输出) 3. 模拟量输出0-5V电压,浓度越高电压越高 4. 对乙醇蒸汽具有良好的选择性和很高的灵敏度 5. 具有长期的使用寿命和可靠的稳定性 6. 快速的响应恢复特性 HQ-3的性能参数 1)MQ-3标准工作条件表 表2-3 MQ-3标准工作条件表 符号 参数名称 技术条件 备注 Vc 回路电压 W15V AC or DC v:_: 加热电压 5. 0V0. 2V AC or DC Rl 负载电阻 可调 ALCounter = 0; void Port_Init() /10000000. Pl.7 作为 AD 输入 设Pl.7 口为A

18、D输入 淸零先前的结果 /POWER=1,打开 ADC 电源 延时一会 /II 10.0000 淸 ADC_FLAGADC_START 设置当前通道号为P1.7 延时 PlM0 = 0 x80; P1M1 =0 x80; void ADC_InitO uint i; PlASF = 0 x80; ADC.RES = 0; ADC_CONTRI=0 x80; for(i=5000:i0;i-); ADC.CONTR = ADC_CONTR for(i=2500;i0;i-); 进行AD转换.得到当前洒精值 uchar GetADVal() uint i; ADC.CONTR for(i=250;

19、i0;i-);/待输入电压稳左后开始转换 /ADC_RES = 0; ADC_CONTR 1= 0 x08;/ADC_Start=l,启动转换 while(ADC_CONTR /等待转换结束 ADC_FLAG=1 ADC_CONTR淸 ADC.FLAG 和 ADC.START 位,停止转换 return ADC_RES; 存入设定值 void Save_Setting() 地址低位对应低8位,髙位对应髙8位 存醉酒阈值低8位 pSave = (char *) wrteeprom(0. *pSave); DELAY(300); pSave +; wrteeprom(h *pSave); DELA

20、Y(300); 存醉洒阈值髙8位 void Load_Setting()加入设泄值 pSave = (char *) *pSave = rdeeprom( 1); if (Threshold=255)ll(Threshold0) Threshold = 80; void KeyProcess(uint num)按键处理程序,1 为 Up 键,2 为 Down 键 switch (num) case 1: if (Thresholdl) Threshold-; break; default: break: L1602_int(2.9,Threshold); Save_Sctting(); voi

21、d niain() uint i j; 数据初始化 定时器0初始化 端口初始化 /ADC初始化 EA = 0; Data_Init(); TimerO_Init(); Port_Init(); ADCnit(); EA= 1; L1602Jnit(); L1602_string( 1,1 Welcome to ALCT! ”); L1602_string(2,Designed by AAA H); for (i=0;i1000;i+)延时 for (j=0;j1000:j 卄) ; L1602_string(lJ;r L1602_string(2J;t L1602_string(l JAlco

22、hol: ”);淸屏 “); mg/LJ; L1602_string(2J JThresho: Load_Setting(); LI602Jnt(2,9,Threshold); while(l) mg/LJ; 加入设左值 if (FlagStartAL= 1) 如果FlagStartAL标志置位,则进行AD转换 酒精浓度换算,50mg/L=625ppm,传感器灵敏度应事先校准 ALValue = 500 * GctADValO / 256; 8位ADC,首先得到电压值,单位 10亳伏 ALValue = ALValue - K_ZERO; 130mV if (ALValue Threshold

23、) Lcd_Warnl = 0; else Led_Warnl = 1; FlagStartAL = 0; ) 查询乙醇传感器TTL电平, if(DOUT = 0) Led_Warn2 = 0; else Led_Warn2 = 1; if (Kcy_Up) keyvalue = 1; else if (Key_Down) keyvalue = 2; if (FlagKeyPress = 1) 首先减去零点漂移,一般是 将mV转变成mg/L, 超过阈值, 则Lcd.Waml灯报警,否则报警灯火匚 该指示灯为传感器模块报警 键盘査询,在弹起时响应 KcyProcess(keyvalue); Fl

24、agKeyPress = 0; ) if (!Kcy_Up) keyUp = 0; else keyUp = 1; if (!Kcy_Down) keyDown = 0; else keyDown = 1; DELAY(IOO); 1602. C /*$*总*$* include T602h” include Hmath.hH void delayO int i j; for(i=0; i=10; i+) for(j=0: j= 0) sign = 0; else sign = 1; temp = abs(num); baiwei = temp / 100; temp = temp baiwe

25、i* 100; shiwei = temp /10; gewei = temp - shiwei* 10: num = absm um); 负数 if (num=100) if (sign = 1) L1602_char(hang, lie, -*); L1602_char(hang, lie+1. baiwei+48); L1602_char(hang, lie+2, shiwei+48); L1602_char(hang, lic+3, gewei+48); else if (num=10) if (sign = 1) L1602_char(hang, lie+1, ) L1602_cha

26、r(hang, lie+2, shiwei+48); L1602_char(hang, lie+3, gewei+48); else if (sign = 1) L1602_char(hang, lie+2, L1602_char(hang. lie+3, gewei+48); 2402. H #ifndcf_2402_H_ 总线的引脚泄义 define _2402_H_ include HSTC12c5A.hM sbit SCL = P1AO;模拟 I2C sbit SDA=P1A1; 延时函数 /I2C开始函数 /I2C结束函数 /I2C应答函数 /I2C应答非函数 /I2C应答检测函数

27、/I2C发送0函数 左义2402在I2C总线协议中的从机地址 /define EEPROM I2C ADDR 0 x00 void DELAY(unsigned int t); void IlCStart(void); void IlCStop(void); void Ack(void); void NOAck(void); bit Check_Ack(void); void SENDO(void); void SEND 1 (void);/I2C 发送 1 函数 /I2C发送字节函数 /I2C读取字节函数 读AT2402函数 写AT2402函数 void Write_byte(unsigne

28、d char dat); unsigned char Read_byte(void); unsigned char rdceprom(unsigned char addr); void wrteeprom(unsigned char addr.unsigned char dat); 2402. C #cndif/_2402_H_ include M2402.hM void DELAY(unsigned int t) whiled !=O) void IlCStart(void) SCL=0; DELAY(l); SDA=1;SCL=1:DELAY(1); SDA=0; DELAY(l); SC

29、L=0; void IlCStop(void) SDA=O;SCL=1;DELAY(1); SDA=1;DELAY(1); SCL=0; void SENDO(void) SDA=0; SCL=1; DELAY(l); SCL=O; void SEND 1 (void) SDA=1; DELAY(l); SCL=1; DELAY(l); SCL=0; bit Check_Ack(void) unsigned char errtime=250; DELAY(l); SCL=1; DELAY(l); CY=SDA; while(CY) errtime-; CY=SDA; if (Jerrtime) IlCStopO; return 1; DELAY(l); SCL=0; return 0; void Write_byte(unsigncd char dat) unsigned char i; for(i=0;i8;

温馨提示

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

评论

0/150

提交评论