



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的酒精浓度测试仪设计 i 基于单片机的酒精浓度测试仪设计 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们 对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(基于单片机的酒精浓度测 试仪设计)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这 将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以 下为基于单片机的酒精浓度测试仪设计的全部内容。 基于单片机的酒精浓度测试仪设计 i 基于单片机的酒精浓度测试仪设计基于单
2、片机的酒精浓度测试仪设计 摘摘 要要 中国经济的飞速发展使得私家车的占有量越来越高.人们生活水平的提高,车 辆的大幅度增多,也使得道路安全问题越来越严重.有些事故是让人回天乏术的, 而有些事故是完全可以避免的。比如酒后驾车,这种行为是对自己以及他人生命的 严重不负责。为了遏制这种行为,对驾驶员进行酒精浓度测试不失为一种有效的方 法。酒精浓度测试仪不仅要能准确测出酒精的浓度,而且要让测试人员读出该浓度。 当然也要有报警装置,提醒人们浓度超标.本设计目的在于实现对不同的酒精浓度 的检测和显示,通过适当改进可以用于对驾驶员进行是否酒后驾车的检测。本文主 要采用 stc89c52 单片机与 mq-3
3、型气体传感器,而且能够对显示出所测量的数据, 加之二极管的使用就可以简单地显示出所测的酒精浓度。当其浓度超过允许值时, 检测仪将发出蜂鸣声。 关键词关键词: : 酒精浓度检测;stc89c52 单片机;mq3 气体传感器;a/d 转换, 基于单片机的酒精浓度测试仪设计 ii alcoholalcohol testertester basedbased onon mcumcu abstractabstract the rapid development of chinas economy makes the share of private cars increase。 whats more,
4、the improvement of peoples living standards and a substantial increase in the vehicle makes the road safety problem get worse. some accidents are beyond resurrection, while others are completely can be avoided 。 such as drunk driving。 such behavior is serious not responsible to their and the others
5、lives 。 in order to curb this behavior, the driver alcohol test is an effective method。 alcohol tester is not only able to accurately measure the concentration of alcohol, but also can let testers reads the concentration. of course, we have an alarm system to alert people to the concentration exceed
6、ed. the design aims to achieve different alcohol concentration detection and display。 and it can be used for the driver is drunk driving tests through appropriate improvements。 this paper uses stc89c52 mcu and mq3 gas sensor as the main devices。 with the 基于单片机的酒精浓度测试仪设计 iii use of the diode, the alc
7、ohol tester can display the measured data and simply show the alcohol concentration measured. when the concentration exceeds the allowable value, the detector will beep。 keywordskeywords stc89c52 microcontroller; mq-3 gas sensor; a/d conversion 目 录 第 1 章 绪论.1 1。1 酒精测试仪现状和发展趋势 .1 1。2 酒精浓度检测仪设计的意义 .1
8、1.3 研究内容 .2 1.4 系统总体思路 .2 第 2 章 系统总体方案设计.3 2.1 总体设计 .3 2。2 控制模块方案论证.3 2。3 显示模块方案论证.3 第 3 章 硬件电路设计.5 3.1 单片机电路设计 .5 3.1.1 单片机介绍 .5 3.1。2 stc89c52 的功能特性.6 3。1。3 stc89c52 的原理说明.6 3。2 mq3 气体传感器.7 3。2。1 mq3 主要技术指标.7 3.2.2 mq3 结构、外形、测试电路.8 3.2.3 mq3 传感器调理电路.10 基于单片机的酒精浓度测试仪设计 iv 3.3 电源电路 .11 3.4 adc0809 .
9、11 3.5 lcd 液晶显示模块.12 3。5.1 lcd1602 显示模块技术参数.12 3。5.2 lcd602 显示模块功能.13 3.6 发光二极管显示报警电路 .15 3。7 阈值存储电路.16 3。8 系统硬件设计原理图分析 .16 第 4 章软件系统的设计与实现.18 4.1 主程序设计 .18 4.2 分部分软件设计 .19 4。2.1 adc 程序流程图.19 4。2.2 lcd 程序流程图.20 第 5 章 系统的调试及实验结果.21 5。1 调试步骤.21 5.1.1 按键修改酒精阈值程序 .21 5.1.2 模数转换测试 .21 5.1.3 液晶显示程序设计 .22
10、5。1。4 声光报警测试 .25 5。1。5 整体功能调试程序 .25 5。2 实验结果 .25 结 论.27 致 谢.28 参 考 文 献.29 附录 a 译文 .30 stc89c51rc/ rd+系列 mcu .30 附录 b 外文原文 .38 stc89c51rc/rd+ series mcu.38 附录 c .51 附录 a:全局变量头文件和延时模块.51 附录 b:ad 转化模块 .53 附录 c:24c08 存储模块 .54 附录 d:lcd 显示模块 .59 附录 e:主函数.64 基于单片机的酒精浓度测试仪设计 v 基于单片机的酒精浓度测试仪设计 1 第第 1 1 章章 绪论
11、绪论 1.11.1 酒精测试仪现状和发展趋势酒精测试仪现状和发展趋势 汽车的发明,使世界的文明跨出了一大步。汽车产业的飞速发展使得拥有汽车 已不是遥不可及的梦。现在几乎每家每户都有汽车,汽车让人们的距离不再遥远, 但交通事故却给人们带来了不可挽回的悲剧。交通事故多发的原因有很多,其中能 避免的就是由于酒后驾车引起的交通事故.中国的酒桌文化由来已久,很多人认为 自己虽然喝了酒,但是还是能掌控车辆.但是这是完全错误的,在酒精的作用下,人 的大脑并不能做出正确的判断,容易错误的操控车辆,从而导致悲剧的发生。为了 从根源上遏制由于酒后驾车引发的交通事故的发生,酒精浓度检测仪的诞生便可以 方便快捷的解决
12、这一问题。不仅如此,涉及到酒精浓度检测的食品加工、酿酒等行 业,也广泛运用酒精浓度检测仪来提高生产安全性.由于科技的飞速发展,用于检 测酒精浓度的首要元件-气体传感器越来越符合现代社会的生产需求.用来检测酒 精浓度的传感器正朝着功耗低,功能多,方便,快捷的方向发展。地球上大部分国 家使用的都是呼吸式酒精浓度检测仪,只要驾驶人员对着检测仪呼气,就可以现场 检测出驾驶员体内的酒精浓度,确定他们有没有酒后驾车,以及是否为醉酒开车。 这样就可以大大减少这种可避免的交通事故的发生。 1.21.2 酒精浓度检测仪设计的意义酒精浓度检测仪设计的意义 进入二十一世纪以来,我国的经济发生了突飞猛进的发展,人们的
13、生活水平越 来越高,私家车几乎成为每家每户的必备品。凡事有利有弊,有私家车的人大多生活 质量还不错,这种情况下,聚会,谈生意等场合下饮酒的可能性也相对比较大。由 于驾驶员饮用大量酒精后导致驾驶人员判断力降低,不能很好的操控机动车,从而 导致非常严重的交通事故,家破人亡,惨绝人寰的事情频频发生.为什么喝酒以后 基于单片机的酒精浓度测试仪设计 2 不宜开车呢?那是因为酒后驾车,由于驾驶员体内酒精浓度比较高,会使其反应速 度比较慢,对危险的评估能力比较低,因而不能对危险起到很好的控制,悲剧就此发 生。而酒精浓度检测仪可以检测出驾驶员体内的酒精浓度,从而预防驾驶员酒后驾 车,从而减少因酒后驾车导致的交
14、通事故的发生。因此研究酒精浓度测试仪对这个 社会的安定和谐是有重大意义的。 1.31.3 研究内容研究内容 本论文研究的主要内容如下: (1)气体传感器:本设计使用的是 mq3 气体传感器。主要研究 mq-3 气体传 感器的性能特性,以及怎样将其运用到本设计中去; (2)单片机:选择 stc89c52 单片机,作为控制单元; (3)模数转换:模拟电压信号经放大电路被放大后,通过单片机内部的模数转 换器,将模拟电压信号变成数字电压信号; (4)lcd 显示器:数码管显示器上显示其测得的酒精浓度,并与所设置的浓度阈 值进行对比,若超过阈值,则通过蜂鸣器发出报警; (5)软件方面:通过对单片机的编程
15、,最终实现数据在数码管上的显示 1.41.4 系统总体思路系统总体思路 设计酒精浓度检测仪首先要有一个气体传感器将乙醇的浓度变成电信号。本设 计选择的是 mq-3 型气体传感器,该传感器灵敏度高,价格低,使用方便,是做酒 精浓度检测仪的不二之选。而传感器得到的电信号不能直接用来传输给单片机,因 此得到的信号要经过一定的电路处理,变成 05v 的模拟电压后方能输出.由于这里 得到的是模拟电压,要经过 a/d 转换器才能将其变成数字电压。这里选用 stc89c52 单片机的好处就体现出来了.因为 stc89c52 单片机内部自带的 a/d 转换模块,无需 基于单片机的酒精浓度测试仪设计 3 外接转
16、换器,这样就大大地降低了设计难度和设计成本。模拟信号通过 a/d 转换后 便会输出酒精浓度的数据,把该数据与预先设定的醉酒阈值进行对比。要想实现酒 精浓度值在数码管上显示或报警,就要将该该数据送到单片机的 p1 口,再通过 stc89c52 单片机进行一些软件程序的处理。 第第 2 2 章章 系统总体方案设计系统总体方案设计 2.12.1 总体设计总体设计 图 21 总体设计框图 本论文的第一步就是信号采集模块,即由传感器采集酒精浓度信号.然而采集 到的仅仅是模拟信号,所以要通过一个模数转换器,将原本的模拟信号转变成数字 信号。这就要求单片机内部能进行模数转换。出于这方面的考虑,就选择了 st
17、c89c51 型单片机。这样省去了不少麻烦。单片机作为控制模块与 lcd 显示器相连 接,并通过编程,控制其显示出所测试的乙醇的浓度。同时单片机还与键盘连接, 这样就能改变阈值,使所设计的酒精浓度检测仪适应多种场合需要。另外所测得的 酒精浓度与阈值做比较,当超过预设阈值时,报警器就会发出报警。 基于单片机的酒精浓度测试仪设计 4 2 2。2 2 控制模块方案论证控制模块方案论证 控制模块主要是由单片机来完成.单片机接收酒精浓度传感器送来的模拟数据, 首先要将其变成数字量.然后通过对单片机的一系列编程,使其控制 lcd 显示器显 示酒精浓度值。同时,通过键盘改变阈值,把设置的阈值传送给单片机,这
18、样就能 使测得的酒精浓度与实时阈值相比较,并将比较结果通过单片机传达给声光报警器。 最终实现报警功能。 2 2。3 3 显示模块方案论证显示模块方案论证 显示模块选择 lcd 液晶显示器来完成,因其符合设计的需求,将单片机的 p0 口 与 lcd 相连便可传输经过单片机处理的数据,使酒精浓度值在 lcd 上显示。通过一 系列编程,便能达到设计预想的结果。 基于单片机的酒精浓度测试仪设计 5 第第 3 3 章章 硬件电路设计硬件电路设计 3.13.1 单片机电路设计单片机电路设计 3.13.1。1 1 单片机介绍单片机介绍 stc89c52单片机是宏晶公司生产的stc系列增强型8051单片机,这
19、种单片机几乎 囊括了采集数据和系统控制过程中所有的单元模块。这种单片机的指令代码完全可 以兼容传统的8051单片机,这样既能使元件性能提高,又不用大费周章的重新编写 指令代码。 stc89c52单片机在标准的8051基础上新增了许多实用功能:isp/iap编程方式, 6时钟/机器周期模式,内部扩展ram,双dptr数据指针,扩展p4口,内置看门狗电路, 多种复位方式,省电模式实现超低功耗,pca/pwm功能。相较于传统的8051功能更 加强大。 其引脚图和内部结构如图31所示: 基于单片机的酒精浓度测试仪设计 6 图 3-1 stc89c52 单片机管脚图 .2 stc89c5
20、2stc89c52 的功能特性的功能特性 (1)内有增强型52内核。 (2) 工作电压:3。45。5v。 (3) 内部集成max810专用复位,使复位可靠更高,8级可选复位门槛电压,彻 底省掉外部复位电路。 (4) 低功耗设计 (5) 工作频率:035mhz,相当于普通8051:04205mhz。 (6) 通用i/o口,无需上拉电阻便可作为总线扩展用,但必须加上上拉电阻 才能作为i/o口使用. (8)uart(通用异步串行口)。 (9)具有片上集成512字节ram数据存储器。 (10)具有片内eeprom功能 基于单片机的酒精浓度测试仪设计 7 (11) isp/iap,,无需编程器/仿真器便
21、可通过串口直接下载用户程序,而且 速度非常快。 (12) 8通道,8位逐次逼近式adc。 (13) 捕获/比较单元(pwm/pca) 3 3。1.31.3 stc89c52stc89c52 的原理说明的原理说明 图 32 单片机系统原理图 stc89c52 单片机为 52 内核 8 位单片机,选择这个型号的单片机的一个重大原 因是它内部集成了 8 位多路 a/d 转换模块.如图 32 所示,这个单片机系统原理图 适用于常用检测。该原理图中 stc89c52 占主要地位。mq-3 传感器模块将检测电压 信号通过 aout 这条线送入单片机的 adc7 端口进行处理,然后经过单片机内部的 adc0
22、809 处理后,变成数字电平信号,由单片机的 p0 口送出。p0 口则与 lcd 显示 器相连。通过把数据信号传送给 lcd 使其显示出测得的浓度。这样更加直观的让使 用者知道浓度的具体值。然后比较测得的酒精浓度与阈值大小.如果测得的信号如 果超出阈值,就会发出报警信号.另外上图最下方是一个时钟电路,用于产生时钟信 基于单片机的酒精浓度测试仪设计 8 号。p1。0 与 p1。1 是与外部存储器相连的,这个存储器用于存储设定的阈值,这样 就能更加人性化,使该设计的应用场合更加广泛. 3.23.2 mq3mq3 气体传感器气体传感器 酒精浓度检测的准确性决定于其所用的传感器.而mq-3乙醇气体传感
23、器具有较 高的灵敏度,和较好的稳定性,可以应用用于机动车驾驶人员及其他严禁酒后作业 人员的现场检测,也用于其他场所乙醇蒸汽的检测。其技术特点为: 灵敏度高,酒精浓度的细微变化,都能检测出来 对于外界的干扰具有良好的选择性 具有快速的响应恢复特性 有效工作时间比较长而且比较稳定 具有简单的驱动回路 具有信号输出指示 能够输出两路信号 ttl 输出有效信号为低电平这时可直接接单片机 .1 mq-3mq-3 主要技术指标主要技术指标 表 31 mq3 主要技术指标 基于单片机的酒精浓度测试仪设计 9 .2 mqmq3 3 结构、外形、测试电路结构、外形、测试电路 如图
24、 33 所示,是 mq3 传感器的内部主要结构。因其良好的特性,而且价格便宜,所 以这种传感器被广泛用于单片机学习中。和一般的电子元器件一样,它只需要 5v 电压为其供 电,因此功耗比较低。使用时应注意要预热 20s,这样更能确保其检测的准确性。 图 3-3 mq-3 气敏元件结构图 表 32 mq-3 传感器的主要组成材料表 基于单片机的酒精浓度测试仪设计 10 下图3-4为mq-3乙醇气体传感器的灵敏度曲线.其工作原理是,当酒精气体浓度 发生改变时,mq-3的气敏电阻也随之改变,由图可以看出,该传感器的灵敏度非常 高,因此准确性也比较高。 图 3-4 mq-3 乙醇气体传感器灵敏度曲线 3
25、 3。2 2。3 3 mqmq3 3 传感器调理电路传感器调理电路 图3-5为mq3乙醇气体传感器接入电路原理图.其实物图如图36所示。mq3 测得的信号,经过一定的电路处理后,在输入单片机的a/d转换模块.这样更便于单 基于单片机的酒精浓度测试仪设计 11 片机处理信号。 ab h 1 3 6 4 5 2 qm-n10 vccvccvcc r3 led c1 vcc 2 3 4 1 8 u1a r1 1 2 3 4 p1 rp 产产产产 产产产http:/ 产产产产产产产产http:/ r2 +5v dout aout gnd 图 35 传感器模块原理图 图 3-6 mq-3 传感器模块实物
26、图 本论文所设计的传感器模块为了方便与单片机系统连接组成酒精浓度检测仪。 rp是用来调节阈值的,当lm393的2脚(即测得的酒精浓度信号)比3脚高时,其1脚 就会输出低电平。这时led灯就会亮起。图中r3为限流电阻,c1为滤波电容.而且该 电路有两路信号输出,另一路是mq3检测到的模拟量,通过aout与单片机adc7端 口相连,实现模拟信号送入a/d转换模块。 3.33.3 电源电路电源电路 本设计采用 usb 接口供电,供电电压 基于单片机的酒精浓度测试仪设计 12 为 5v。当 usb 接口与电脑相连时,并不能直接供电,而要通过内含的 pl2303 芯片 的转换电路才能实现对单片机进行程序
27、编写.其电路原理如图所示。 图 3-7 供电及程序下载电路 3 3。4 4 adc0809adc0809 adc0809 是 8 路 8 位逐次逼近式的 a/d 转换器。该器件的主要性能如下: 1。采用单一的+5v 电源逐次逼近式 a/d 转换。实现 a/d 转换所需要的时间极端,仅 为 100s . 2。分辨率为 8 位二进制码,总失调误差为 1lsb。 3。具有 8 通道模拟量选通开关控制,可以直接接入 8 个单端模拟量。 4.转换后的数字信号采用三态逻辑,输出符合 ttl 电平。 adc0809 引脚功能如下: 1.in0-in7:8 个模拟输入通道的输入引脚。 2。d0d7:8 位数字
28、量输出引脚,输出转换结果。 3.start:启动信号输入引脚.a/d 转换由正脉冲启动,其上升沿使 adc0809 复位, 下降沿启动 a/d 转换。 4。ale:地址锁存允许信号,输入。a/b/c3 位地址码被送入内部的地址锁存器 中,以选择模拟输入通道. 基于单片机的酒精浓度测试仪设计 13 5。eoc:转换结束信号,输出.启动信号后经延时,使 eoc 降为低电平,待转换 结束,恢复到高电平。 6。oe:高电平允许输入. 7。clk:时钟信号,典型值为 640khz,范围为 10khz1280khz。 8.(+)和(-):参考电压的正负端输入引脚.其典型值为(+) ref v ref v
29、r v =+5v.(-)=0v。 r v 9。和 gnd:+5v 的电源和地. cc v 图 38 模数转换 in0 用于接收 mq-3 传感器传来的模拟电压信号,in1 为比较器 lm393 的电压信 号。d0-d7 用来输出转换后的数字电压信号 3 3。5 5 lcdlcd 液晶显示模块液晶显示模块 lcd 即液晶显示器,是一种低功耗的显示器,其应用十分广泛。液晶显示器可 根据需要将电极做成各种文字、数字、图形以获得各种形态的显示。 1602 是一款通用的字符型 lcd,由于其价格低,采购容易,方便控制,得到广 泛运用。1602 有 14 和 16 条引脚线两种,区别在于多了 2 条背光电
30、源线。主要功能 有:40 通道点阵 lcd 驱动;有行驱动和列驱动两种选择。 基于单片机的酒精浓度测试仪设计 14 .1 lcd1602lcd1602 显示模块技术参数显示模块技术参数 表 3-3 lcd1602 的主要技术参数 3.53.5。2 2 lcd602lcd602 显示模显示模 块功能块功能 表 34 lcd1602 引脚,符号功能说明 引脚标号状态说明 vss1 接地 vdd2 电源正极(5v) vl3 用于调整液晶显示器的对比度 rs4 输入用于选择用何种寄存器,高电平时选择数据 寄存器、低电平时选择指令寄存器. r/w5 输入读写选择,高电平时进行读操作,低电
31、平 时进行写操作 e6 输入使能端,当 e 端从高电平变成低电平,液 晶模块执行命令 显示容量162 个字符 芯片工作电压4。55.5v 最佳工作电压 5.0v 最佳工作电流 2.0ma 字符尺寸2.954。35mm 基于单片机的酒精浓度测试仪设计 15 d0d7714 三态8 位双向数据 io bla15 输入背光源正极 blb16 输入背光源负极 表 3-5 lcd1602 部分指令说明表 指令码功能 01h 显示清屏,数据指针清 0,所有显示清 0 08h 显示关闭 06h 显示光标移动设置 0ch 显示开及光标设置 02h 显示回车,数据指针清 0 1602 液晶显示器要想得到广泛运用
32、,就需要包含数字,英文字母等常见字符。 要能拥有这些字符,则需有存储器存储这些字符,即有字符发生存储器(cgrom). 如何将这些不同形式的字符存储到液晶显示器内,就需要一种代码。这种代码称为 ascii 码。而且为了不造成混乱,每一个字符都有自己的专属代码,比如数字 0 的 代码是 30h,显示时模块把地址 30h 中的点阵字符图形显示出来,我们就能看到数字 “1” ,具体寄存器的选择控制表 3-11 有操作说明。 基于单片机的酒精浓度测试仪设计 16 通过对 ascii 码赋值,实现对 lcd 显示器的操作.当然也可以直接用字符型常 量或者变量赋值 表 3-6 lcd1602 寄存器选择控
33、制表 单片机控制 lcd 的接口电路如图 39 所示。其中 j2 的 3 脚为背光引脚,与 r9 和 r10 电阻连接主要为了调节背光亮度,使其不至于出现鬼影。 ,单片机对 lcd 显示 器的控制主要通过 j2 的 4、5、6 引脚,这三个引脚为液晶显示器的 rs、e/w 和 e 控制引脚与单片机的 p2。5,p2。6,p2.7 相连,.j2 的 7-14 引脚与单片机的 p0.0- p0。7 相连,用于传输数据. 图 3-9 lcd 与单片机接口电路 基于单片机的酒精浓度测试仪设计 17 3.63.6 发光二极管显示报警电路发光二极管显示报警电路 图 3-10 声光报警电路 当经过 a/d
34、转换后的数字信号值比预设的阈值大时,单片机的 p3.3 口输出低电 平。而 p3。3 口语声光报警电路相连,当其为低电平时,三级管 q1 就会导通,那么 二极管就会发光,而且蜂鸣器也会发出蜂鸣声。当 p3.3 口输出高电平时,声光报 警电路将不能导通,不会有报警现象。 3.73.7 阈值存储电路阈值存储电路 当对传感器模块的 rp 进行调节时,所设立的阈值会相应的做出改变。这个值 必须经过存储,才能用于比较大小.所以必须要有一个存储器。单片机通过 p1。0 和 p1.1 口对 eeprom 进行编程,eeprom 将新的阈值存储到芯片中,从而实现阈值的 重新设置。芯片 at24c04 的 sc
35、l 和 sda 分别与单片机的 p1.0 和 p1。1 相连。 基于单片机的酒精浓度测试仪设计 18 图 3-11 eeprom 存储电路 3 3。8 8 系统硬件设计原理图分析系统硬件设计原理图分析 图 3-12 系统硬件设计原理图 上图中 usb 接口与电脑相连,与单片机的 rxd0 口和 txd 口相连,给单片机提 供 5v 电源。当按下 k1 键时,电路接通,指示灯亮起,说明有供电。eeprom 存储电 路的 scl 口和 sda 口分别与单片机的 p1.0 和 p1.1 相连,用于存储新设定的阈值。 下面要解决的问题就是怎样把传感器测得的信号传给单片机了。传感器的两个接口 aout
36、和 dout 分别与单片机的 p1。7 和 p1。4 相连,用来给单片机传输测得的模拟 电压。经过单片机内部的模数转换功能,将模拟变压变成数字电压,并将其传送给 lcd 显示器.单片机通过 p2.7,p2。6,p2.5 与 lcd 显示器的 4,5,6 引脚相连,控制 其工作。714 引脚分别与单片机的 p0.0-p0.7 相连,用于传输数据。 基于单片机的酒精浓度测试仪设计 19 第第 4 4 章软件系统的设计与实现章软件系统的设计与实现 4 4。1 1 主程序设计主程序设计 图 41 主程序流程图 程序设计的第一步便是使系统初始化,因为本设计可以自行设定阈值,所 基于单片机的酒精浓度测试仪
37、设计 20 以只能通过中断来设定需要的阈值。如果没有中断即没有设置阈值,那么就用之前 的阈值。如果有外部中断,那么就启动设定阈值操作.另一方面,气体传感器检测到 酒精后,要经过 a/d 转换模块,然后经过一系列的数据处理,得到酒精浓度值。这 个值一方面要在 lcd 上显示出来,另一方面要与阈值进行对比,若大于阈值,就要 启动声光报警器,若小于阈值就不报警。程序的主要难点就在怎样得到酒精浓度值 上面。而这项操作主要在单片机内完成的。所以本论文设计的酒精浓度测试仪,功 耗低,速度快,结果准确。 4.24.2 分部分软件设计分部分软件设计 4.24.2。1 1 adcadc 程序流程图程序流程图 a
38、dc 程序流程图 图 4-2 adc 程序流程图 基于单片机的酒精浓度测试仪设计 21 因为 a/d 转换必须依靠下降沿触发才能启动,所以编程时要注意做一定的延时, 通常为 10ms,再进入下一步操作。然后才进行 a/d 转换,如果转换完成,就会得到 数字电压,然后经过调用数据处理程序就能够得到所测得的酒精浓度值。如果转换 未完成,则继续转换。 4 4。2.22.2 lcdlcd 程序流程图程序流程图 图 4-3 lcd 控制流程图 在对系统进行初始化后,如果检测到该酒精浓度检测仪有外部中断,那么就可 以重新设置酒精浓度阈值。这个阈值不仅要设置,还要储存起来,以便与以后要检 测的酒精浓度进行比
39、较。如果没有外部中断响应,那么测得的酒精浓度值还是与之 前的阈值比较。 基于单片机的酒精浓度测试仪设计 22 第第 5 5 章章 系统的调试及实验结果系统的调试及实验结果 5 5。1 1 调试步骤调试步骤 .1 按键修改酒精阈值程序按键修改酒精阈值程序 设置酒精浓度阈值的程序的思路就是,如何让单片机知道使用者正在设置阈值。 这就要求检测仪要不间断地检测。一旦发现有按键被按下,就知道要修改阈值。并 且按照按键按下的次数修改.检测到的酒精浓度应与最新设置的阈值相比较,一旦 比阈值大,蜂鸣器就要工作而且指示灯要亮起。 5 5。1.21.2 模数转换测试模数转换测试 a/d 转换模块首
40、先要初始化,然后将得到的关于酒精浓度的模拟量经过一系列处 理,变成数字量。而且要将其通过单片机传送到液晶显示上面.同时得到的数字量 还要与预先设立的阈值相比较。 基于单片机的酒精浓度测试仪设计 23 5.15.1。3 3 液晶显示程序设计液晶显示程序设计 液晶显示器程序首先是要将其初始化,要实现其能接收单片机传来的数据。 基于单片机的酒精浓度测试仪设计 24 基于单片机的酒精浓度测试仪设计 25 基于单片机的酒精浓度测试仪设计 26 5.15.1。4 4 声光报警测试声光报警测试 当测得酒精浓度超过阀值时,单片机的 p3.3 口就会变成低电平,就会激发蜂鸣 器和指示灯工作. 5 5。1.51.
41、5 整体功能调试程序整体功能调试程序 本设计分成几个部分共同完成操作,然后分别对不同的模块进行调试,最后再 进行整合。再将所有的程序放到 keil 编译器里面进行编译,编译成功后,便会生成 hex 文件,再将改程序烧录到单片机中,然后上电便可以工作了。上电以后,所设计 的酒精浓度测试仪便会按照所设置的初始化程序工作,酒精浓度的阈值也是当初设 定的,如果酒精浓度超过该阈值,测试仪就会发出报警。如果设定酒精浓度阈值的 按键被使用者按下,则酒精浓度的阈值就会被重新设定,并被保存下来,所测得的 酒精浓度将与重新设定的阈值进行比较,如果超过阈值,就会报警,而且所测得的 酒精浓度值也会在液晶显示器上显示。
42、 基于单片机的酒精浓度测试仪设计 27 5.25.2 实验结果实验结果 本设计是基于单片机的酒精浓度测试仪,采用模块化程序设计思想,相对来 说 结构简单,而且使用起来方便。 ,通过硬件电路的设计和软件方面的调试,最终实现 了酒精浓度的检测。其实验结果基本能够满足设计要求.而且通过按键,可以修 改门限值,当检测到的酒精浓度超出所设定的阈值时,就会显示所测得的酒精浓度 值,而且系统会自动报警 此次酒精测试仪的设计,在软件方面参考了一些网上的资料,在硬件方面也找 了许多书本作为参考。选用 stc89c52 单片机的主要原因是其内部含有 a/d 转换功 能,这样就比较方便,而且操作起来也相对简单.刚开
43、始设计电路时,想直接把阀值 设置为定值,直接烧进单片机的程序里,但是后来发现这样不能应用于实际,那研究 也就失去了原本的意义。于是增加了 at24c02 用来存储阈值。并通过两个电位键来 调整阈值的大小。 本次毕业设计,让我受益匪浅。我熟悉了 protel 的操作,keil 的运用,c 语言 的知识以及单片机的使用.我相信将所学到的知识用到以后的工作中去,一定会增 加自己的砝码。在这期间我发现的自身的不足,也促使我在将来的学习工作中逐渐 改善,通过本次学习实践,我的知识能力得到了提高,也增强了我学习新知识的能 力。 基于单片机的酒精浓度测试仪设计 28 结结 论论 本次设计的总的方向的把握不是
44、很难,思路很清晰。要检测浓度,首先要有传 感器,有了传感器得到模拟信号就要有模数转换。变成数字信号后,要让使用者知 道浓度具体值的大小,,那就需要一个显示器.同时还要有一个评判是否酒驾的阈值, 要想更具实用性,阈值得能随意改动,就需要一个存储阈值的存储器。而且需要一 个比较器,比较测得的浓度和阈值.比较结果通过报警器是否工作来实现.大体需要 哪些东西心里有数了,但是元器件的选择也是个难点。首先要准确,其次要方便操 作,同时还要功耗低。在具体电路连接时也要考虑其可操作性.电路搭建好了就是 编程,这又是一大难点。在参考了好多相关资料和老师的帮助下,终于如愿得到了 预期的效果。总的来说,通过这次设计
45、,发现自己还有很多不足,还有很多地方需 要学习。也使我学到了很多知识。每个新知识的学习都会在以后的道路上给自己增 添底气。 基于单片机的酒精浓度测试仪设计 29 致致 谢谢 首先非常感谢老师能在百忙之中抽空指导我的论文,在老师的帮助下,我由原 来对单片机不大了解的人,渐渐熟悉起来.原本也从未用过 protel,在老师的帮助下 也渐渐知道怎么用,学到了一样新的技能.我对 c 语言的知识已经忘得差不多了,在 老师的帮助下也完成了软件方面的设计。要不是老师给予我的帮助,我可能根本无 法完成这次课程设计。衷心感谢老师。 基于单片机的酒精浓度测试仪设计 30 参参 考考 文文 献献 1 肖金球,冯翼。增
46、强型 51 单片机与仿真技术m.北京:清华大学出版社, 2011,22318。 2 肖金球。单片机原理与接口技术m。北京:清华大学出版社,2004,17128. 3 周鸿武。基于单片机的酒精浓度检测仪设计j.制造业自动化,2012,02:6 8. 4 赵书红,张健健.基于单片机的酒精气体浓度测试仪的设计与制作j.电子世界, 2013,20:110. 5 李亚梅,郝雪明,马艳玲。基于单总线技术的智能测温报警仪研制。晋中学院学 报n,2008,25. 基于单片机的酒精浓度测试仪设计 31 6 康华光.电子技术基础模拟部分(第五版)m.北京:高等教育出版社, 2006:123-340。 7 康华光。
47、电子技术基础数字部分(第五版) m.北京:高等教育出版社, 2006:10256。 8 纪宗南。单片机外围器件使用手册-输入通道器件分册m.北京:北京航空航天大 学出版 社,2005:121-126. 9 贾伯年。传感器技术m.南京:东南大学出版社,2000:55-60。 10 孙传友。温控系统原理与设计m. 北京:北京航空航天大学出版社, 2002:15-27. 11 何希才。传感器及其应用m。北京:国防工业出版社,2001:3645。 12 郑学坚。微型计算机原理及应用m.北京:清华大学出版社,2006:332 351。 基于单片机的酒精浓度测试仪设计 32 附录附录 a a 译文译文 s
48、tc89c51rc/stc89c51rc/ rd+rd+系列系列 mcumcu 8。2 uart 操作模式 通过在 sfr scon 中设置 sm0 和 sm1 可以使串口(uart)在 4 种不同模式下工作.其 中模式 1,模式 2 和模式 3 是异步通信.而在模式 0 下,uart 仅作为一个简单的移位 寄存器。 8。2.1 模式 0:8 位移位寄存器 当写 0s 到 scon 的 sm1 和 sm0 时,就会选择模式 0,使串口进入 8 位移位寄存 器模式.通过 rxd,串行数据进入和输出。 txd 口输出移位时钟。8 个数据位最先用 lsb 发送/接收数据。波特率固定为 1/12 系统
49、时钟周期默认值。如果相同的情况在 stc-isp 中写/编程,波特率将为 1/6 系统时钟周期。 传输是通过使用 sbuf 作为目标寄存器的指令开始的。 “写入 sbuf”信号也以为 着加一个“1到发送移位寄存器的第 9 位,并通知 tx 控制模块开始传输。内部定 时是这样的,一个完整的系统时钟周期从“写 sbuf”开始到激活发送结束。 send 把移位寄存器的输出值发送到 p3.0 的选择输出口,同时将移位时钟发送到 p3。1 的选择输出口.在移位时钟的下降沿,移位寄存器内的数据将右移. 当数据位正好把“0”从左边移到右边。当数据的 msb 字节在移位寄存器中时 被存到第 9 位的“1的正好
50、位于 msb 的左侧,并且左边的所有位置都包含零.这种 情况下标志着 tx 控制模块做最后一次移位,然后解除 send 并设置 ti。这两种行为 都是在“写 sbuf” 后发生的。 当 ren = 1 和 ri = 0 时,开始接收。 基于单片机的酒精浓度测试仪设计 33 在那之后,rx 控制单元写 11111110 到负责接收的移位寄存器,并在下一时钟激活 接收。接收使能移位时钟到 p3。1 的选择输出端。在接收被激活时,接收移位寄存 器的内容向左移一个位置。从右侧取到的值就是 p3。0 在移位时钟的上升沿的取样 值. 当把右边的数据向左侧移一位,当最初加载到移位寄存器最右边位置的“0” 移
51、到最左边的位置,标志着 rx 控制区将做最后一次移位并加载 sbuf。然后 receive 被清除,ri 被设置. 8.2。2 模式 1:8 位可变波特率的 uart 在模式 1 情况下,stc89xx 串行端口可作为一个 8 位可变波特率的 uart。或者 是 “通用异步接收器/发射器。这是一个接收和发送一系列数据的设备,每个数据 字符接收和发送串行数据之前有一个起始位(低) ,后面是一个停止位(高) 。奇偶 校验位的最后一个数据位和停止位之间有时会插入相同位。uart 的一个基本操作就 是并行到串行输出数据的转换和串行到并行输入数据的转换。 在模式 1 情况下,10 比特通过 txd 传送
52、或通过 rxd 接收。该数据帧包括一个起 始位(0),8 个数据位(lsb 在前)以及一个停止位(总是 1) 。对于接收操作,停止 位进入在 sfr scon 中的 rb8。波特率由定时器 1 或定时器 2 的溢出率决定。 在模式 1 下的波特率 =(2smod / 32)定时器 1 溢出率 或=(2smod / 16)定时器 2 溢出率 传输就是通过使用 sbuf 作为目标寄存器的指令开始。在“写 sbuf”信号也加载 一个“1”进入发送移位寄存器的 9th 位时,标志着正在发送请求 tx 控制单元.实 际上发送过程发生在 16 位计数器的下次翻转。因此,位时间与 16 计数器是同步的, 而
53、不是与“写入 sbuf”信号同步. 基于单片机的酒精浓度测试仪设计 34 激活 send 以后开始传输,这使 txd 是起始位。一比特时间后,data 被激活, 这使发送移位寄存器输出到 txd。第一个移位脉冲发生在那之后。 当数据位移到右边,零是从左边移入。当数据字节的 msb 在移位寄存器的输出 位置,则 1 就被最初被植入 msb 左边的第 9 位,并且所有包含零的都在左侧位置。 这种情况标志 tx 控制单元将做最后一次移位,然后解除 send 并给 ti 置位.这发生 在第 10 除以 16 翻转在“写 sbuf”之后。 通过检测 1 到 0 的转变开始接收 rxd。为了这个目的,rx
54、d 被既定波特率的 16 倍速度采样。当检测到转换时,分逐 16 计数器立即复位,同时将 1ffh 写入输入移 位寄存器。对照其循环翻转重新划分 16 位计数器。 16 位计数器将每个位时间分成 16 份。在每个位时间的第 7,第 8 和第 9 计数 状态时,位检测样品 rxd 的值.接受的值是被认为在至少 2/3 的采样的值.这样做是 为了抑制噪声。为了防止错误位,如果在第一个位时间接受的值不是 0,接收电路就 会复位,单元继续寻找另一个 1 到 0 的转变.这是为了防止错误的起始位。如果起 始位有效,则移入输入移位寄存器,继续接受该帧的其余部分。 当数据位“1”从右边移出到左侧。当起始位到
55、达移位寄存器的最左边的位置, 这是在模式 1 下的 9 位寄存器),标志着 rx 控制区将做最后一次移位,载入 sbuf 和 rb8,并且设置 ri。该信号加载 sbuf 和 rb8 并设置如果 ri 生成,且仅当以下条 件满足时产生最后一个移位脉冲的时间。 1)ri = 0 而且 2)无论是 sm2 = 0,或 sm2 = 0 和接收到的停止位= 1 如果任这两个条件不满足,接收到的数据帧都会丢失.如果两个条件都满足时, 停止位进入 rb8,而 8 位数据则进入 sbuf,并且 ri 被激活。此时,在上述条件是 基于单片机的酒精浓度测试仪设计 35 否得到满足,该单元继续寻找一个 1 到 0
56、 的 rxd 过渡。 8.2。3 模式 2:9 位有固定波特率的 uart 当 sm1 = 1 和 sm0 = 0 时,串行端口在模式 2 下作为一个 9 位固定波特率的 uart。 11 位通过 txd 传送或通过 rxd 接收.数据帧包括一个起始位(0),8 个数据 位,一个可编程的第 9 位数据和一个停止位(1) 。发送时,第 9 位来自 scon 中的 tb8. 在接收时,第 9 个数据位进入 scon 的 rb8。波特率可编程为 1/32 或 1/64 的系统时 钟周期。 模式 2 下的波特率 =(2smod / 64)sysclk 传输是通过使用 sbuf 作为目标寄存器的指令开始
57、。 “写 sbuf”信号也加载 tb8 到移位寄存器的第 9 位,并且告诉 tx 控制单元,请求发送。实际上发送过程发生在 按 16 划分的计数器的下次翻转。因此,位时间是与 16 计数器同步划分的,而不是 与“写入 sbuf”信号. 当 send 被激活,传输开始。这使 txd 在一比特后开始.data 被激活,使移位寄 存器向 txd 输出比特。第一移位脉冲在那之后发生。第一个移位时钟的“1” (停止 位)插入移位寄存器的第 9 位。此后,只有“0被计时了。当数据位转移到右边, “0”从左边移入。当 tb 的数据字节在移位寄存器的输出位置时,停止位刚好在 tb8 的左边,并且所有的位置都在
58、包含“0”的左边.这种情况标志 tx 控制单元将做 最后一次移位,然后停用 send 并置位 ti。这发生在“写 sbuf”的 16 次翻转中的 第 11 次。 在 rxd 检测 1 到 0 的转变开始接收.为了这个目的,rxd 被的任何波特率 16 倍 采样.无论波特率是否确定。当检测到转换时,分逐 16 计数器立即复位,同时将 1ffh 写入输入移位寄存器. 基于单片机的酒精浓度测试仪设计 36 在每个位时间的第 7,第 8 和第 9 计数状态时,都要对 rxd 的值进行位检测。只 有 2/3 的采样值被接受。这样做是为了抑制噪声。为了防止错误位,如果在第一个 位时间接受的值不是 0,接收
59、电路复位,单元继续寻找另一个 1 到 0 的转变。如果 起始位有效,则移入输入移位寄存器,继续接受该帧的其余部分。 当数据位从右边进来,“1移出到左侧.当起始位到达移位寄存器的最左边的位置, (这是一个模式 2 和 3 下的 9 位寄存器),它标志着 rx 控制区将做最后一次移位, 加载 sbuf 和 rb8,并且设置 ri 。该信号加载 sbuf 和 rb8 并设置如果 ri 生成,且 仅当以下条件满足时产生最后一个移位脉冲时间: 1)ri = 0 而且 2)无论是 sm2 = 0,或接收到的第 9 位数据= 1 如果这两个条件任一个不满足,接收到的数据帧都会丢失。如果两个条件都满 足时,停
60、止位进入 rb8,前 8 位数据则进入 sbuf,并且 ri 被激活。这时,上述条 件是否被满足,该单元继续寻找 1 至 0 的 rxd 输入转换. 需要注意的是接收到的停止位的值与 sbuf,rb8 或 ri 无关. 8。2。4 模式 3:9 位可变波特率的 uart 模式 3,9 位可变波特率的 uart,除了波特率是可变的,其他和模式 2 是一样。 模式 3 下的波特率=(2smod / 32)x 定时器 1overflow 率 或=(2smod / 16)定时器 2 溢出率 在四种模式中,传输是通过使用 sbuf 作为目标寄存器的指令开始.当 ri = 0 和 ren = 1 时,在模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论