摘 要
现如今,人们对生活的态度和生活方式变得不同,,不仅私家车成为了人们最普遍的交通工具,大多数人都有自己的私家车,而且人们对酒精的消耗量也越来越大,这些就导致酒后驾车行为越来越普遍,酒后驾车意外越来越频繁,涉及到的领域不断扩大,对社会的影响也不断增大。酒精麻醉神经、使人大脑神经系统紊乱、身体不协调、身体难以自控等等,最终很容易造成事故 。因此本设计就非常有必要、非常具有现实意义,有了这个酒精浓度检测仪就能更好地对酒驾进行行为进行检测及控制。 本设计可以实现检测和显示不同浓度的酒精,而且体积小便于随身携带,非常适合人们自行检测和交警工作等,方便又安全。这个设计在STC89C51单片机的控制、指导下,通过气体传感器MQ-3对外界的酒精浓度进行响应,然后传感器产生电阻变化,形成电压信号即模拟信号,A/D模数转换器将此信号转换成数字信号,并且将其转存起来,最后由LCD显示酒精密度。
关键词:酒精浓度传感器(MQ3);STC89C51单片机;A/D模数转换器;LCD1602液晶显示器
Abstract
Nowadays, people’s life attitude and life style is different, and not only private cars became the most common means of transportation, people most people have their own cars, and people to the consumption of alcohol is becoming more and more big, the behavior leads to drunk driving is becoming more common, drunken driving accident is more and more frequent,'s sphere is more and more broad, and the impact on the society is more and more big. The alcohol anesthetized nerve, causes the people of the people’s people’s brain to be nervous system disorder, the body is not coordinated, the body is difficult self-control and so on, it is very easy to cause an accident. So this design is very necessary, very realistic, with the alcohol concentration detector can better for detection and control of drunk driving behavior. This design can achieve detection and display of different concentrations of alcohol, small volume and easy to carry, very suitable for people to detect and police work, convenient and safe. This design is in STC89C51 single chip under the guidance of MQ - three of the world through A gas sensor detect alcohol concentration, and then produce resistance change, form A voltage signal that is analog signal A/D analog-to-digital converter converts the signals into digital signals, and ripping it up, finally by the LCD display alcohol density.
Key words:Alcohol concentration sensor (MQ3); STC85C5 MUC; A / D converter; LCD
目 录
引言 6
- 绪论 8
1.1酒精浓度测试仪的开发背景 8
1.2 酒精浓度检测仪的现状及发展趋势 8
1.3 酒精浓度检测仪设计内容及论文介绍 9
1.4本章小结 10
2 系统总体方案设计 10
2.1 设计总方案简介 10
2.2 元器件的确认 11
2.2.1 单片机 11
2.2.2传感器 11
2.2.3 模数转换器 11
2.2.4 液晶显示器 11
3 系统硬件设计 12
3.1 单片机模块 12
3.1.1单片机简介 12
3.1.2 单片机最小系统电路 15
3.2模数转换器 16
3.2.1 模数转换器简介 16
3.3 液晶显示器 18
3.3.1液晶显示器简介 18
3.3.2 液晶显示器模块电路 20
3.4 传感器 21
3.4.1 气体传感器简介 21
3.4.2 气体传感器电路 23
3.5 按键设计 24
3.6 报警电路 24
3.6 系统硬件设计原理图分析 25
3.7本章小结 25
4 软件设计 26
4.1 编译语言 26
4.2 主程序模块 26
4.3 按键输入模块 27
4.4 A/D转换模块 28
4.5 液晶显示输出模块 29
4.6本章小结 31
5 系统调试 32
5.1 系统硬件调试 32
5.2 系统软件调试 32
6 结束语 34
感谢语 35
参考文献 35
引言
自21世纪以来,中国各方面实力都越来越强,特别是经济实力,全国大多数人民基本上不需要再为温饱而发愁了,人们对生活的态度和生活方式变得不同, 不仅私家车成为了人们最普遍的交通工具,大多数人都有自己的私家车,而且很多人对酒精的消耗量也越来越大,越来越多人在和朋友聚会及工作聚餐或者与客户吃饭等的情况下,或多或少都会喝酒,甚至有些人喜欢开着车去酒吧等娱乐场所,这些就导致酒后驾车行为越来越普遍酒后驾车意外越来越频繁,涉及到的领域不断扩大,对社会的影响也不断增大。酒麻醉神经、使人大脑神经系统紊乱、身体不协调、身体难以自控等等,最终很容易造成事故 。酒后驾车不光会给人们的生命带来威胁,而且也会给国家的整体经济带来了巨大的财产损失 。因此,必须有一种检测人体内酒精浓度的设备来防止酒驾,现在大多数的交通警察检查酒后驾车都是通过检测司机呼出的气体从而检测司机是否过度饮酒。所以酒精浓度检测仪的这个设计具有重要的现实意义。
本设计可以实现检测和显示不同浓度的酒精,而且体积小便于随身携带,非常适合人们自行检测和交警工作等,方便又安全。这个设计是在STC89C51单片机的控制、指导下,通过气体传感器MQ-3对外界的酒精浓度进行响应,然后传感器产生电阻变化,形成电压信号即模拟信号,A/D模数转换器将此信号转换成数字信号,并且将其转存起来,最后由LCD显示酒精密度。现在大多数的交通警察检查酒后驾车都是通过检测司机呼出的气体从而检测司机是否过度饮酒,从而对酒后驾驶行为进行遏制,这个设计就非常符合交警工作要求,同时这种便携的酒精浓度检测仪可随身携带,有利于司机对自己是否适合开车有很好的判断,同时也便于交警的工作,此设计有很大的现实意义。
1. 绪论
1.1酒精浓度测试仪的开发背景
喝酒可以让人平静,让人轻松,让人有点小小的兴奋,这是很多人喜欢喝酒的主要原因。但是,酒精会导致人抵制力明显降低,使人自我控制能力削弱、神经反应迟钝、动作不协调等等,从而导致创造力的出现,有时会导致实际的非理性行为。
司机酒后驾车一般会出现这些情况: 行驶速度不稳定,变速快,车辆行驶不正常,不安交通灯指示行驶;变更车道时不开转向灯,随性而为,甚至强行超车或在车辆之间穿行;不遵守各种交通信号灯指示,胡乱踩刹车,对色彩辨别能力下降、视力收到严重影响 ,对道路情况的变化不能很好地看清。无论你喝多少酒之后,人的神经系统或多或少都会受到影响,使人随机应变能力减弱,知觉和感觉判断能力下降,意识混乱,注意力不能正常的集中。
酒后驾车不仅会给人们的生命带来威胁,而且给社会安定和谐带来了更多阻碍,也给国家的整体经济带来了巨大的财产损失,酒后驾驶行为是对自己、对他人、对国家的不负责任。为了防止这类事故的再次发生,一个检测设备必不可少,本设计就是这类设备酒精浓度检测仪。目前,现在大多数的交通警察检查酒后驾车都是通过检测司机呼出的气体从而检测司机是否过度饮酒,从而对酒后驾驶行为进行遏制,这个设计就非常符合交警工作要求,同时这种便携的酒精浓度检测仪可随身携带,有利于司机对自己是否适合开车有很好的判断,同时也便于交警的工作。酒精浓度检测仪的设计具有一定的现实意义,此设计有利于司机对自己是否适合开车有很好的判断,同时也便于交警的工作 。
1.2 酒精浓度检测仪的现状及发展趋势
在当今世界,新型能源一直是最火热的话题,而半导体电池就是其中之一,它不仅能产高能,而且环保,可以说对环境几乎没有污染,最近两年出现了一种新型的半导体型酒精浓度检测仪CA2000,它不仅结构相对简单、使用起来简单、制作成本低,而且精确度高、抗干扰性能力强、可靠性也好,这次设计使用的就是类似的半导体型的酒精浓度检测仪。现如今,酒精浓度检测仪的显示方式一般有发光管显示和数字显示,主要显示分为三部分:未饮酒、饮酒、酗酒三区。现在国内外酒精浓度检测技术主要趋势就是:第一,手指按压检测技术。在驾驶员启动车之前,通过指纹或者电子钥匙启动,同时车自带同步检测系统,要是司机体内酒精浓度超标则无法启动车子,有钥匙也不行,这样会很好的避免酒驾和醉驾,但是有个问题有待解决,在车子启动后不能无时无刻对驾驶员呼出气体进行检测,这个问题是今后必须解决的,这样才能更好的防止酒驾。比如SABB公司的一种内嵌在汽车钥匙酒精呼气检测器。第二,不接触的气体检测技术。在机动车内部各个组件内均加个检测酒精浓度的仪器,如方向盘、仪表盘、座椅头枕和换挡杆,全方位全面的检测,能够无时无刻的对驾驶员体内酒精浓度进行检测,如丰田公司就推出了类似的一种防止酒驾的装置,在车子的方向盘上安装汗液传感器和皮肤传感器,在司机驾驶时可以对其的体内酒精浓度随时进行检测而且随时更新,通过司机皮肤和汗液来得出司机的体内酒精浓度,这种技术将来很有可能被广泛使用。
1.3 酒精浓度检测仪设计内容及论文介绍
这个设计是在STC89C51单片机的控制、指导下,通过气体传感器MQ-3对外界的酒精浓度进行检测,然后传感器产生电阻变化,形成电压信号即模拟信号,A/D模数转换器将此信号转换成数字信号,并且将其转存起来,最后由LCD显示酒精密度。
本设计的设计内容主要是三个部分:硬件部分: (1)主要元件的介绍:STC89C51单片机、传感器MQ3、ADC0832数模转换器、LCD液晶显示器;(2)单片机系统的复位电路及晶振电路、按键电路设计、酒精传感器电路设计、液晶显示设计、A/D转换设计、外围扩充存储器电路设计、时钟芯片电路设计、报警电路设计。软件部分:(1)软件及编程语言的简介;(2)主程序流程图介绍、按键输入模块流程图介绍、液晶显示输出模块流程图、模数转换器流程图、时钟模块流程图;(3)报警设置,当达到一定浓度值,会出现报警声音。调试部分:(1)硬件调试,对电路各个元件进行反复核查,对电路连接进行检测(2)软件调试:复位模块、显示模块、存储模块、传感器模块
本文主要分为6个章节,第一章主要介绍了酒精浓度检测仪的开发背景,并且对其发展现状及发展趋势;第二章主要是确认设计总体方案并且对主要器件进行选择;第三章主要介绍了各个模块的内部结构和主要原理,例如单片机,液晶显示器,气体传感器,模数转换器,同时也介绍了各个模块的电路并进行了分析;第四章主要对各个模块的程序框图进行介绍并进行了分析;第五章主要是此次电路的调试部分,分为了软件调试和硬件调试,最后对其进行了误差分析;最后一章是对此次设计做了一个总结。
1.4本章小结
本章主要介绍酒精浓度监测仪的研究背景、现状及其发展趋势,为酒精浓度检测仪地出现提供了依据,让我们对当今的情况有所了解。本章让我们知道了酒精浓度检测仪具有有很大的现实意义,对人们生活健康都有一定的帮助。也为后面的设计提供了现实依据。同时,本也重点介绍了酒精浓度检测仪的主要设计内容,总设计方案的确定为后面的具体设计提供了很好地设计思路,也提供了一个比较完整的框架,后面具体剖析,对整个设计起到了铺垫作用。
2 系统总体方案设计
2.1 设计总方案简介
酒精浓度测试仪是非常具有实用价值的酒精浓度监测设备,既可以用于交警监测酒驾,也可以用于人们自我检测以便于进行自我判断。MQ3型酒精传感器将外界气体酒精浓度转变成电阻的变化,即电压变化的信号,然后经过模数转换器的处理,接着单片机对来自模数转换器的信号进行采集,然后单片机对信号进行整理,并将得出的结果得转存起来,同时将得到的结果与设定值进行对比,对超出设定值进行报警,并将结果显示到LCD液晶显示器上。此设计酒精浓度测试仪还可以设定浓度最大值,用户可以根据自己的需要对浓度最大值进行设定,并进行保存。初步设计出一个总体设计方案,如下图2.1:
图2.1 总设计方案
2.2 元器件的确认
2.2.1 单片机
由于STC89C51有低功耗,性价比较高,可靠性高,集成度高,体积小,控制功能强等优点,而且STC公司的芯片比AT公司的芯片功能更好用(比如flash),程序烧录也更加简单方便,此芯片具有传统 51单片机不具备的很多功能,系统应用控制更加灵活.再者就是考虑到一些现实情况和本设计内容的需要,我们选择STC89C51单片机。
2.2.2传感器
选择传感器必须考虑其受环境影响程度、准确度、选择性、工作寿命等,MQ3酒精传感器是气敏传感器,其具有很高的准确度,良好的选择性,有效工作时间比较长而且性能比较稳定,最重要的是其电路结构不复杂、使用方便、所需费用低,因此,本设计选择MQ3型酒精传感器。
2.2.3 模数转换器
A / D 转换电路的传感器输出要求在 0 ~ 5 伏,系统需要采用 A / D 转换器将电压信号转换成数字信号送入单片机进行处理.考虑本设计的需求及现实情况,并且ADC0832转换器有体积小,稳定性能好,兼容性好,性价比高等优点,相当适合本系统的应用,所以本系统采用模数转换芯片ADC0809. 该芯片是一个 8 位 A / D 转换器,具有 8路模拟信号输入端口,但每个瞬间只能转换一路,各路之间的切换由软件改变 A、B、C 引脚上的代码来实现。
2.2.4 液晶显示器
LCD1602 是一种工业字符型液晶屏,专门用来显示字母、数字、符号等的点阵型液晶模块[20],能够同时显示两行,每行 16 共 32 个字符液晶模块,满足本系统的显示要求.LCD1602字符型液晶显示器机身薄又轻、节约空间、省电、不产生高温、低辐射、画面肉柔和不伤眼且高清,最重要是这种液晶显示器价格低,采购容易,方便控制。出于这些考虑,本设计选用LCD1602字符型液晶显示器。
3 系统硬件设计
3.1 单片机模块
3.1.1单片机简介
STC89C51有低功耗,性价比较高,可靠性高,集成度高,体积小,控制功能强等优点,而且STC公司的芯片比AT公司的芯片功能更好用(比如flash),程序烧录也更加简单方便,本设计中我选择了以STC89C51单片机为整个系统的核心。
主要STC89C51的组成部分:
(1)一个8位微处理器(CPU);
(2)4KB程序存储器(ROM),可扩展到64KB;
(3)128B片内数据存储器(RAM),可扩展到64KB;
(4)4个8位输入/输出端口(P0口、P1口、P2口、P3口);
(5)一个全双工异步串行口;
(6)2个16位定时/计数器;
(7)一个比较完整的中断系统;
(8)时钟电路(振荡电路和时序电路)
STC89C51的结构图如下图3.1:
RST EA ALE PSEN
P0 P1 P2 P3
图3.1 单片机结构
STC89C51的各个引脚介绍及功能(如下图3.2):
图3.2 51引脚图
各个引脚的含义如下表3.3:
表3.3
VCC 供电电压
GND 接电引脚
RST 使能引脚
EA/VPP 存取外部程序代码
PORT0(P0.0~P0.7) 低8位地址线和8位数据总线/I/O端口
PORT1(P1.0~P1.7) 低八位地址、I/O端口
PORT2(P2.0~P2.7) 高8位地址总线及做通用I/O端口使用
PORT3(P3.0~P3.7) 双向I/O口及第二功能
ALE/PROG 地址锁存允许信号端
PSEN 外部程序存储器的选通信号
XTAL1 反向振荡放大器及内部时钟的输入
XTAL2 来自反向振荡器的输出
3.1.2 单片机最小系统电路
在本次设计中是用STC89C51来设计的 ,图3.4是其最小系统电路图:
图3.4
上图中主要包括复位电路和晶振电路:
(1).复位电路:在单片机受外部因素的影响出现程序不能正常执行程序时,只需按下复位按钮,系统就会被初始化,系统程序将从头开始往下进行。
(2)晶振电路:晶振电路的作用非常大,它能产生产生时钟频率,通常一个单片机系统全部都用一个晶振电路,以便于保持分不分统一。
3.2模数转换器
3.2.1 模数转换器简介
A/D转换的实质就是将模拟信号转换为数字信号,在如今这个数字化时代,数字信号是存在于各个领域,而一般出现的都是模拟信号,因而模数转换器被应用于各个领域,模数转换器也越来越重要。由于逐次逼近式A/D转换器相对而言转换速度更快,分辨率更高 ,制作成本更低等,本设计采用逐次逼近式A/D转换器。逐次逼近型数模转换器主要由一个比较器,一个逐次逼近寄存器(SAR),一个模数转换器,一个逻辑控制单元组成。
ADC0832 数模转换器主要具有以下这些特点:
(1)与TTL/CMOS之间是相互兼容的
(2)输入电压在0~5V之间(电源供电电压5V)
(3)工作频率为250KHZ,转换时间为32μS
(4)功耗一般为15mW左右
(5)商用芯片正常工作时的温度范围0到+70度,工用芯片温度范围在零下40到+80度之间
芯片接口说明如下表3.5:
表3.5
CS 片选使能端,低电平有效
CH0/CH1 两路模拟信号输入端
GND 电源地
DI 两路模拟信号输入选择端
D0 模拟转换结果串行输出端,即8位数字量输出引脚,输出转换结果
CLK 串行时钟输入端
VCC 正电源端及基准电压端
3.2.2 模数转换器模块电路
ADC0832模数转换器一般在电路连接的时候主要有四个接口:CS、CLK、DO、DI,在本设计中具体与单片机连接如下图3.6:
图 3.6
DC0832模数转换器的工作原理:VCC接电源,GND接地,CLK接P3.4引脚,使能端CS接P3.5,当CS端口被设置为高电平时,ADC0832模数转换器芯片在系统中形同虚设,即此时转换器在整个电路中无任何作用;当CS显示低电平时,ADC0832模数转换器芯片在系统中能正常起到作用,即ADC0832模数转换器开始执行转换功能,并且此时,DO/DI 端根据ADC0832模数转换器会向单片机传送CLK时钟脉冲来实现负责对通道功能的选择,DO、D1共同接在单片机的P3.3引脚,其中DI端必须在第一个脉冲结束前一直保持高电平,后面两个脉冲就实行通道功能选择,有一点必须指出:从开始到转换完成CS端必须一直保持低电平。
3.3 液晶显示器
3.3.1液晶显示器简介
液晶显示器的物理特性是:不通电时,阻止光线通过 ;当通电时导通,排列变得很有秩序,使光线容易通过。利用这一特性,通过改变液晶显示器内部的通电情况,可以控制哪些区域通电,有电就显示黑色,这样就可以达到显示多个汉字、数字、字母等。
液晶显示器的显示面积大,画质也是高清的,给人的视觉效果特别好,而且其自身又薄又轻,比CRT起码轻几倍,厚度也薄很多,因此便于转移;液晶显示器的辐射很小,几乎可以忽略,对人体伤害几乎没有; 最实用的的一点是液晶显示器节能效果好,相对CRT而言强很多。LCD1602字符型液晶显示器机身薄又轻、节约空间、省电、不产生高温、低辐射、画面肉柔和不伤眼且高清,最重要是这种液晶显示器价格低,采购容易,方便控制。出于这些考虑,本设计选用LCD1602字符型液晶显示器。
LCD1602液晶显示屏的主要技术参数如表3.7和引脚功能(如3.8)及其控制指令表如下表3.9所示:
主要技术参数表3.7
显示容量 16×2个字符
芯片工作电压 4.5~5.5V
工作电流 2.0mA(5.0V)
模块最佳工作电压 5.0V
字符尺寸 2.95×4.35(mm)
引脚功能表3.8
引脚号 引脚名 电平 输入/输出 引脚说明
1 VSS 电源地
2 VDD 电源正极(+5V)
3 VL 液晶显示偏压信号
4 RS 0/1 输入 0:输入指令,1:输入数据
5 R/W 0/1 输入 0向LCD写入指令或数据,1从LCD读取信息
6 E 1→0 输入 1时读取信息,1→0(下降沿)执行指令
7 D0 0/1 输入/输出 数据总线(最低位)
8 D1 0/1 输入/输出 数据总线
9 D2 0/1 输入/输出 数据总线
10 D3 0/1 输入/输出 数据总线
11 D4 0/1 输入/输出 数据总线
12 D5 0/1 输入/输出 数据总线
13 D6 0/1 输入/输出 数据总线
14 D7 0/1 输入/输出 数据总线(最高位)
15 BLA +VCC LCD背光电源正极
16 BLK 接地 LCD背光电源负极
控制指令表3.9
指令 功能
清屏 清DDRAM和AC值
归位 AC=0,光标、画面回HOME位
输入方式设置 设置光标、画面移动方式
显示开关控制 设置显示、光标及闪烁开、关
光标、画面位移 光标、画面移动,不影响DDRAM
功能设置 工作方式设置
CGRAM地址设置 设置CGRAM地址。A5~A0=0~3FH
DDRAM地址设置 DDRAM地址设置
读BF和AC值 读忙标志BF和和地址计数器AC值
写数据 数据写入DDRAM或CGRAM
读数据 从DDRAM或CGRAM数据读出
3.3.2 液晶显示器模块电路
LCD1602液晶显示模块与计算机的接口电路有两种方式:直接访问方式和间接控制方式。 本系统采用间接控制方式,即将液晶显示模块的数据线与单片机的P0口连接作为数据总线,另外三根时序控制信号线通常利用单片机的P2口中未被使用的I/O口来控制。具体电路连接如下图3.10:
图3.10
图3.10中 7 - 14 脚是 1602 的 8 位双向数据线,与单片机 P0 口相连; 6 脚是 LCD 的使能端,与 P2. 4 相连; RS 是寄存器选择端,当它为高电平时,选择数据寄存器,反之选择指令寄存器。LCD显示器包含当前酒精浓度值和标准浓度值。MQ - 3 型气敏传感使用时,在使用之前,传感器先预热,此时液晶显示初始值,当预热完毕后,此时液晶屏显示酒精浓度标准值和当前酒精浓度值,并进入实时测量显示结果阶段[20]。
3.4 传感器
3.4.1 气体传感器简介
气体传感器是气体检测系统的核心[17],考虑到稳定性、灵敏度、选择性和抗腐蚀[20],系统采用MQ - 3 型气体传感器. MQ - 3 气体传感器对酒精的灵敏度高,当所处环境中存在酒精时,MQ-3气体传感器对其所处环境中酒精浓度进行响应,传感器的电导率随空气中酒精气体浓度的增加而增大,从而导致其内阻发生变化,再通过外部电路转换成电压信号,且浓度越高电压越高,从而便于ADC0832模数转换器的处理和转换。
MQ-3酒精传感器有以下这些突出特点:
(1)有效工作时间比较长而且性能比较稳定;
(2)响应时间短并且恢复时间短;
(3)对乙醇有较高的灵敏度和很强的选择性;
(4)驱动电路简单;
(5)恢复时间:30s(70% Response);
(6)探测范围:10-100010-6;
(7)加热电阻:31Ω±3Ω;
(8)特征气体:10010-6;
(9)敏感体电阻:400-4000kΩ(空气中);
(10)灵敏度:air/RIN typical gas5;
(11)响应时间:10s(70% Response);
(12)使用气体:酒精(乙醇);
(13)加热电流:180mA;
(14)加热电压:5V±0.2V;
(15)加热功率:900mW;
(16)环境条件要求如下表3.11:
表3.11
符号 参数名称 技术参数
TAO 使用温度 -10度到50度
TAS 储存温度 -20度到70度
RH 相对湿度 小于90%RH
O2 氧气浓度 标准条件21%(最小值大于2%)
氧气浓度会影响敏感性
下图3.12是传感器的外形图,在本设计中使用时,VCC引脚需要接5V对的电压,DOUT引脚作为TTL电平输出端,AOUT引脚作为电压输出端,GND引脚接地,要特别注意的是电位器只针对TTL输出灵敏度进行调节,顺时针调节灵敏度高逆时针调节灵敏度低。
图3.12传感器模块外形图
这个传感器模块具有如下特点,方便与单片机系统接口组成检测仪器。
(1)具有信号输出指示。
(2)双路信号输出(模拟量输出及TTL电平输出)
(3)TTL输出有效信号为低电平。 (当输出低电平时信号灯亮,可直接接单片机)
(4)模拟量输出0~5V电压,浓度越高电压越高。
3.4.2 气体传感器电路
MQ-3乙醇气体传感器对其所处环境中酒精浓度进行响应,然后传感器的电导率会随着空气中酒精气体浓度的增加而增大,然后将电导率转换成气体浓度相对应的电压信号,从而便于ADC0832模数转换器的处理和转换。传感器的调理电路连接如下图3.13:
图3.13传感器模块图
如3.13图所知,当外界气体浓度变化时,传感器内阻就会发生更改变,导致电阻R2的上端电压变化即电信号,从而通过集成运放及电容C1和LED对其电平输出端DOUT进行控制,同时R2上端的电压信号也控制着其电压输出端AOUT,从而会发出电信号给模数转换器。
3.5 按键设计
最初状态按键K1和K2两开关一端接地,另一端接单片机,并且此端显示高电平信号,当按键被按下时,接单片机端变为显示低电平信号,即当单片机正常工作时,I/O变为高电平,然后保持不变,按下按键时,I/O就接地,从而变为低电平,放开按键,I/O端就会恢复高电平。电路连接图如下图3.14:
图3.14
3.6 报警电路
这个模块主要是三极管和蜂鸣器共同作用来实现功能的,当外界气体浓度大于标准值时,三极管基级与发射极正向导通、基级与集电极反向导通,蜂鸣器就会发出声音显示超值了,当浓度小于标准值时,蜂鸣器停止报警。电路图如下图3.15:
图3.15
3.6 系统硬件设计原理图分析
图3.16 系统硬件设计总原理图
图3.16中的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和45、6的液晶显示器连接,以控制其工作。7 - 14针与单片机的P0.0 - P0.7连接,该芯片用于传输数据。
3.7本章小结
本章介绍了此设计中主要的各个元器件的原理、各个模块的外围电路及与单片机的连接。通过对各个模块的剖析,理解他们的工作原理,我们才可能设计出它的原理框图,同时本章也对总原理图进行剖析,让我们对本设计认识更加深刻。本章也有利于程序的编写,给编程提供依据,然后,将各个模块的电路和STC89C51单片机的对应引脚连接起来,再通过程序的控制实现功能,以完成本设计。
4 软件设计
4.1 编译语言
在大学期间,我们学习的编程语言主要由汇编语言和C语言、C++语言等,而C语言是应用最广泛、使用最多一种语言,在本设计中使用的程序语言也是C语言。当前,高级语言被使用的越来越多,其中最普遍的接触最多的就是C语言。虽然汇编语言相对于C语言来说程序运行速率更高、可控性更强,但是汇编语言不适用于其他操作系统,程序通用性不好。C语言编写的程序就是根据正常的逻辑关系来编写的,很容易被广大学者介绍,而且C编译器编写的程序模块适用于各种操作系统,这样对于编程用户不是很熟悉的处理器也能很快了解并掌握,而且其模块程序可移植性强、模块性也强、易于阅读。C语言最为突出的一个优点就是它可以适用于多种操作系统,同时拥有结构化程序,数据处理能力也极强,更加智能,可以分模块的进行程序编写。通过对C语言和汇编语言的优缺点的比较,给我们选择编程语言提供了一些看法,本设计采用C语言编写方法。
4.2 主程序模块
程序设计中首先要做的就是让整个系统初始化,初始化内容包括中断初始化、AD初始化、液晶初始化,一般有两种方式初始化:重新启动电源和按下单片机复位按键。传感器是一种慢热型的元件,在使用之前必须先对其进行预热,只有预热好之后才能更准确地对酒精浓度进行检测。所以在程序编写过程中首先要做的就是对酒精传感器进行预热,直到预热完成后才进入循环程序。循环程序主要有五步:第一步,设定一个标准值,对酒精浓度超标进行设定;第二步,传感器模块,传感器在单片机的指导下对外界酒精浓度信号进行响应,将酒精浓度值转换为模拟信号,然后通过模数转换器将其转换为数值信号,并且将其转化为一个数值存在单片机内;第三步,报警系统,将单片机得出的结果与标准值相比较,如果超出标准值则蜂鸣器发出声音表示超标;第四步,显示模块,在前面步骤都正常的情况下,将酒精浓度值显示在液晶显示器上,液晶显示界面上面显示所测酒精浓度,下面显示标准值;第五步,如果想对标准值进行设定,只需将设定按键按下,就可以对标准值进行调整。只有将主程序和硬件相互结合,再能很好的实现酒精浓度检测仪的各个功能(时间调整、数据存储、检测、显示等)。下图4.1是主程序流程图:
图 4.1主程序流程图
4.3 按键输入模块
按键可以通过与单片机串行通信来实现对单片机传送指令,当按键被按下时,接单片机端变为显示低电平信号,即当单片机正常工作时,I/O变为高电平,然后保持不变,按下按键时,I/O就接地,从而变为低电平,放开按键,I/O端就会恢复高电平。按键输入模块的流程图见下图4.2:
图4.2按键流程图
4.4 A/D转换模块
首先系统将ADC0832转换器初始化,然后通过对标志位EOC的检查来判断转换是否完成,如果完成就将转换的数据传给单片机,诺没有就继续对EOC进行监测。
ADC0832转换的流程图见下图4.3:
图4.3 ADC0832转换流程图
AD 转换子程序如下.
/ ADC0809 读取信息
uchar ADC0809( )
{
uchar temp_ = 0x00;
OE = 0;
/ / 转化初始化
ST = 0;
/ / 开始转换
ST = 1;
ST = 0;
/ / 外部中断等待 AD 转换结束 while( EOC = = 0)
/ / 读取转换的 AD 值 OE = 1;
temp_ = Data_ADC0809;
OE = 0;
return temp_;
}
4.5 液晶显示输出模块
首先单片机对LCD初始化 ,接着读取状态字来检测液晶显示器是否处于忙碌状态,如果处于忙碌状态,就将从ADC转换后的结果输出,来判断其指令是写指令还是读指令, 然后输出,如果不忙碌状态则继续 。
液晶显示的显示流程图见下图4.4:
图4.4 液晶显示流程图
LCD1602的读写工作时序图如图4.5和图4.6所示:
图4.5读操作时序图
当处于读状态时,RS处于低脉冲,R/W为高脉冲,E为高脉冲 ,D0~D7=状态字
当处于读数据时,RS为高脉冲,R/W为高脉冲,E为高脉冲,D0~D7=数据。
图 4.6 LCD1602写操作时序
当处于写指令时,RS为低脉冲,R/W为低脉冲,D0~D7=指令码,E=高脉冲
当处于写数据时,RS为高脉冲,R/W为低脉冲,E为高脉冲,D0~D7=数据.
LCD 初始化程序如下.
/ /1602 初始化 void Init1602( )
{
uchar i = 0;
write_com( 0x38) ; / / 屏幕初始化 write_com( 0x0c) ; / / 打开显示 无光标 无光标闪烁
write_com( 0x06) ; / / 当读或写一个字符是指针后一一位 write_com( 0x01) ; / / 清屏
write_com( 0x80) ; / / 设置位置
for( i = 0; i < 18; i + + )
{
write_data( Init1[i]) ; / /1 行初始化显示
}
write_com( 0x80 + 0x40) ; for( i = 0; i < 18; i + + )
{
write_data( Init2[i]) ; / /2 行初始化显示
}
}
4.6本章小结
本章主要介绍了软件设计的各个模块程序框图,程序流程图给我们理清了编程的思路,让我们对编程有了很好的总体把握,也能让我们更好更准确地编写出程序,本章知识为我们更好的编程做好了准备,只有我们充分理解了各个流程图以后,才能编写出更好的、更适合本设计的程序,有合适的程序才能更好的与硬件结合实现功能。
5 系统调试
5.1 系统硬件调试
在电路连接前,首先需要对所选的元件进行筛选及确认,对各个小器件的数值进行再三确认,所选取的器件数值一定要与理论值差不多,以免出现差错,并且各个芯片的规格、型号必须和本设计中需要的元器件一致。在制作实物时,有时会出现连接线虚焊、忘记焊接、连接出错等情况,这些问题经过对元器件及对线路连接的多次确认后均得到了很好的解决,最后还是能很好的实现功能了。完成电路连接之后,需对每个元器件的连接进行检查,检查各个引脚是否连接出错、是否有引脚没有焊接彻底等问题。待烧录程序之后再进行确认,直到正确的实现功能。调试主要有下面五个步骤:
第一步:焊接好后先检查电源和地。用万用表对各个部分的电源和接地端进行检测,数值如果正常则进行下一步,反之对其进行修改,同时也需要检查电路中是否有短路和短路的情况,有则改之。第二步:LCD1602液晶的调试方法。在单片机正常时,首先拔掉液晶,查看液晶的三角电阻,三角与电源的电阻一般10K,三角与地之间电阻一般0.5K到1.5K,特别注意查看三角是否接反;然后,检查液晶与单片机的连接,比如万用表两端连接液晶14与单片机的P0.7来查看其是否短路等等,依此对液晶的数据脚4到14是否短路和断路;最后对其排阻进行检查,排阻很容易接反,因此需要特别注意,排阻上标有1的连接单片机40 端,然后依次连接,但是本设计也可以不用排阻也可以实现功能。第三步:按键调试,本设计用的是矩阵按键,用万用表两端分别接按键两端,当按键按下时会显示短路,则连接正确。第四步:传感器调试,检查传感器的引脚是否一边三个脚全部连接在一起另一便则中间一脚独立另外两脚连接到一起。第五步:模数转换器调试,检查连接是否是VCC接电源,GND接地,CLK接P3.4引脚,使能端CS接P3.5。
5.2 系统软件调试
此次设计过程中主要用到两大软件KEIL和Protel99SE。KEIL是我在大学中接触得最多的51单片机开发软件,也是非常好用的一个编程软件,编程语言都是用C语言。下面介绍一下KEIL的使用步骤:首先点击project,然后点击New project,创建一个工程,同时在建立工程过程中需要选择芯片;然后,点击File,新建一个文档用来存放程序,在text窗口编写程序,然后保存添加到工程里面去;接下来检查程序有无问题,如果没有问题,我们就可以进行仿真调试等,如果程序有问题,我们可以根据软件的错误提示去进行修改。然后在介绍一下Protel99SE的使用步骤:新建工程,点击file–>new–>,然后点击OK,接着点击document,再然后在document里面右键—>new,最后点击第六个schematic Document–>OK,最后双击的得到一个界面,用下图绘制原理图
系统软件调试时,为了更好的进行调试,对各个模块分别进行调试是比较实用的一个方法 ,下面进行具体介绍:第一,检查复位按键。按下按键显示器上显示最初值即为调试成功,反之不成功。第二,调试传感器模块,当对系统输入一个酒精浓度值,如果显示屏上能显示正确的电压,则调试成功。第三,调试存储模块。比如一定酒精浓度的气体作用在传感器MQ3上,如果显示器正常显示数据,并进行多次反复测试,结果相差不大,则说明调试成功。第四,调试报警系统,首先设置一个定值,此值会显示在显示器上,如果所测外界酒精浓度超过这个值时,蜂鸣器会发出声响提示,则调试成功,反之不成功。
6 结束语
现如今,中国各方面实力都越来越强,特别是经济实力,全国大多数人民基本上不需要再为温饱而发愁了,人们对生活的态度和生活方式变得不同, 不仅私家车成为了人们最普遍的交通工具,大多数人都有自己的私家车,而且很多人对酒精的消耗量也越来越大,越来越多人在和朋友聚会及工作聚餐或者与客户吃饭等的情况下,或多或少都会喝酒,甚至有些人喜欢开着车去酒吧等娱乐场所,这些就导致酒后驾车行为越来越普遍,酒后驾车意外越来越频繁,畛域越来越宽泛,对社会的影响越来越大。酒麻醉神经、使人大脑神经系统紊乱、身体不协调、身体难以自控等等,最终很容易造成事故 。因此,设计这种便携式酒精浓度检测仪是很有必要的,很有现实意义的。此设计方案以STC89C51单片机为主要核心,通过气体传感器MQ-3对外界的酒精浓度进行检测,然后传感器产生电阻变化,形成电压信号即模拟信号,然后在单片机的指导下,A/D模数转换器将此信号转换成数字信号 ,最后由LCD显示酒精密度。 本论文主要介绍三个部分:硬件部分: (1)主要元件的介绍:STC89C51单片机、ADC0832数模转换器、LCD液晶显示器传感器MQ3;(2)单片机系统的复位电路及晶振电路、按键电路设计、酒精传感器电路设计、液晶显示设计、A/D转换设计、外围扩充存储器电路设计、时钟芯片电路设计、报警电路设计。软件部分:(1)软件及编程语言的简介;(2)主程序流程图介绍、按键输入模块流程图介绍、液晶显示输出模块流程图、模数转换器流程图、时钟模块流程图;(3)报警设置,当达到一定浓度值,会出现报警声音。调试部分:(1)硬件调试,对电路各个元件进行反复核查,对电路连接进行检测(2)软件调试:复位模块、显示模块、存储模块、传感器模块
通过这个设计首先让我对酒精浓度检测仪的原理有了充分了解,再则就是对单片机、液晶显示器、数模转换器等的结构原理有了更深刻的理解,同时在整个设计的过程中学习到了很多:第一,在焊接电路的过程中,不仅让我对焊接电路有了更深的体悟,而且在发现问题、分析电路问题、解决问题的过程中提高了自己的解决问题的能力、实践操作能力、等,并且让我认识到自我反省的必要性;第二,这次设计把理论和实践完美的结合在一起,不仅让我我理论知识得到升华,而且更让我懂得利用理论去指导实践,只有把所学的理论知识与实践相结合起来才能更好的体现价值,在实践中学习验证理论 。这次设计让我学到了平时上课很少接触甚至没有接触的东西,让我的思维更开放,想法更全面,并且让我认识到自我反思自我完善的重要性,总之,此次的毕业设计让我整个人都进步了一大步,这也是我上大学来难忘的一次经历。
感谢语
转眼之间大学四年就快要结束了,总体来说大学生活过的还是很愉快的。从大一刚入学到现在我们班级基本上每学期都会至少聚会一次,每次聚会同学们都很开心,同学之间也非常和睦,彼此之间相亲相。平时,同学之间也经常相互帮助,比如同学有什么学习上的问题,那些学霸都会毫无保留的教你,而且很有耐心,我最常请教的学霸肖益珠就是这样的。在大学期间,授课的老师、辅导员、学校领导在我看来都比较有责任心,比较有耐心,平时有什么事情找他们他们都会尽力去帮你解决。虽然此设计跟他们没有直接联系,但是是他们陪伴了我四年,从他们身上学到了很多,或多或少对我这个设计都会有帮助,所以我衷心的感谢他们,希望同窗之谊长存。这个设计能顺利完成,我的指导老师功不可没,周老师他朴实无华、平易近人给人很强烈的亲和感,他用渊博的专业知识对我进行指导,让我设计过程中的问题得到很好的解决,他精益求精的态度让我对做任何事情也同样有了这种积极的态度,衷心感谢周老师的倾心指导。最后我要再次感谢周老师和所有陪伴我大学四年的老师们、同窗们、学校领导
参考文献
[1]张培仁.MCS-51单片机原理与应用[M].北京:清华大学出版社,2003.
[2]吴桂秀.传感器应用制作入门[M].浙江科技出版社,2004.
[3]彭军,传感器与检测技术[M].西安电子科技大学出版社,2003.
[4]楼然苗,李光飞.51系列单片机设计实例[M].北京航空航天大学出版社,2003.
[5]郝芸. 梅晓莉. 传感器原理与应用[M]. 电子工业出版社. 2013.
[6]马忠梅. 籍顺心. 单片机C语言程序设计[M]. 北京: 北京航空航天大学出社.2007.
[7]刘丰年.气体传感器测试系统[D].硕士学位论文.吉林:哈尔滨理工大学,2003.
[8]万隆,巴奉丽.单片机原理及应用技术[M].北京:清华大学出版社,2010
[9]汤竟南,沈国琴.51单片机C语言开发与实例[M].北京:人民邮电出版社,2008
[10]黎小桃, 刘祖明, 周福明.PROTEL99 SE入门与提高[M]北京电子工业出2009.
[11]王东锋,王会良.单片机C语言应用100例[M]北京电子工业出版社,2009.
[12]兰吉昌.单片机C51完全学习手册[M].北京:化学工业出版社,2009.
[13]王啸东.车载酒精测试仪控制器的设计[J].硅谷.2010-06
[14]赵阳.电磁兼容工程入门教程[M] .北京:机械工业出版社,2009.
[15]王啸东.车载酒精测试仪控制器的设计[J].硅谷.2010-06.
[16]王鸣.一种输入传行数据的LCD模块的应用[J].安徽机电学院.2000-08
[17]周鸿武. 基于单片机的酒精浓度检测仪设计[J]. 制造业自动化,2012( 1) .
[18]夏骏,李国兴,郝卜. 基于单片机的防酒后驾驶控制装置[J]. 科技信息2012( 5) .
[19]高美霞,柏建普. 单片机控制的超声波测距仪汽车倒车系统的设计[J]. 仪器仪表与检测技术,2011( 11) .
[20]冉伟刚. 气体酒精浓度检测报警器设计[J]. 农业网络信息,2011( 10) .