基于单片机的酒精测试仪

摘要
酒精具有麻痹大脑的作用,会导致饮酒的人开车产生交通事故的概率大大的增加,产生的悲剧也越来越多,而其造成的结果也是不可逆的。出于减少这些惨剧的发生的目的,设计一款简单而功能又齐全的仪器去检测呼出气体中酒精含量是十分必要而有意义的。
STC89C51单片机和MQ-3传感器是设计的核心,设计了显示、声光报警、按键等相关电路。各模块的功能具体分析,并侧重研究了核心器件。此系统具有检测、报警、显示等功能,具有低成本、携带方便、人性化的特点,因此实用度高,存在很大的发展空间。
关键词:STC89C51单片机;MQ-3传感器;A/D转换

硬件系统设计

3.1MQ-3传感器
MQ-3传感器所使用到的气敏材料为二氧化锡(SnO2)。二氧化锡(SnO2)是一种在空气中电导率比较低的气敏材料,适合用来制作酒精传感器。当在一个周围环境存在酒精气体时,气体传感器的电导率会因为酒精浓度的上升而提高,应用单一的电导率变换为与该气体浓度相匹配的输出信号[[]11]。MQ-3气体传感器对酒精气体分子的灵敏度高,可以抵御许多外部因素的干扰,像常见的有烟雾、汽油、液体、水蒸气等。
在传感器刚上电时传感器的输出电压出现一种先上升再下降,最后到达一个平衡状态稳定住,因此,当我们需要使用到传感器时,可以提前进行预热大概一两分钟,这样才可以保证传感器使用时处于稳定状态。传感器输出电压与周围酒精气体浓度有一定线性关系,酒精浓度越高,电压也随之增大。MQ-3传感器在一个周围不存在酒精气体的环境中电压无太大变化,大约为1V,若是周围存在酒精气体,那么传感器的电压会随着浓度的增大而增高,酒精浓度增高20mg/L,那么电压就会上升1V。 MQ-3实物图如图3.1所示
在这里插入图片描述

图3.1 MQ-3实物图
Fig.3.1 MQ-3 physical diagram
3.2A/D转换电路
3.2.1ADC0832概述
一般情况下,上位机和芯片之间需要四条数据线:分别为CS、时钟、输入和输出。值得注意的是,在通信过程中,一般输入和输出不会同时使用,但是由于输入和输出都是双向接口。这就使得如果在输入或者输出端口资源欠缺的情况下,就可以在数据条中同时使用输出和输入。如果ADC0832无法正常运转,则增加CS输入,但是值得注意的是,在这个过程中,如果芯片被禁用,那么时钟和输入或者输出之间就可以进行随意切换。但是如果要将数模转换变成CS able终端时,就必须要求在转换开始前设定并保持低水平。在刚开始转换对应的芯片时,对应的处理器会把时钟脉冲输入对应的时钟端,同时借助数模转换端的输入通道进行对应的数据信号输入。在输入首个脉冲前,应该加高输入终端,才会显示启动信号。在第2位和第3位脉冲被选中之前,需要在DI终端中输入2位数据以选择通道功能[[]12]。
3.2.2ADC0832工作原理
ADC0832具有8个接口,分别是CS_,CH0,CH1,GND,DI,DO,C LK, VCC/REF。若是它没有处于工作状态,这时候芯片不能使用,CS就该是高电平,我们可以随意设置输入口、输出口以及时钟的高低电平。使能CS并让他一直保持低电平,当完成模拟信号和数字信号的转换之后,芯片正常工作。时钟脉由CPU输入到时钟,在输入输出端口输入数据,即输入通道功能的数据信号。DI端表示起始信号时必须为高电平,而且是在第1个时钟脉冲的下沉之前。用作选择通道功能的时候,DI端应该在第2、3个脉冲下沉之前输入2位数据。当DI端的输入电平失去作用时,说明第3个脉冲已经下沉了。后来我们在输入输出端口选择输出端口,用于读取转换数据。在输出端口输出转换数据,之后DO端每输出一位数据就代表了又有一个脉冲下沉了。当第11个脉冲时,DATA0被传输出来。当完成这个操作后输出下一个字节,各个端子进行配合完成,换个意思表达,也就是当第十一个字节一直下沉,直至到DATA0,接着八位数据也就随之输出。当这十九个脉冲都完成数据传输时,也就意味着模拟信号和数字信号的转换过程完成。当完成转换过后,CS置于高电平,芯片停止使用。最后我们只需要处理转换后得到的数据即可。
输入通道模拟信号,此时输入电压需要在零到五伏特之间,电压精度需要19.53mV。若是IN+与IN-输入,则电压的变化范围可以由所变动,可以在较大范围内使用电压,这样可以提高转换宽度。再此过程中,若是IN-的电压大于IN+的电压,那么得到的转换结果是一个固定值,这个固定值为00H。芯片与单片机有四个端口,一个是CS,一个是CLK,一个是,DO,还有一个就是DI。因为这几个端口和单片机都是双向通信,并且输出端口和输入端口在信号传输时不能同时有效,所以可以连接在一条电路上。具体的电路图如图3.2所示。

在这里插入图片描述

图3.2 ADC0832原理图
Fig.3.2 ADC0832 schematic
3.3STC89C51单片机系统设计
3.3.1概述
STC89C51是我国具备自主知识产权的宏晶科技公司研发的微型控制器,其性能稳定,能耗低,并且具有8k的可编程闪存,该内核虽然是使用的是经典内核,但该芯片和其他传统的51单片机有些区别,做了很多改进,因此与其他单片机相比多了很多功能[[]13]。促使STC89C51成为很多嵌入式系统设计方案的首选芯片。STC89C51单片机有40个引脚,首先是正极引脚VCC(40)、接地引脚GND(20),单片机需要从外部连接+5V的电源才能工作。其次就是时钟电路引脚XTAL1(19)、XTAL2(18),单片机没有时钟脉冲信号是无法工作的,而这两个引脚接晶振电路为其提供脉冲信号。然后就是控制信号引脚EA(31)、RST(9)、ALE(30)、PSEN(29),这4个引脚的功能就是控制外围器件然后协调工作。剩下的就是输入/输出引脚P0,P0.0P0.7(32-39)、P1,P1.0P1.7(1-8)、P2,P2.0P2.7(21-28)、P3,P3.0P3.7(10-17)。
3.3.2最小系统
从字面上理解就是所形成的系统使用最少元器件就可以让单片机运行。下面将介绍最小系统必不可少的元器件和相关用处。
第一,电源是不能缺席的,没有它一切电子产品都没有用处。因为51单片机在4.5V~5.5V的电压之间就可以正常工作了,正因如此供电就采用正五伏电源供电,也可以使用手机充电器。
高增益反向放大器是振荡器一个极其重要的部分。引脚XTAL1、XTAL2分别是此放大器的输入端和输出端。本设计在设计时钟电路时,在这两个引脚接入振荡器和电容,这样所形成的自激振荡电路较为稳定。通常电容C1和C2取30pF,对振荡频率有微调作用。晶振频率范围是1.2MHz-12MHz。但是也有其他情况发生,最高可以达到24MHz以上。功耗与频率成正比,频率越大,功耗也大。所以在这个设计中选择12MHz的石英晶振就可以了。虽然振荡频率会被并联在晶振两端的两个电容影响,但是这些影响是非常轻微的。若是使用石英晶振,电容的选择范围就在20 40pF,本次这个系统设计所使用的位30pF的石英晶振;若是使用陶瓷谐振器件,电容选择范围在在3050pF,它的电容要比石英晶振的电容大。在这次设计中,我们也是使用30pF的陶瓷电容。具体如下图所示:

图3.3 晶振电在这里插入图片描述

Fig.3.3 Crystal circuit
晶振电路介绍完了之后就是复位电路。复位电路有两种,一种是上电自动复位电路,另一种就是开关复位电路。在复位原理图中就可以看到这这两种方式。电容两端在上电时电压不能有很大变化,此时复位引脚和电容负极连接,电阻两端的电压就被全部加上,这是我们把复位引脚置于1既可让芯片复位。之后用五伏电源给电容充电,与此同时,电阻的电压会逐渐减少趋近于零,芯片正常工作。电容和复位按键并联存在,电路为上电复位时,表明按键未按下。在芯片正常工作后,如果想达到手动复位电路的效果话可以按下复位按键使RST引脚出现高电平从而复位电路。笼统的说,要让单片机能有效的复位,只需要RST引脚保持10ms以上的高电平就可以了。图中相关元器件的数值为经典值,实际制作是可以用同一数量级的电阻和电容代替。复位电路如图3.4所示
在这里插入图片描述

图3.4 复位电路
Fig.3.4 Reset circuit
最小系统可由下图表示:
在这里插入图片描述

图3.5 单片机最小系统
Fig.3.5 Minimum system of single chip microcomputer
3.4LCD1602液晶显示电路设计
3.4.1概述
LCD1602字符型液晶显示器与单片机可以用到两种方式进行连接,第一种是采用8位的数据总线,另外一种是利用四位数据线进行两次输送。进行设计时,需设计控制和外界的接口,然后可以建立起一些对应的联系,对于运存的有效管理,驱动也可以进行有效地控制。并且还能配置数据。在驱动过程中,要完全依照控制器的相关规范,通过对LCD的驱动来显示数据信息。控制器当中还具有各种ASCII字符库和能扩容的汉字库。LCD 1602液晶模块当中存在字符发生内存设备,所保存的点阵字符图形数量共有160个,每个字符与代码相对应,就像这里面的英文字母就有其自己相对应的代码,当在程序中的地址中写入它所对应的代码,就可以显示出这个字母。液晶显示前需定位首个字符,程序自动往后,一位一位完成,比如说“max”,就是先定位m,然后a,最后才是x,全部结束才算完成任务,数字也是一样的,比如说“567”,就是先定位5,然后6,最后才是7,当全部都完成过后即可算完成任务。都是以从左到右的顺序进行,直到末尾才算完成。液晶实物图如图3.6所示。
在这里插入图片描述

图3.6 lcd1602液晶显示屏
Fig.3.6 Liquid crystal display
3.4.2工作原理
单片机可以给显示屏发送指令,具有是一种不同指令,当LCD1602接收到指令既可以完成一些特定操作,比如说显示数字或者是清屏等等。它有自己的字库,当它在工作时,直接从字库中调用即可显示内容。有一些自己需要显示但是字库里却没有的字符,可以自己定义写入到CGROM。自定义的字符分辨率是5*8,最多能有8个,由于自定义的数量很少,所以需要适当的使用,避免造成资源浪费。当自定义的字符成功写入到CGROM之后,就能像正常显示的字符一样随意调用了。如果想要控制LCD1602液晶显示屏的话,就需要掌握该液晶屏的相关操作,比如说对于数据的读写,状态的读取以及写指令。具体如下图所示:
表3.1 LCD1602操作指令对应的引脚电平
Tabel.3.1 Lcd1602 Operation Instruction corresponding to the PIN level
状态读取 写指令 数据读取 写数据
输入 RS为低电平,R/W为高电平,E为高电平 RS为低电平,R/W为低电平,D0-D7=指令码,E=高脉冲 RS为高电平,R/W为高电平,E为高电平 RS为高电平,R/W为低电平,D0-D7=数据,E=高脉冲
输出 D0-D7相当于状态 没有 D0-D7相当于数据 没有
从上表中得知,寄存器选择用RS表示,使能端用E表示,若是寄存时为高电平时选择数据寄存器,当寄存器为低电平时,选择指令寄存器。信号线用R/W表示,当它为高电平时执行度操作,当它为低电平时执行写操作。
LCD在使用时,单片机的P0与D0到D7引脚连接,这样会方便传输数据。为了能调节液晶屏的显示亮度和清晰度,可以在VL引脚连接一个能调节的电位器。当调节电位器的时候,VL引脚的接入电压会发生变化,进而液晶屏的显示度也会因电压的变化而变化。外接一个电位器能让液晶屏在不同的场合都适用,而不是采用固定的电阻,这样也不会因为一成不变的亮度、清晰度而感到苦恼。具体如下图所示:
在这里插入图片描述

图3.7 LCD1602原理图
Fig.3.7 LCD1602 schematic diagram
3.5蜂鸣器按键电路设计
蜂鸣器是一种能发生刺耳声音的元器件,采用直流电压供电,应用范围十分广泛,生活中我们常见到的电话、电饭锅、洗衣机等,工作学习中的电脑,打印/复印机、定时器等,还有一些交通工具中,可以说是必不可少的发声器件了。蜂鸣器主要分为两种,一种是压电式蜂鸣器,另一种是电磁式蜂鸣器。在这个设计中选用的是5V电磁式有源蜂鸣器,由于单片机的输入/输出口是没有办法直接驱动蜂鸣器工作的,因为蜂鸣器的使用工作电流一般比较大,所以就需要借助于三极管,这里使用的型号为8550,是PNP型。单片机的I/O口与三极管的基极相连,但需要在这二者之间串联一个阻值为1K的电阻。若是输入输出口输出0,那么电路导通,蜂鸣器也会因此发出报警声,当输入输出口输出1,电路不导通,蜂鸣器也就没有工作,具体如下图所示:
在这里插入图片描述

图3.8蜂鸣器原理图
Fig.3.8 Schematic of buzzer
为了能实现人机交互,在本设计中,加入了按键电路。按键与单片机相连,一端接地,另一端接输入/输出口。在输入输出口没有工作时默认为高电平,未按下按键的时候输入/输出口的状态就是悬空的。输入/输出口的电平被拉低了说明按键已经被按下了,如果判断有没有按键按下的情况就只需要单片机进行循环的检测输入/输出口是否有出现低电平,这种方式会产生按键抖动,影响使用结果,所以就需要添加一个消抖程序,具体如下图:
在这里插入图片描述

图3.9 基于按键电路的原理图
Fig.3.9 Key circuit diagram
如上图所示有三个按键,它们分别对应三个不同功能,具体如下:
最上面的按键:若是按下,则可以对参数进行设计,也就是咱们常说的设计模式,按下时显示屏会对此有提示。
中间的按键:在设计模式下实现参数加一操作。
最后一个按键:在设计模式下实现参数减一操作。
3.6原理图绘制软件介绍
发展到今,Altium Designer已有多个版本,它具有很多功能,拥有最为顶层的设计,它结合了Protel 99 SE等众多软件的优点,对各个功能进行实验和分析。是一款经济实用的设计软件[[]15]。
Altium Designer已不是简单的printed circuit board(印制电路板)设计工具,由多个功能模块组成,它们分别是原理图(SCH)设计、原理图(SCH)仿真、自动布线器(Auto Rounter)和FPGA(现场可编程逻辑门阵列)设计及嵌入式软件开发等,功能十分强大,而物理设计使用到PCB为核心的都覆盖了。该软件将电路设计结合了应有的技术,是电路设计必不可少的一部分。
和早期的版本相比,Altium Designer还在页面设计上进行了改进,不仅变得更加丰富大气,而且非常的符合用户的审美要求。Altium Designer还汇聚了VHDL(超高速集成电路汇聚语言)和FPGA设计,而且大大提升了在电路设计的同步要求。所以该软件的功能得到了大大的增强。
6总结与展望
本次设计可以分为硬件电路和软件编写两部分。硬件部分包括单片机、传感器、液晶屏、按键、蜂鸣器、LED灯等电路,软件部分就是相关程序的编写和调试。设计要求和功能要求通过STC89C51单片机进行实现,通过MQ-3气体传感器检测酒精浓度值,输出信号经过相关电路处理,转换成与其对应的电压信号传送到单片机系统中,然后经过模/数转换电路,信号的处理由STC89C51单片机及外围电路进行操作。随后LCD1602液晶显示屏就会把酒精浓度的测量值显示出来,当酒精浓度值超过酒驾的阈值LED灯就会亮起,当酒精浓度值超过醉驾的阈值LED灯亮起并且蜂鸣器鸣叫。使用Keil uVision软件进行程序开发编写,采用模块化设计思想。此设计作品拥有简单操作、反应灵敏、检测准确、可以调节等特点,在现实生活中有着非常实用的价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值