当前位置:首页 >> 信息与通信 >>

单片机的酒精测试仪


武汉工程大学邮电与信息工程学院

毕业设计(论文)

基于 51 单片机的酒精测试仪设计

学生姓名 学 号

专业班级 指导教师

2011 年 5 月

武汉工程大学邮电与信息工程学院毕业设计(论文)



r />
近年来,随着我国经济的发展,人民的生活水平提高,越来越多的人有了自 己的私家车,而酒后驾车造成的交通事故也频频发生。 如今国家法律出台道路交 通安全法规定,饮酒后或者醉酒驾驶机动车发生重大交通事故,构成犯罪的,依 法追究刑事责任,并由公安机关交通管理部门吊销机动车驾驶证,终生不得重新 取得机动车驾驶证。 鉴于人们对于醉酒驾驶的逐渐重视,酒精测试课题便引起了广泛的关注。酒 后驾车引起的交通事故是由于司机的过量饮酒造成人体内酒精浓度过高,麻痹神 经,造成大脑反应迟缓,肢体不受控制等症状。为本课题研究的是一种以气敏传 感器和单片机为主,监测空气酒精浓度,并具有 LCD 显示功能的空气酒精浓度监 测仪。此需要设计一智能仪器能够监测驾驶员体内酒精含量。本课题研究的是一 种以气敏传感器和单片机为主,监测空气酒精浓度,并具有声报警功能及 LCD 显 示功能的空气酒精浓度监测仪。其可监测出空气环境中和呼气中酒精浓度值,并 根据不同的环境设定不同的阀值,对超过的阀值进行声报警,并显示阀值.来提 示危害。 从而达到以下目的: (1)有利于社会公共交通安全; (2)提高人们法律意识; (3)使之便捷、安全、准确、高效,便于提高家庭酒精测试的普及化。 本作品是基于单片机控制 ADC0809 对 TGS822 酒精浓度取样来反映人体血液 酒精浓度;以及对 DS18B20 获取温度 关键词:ADC0809;TGS822; DS18B20;单片机

武汉工程大学邮电与信息工程学院毕业设计(论文)

Abstract In recent years, as China's economic development, people's living standards improve, more and more people have their own private cars and traffic accidents caused by drunk driving is also frequent. Today, the introduction of national law the provisions of the Road Traffic Safety Law, motor vehicle after drinking or drunk driving major traffic accidents, crime is constituted, criminal responsibility shall be investigated by the traffic control department of public security organ driving license revoked for life may not regain a driving license. Given people's increasing emphasis on the drink driving, alcohol test subject has aroused widespread concern. Drunk driving accidents caused by excessive drinking is caused because the driver's alcohol level is too high the body, paralysis of nerves, resulting in slow response to the brain, body out of control and other symptoms. Based research is a kind of gas sensor and microcontroller-based, monitoring of air alcohol concentration , and with LCD display monitor air alcohol concentration. The need to design an intelligent instruments to monitor the driver's alcohol content. This research is a kind of gas sensor and microcontroller-based, monitoring of air alcohol concentration , and with sound alarm and LCD display monitors the air alcohol concentration. The environment can be monitored from the air and breath alcohol concentration, and according to different environments set different threshold than the threshold of the acoustic alarm, and display threshold. To prompt the hazard. So as to achieve the following purposes: (1) in favor of public transport safety; (2) to raise awareness of legal consciousness; (3) to make it convenient, safe, accurate, efficient, easy to increase the popularity of home alcohol test. This work is based on the TGS822 ADC0809 microcontroller sampling to reflect the body alcohol concentration blood alcohol concentration; and to obtain the temperature DS18B20 Key words: ADC0809; TGS822; DS18B20; MCU

武汉工程大学邮电与信息工程学院毕业设计(论文)





第 1 章 绪论 ......................................................................................................................... 1 1.1 精测试仪现状和发展趋势............................................................................ 1 1.2 研究内容 ........................................................................................................ 2 第 2 章 总体设计 ................................................................................................................. 3 2.1 本课题的设计任务及要求............................................................................ 3 2.1.1 设计任务 ................................................................................................ 3 2.1.2 设计要求 ................................................................................................ 3 2.2 系统整机原理图分析.................................................................................... 4 第 3 章 硬件设计 ................................................................................................................. 5 3.1 单片机模块.................................................................................................... 5 3.2 ADC0809 资料 ............................................................................................... 7 3.3 酒精传感器模块 ............................................................................................ 9 3.3.1 传感器性能分析 ..................................................................................... 9 3.3.2 呼出酒精气体浓度与血液酒精浓度关系 ........................................... 12 3.4 LCD 模块 ................................................................................................... 13 第 4 章 系统软件 ............................................................................................................... 15 4.1 整机系统流程图 .......................................................................................... 16 4.1.1ADC 程序流程图 ................................................................................... 16 4.1.2 LCD 程序流程图 .................................................................................. 17 第 5 章 总结与展望 ........................................................................................................... 18 参考文献 ............................................................................................................................. 19 致谢 ..................................................................................................................................... 20 附录 1 酒精测试仪程序 .................................................................................................... 21

1

武汉工程大学邮电与信息工程学院毕业设计(论文)

第 1 章 绪论
1.1 精测试仪现状和发展趋势
喝酒后,呼出的气体会有酒味,表情行为会有反常。远古时代人们利用鼻子 作为传感器,进行简单的呼出气体酒精测量。19 世纪末出现了用体液对酒精进行 定量分析。1927 年,有科学家建议使用呼出气体做酒精浓度分析。用 足球胆收集 呼出气体后,通过硫酸和重铬酸钾的混合溶液,溶液的颜色会发生蓝一绿一黄的 变化,同已知酒精浓度的标准试剂色管比较,就得到相应的 BAC。现在,肺泡气 中酒精的测量技术有了很大的进步,有先进微处理器的酒精测试仪已被商品化。 越来越多的国家开始禁止酒后驾车。精确的呼出气体酒精测试和传统的法医血液 酒精分析相比有许多优点,例如,进行无毒的采样,能进行现场处理,这样为交 警节省了时间,使交通控制更高效,能避免运输和贮存有艾滋病病毒和肝炎病毒 的血样。 由于最早使用 BAC 极限值来分辨酒后驾车 ,当呼出气体酒精浓度测量用于 交通执法时,情况就变得错综复杂,要把所测量的呼出气体酒精浓度换算成血液 酒精浓度 。一般认为,2100:1 呼出气体中所含的酒精和 11 血液中所含的酒精量 相等 。对于把结果转化成 BAC 的呼出气体酒精测量仪,呼气/血液酒精转换系 数是决定测试精度的重要因素。在美国、加拿大、澳大利亚,定量分析呼出气体 酒精测试仪已用了十多年,转化系数为 2100:1。在美国许多州,0.10~2101BAC 为饮酒驾驶处罚极限,2100:1 的 BAC/BAC 的转化系数直接体现在立法条例中, 如果不这样 ,立法确定大于等于 0.47m~1 为犯罪极限,还得强调 2100:1 的转化 系数。假设有这种可能,BAC 是合法的,而 BAC 不合法 ,反之亦然。立法中存 在 的这种进退两难的问题,至今没有很好地解决 。 BAC 和 BAC 内在转化如下所述: BAC=BAC× BAC/BAC 转化系数

1

武汉工程大学邮电与信息工程学院毕业设计(论文)

1.2 研究内容
TGS822 对酒精浓度的变化,其阻值产生相应的变化,然后通过取样电阻分压 的变化表现出来;人体血液酒精浓度的不同,其呼出的气体中酒精浓度也不同。 通过 TGS822 对呼出气体中酒精浓度的反应以取样电压的形式送入到 ADC0809, 进行 A/D 转换后并将转换的数据送入单片机进行分析处理, 并判断是否醉酒驾车, 再通过液晶板显示出来。 DS18B20 其自身的温度传感器所产生的温度数字数据存入其自身的存储器, 单片机对其控制读出温度数据,然后经过计算处理,将当前环境温度由液晶板输 出。

2

武汉工程大学邮电与信息工程学院毕业设计(论文)

第 2 章 总体设计
2.1 本课题的设计任务及要求
2.1.1 设计任务 设计并制作酒精测试仪,其组成如图 2.1 所示。TGS822 对酒精浓度的变化, 其阻值产生相应的变化,然后通过取样电阻分压的变化表现出来;人体血液酒精 浓度的不同, 其呼出的气体中酒精浓度也不同。 通过 TGS822 对呼出气体中酒精浓 度的反应以取样电压的形式送入到 ADC0809,进行 A/D 转换后并将转换的数据送 入单片机进行分析处理,并判断是否醉酒驾车,再通过液晶板显示出来。 DS18B20 其自身的温度传感器所产生的温度数字数据存入其自身的存储器, 单片机对其控制读出温度数据,然后经过计算处理,将当前环境温度由液晶板输 出。

传 感 器

模拟输出

模 数 转 换

数字输出

单 片 机

控制输出

LCD 显示 输出

图 2.1 系统设计方框图 2.1.2 设计要求 (1)传感器 TGS822 的电压模拟输出范围为 0-5V; (2)模数转换芯片 ADC0809 采样电压范围为 0-5V,分辨率为 8 位,采样精 度为 5/256V,达到 256 个量化级的数字电压,其工作频率为 1MHz; (3)单片机 AT89C52 工作频率为 6 MHz;

3

武汉工程大学邮电与信息工程学院毕业设计(论文)

(4)LCD 显示器用 50K 的可调电阻调节使其清晰显示,消除“鬼影” 。

2.2 系统整机原理图分析
如图 2.2 系统整机原理图,本系统工作原理如下:单片机的晶振为 6MHz,可 以直接通过 ALE 口输出 1 MHz 为 ADC0809 作为工作时钟而不需要进行分频,然 后通过单片机的 P2.0、 P3.7 分别控制 ADC0809 的 ALE 和 START 端口进行模数转 换;通过 P2.2、P2.3、P2.5 分别控制 ADDB、ADDC、ADDA 端口进行选择模拟 数据输入口; 通过 P0 口进行 ADC0809 数据输出。 TGS822 的采样电压由 ADC0809 的 IN0 口输入, 通过转换后由其 D0-D7 输出到单片机的 P0 口, 然后通过传感器的 特性公式计算由 P1 口将数据通过 LCD 的 DB0-DB7 输出。

4

武汉工程大学邮电与信息工程学院毕业设计(论文)

第 3 章 系统硬件设计
3.1 系统硬件设计原理图分析
本硬件由五部分组成:单片机模块,模数转换模块,酒精传感器模块,温度 传感模块。其系统硬件设计原理图如图 3.2 所示,其整机工作原理如下,本系统由 单片机 AT89C2 控制, 其直接控制三个模块: 数转换模块将酒精传感器采集到模拟 电压信号转换成输送到单片机控制处理,温度传感器 DS18B20 可以将采集到的温 度信号直接以数字信号的形式传到单片机,LCD 显示模块可以将经过单片机处理 过的酒精气体浓度和温度的具体量化值显示。

图 3.1 系统硬件设计原理图

3.2 单片机模块
单片机的选择 AT89S52是低功耗、 高性能、 采用CMOS工艺的8位单片机, 其片内具有8KB 的 可在线编程的Flash 存储器。该单片机采用了ATMEL公司的高密度、非易失性存

5

武汉工程大学邮电与信息工程学院毕业设计(论文)

储器技术,与工业标准型80C51单片机的指令系统和引脚完全兼容;片内的Flash 存储器可在线重新编程,或者使用通用的非易失性存储器编程;通用的8位CPU与 在线可编程Flash集成在一块芯片上,从而使AT89S52 功能更加完善,应用更加灵 活;具有较高的性能价格比,使其在嵌入式控制系统中有着广泛的应用前景。 MCS 单片机都采用 40 引脚的双列直插封装方式。下图为引脚排列图, 40 条 引脚说明如下: 1.主电源引脚 Vss 和 Vcc (1)Vss 接地 (2)Vcc 正常操作时为+5 伏电源 2.外接晶振引脚 XTAL1 和 XTAL2 (1)XTAL1 内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当 采用外部振荡器时,此引脚接地。 (2)XTAL2 内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采 用外部振荡器时,此引脚接外部振荡源。 3.控制或与其它电源复用引脚 RST/VPD,ALE/和/Vpp (1) RST/VPD 当振荡器运行时, 在此引脚上出现两个机器周期的高电平 (由 低到高跳变) ,将使单片机复位在 Vcc 掉电期间,此引脚可接下图 8051 引脚排列 图上备用电源,由 VPD 向内部提供备用电源,以保持内部 RAM 中的数据。 (2) ALE/正常操作时为 ALE 功能(允许地址锁存)提供把地址的低字节锁 存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的)周期性地发出正脉冲 信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问 外部数据存储器时,将跳过一个 ALE 脉冲,ALE 端可以驱动(吸收或输出电流) 八个 LSTTL 电路。对于 EPROM 型单片机,在 EPROM 编程期间,此引脚接收编 程脉冲(功能) 。 (3)外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据) 期间, 在每个机器周期内两次有效, 同样可以驱动八 LSTTL 输入。 (4)/Vpp 、/Vpp 为内部程序存储器和外部程序存储器选择端。当 /Vpp 为 高电平时,访问内部程序存储器,当/Vpp 为低电平时,则访问外部程序存储器。 对于 EPROM 型单片机,在 EPROM 编程期间,此引脚上加 21 伏 EPROM 编 程电源(Vpp) 。

6

武汉工程大学邮电与信息工程学院毕业设计(论文)

4、输入/输出引脚 P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。 (1)P0 口(P0.0 - P0.7)是一个 8 位漏极开路型双向 I/O 口,在访问外部存 储器时,它是分时传送的低字节地址和数据总线,P0 口能以吸收电流的方式驱动 八个 LSTTL 负载。 (2)P1 口(P1.0 - P1.7)是一个带有内部提升电阻的 8 位准双向 I/O 口。能 驱动(吸收或输出电流)四个 LSTTL 负载。 (3)P2 口(P2.0 - P2.7)是一个带有内部提升电阻的 8 位准双向 I/O 口,在 访问外部存储器时,它输出高 8 位地址。P2 口可以驱动(吸收或输出电流)四个 LSTTL 负载。 (4)P3 口(P3.0 - P3.7)是一个带有内部提升电阻的 8 位准双向 I/O 口。能 驱动(吸收或输出电流)四个 LSTTL 负载。

3.3 模数转换器模块
ADC0809 性能的介绍 模数转换电路的功能是将连续变化的模拟量转换为离散的数字量, 是架起模拟 系统跟数字系统之间连接的桥梁。对于本系统而言,就是用于快速、高精度地对 输入的酒精浓度信号进行采样编码,将其转换成单片机所能够处理的数字量。模 数转换电路是本系统的关键部分,其性能的好坏直接影响整个系统的质量。根据 A/D 转换器的工作原理可将A/D 转换器分成两大类:一类是直接型A/D转换器; 另一类是间接型A/D 转换器。在直接型A/D 转换器中,输入的模拟电压被直接转 换成数字代码,不经任何中间变量。在间接型A/D 转换器中,首先把输入的模拟 电压转换成某种中间变量(时间、频率、脉冲宽度等等) ,然后再把这个中间变量 转换为数字代码输出。 1.主要特性 (1)8 路 8 位 A/D 转换器,即分辨率 8 位。 (2)具有转换起停控制端。 (3)转换时间为 100μ s。 (4)单个+5V 电源供电。 (5)模拟输入电压范围 0~+5V,不需零点和满刻度校准。 (6)工作温度范围为-40~+85 摄氏度。 (7)低功耗,约 15mW。

7

武汉工程大学邮电与信息工程学院毕业设计(论文)

2.内部结构 ADC0809 由 4 部分逻辑结构构成,如图 3.3 所示。 ADC0809 是 CMOS 单片型逐次逼近式 A/D 转换器, 它由 8 路模拟开关、 地址 锁存与译码器、比较器、8 位开关树型 D/A 转换器、逐次逼近寄存器、三态输出 锁存器等其它一些电路组成。因此,ADC0809 可处理 8 路模拟量输入,且有三态 输出能力,既可与各种微处理器相连,也可单独工作。输入输出与 TTL 兼容。 3.外部特性(引脚功能) ADC0809 芯片有 28 条引脚,采用双列直插式封装,如图 3.3 所示。下面说明 各引脚功能。 IN0~IN7:8 路模拟量输入端。 2-1~2-8:8 位数字量输出端。 ADDA、ADDB、ADDC:3 位地址输入线,用于选通 8 路模拟输入中的一路。 ALE:地址锁存允许信号,输入,高电平有效。 START: A/D 转换启动信号,输入,高电平有效。 EOC: A/D 转换结束信号,输出,当 A/D 转换结束时,此端输出一个高电平 (转换期间一直为低电平) 。 OE:数据输出允许信号,输入,高电平有效。当 A/D 转换结束时,此端输入 一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于 640KHZ。 REF(+) 、REF(-) :基准电压。 Vcc:电源,单~+5V。 GND:地。 4. ADC0809 的工作原理 ADC0809 的工作过程是:首先输入 3 位地址,并使 ALE=1,将地址存入地址 锁存器中。此地址经译码选通 8 路模拟输入之一到比较器。START 上升沿将逐次 逼近寄存器复位。下降沿启动 A/D 转换,之后 EOC 输出信号变低,指示转换正 在进行。直到 A/D 转换完成,EOC 变为高电平,指示 A/D 转换结束,结果数 据已存入锁存器,这个信号可用作中断申请。当 OE 输入高电平 时,输出三态门

8

武汉工程大学邮电与信息工程学院毕业设计(论文)

打开,转换结果的数字量输出到数据总线上。

图 3.3 ADC0809 系统内部结构框图和外部引脚图

3.4 酒精传感器模块
3.4.1 传感器性能分析 TGS822 气体传感器的敏感材料是金属氧化物,最具代表性的是 SnO2。金属氧 化物晶体如 SnO2 在空气中被加热到一定高的温度时, 氧被吸附在的带一个负电荷 的晶体表面。然后,晶体表面的供与电子被转移到吸附的氧上,结果在一个空间 电荷层留下正电荷。这样,表面势能形成一个势垒,从而阻碍电子流动。 在传感器的内部,电流流过 SnO2 微晶的结合部位(晶粒边界) 。在晶粒边界, 吸附的氧形成一个势垒阻止载流子自由移动,传感器的电阻即缘于这种势垒。还 原性气体出现时,带有负电荷的氧的表面浓度降低,导致晶粒边界的势垒降低。 降低了的势垒使传感器的阻值减小了。传感器阻值和还原性气体浓度之间的关系 可由下面的一定范围气体浓度方程表示:Rs=A[C]-α 这里:Rs=传感器电阻 A=常数 [C]=气体浓度 α =Rs 曲线的斜率

费加罗气体传感器的气敏素子,使用在清洁空气中电导率低的SnO2。当存在 检知对象气体时,传感器的电导率随空气中气体浓度增加而增大。使用简单的电 路即可将电导率的变化,转换为与该气体浓度相对应的输出信号。TGS822 传感

9

武汉工程大学邮电与信息工程学院毕业设计(论文)

器对酒精、有机溶剂灵敏度高,在酒精检测器等方面得到广泛使用。相同特性的 TGS823,采用了陶瓷底座,可以在200℃的高温气氛中使用。 表3.3.1 TGS822性能参数一览表 型号 素子类型 标准封装 对象气体 检测范围 加热器电压 回路电压 标准回路 条件 标准试验条 件下的电学 特性 加热器功率 传感器电阻 负载电压 加热器电压 VH VC RL RH PH RS TGS822 8系列 塑料、SUS双重金属网 酒精、有机溶剂 50—5000ppm 5.0+0.2V DC/AC MAX 24V 可变 38+3.0 ? 660+50mw Ps≤15mw Ps≤15mw (室温) VH=5.0V

300ppm乙醇中 1-10k? Rs(EtOH:300ppm) 0.4+0.1 Rs(EtOH:50ppm) 20+2℃, 65+5%RH VC=10.0+0.1V DC/AC VH=5.0+0.05V DC/AC

灵敏度(Rs的变化率)

标准试验 条件

试验气体条件 回路条件 预热条件

七天以上

下图3.3.1中纵坐标也以传感器电阻比(Rs/Ro)表示,这里的Rs,Ro 定义如下: Rs=含300ppm 乙醇、各种温/湿度下的电阻值 Ro=含 300ppm 乙醇、20℃65%R.H.下的电阻值

10

武汉工程大学邮电与信息工程学院毕业设计(论文)

图3.3.1不同浓度气体对应的阻值

11

武汉工程大学邮电与信息工程学院毕业设计(论文)

3.3.2 呼出酒精气体浓度与血液酒精浓度关系 表 3.3.2 血液与呼气酒精含量换算一览表 序 号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 呼出气体中酒精 浓度 mg/L 0.0227 0.0454 0.0681 0.0909 0.1136 0.1363 0.1591 0.1818 0.2045 0.2272 0.2500 0.2727 0.2954 0.3181 0.3409 0.3636 0.3863 0.4091 0.4318 0.4515 0.6618 0.9091 呼出气体中酒精 浓度 10?6 11.85 23.69 35.53 47.43 59.28 71.13 83.02 94.86 106.71 118.56 130.45 141.26 154.15 166.00 177.89 189.72 201.15 213.43 225.33 237.12 355.68 474.24 血液中酒精 浓度 mg/100mL 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 150 200

12

武汉工程大学邮电与信息工程学院毕业设计(论文)

车辆驾驶人员血液中的酒精含量大于或等于 80mg/100ml 的驾驶行为。 表 3.3.2 血液酒精含量临界值一览表 行为类别 饮酒驾驶 醉酒驾驶 对 象 临界值(mg/100ml) 20 80

车辆驾驶人员 车辆驾驶人员

由表 3.3.2 血液酒精含量临界值可以进行定量的分析车辆驾驶人员酒后驾驶后血液 中的酒精浓度,进而对于该司机的酒驾行为类别进行定性,如血液酒精浓度低于 20 mg/100ml,则认为是饮酒驾驶,可以对其酌情处理;如若血液酒精浓度超过了 20 mg/100ml 且低于 80 mg/100ml,则认为是醉酒驾驶,应按照国家交通法规对其处 理。

3.4 LCD 显示模块
1602 字符型 LCD 通常有 14 条引脚线或 16 条引脚线的 LCD,多出来的 2 条 线是背光电源线 VCC(15 脚)和地线 GND(16 脚),其控制原理与 14 脚的 LCD 完全一样,其中: 引脚 符号 功能说明 1 VSS 一般接地 2 VDD 接电源(+5V) 3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度 最高(对比度过高时会产生“鬼影” ,使用时可以通过一个 10K 的电位器调整对比 度) 。 4 RS RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄 存器。 5 R/W R/W 为读写信号线, 高电平(1)时进行读操作,低电平(0)时进行写操作。 6 E E(或 EN)端为使能(enable)端,下降沿使能。 7 DB0 底 4 位三态、 双向数据总线 0 位(最低位) 8 DB1 底 4 位三态、 双向数据总线 1 位

13

武汉工程大学邮电与信息工程学院毕业设计(论文)

9 DB2 底 4 位三态、 双向数据总线 2 位 10 DB3 底 4 位三态、 双向数据总线 3 位 11 DB4 高 4 位三态、 双向数据总线 4 位 12 DB5 高 4 位三态、 双向数据总线 5 位 13 DB6 高 4 位三态、 双向数据总线 6 位 14 DB7 高 4 位三态、 双向数据总线 7 位(最高位) (也是 busy flang) 15 BLA 背光电源正极 16 BLK 背光 电源负极 寄存器选择控制表即为 ASCII 码表 RS R/W 操作说明 0 0 写入指令寄存器(清除屏等) 0 1 都 busy flag(DB7) ,以及读取位址计数器(DB0~DB6)值 1 0 写入数据寄存器(显示各字型等) 1 1 从数据寄存器读取数据 1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点 阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日 文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B(41H) ,显示时模块把地址 41H 中的点阵字符图形显示出来,我们就 能看到字母“A” 。 因为 1602 识别的是 ASCII 码,试验可以用 ASCII 码直接赋值,在单片机编程 中还可以用字符型常量或变量赋值,如'A’ 。

图 3.4 LCD1602 外部引脚图

14

武汉工程大学邮电与信息工程学院毕业设计(论文)

第 4 章 系统软件
开始 设置第一行显示内容 设置显示模式 显示第一行内容 延时 关显示 延时

初始化 DS18B20 延时 跳过读序列号 清屏 启动温度转换 延时 延时 关显示 初始化 延时 跳过读序列号 设置第一行显示位 置 显示第一行内容 设置第一行显示内容 控制 ADC0809 转换 读取温度值并计算

显示第一行内 容 设置第二行显示内容

读取数据

比较计算

显示第二行内 容
15

武汉工程大学邮电与信息工程学院毕业设计(论文)

4.1 整机系统流程图
4.1.1ADC 程序流程图

开始

初始化

判断 ADC 是 否转换完毕 否 否

是 读出数据

计算

单片机对 ADC 进行初始化,使其能进入正常工作状态,通过判断 ADC 转换 判断标志 EOC,看其是否转换完毕,如果没有,则继续判断,如若完成则将 ADC 转换的数据由单片机读取并计算,然后进入下一环节。

16

武汉工程大学邮电与信息工程学院毕业设计(论文)

4.1.2 LCD 程序流程图

开始

初始化 LCD

判断 LCD 是 是否忙碌 是

否 写入数据

判断饮酒状态

饮酒驾驶

醉酒驾驶

单片机对 LCD 进行初始化,使其能进入正常工作状态,然后判断 LCD 是否处 于忙碌状态,如果是则继续判断,如若不是则将从 ADC 转换后计算出来的结果通 过输出指令输出,并判断计算出的结果处于哪种状态,并输出。

17

武汉工程大学邮电与信息工程学院毕业设计(论文)

第 5 章 总结与展望
本作品针对生活中因醉酒驾驶引发交通事故日益严重,明确研究方向,制定 计划方案。深入研究酒精传感器、模数转换器等器件原理,查阅相关酒驾标准。 为制作出满足实际要求的作品,做好充分的准备。在此期间所遇到的问题,通过 最有效、最准确的渠道进行解决,为成功扫清障碍。 完成本作品的主要困难有: (1)在课程中虽然我们学过 C 语言程序设计,但是始终处于理论阶段,对于 程序控制运行方面无任何实战经验; (2)开始对单片机、ADC0809、LCD 显示器一无所知,必需从头学习,而且 在时间的分配上也要把握好; (3)对于遇到非人为因素所带来的问题,导致的解决问题效率低下,使我们 的时间更感急迫。 随着对单片机、ADC0809、LCD 显示器的加深了解,对信号采集和数据算法 处理的进一步学习;加入温度、湿度和气压的影响,在现有基础上进行改进,一 定会使测得的数据更加准确,使作品与预期目标更接近。使其能成为商品,进入 家庭,实现我们以此为课题的最终目的。

18

武汉工程大学邮电与信息工程学院毕业设计(论文)

参考文献
[1] 单成祥.传感器的理论与设计基础及其应用[M].北京:国防工业出版社,1999,520 [2] 张福学.现代传感器电路[M].北京:中国计量出版社,2000,441 [3] 吴兴惠,王彩君.传感器与信号传感器[M].北京:电子工业出版社,1998 [4] 万隆,巴奉丽.单片机原理及应用技术[M].北京:清华大学出版社,2010 [5] 汤竟南,沈国琴.51 单片机 C 语言开发与实例[M].北京:人民邮电出版社,2008 [6] 雷伏容,张小林,崔浩.51 单片机常用模块设计查询手册[M].北京:清华大学出版社,2010 [7] 韩成,张延 拿了就用单片机[M].北京:人民邮电出版社,2008 [8] 赵建领.51 系列单片机开发宝典[M].北京:电子工业出版社,2007-04 [9] 胡伟,季晓衡 单片机 C 程序设计及应用实例[M].北京:人民邮电出版社,2003-07 [10] 王啸东.车载酒精测试仪控制器的设计[J].硅谷.2010-06 [11] 方吉高,黄炳醒.高选择性酒精传感器[J].硅谷.2004-02 [12] 王鸣.一种输入传行数据的 LCD 模块的应用[J].安徽机电学院.2000-08 [13] 刘焕平.ADC0809 与 AT89C51 的一种接入方式[J].石家庄师范专科学校.2002-02

19

武汉工程大学邮电与信息工程学院毕业设计(论文)

致谢
转眼间大学就要过去,对于我来说这也结束了我的校园生活,但真正的学习 才刚刚开始。在这三年的学习生活中,让我明白和了解了很多道理,在此过程中 也有走了很多弯路,但更增添了我的记忆。 在完成作品期间如果没有梁同学的帮助,有很多事情处理起来就不会比较顺 畅。例如在遇到单片机得不到 ADC0809 采集的数据这一难题,且始终停滞不前导 致心情低落时,能有他这样的同学、朋友和我共进退,比孤军奋战来得何止好上 百倍。还有在最后关头如果不是刘老师帮我如何测试参数,对于最重要的数据处 理方面将会大打折扣,那样作品就失去了它的意义。 还要感谢在此期间辅导我们的老师们、与我们一同奋战的同学、学长们,没 有你们这段回忆将是孤独。也感谢学校为我们提供了这样的一个平台,不仅在学 习上有所获取,而且在人际交往上多了一个圈子。也为我个人多增添了一项爱好 和发展方向。

20

武汉工程大学邮电与信息工程学院毕业设计(论文)

附录 1 酒精测试仪程序
#include<reg51.h> #include<intrins.h>

sbit rs=P2^4; sbit rw=P2^7; sbit ep=P2^6;

//LCD 液晶引脚定义,p0 接 DB0_DB7

sbit ale=P2^0; sbit start=P3^7; sbit oe=P3^5; sbit eoc=P3^6; sbit adda=P2^5; sbit addb=P2^2; sbit adc=P2^3;

//ADC0809 引脚定义

sbit light=P3^0; sbit DQ=P3^3; sbit DE=P3^1;

//报警输出 //DS18B20 输入脚定义

unsigned char tempL=0; unsigned char tempH=0; float temperature;

unsigned char code dis1[]={"WORK START"}; unsigned char code dis2[]={"ALCOHOL TEST"};

//状态显示

21

武汉工程大学邮电与信息工程学院毕业设计(论文)

unsigned char code dis3[]={"mg/100ml"}; unsigned char code dis4[]={"SAFE DRIVING"}; unsigned char code dis5[]={"DRINK-DRIVING"}; unsigned char code dis6[]={"DRUNK DRIVING"};

void delay(unsigned char ms) { unsigned char i,j;

//延时 1

while(ms--) { for(i=0;i<250;i++)

for(j=0;j<50;j++) { _nop_();

_nop_(); } } }

void delay2(unsigned int time ) { unsigned int n; n=0; while (n<time) { n++;} return; } bit lcd_bz() //LCD 判忙 { bit result; rs=0;

//延时 2

22

武汉工程大学邮电与信息工程学院毕业设计(论文)

rw=1; ep=1; _nop_(); _nop_(); result=(bit)(P0&0x80); ep=0; return result; } lcd_wcmd(unsigned char cmd) { while(lcd_bz()) rs=0; rw=0; ep=0; _nop_(); _nop_(); P0=cmd; _nop_(); _nop_(); ep=1; _nop_(); _nop_(); ep=0; } //写指令数据到 LCD

lcd_pos(unsigned char pos) { lcd_wcmd(pos | 0x80);

//设定显示位置

23

武汉工程大学邮电与信息工程学院毕业设计(论文)

}

lcd_wdat(unsigned char dat) { while(lcd_bz()); rs=1; rw=0; ep=0; P0=dat; _nop_(); _nop_(); ep=1; _nop_(); _nop_(); ep=0; } lcd_init() //LCD 初始化 { lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); }

//写入显示数据到 LCD

24

武汉工程大学邮电与信息工程学院毕业设计(论文)

Init_DS18B20(void) { unsigned char x=0; DQ=1; delay2(8); DQ=0; delay2(85); DQ=1; delay2(14); delay2(20); }

//DS18B20 初始化

ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for(i=8;i>0;i--) { DQ=1; delay2(1); DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; delay2(4); } return(dat);

// 向 DS18B20 读一字节数据

25

武汉工程大学邮电与信息工程学院毕业设计(论文)

} WriteOneChar(unsigned char dat) { unsigned char i=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0X01; delay2(5); DQ=1; dat>>=1; } delay2(4); } //向 DS18B20 写一字节数据

ReadTemperature(void) { Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0x44); delay2(125); Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0xbe); tempL=ReadOneChar(); tempH=ReadOneChar();

//向 DS18B20 读温度值

temperature=((tempH*256)+tempL)*0.0625; delay2(200);

26

武汉工程大学邮电与信息工程学院毕业设计(论文)

return(temperature); } main() { float x,y,k; unsigned int da,n,temp1,temp2,i,gw,sw,bw,kw,xw; light=0; lcd_init(); delay(3); lcd_pos(0); i=0; while(dis1[i]!='\0') //显示开始工作 { lcd_wdat(dis1[i]); i++; } lcd_pos(0x41); i=0; while(dis2[i]!='\0') //显示开始测试 { lcd_wdat(dis2[i]); i++; } delay(32); while(1) { lcd_init(); //初始化 LCD //无限循环测试 //数据初始化

ale=0; //初始化 ADC0809

27

武汉工程大学邮电与信息工程学院毕业设计(论文)

start=0; adda=0; addb=0; adc=0; _nop_(); ale=1; //启动 ADC0809 start=1; _nop_(); start=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while(eoc==0); //判断 ADC0809 是否转换完毕 oe=1; //打开 ADC0809 数据锁存 _nop_(); da=P1; //读取转换后数据 oe=0; y=(2550/da-10)/9.27; if(y>2.68) x=61.61-4.08*y; else if(y>2.38) x=139.3-33.3*y; else if(y>2.23) x=218.7-66.7*y; else if(y>2.128) //代入传感器性质公式进行计算 //定义 TGS822 信号输入引脚号

28

武汉工程大学邮电与信息工程学院毕业设计(论文)

x=288.6-98*y; else if(y>2) x=262.88-85.9*y; else if(y>1.89) x=254.5-81.8*y; else if(y>1.62) x=450-185.2*y; else if(y>1.209) x=347.1-121.7*y; lse if(y>0.822) x=816.5-516.8*y; else if(y>0.635) x=1279.2-1069.5*y; else x=2238.7-2580.6*y; if(da<=17) x=0; n=(int)(x/0.23698); gw=n%10+0x30; //取出所得数据个、十、百、千每位上的 数,并转换对应的 ASCII 表中数据便于输出 temp1=n/10; sw=temp1%10+0x30; temp2=temp1/10; bw=temp2%10+0x30; kw=temp2/10+0x30; lcd_pos(0x84); //设定小数点在 LCD 显示位置 lcd_wdat(0x2e); //输入小数点

29

武汉工程大学邮电与信息工程学院毕业设计(论文)

if(n>=1000) //判断数据大小,按位输出 { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); lcd_pos(0x82); lcd_wdat(bw); lcd_pos(0x81); lcd_wdat(kw); } else if(n>=100) { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); lcd_pos(0x82); lcd_wdat(bw); } else { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); } lcd_pos(0x86); //输出单位

30

武汉工程大学邮电与信息工程学院毕业设计(论文)

i=0; while(dis3[i]!='\0') { lcd_wdat(dis3[i]); i++; } n=n/10; if(n<20) { lcd_pos(0x42); i=0; while(dis4[i]!='\0') { lcd_wdat(dis4[i]); i++; } delay(16); } else if(n>=20 && n<80) { lcd_pos(0x42); i=0; while(dis5[i]!='\0') { lcd_wdat(dis5[i]); i++; } delay(16); //判断并显示测试结果

31

武汉工程大学邮电与信息工程学院毕业设计(论文)

} else { light=1; //亮灯报警

lcd_pos(0x42); i=0; while(dis6[i]!='\0') { lcd_wdat(dis6[i]); i++; } delay(16); light=0; }

lcd_init();

//初始化 ADC0809 //读取 DS18B20 数据

k=ReadTemperature(); n=(int)(100*k);

xw=n%10; //处理数据,便于输出 n=n/10; gw=n%10+0x30; temp1=n/10; sw=temp1%10+0x30; temp2=temp1/10; bw=temp2%10+0x30; kw=temp2/10+0x30; n=n/10; lcd_pos(0x84); //设定小数点在 LCD 显示位置

32

武汉工程大学邮电与信息工程学院毕业设计(论文)

lcd_wdat(0x2e);

//输出小数点

if(n>=100) //判断数据大小,按位输出 { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); lcd_pos(0x82); lcd_wdat(bw); lcd_pos(0x81); lcd_wdat(kw); } else if(n>=10) { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw); lcd_pos(0x82); lcd_wdat(bw);} else { lcd_pos(0x85); lcd_wdat(gw); lcd_pos(0x83); lcd_wdat(sw);} lcd_pos(0x86); lcd_wdat(0xdf);

33

武汉工程大学邮电与信息工程学院毕业设计(论文)

lcd_pos(0x87); lcd_wdat(0x43); delay(16); } }

34


相关文章:
基于51单片机的酒精测试仪设计
基于51单片机的酒精测试仪设计_电子/电路_工程科技_专业资料。本课题研究的是一种以气敏传感器和单片机为主,监测空气酒精浓度,并具有声报警功能及LCD显示功能的空气...
基于单片机的酒精测试仪
2.2 硬件设计及功能概述 本文设计的酒精浓度检测仪主要是以酒精传感器和单片机为平台设计而成 的,其硬件系统功能框图如图一所示。 图一硬件系统功能框图酒精浓度检测...
基于51单片机的酒精检测仪课程设计
二、酒精测试仪总体方案设计 2.1 酒精浓度检测仪设计要求分析 酒精浓度检测仪设计要求分析 设计的酒精浓度测试仪应具有如下特点: (1)数据采集系统以单片机为控制...
基于单片机的酒精浓度测试仪
基于单片机的酒精浓度测试仪_信息与通信_工程科技_专业资料。基于单片机的酒精浓度测试仪 摘要本设计实现了对不同浓度酒精的检测和显示, 通过适当改进可以用于检测酒 ...
基于单片机的酒精检测仪的设计
基于单片机的酒精检测仪的设计_工学_高等教育_教育专区。由单片机控制的酒精测仪,设计简单,毕业设计不用担心 酒精浓度检测仪的设计 一、前言对气体中酒精含量进行...
基于51单片机的酒精测试仪设计毕业设计说明书
基于51 单片机的酒精测试仪设计毕业设计说明书 毕业设计(论文) 基于 51 单片机的酒精测试仪设计 51 MCU-Based Design Of The Tester Alcohol 学生姓名 指导教师 ...
基于单片机的酒精浓度测试仪设计
基于单片机的酒精浓度测试仪设计_工学_高等教育_教育专区。毕业设计,单片机,毕业论文,酒精浓度测试 苏州科技学院本科生毕业设计(论文) 基于单片机的酒精浓度测试仪设计...
基于51单片机的酒精测试仪设计
基于51单片机的酒精测试仪设计_电子/电路_工程科技_专业资料。第一章 研究内容 TGS822 对酒精浓度的变化,其阻值产生相应的变化,然后通过取样电阻分压 的变化表现...
基于单片机的酒精浓度测试仪
本课题设计的是一种以酒精浓度传感器、单片机和 A/D 转换器为主的,检测 驾驶员呼出气体的酒精浓度的,而且还带有声光报警功能的酒精浓度检测仪。这 种检测仪不仅...
更多相关标签:
单片机酒精测试仪 | 交警用的酒精测试仪 | 单片机脉搏测试仪 | 单片机脉搏测试仪程序 | 酒精浓度测试仪的发展 | 酒精测试仪的反应原理 | 车载酒精测试仪的设计 | 单片机温湿度测试仪 |