智能酒精检测_第1页
智能酒精检测_第2页
智能酒精检测_第3页
智能酒精检测_第4页
智能酒精检测_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、智能酒精浓度检测仪的设计智能酒精浓度检测仪的设计摘 要:随着科技的进步,智能产品在社会生产和人们生活等方面扮演着越来越重要的角色。本文介绍的是一款智能酒精浓度检测仪的设计方案,以STC89C52 单片机和酒精传感器为核心,具有声光报警和 LCD 显示功能。为了满足不同环境下的监测,可根据不同的环境设置不同的阀值,超过阀值即进行声光报警,提示危害。该设计方案的优点是硬件电路设计简单,软件功能采用C 语言进行调试,方便灵活。而该仪器具有灵敏度高、工作性能好、低功耗、低成本,较高的性价比等优点。可用于交通检测、酒厂和食品工厂发酵监控等场所。关键词:智能;酒精浓度;检测仪;智能;酒精浓度;检测仪;ST

2、C89C52 单片机;阀值;单片机;阀值;C 语言;语言;交通检测交通检测湖南人文科技学院毕业设计IDesign for Intelligent Alcohol Concentration DetectorAbstract: With the progress of science, intelligent products gradually play an important role in many aspects, such as social produce, peoples daily life. This paper introduces an intelligent alcoh

3、ol concentration detector, which is based on STC89C52 single-chip microcomputer and alcohol sensor (transducer). It has several functions, including detecting alcohol concentration in different environment, giving an alarm with voice and glowing, and LCD display, except for this, we can also set the

4、 valve number of alcohol concentration to meet different environments detecting, namely, when the detecting num over the value, the detector can suggest danger. The excellences of this design precept : easy hardware circuit ,software function adopt to C language to test, which is convenient and flex

5、ible .whats more, the detector with high delicacy, low energy consumption and spending. It can be used in traffic detect, wine factory, food factory and so on.Key words: intelligent; alcohol concentration; detector; STC89C52 single-chip microcomputer; value ;C language; traffic detectII目目 录录第 1 章绪 论

6、.11.1 选题的依据和课题的意义.11.2 国内外研究概况.11.3 课题研究方法.21.4 设计构成及研究内容.2第 2 章 系统的工作原理与结构.32.1 工作原理.32.2 结构框图.42.3 智能酒精浓度检测仪的整体结构特点.4第 3 章 检测仪的硬件设计.43.1 单片机的选择.43.2 酒精浓度检测的设计.63.2.1 MQ-3 气敏传感器的结构和外形.73.2.2 MQ-3 灵敏度特性曲线.83.2.3 MQ-3 的标准工作条件和环境条件.83.2.4 酒精浓度信号的采集.93.3 模数转换电路的设计.103.3.1 ADC0809 的特点.103.3.2 模数转换电路.103

7、.4 按键设定阈值及阈值存储电路的设计.113.5 液晶接口电路的设计.113.6 声光报警电路的设计.123.7 单片机与 PC 机串口通讯.133.8 晶振电路的设计.13湖南人文科技学院毕业设计III3.9 复位电路的设计.143.10 附加功能电路的设计.14第 4 章 检测仪的整体原理图和实物图.15第 5 章检测仪的软件实现.165.1 A/D 转换的软件实现.165.2 阈值设定及显示的软件控制.175.3 整体软件控制流程.18第 6 章 检测仪的软件功能调试.206.1 按键修改酒精阈值程序.206.2 模数转换测试.206.3 液晶显示程序设计.216.4 声光报警测试.2

8、46.5 整体功能调试程序.24第 7 章 结 论.25参考文献.26致谢.27附录.28附录 A:全局变量头文件和延时模块.28附录 B:AD 转化模块.30附录 C:24c08 存储模块.31附录 D:LCD 显示模块.35附录 E:主函数.410第 1 章 绪 论1.1 选题的依据和课题的意义根据 WTO 数据,全球 2003 年得人均纯酒精消费量为 6.2L,其中欧洲地区人均达 11.9L,美洲地区人均为 8.7L。俄罗斯及其周边的东欧国家酒精消费量最高,其次为欧洲其他国家。在人均国民生产总值(GDP)低于 7000 美元的低收入国家,酒精消费量与人均 GDP 有关,GDP 越高这个国

9、家或者地区的酒精消费量也就越高。而随着我国近年来高速发展的经济水平和居民生活水平,私家车的占有率直线上升,各式各样的汽车已经成为人们的代步工具。同时伴随而来的是频频发生的交通事故,尤其是因为酒后驾车所引发的交通事故,给自己和人们的生命财产安全带来威胁,同时也给国家和社会带来了严重的经济损失。因此,对于每个驾驶人来说拥有一个酒精浓度检测仪,在每次驾驶之前自行检测酒精浓度再决定是否安全驾驶,这是对自己、对家庭、对社会有责任感的体现。此外,从工厂企业到居民家庭,酒精泄露的检测、监控对居民的人身和财产安全都是十分重要和必不可少的。因此,酒精浓度检测仪具有十分广阔的实际应用价值和潜在的市场要求。1.2

10、国内外研究概况受 20 世纪信息技术快速发展的影响,传感技术逐渐走向成熟,在生活生产中得到了广泛的应用。由于传感器在各个领域都有着举足轻重的作用,因此,高精度、高可靠性、微型化、低功耗和智能数字化成了其发展方向。为了检查酒驾,警察常常使用一种便携式的酒精呼吸检测仪。通过检测驾驶员呼出的气体判断驾驶者是否饮酒,而目前使用的酒精呼吸检测仪只能初步显示驾驶员是否饮酒,具体酒精浓度含量还得通过血检才能测得。为了简化其流程,英国内部已推出一种超级酒精呼吸检测仪,能够根据体温、呼吸频率等情况,当场判断出驾驶员体内的酒精含量。由此可见,高精度、高可靠性、微型化以及低功湖南人文科技学院毕业设计1耗是酒精浓度检

11、测仪今后发展的主流方向。迄今为止,对气体中酒精含量进行检测的设备有燃料电池型、半导体型、红外线型、气体色谱分析型和比色型五种类型,但由于使用方便的原因,目前常用的有燃料电池型和半导体型两种。燃料电池是当前世界都在广泛研究的环保型能源,它可以直接把可燃气体转变成电能,而不产生污染。酒精传感器只是燃料电池的一个分支。燃料电池酒精传感器采用贵金属白金作为电极,在燃烧室内充满特种催化剂,是进入燃烧室内的酒精充分燃烧转变为电能,也就是在两个电极上产生电压,电能消耗在外接负载上,此电压与进入燃烧室内气体的酒精浓度成正比。与半导体型相比,燃料电池型呼气酒精测试仪具有稳定性好,精度高,抗干扰性好的优点,但是由

12、于燃料电池酒精传感器的结构要求非常精密,制造难度相当大,目前仅有美国、英国、德国等少数几个国家能够生产,加上材料成本高,因此价格相当昂贵,通常是半导体传感器的几十倍。1.3 课题研究方法(1)文献索引法:利用学校图书馆资料和文献及通过网络查询相关资料对本课题有足够深的了解,为本设计的具体模块电路做好理论准备。(2)调查法:与身边的同学和朋友进行交流,充分考虑本设计实现的功能,尽可能完善该设计的功能。 (3)对比分析法:与目前市场上相关产品进行比较,发现该酒精检测仪存在的不足以及可以优化的部分,加以改进。1.4 设计构成及研究内容本文设计的智能酒精浓度检测仪采用的是气敏传感器,属于半导体型,该传

13、感器实质是个可变电阻,在它两端加以固定的电压,随着所处环境酒精浓度的升高阻值将进行线性变化,从而将酒精浓度的含量转变为电压的变化。该酒精检测仪以 C51 单片机和气敏酒精传感器为核心,具有声光报警和 LCD 显示功能。为了满足不同环境下的监测,可根据不同的环境设置不同的阈值,超过阈值即进行声光报警,提示危害。采用 C 语言来实现其软件功能。本设计只要包2括以下内容:(1)主控芯片的选择;在此设计中选择了 C51 系列单片机,熟悉 C51 系列芯片怎样控制外围硬件电路。(2)酒精浓度检测模块的设计;酒精浓度常用酒精传感器来检测,了解该传感器的工作原理,制作数据采集模块完成数据的采集。(3)A/D

14、 转换模块的设计;A/D 转换器的选择,将采集的酒精浓度模拟信号进行转换后送至单片机存储、处理。(4)键盘模块的设计;要通过键盘完成设定不同环境中酒精浓度的阈值。(5)声光报警模块的设计;超过设定的阈值直观地给予警示。(6)液晶显示模块的设计;准确显示出检测到的数据。(7)各个硬件模块电路衔接。(8)PCB 的布板、元件焊接及功能调试。第 2 章 系统的工作原理与结构2.1 工作原理酒精浓度检测仪是用来检测所处环境中的酒精浓度的,并显示出检测的结果数值。而本设计所做的智能酒精浓度酒精检测仪除具有这个基本功能外,还可通过手动随意设置酒精浓度的阀值,以划定不同环境条件下酒精的安全界限,同时具有声光

15、报警功能。它主要由酒精传感器、模数转换器、单片机、LCD 显示、键盘模块以及声光报警部分组成。数据的采集由酒精传感器完成,酒精传感器将检测的酒精浓度转换为电信号,然后将电信号传递给模数转换器,经过模数转换器转换后,把转换后得到的数字信号传给单片机,单片机对所输入的数字信号进行分析处理,最后将分析处理的结果通过显示器显示出来。同时与根据键盘设定的酒精浓度阀值进行比对,如果检测到所处环境中的酒精浓度超过设定的界线,那么单片机将会控制蜂鸣器发出声音报警和发光 LED 不断闪烁,以提示危害。湖南人文科技学院毕业设计32.2 结构框图硬件系统结构框图如下图 2-1 所示单片机LCD显示酒精传感器模数转换

16、器键盘声光报警图 2-1 系统结构框图2.3 智能酒精浓度检测仪的整体结构特点本文设计的智能酒精浓度检测仪具有如下特点:(1)数据采集系统以单片机为控制核心,外围电路带有 LCD 显示和键盘响应电路,无需其他计算机,用户就可与之进行交互工作,完成数据的采集、存储、计算、分析等过程。(2)系统具有低功耗、小型化、高性价比、灵敏度高等特点。(3)从便携式的角度出发,系统通过键盘设置酒精浓度的阀值,结合单片机的控制,实现了人机交互操作、界面友好。(4)软件系统采用 C 语言进行编写,在兼顾实时性处理的同时,也方便了对数据的处理。第 3 章 检测仪的硬件设计3.1 单片机的选择MCS-51 单片机是美

17、国 Intel 公司于 1980 年推出的一款相当成功的产品,该4系列或其兼容的单片机仍是应用的主流产品之一,该系列单片机主要包括8031,8051,8751 和 89C51 等通用产品。本次设计选用的是 STC89C52 单片机,STC89C52 是低功耗、高性能的 CMOS8 位微控制器,具有 8K 在系统可编程Flash 存储器。使用宏晶高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统上可编程,亦适于常规编器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得STC89C52 为众多嵌入式控制应用系统提

18、供高灵活、超有效的解决方案。STC89C52 具有以下标准功能:8 字节的 Flash,256 字节的 RAM,32 位的 I/O口线,看门狗定时器,2 个数据指针,3 个 16 位定时器/计数器,1 个 6 向量 2级中断结构,全双工串行口,片内晶振及时钟电路。除此,STC89C52 可降至0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,内容被保存,振荡器被冻结。STC89C52 单片机作为控制核心,为了提高 IO 口的利用率,通过扩展一片8255 芯片来实现液晶显示的功能。单片机的 IO

19、口控制图如下图 3-1-1 所示图 3-1-1 STC89C52 的接口控制图P0 口用于接收模数转换的输出,P2.0 用于模数转换的时钟控制,8255 的扩湖南人文科技学院毕业设计5展通过 P2.1,P2.2,P2.5 口来控制, P2.3 用于作为模数转换的使能控制,P2.6,P2.7口用于模拟 I2C 连接外部存储芯片 AT24C08,P3.3 口为外部中断控制口,由它来控制酒精阈值的设定,液晶显示模块通过单片机控制 8255 来实现相应的功能.8255 芯片的引脚控制图如图 3-1-2 所示:图 3-1-2 8255 的引脚控制图8255 芯片是一种典型的可编程通用并行接口芯片,用来扩

20、展单片机的端口,它具有 3 个 8 位的并行口,有三位工作方式,可作为单片与各种外部设备连接的接口电路。CS:片选信号线,当该引脚为低电平时,8255 被选中,允许 8255 与 CPU通讯。RESET:复位输入线,当该引脚为高电平时,内部寄存器被清除,所有 I/O口均被置成输入方式。A0、A1:地址输入线。当 A0A1=00 时,PA 口被选中;当 A0A1=01 时,PB 口被选中;当 A0A1=10 时,PC 口被选中;当 A0A1=11 时,控制寄存器被选中。3.2 酒精浓度检测的设计酒精浓度的准确检测是决定该设计成功与否的关键因素,而酒精的检测依6靠酒精传感器来实现信号的采集。在本设

21、计中选用灵敏度高、稳定性好的 MQ-3 气敏传感器,该传感器对乙醇蒸汽有很高的灵敏度和良好的选择性,快速的响应和恢复特性,长期的寿命和可靠的稳定性,以及简单的驱动电路。它的工作原理是在确定的环境条件下,环境中的酒精浓度变化将会引起电阻值的变化,且这两种变化存在着线性关系。3.2.1 MQ-3 气敏传感器的结构和外形MQ-3 气敏元件的结构和外形如图 3-2-1 所示图 3-2-1 MQ3 气敏元件结构外形图在上图中,由微型 AL2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔管内,加热器为敏感元件提供必要的工作条件。封装好的气敏元件有 6 只针状管脚,其中

22、 4 只用于信号提取,2 只用于提供加热电流。湖南人文科技学院毕业设计73.2.2 MQ-3 灵敏度特性曲线图 3-2-2 MQ-3 气敏元件的灵敏度特性曲线在图 3-2-2 中给出了 MQ-3 气敏元件的灵敏度曲线,其中:温度 20;相对湿度:65%;氧气浓度:21%; RL:200k. Rs:气敏元件在不同气体、不同浓度时的电阻值。R0:气敏元件在洁净空气中的电阻值。3.2.3MQ-3 的标准工作条件和环境条件图 3-2-3 MQ-3 气敏传感器阻值变化率与酒精浓度、外界温度的关系为了更好地使用酒精传感器 MQ-3,现将 MQ-3 的标准工作条件和环境条件进行介绍,分别如表 3-2-1 和

23、表 3-2-2 所示:8表表 3-2-1 工作条件工作条件符号参数名称技术条件备注VC回路电压15VAC or DCVH加热电压5.0V0.2VAC or DCRL负载电阻可调RH加热电阻313室温PH加热功耗900mW表表 3-2-2 环境条件环境条件符号参数名称技术条件备注Tao使用温度-1050Tas储存温度-2070RH相对湿度95%RHO2氧气浓度21%(标准条件)氧气浓度会影响灵敏度特性最小值大于 2%3.2.4酒精浓度信号的采集详细的酒精浓度采集电路见下图 3-2-4 所示:图 3-2-4 酒精浓度采集电路在上图中传感器将环境中的酒精浓度转化电压信号,在第 4 引脚直接输出电压信

24、号模拟量,该模拟量将送到模数转换,通过单片机控制最终得出环境中酒精的含量,同时可以通过对电位器 WR1 的调节来改变输出的灵敏度。湖南人文科技学院毕业设计93.3 模数转换电路的设计由于本设计中所用的是单一电源+5V,故由酒精浓度转化的电压信号也将在05V 范围,并且考虑到转换的速度应该要快,在此我们选用典型的 8 位逐次逼近型 A/D 转换器 ADC080 ADC0809 的特点该转换器具有如下特点:(1) 分辨率为 8 位;(2) 转换时间为 100us;(3) 很容易与微处理器连接;(4) 无须零位或者满量程调整;(5) 带有锁存控制逻辑的 8 通道多路转换开关,便于选择

25、8 路中的任一路进行转换;(6) 带锁存器的三态数据输出。3.3.2 模数转换电路具体模数转换电路见图 3-2-1 所示图 3-2-1 模数转换在该检测仪的设计中只用到两路通道,即通道 IN0 和 IN1.分别为酒精浓度的电压模拟信号和电压比较器 LM393 的基准电压信号,D0D7 为由酒精浓度10引起而产生的电压数字量输出,结果将送至单片机进行分析和处理。3.4 按键设定阈值及阈值存储电路的设计为了适应对不同环境中酒精浓度的检测和监控,必须调整该仪器的酒精浓度阀值以符合既定的工作要求。同时为了节省硬件资源的消耗,于是在此通过外部中断的按键操作来改变酒精浓度的不同阀值,外部中断电路见下图 3

26、-4-1所示图 3-4-1 外部中断按键电路阈值存储电路的添加,既可以明确地看出具体设定的酒精浓度值,又能以备调出来与检出的酒精浓度作比较,增强了直观性。于此选用了 AT24C08 作为存储器件,用单片机的 P2.6,P2.7 口模拟 I2C 与之通信,从而完成数据的读写操作。相应的电路如图 3-4-2 所示图 3-4-2 AT24C08 存储电路3.5 液晶接口电路的设计酒精浓度的显示采用 1602 液晶,LCD1602 可显示两行英文字符,且内带ASCII 字符库。LCD1602 模块内部可完成显示扫描,单片机只要向 LCD1602 发送命令和显示内容的 ASCII 码。具体的接口电路见图

27、 3-5 所示湖南人文科技学院毕业设计11图 3-5 液晶接口电路图控制信号 RS、R/W 和 E 分别由单片机控制 8255 的 PA4,PA5,PA6 口实现,要显示的信息通过调用数据处理程序传到 8255 的 PB 口。3.6 声光报警电路的设计当酒精浓度超过所设定标准时,通过控制单片机的 P3.3 口的电平来实现警报功能。其电路见图 3-6 所示图 3-6 声光报警电路如上图所示,酒精浓度超过设定的阀值时,给单片机的 P3.3 口低电平,则三极管导通,同时蜂鸣器工作,发光二极管也亮。否则,单片机的 P3.3 口维持在高电平,三极管截止,蜂鸣器不工作,二极管也不发光。123.7 单片机与

28、 PC 机串口通讯“串行通信”是系统之间用一根数据信号线,数据在这根数据线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。目前个人的 PC 机上都有这种接口(COM1,COM2) ,即 RS-232 口。电脑的 RS-232 口共 9 根线,在简单的应用中,需要三根线即可完成通信,分别是第 2 脚 RXD,第 3 脚 TXD,第 5 脚 GND.串行通信与单片机之间的接口:由于串行通信的电平逻辑定义是+15V(高电平 1) ,-15V(低电平 0) ,而单片机中分别用 5V,0V 来表示高电平 1,低电平 0.它们之间必须通过电平转换才能完成通信。最常用的是 MAX32 电路,该连接

29、图见图 3-7 所示图 3-7 串口通信电路单片机串口通信原理:51 系列单片机内部集成了两个同名不同地址的串口缓冲区 SBUF,一个是发送缓冲区,一个是接收缓冲区。发送数据时 MCU 将数据写到发送 SBUF,接收到的数据自动放到接收 SBUF,无需程序指定。串口发送和接收事件发生时,由硬件标志来通知处理器,RI 为接收事件发生标志,TI为发送完成标志, “1”为事件发生。在串口中断打开的条件下,两者任意一种情况发生都会引起中断,单片机程序可以根据 RI=1 和 TI=1 进行相应的处理。本检测仪需要用串口线将程序下载到单片机中,以对之进行初始化过程。3.8 晶振电路的设计本系统采用的是 1

30、2MHZ 的晶振,其电路图如图 3-8 所示:湖南人文科技学院毕业设计13图 3-8 晶振电路图XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.9 复位电路的设计单片机的复位电路如图 3-9 示:图 3-9 复位电路图RST:复位输入。晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平。特殊寄存器AUXR 上的 DISRT0 位可以使此功能无效。DISRT0 默认状态下,复位高电平有效。3.10 附加功能电路的设计由于酒精浓度的检测在很大程度上受到温度的影响,为了更直观地测

31、出不同环境中酒精的含量,这里增加一个温度传感器,以对应不同温度下酒精传感器所对应的线性关系。DS18B02 数字温度计 DALLAS 公司生产的单总线器件,具有线路简单、体积小的特点。实际应用中不需要外部任何器件即可实现测温,测量温度范围在-5+125。C 之间,数字温度计的分辨率可以从 9 位到 12 位选择,且内部有上、下限告警设置,使用非常方便。数字温度计接口的电路图如 3-10 所示14图 3-10 DS18B02 电路P17 为数字信号输入/输出端,将程序下载至单片机,开机运行,用手触摸DS18B02 温度传感器,液晶上将会显示当时所处环境的温度值。第 4 章 检测仪的整体原理图和实

32、物图智能酒精检测仪的整体原理图见 4-1 所示图 4-1 整体原理图湖南人文科技学院毕业设计15酒精检测模块实物图如图 4-2 所示图 4-2 酒精检测模块实物图智能酒精检测仪的实物图见 4-3 所示图 4-3 酒精检测仪的实物图第 5 章检测仪的软件实现5.1 A/D 转换的软件实现A/D 转换的软件控制流程如图 5-1 所示16开始延时转换结束?数字量输出调用数据处理程序酒精浓度结束YN图 5-1 AD 转换流程控制A/D 转换的启动必须依靠下降沿触发,在 START 置低后延时一段时间(约10ms)转换才正式开始.转换过程中的所需输入时钟允许范围为10KHZ1280KHZ,在本次设计中选

33、用 500KHZ,通过定时器产生,转换完成后得到的数字量即为由酒精传感器检测到环境中的酒精含量而产生的电压值,调用数据处理程序从而可得到酒精浓度的真实值.5.2 阈值设定及显示的软件控制酒精浓度的阈值设定及显示的具体软件控制流程如图 5-2 所示湖南人文科技学院毕业设计17开始外部中断响应?重设酒精浓度阈值I2C通信存储LCD显示结束YN图 5-2 酒精浓度的阈值设定及 LCD 显示的软件控制流程当系统进行完初始化后,该检测仪在将检测到的酒精浓度进行 A/D 转换的同时,还在时刻检测有无外部中断的响应,一旦有按键按下,将会根据按键按下的次数选择酒精浓度表中的酒精浓度值,而且这个值将会立刻被保存

34、于外部存储单元(AT24C08),以便与监测到的环境中的酒精浓度进行比较,完成接下来的声光报警功能.5.3 整体软件控制流程本酒精检测仪的软件流程图见图 5-3 所示18开始系统初始化LCD显示AD转换调用数据处理程序得出酒精浓度值有无外部中断?启动设定酒精阈值操作大于设定的阈值?声光报警结束YNYN图 5-3 软件方案总体流程图该仪器软件程序主要使用 C 语言编写,采用了模块化结构程序设计方法,包括主程序、中断程序等。系统在开机或者复位后,首先进行初始化、自检,然后进入中断等待,A/D 转换,液晶显示三个状态,最终根据所得结果判断是否执行声光报警。中断子程序包括预设阀值、数据存储、信息显示等

35、操作,在进行阀值判断时用到了 LM393 电压比较器,程序的绝大部分时间处在数据处理上,而 STC89C52 单片机在一次处理数据的时间约为 6us,故总体的平均功耗低。湖南人文科技学院毕业设计19第 6 章 检测仪的软件功能调试本检测仪的软件功能通过方便灵活、移植性好的 C 语言编程来实现,采用分模块化程序设计思想,对不同模块分别进行调试后,最后再进行整合调试。总体说来包括 6 个模块,即:按键设置阀值模块、模数转换模块、液晶显示模块、声光报警模块、存储模块、延时模块。6.1 按键修改酒精阈值程序下面这段程序是用来设置酒精浓度的阈值的,检测仪只要处在工作状态中,不停地扫描按键,一旦检测有按键

36、按下,通过检测按下的次数调用酒精浓度值数组就可知道酒精浓度设在哪个阈值。那么只要阈值在没修改前,检测仪实时检测的酒精浓度值就会跟该值进行比对,超过界限蜂鸣器将会就会发出响声,同时蜂鸣器旁边的灯会亮。经测试,虽然整个反应过程慢了点,但是效果还是符合预定的思路。程序 6-1:Static unsigned char set_Value=6;void INTER0(void) interrupt 0set_Value+;I2c_Write_Char(DEV_24c08ID,0 x00,set_Value);if(set_Value20)set_Value=0;6.2 模数转换测试选择第 0 通道作为

37、酒精浓度模拟量输入端,首先得对 ADC0809 的初始化,初始化完后,进行酒精浓度的监测、分析、运算和处理,最终结果通过单片机控制 8255 输至液晶上显示出来,同时这个值还将与所设定的阈值进行比对以判20断是否超标。下面是关于 A/D 转化的模块化程序(程序 6-2).程序 6-2:uchar AD_Convert(void)Start=LOW;delay(2);Start=HIGH;delay(2);Start=LOW;while(!EOC);OE=HIGH;temp=P0; return temp;6.3 液晶显示程序设计该仪器用到的是 LCD1602 液晶,即可显示两行字符,每行 16

38、 个字符。以下是对其的初始化程序,为了达到实时正确显示所需要的信息,我们将对检测仪的液晶显示模块进行单独的测试。要想 1602 液晶正常显示,得对其进行写命令操作和写数据操作,以下的程序可以在液晶的第一行显示“My college!”.程序 6-3:#include#include #include ABSACC.H#define a8255_PA XBYTE0 xD1FF /*PA 口地址*/#define a8255_PB XBYTE0 xD2FF /*PB 口地址*/#define a8255_PC XBYTE0 xD5FF /*PC 口地址*/#define a8255_CON XBY

39、TE0 xD7FF /*控制字地址*/#define uchar unsigned char湖南人文科技学院毕业设计21#define uint unsigned int uchar code table=My collge!;void delay(int ms) int i; while(ms-) for(i = 0; i 250; i+) _nop_(); _nop_(); _nop_(); _nop_(); /*遇忙等待函数*/void WaitForEnable(void) _nop_(); _nop_(); while(a8255_PA&0 x40); /1 忙 a8255_

40、PA=0 xbf; /10111111/*写命令*/void write_com(uchar com) a8255_CON=0 x80;WaitForEnable( );a8255_PA=0 x8f; /10001111a8255_PB=com;22delay(2);a8255_PA=0 xcf;/11001111delay(2); a8255_PA=0 x8f;/10001111/*写数据函数*/void write_data(uchar dat) a8255_CON=0 x80;WaitForEnable(); a8255_PA=0 x9f;/10011111a8255_PB=dat;de

41、lay(2); a8255_PA=0 xdf; /11011111delay(2); a8255_PA=0 x9f;/*LCD1602 初始化*/void lcdinit (void) a8255_PA=0 xff;a8255_CON=0 x80;a8255_PA=0 x9f;write_com(0 x38);write_com(0 x0f); /00001111 开显示,开光标,不闪烁write_com(0 x06); /00000111 指针加 1write_com(0 x01); /清屏write_com(0 x80);/write_com(0 x80);湖南人文科技学院毕业设计23vo

42、id main( ) int num; lcdinit(); for(num=0;num=set_Value)Beep=0;delay_ms(200);Beep=1;delay_ms(20); 6.5 整体功能调试程序本设计采用模块化程序设计结构,方便调试,易于查错,可移植性强。详细的模块程序请查看相应的附录,该检测仪的整体功能实现即由每个模块的分工协作来实现。将程序在 Keil 编译器中编译成功后,生成 HEX 文件,然后将24程序烧录到单片机中,上电即可进行工作了。上电后该酒精检测仪将按照初始化的程序进行工作,酒精浓度阈值为当初设定的,超过阈值则会产生报警。 一旦有设定酒精浓度阈值的按键按

43、下,并且检测按键按下的次数,则酒精浓度的阈值即被重新设定,在没被下一次设定前,实时检测的酒精浓度将与它进行比较,超过该界限值即报警,同时酒精浓度值一直将会显示出来。第 7 章 结 论经过近半年时间的不断查找资料、设计原理图、布板、焊接以及软、硬件调试,该检测仪基本实现了既定的功能。可以进行酒精浓度阈值设定、声光报警、以及酒精浓度的显示,不过整个检测仪的反应速率相对较慢,经分析可能与单片机的处理的位数、环境的温度有关,因为环境的温度会对酒精传感器的灵敏度造成很大的影响,但酒精传感器良好的稳定性和选择性使得检测仪抗干扰性很强。结构简单、体积小、携带方便等优点相信会使它具有很好的市场前景。总之,虽然

44、在这过程当中遇到过很多阻碍,比如原理图中有些元件设置不对导致没有导入 PCB 工程中,还有部分因为封装问题导致生成的 PCB 出现错误,不过有了这些错误同时让自己对知识有了更深一层的了解,培养了自己独立思考问题、解决问题的能力。湖南人文科技学院毕业设计25参考文献1纪宗南.单片机外围器件实用手册-输入通道器件分册(M).北京:北京航空航天大学出版社,2005:225-230.2赵家贵.新编传感器电路设计手册(M).北京:中国计量学出版社,2002:23-26.3张鑫.单片机原理及应用(M).北京:电子工业出版社,2005:161-258.4清源计算机工作室.Protel99SE 原理图与 PC

45、B 及仿真(M).北京:机械工业出版社,2004:10-345.5Neamen,D.A美电子电路分析与设计(M).北京:电子工业出版社,2003:86-104.6李伟諟.EPSON 单片系列液晶显示器(M).北京:北京航空航天大学出版社,2001:142-150.7黄智伟.全国大学生电子设计竞赛电路设计(M).北京:北京航空航天大学出版社,2006:127-140.8韩广兴.电子元器件与实用电路基础(修订版(M)). 北京:电子工业出版社,2005:340-356.9沙占友.中外集成传感器实用手册(M). 北京:电子工业出版社,2005:200-210.10Huddleston,C.美.Int

46、elligent Sensor Design:Using the Microchip dsPIC(智能传感器设计(M).北京:人民邮电出版社,2000:827-1124.11乔林.Visual C+6.0 程序设计(M):精通篇.北京:中国铁道出版社,1999:20-64.12先锋工作室.单片机程序设计实例(M).北京:清华大学出版社,2002:46-50.13张大明.单片机控制实训指导及综合应用实例(M).北京:机械工业出版社,2007:668-710.14康华光.电子技术基础模拟部分(第五版(M)).北京:高等教育出版社,2006:123-340.15康华光.电子技术基础数字部分(第五版(

47、M)).北京:高等教育出版社,2006:10-256.26附录附录 A:全局变量头文件和延时模块/*-globle.h-*/#ifndef _GLOBLE_H#define _GLOBLE_H#include#include ABSACC.H#define a8255_PA XBYTE0 xD1FF /*PA 口地址*/#define a8255_PB XBYTE0 xD2FF /*PB 口地址*/#define a8255_PC XBYTE0 xD5FF /*PC 口地址*/#define a8255_CON XBYTE0 xD7FF /*控制字地址*/typedef unsigned ch

48、ar uchar;typedef unsigned int uint;typedef bit BOOL;#define HIGH 1#define LOW 0湖南人文科技学院毕业设计27#define I2C_TIME 3#define DEV_24c08ID 0 xa0 /24c08 的 i2c 地址sbit Start = P2 7;sbit EOC = P3 4;sbit OE = P2 3;sbit CLK = P2 0;sbit Beep=P33;sbit SCL=P26;sbit SDA=P27;#endif/*-延时模块-*/#include #includegloble.hvo

49、id delay_ms(uchar ms) uchar i; while(ms-) for(i = 0; i 250; i+) _nop_(); _nop_(); _nop_(); _nop_(); void delay(uchar us) /2us28 uchar i; while(us-) for(i = 0; i1; i+) _nop_(); 附录 B:AD 转化模块/*-AD.h-*/#ifndef _AD_H#define _AD_Huchar AD_Convert(void);#endif/*-AD.c-*/#includegloble.hextern void delay(uch

50、ar ms);uchar temp;uchar AD_Convert(void)Start=LOW;delay(2);Start=HIGH;delay(2);湖南人文科技学院毕业设计29Start=LOW;while(!EOC);OE=HIGH;temp=P0; return temp;附录 C:24c08 存储模块/*-i2c.h-*/#ifndef _i2c_h#define _i2c_hvoid i2c_init();void I2c_Start(void);void I2c_Stop(void);void respons();void noACK();void I2c_Send(uch

51、ar u8_data);uchar I2c_Read(void);void I2c_Write_Char(uchar u8_deviceID,uchar reg,uchar u8_data);uchar I2c_Read_Char(uchar u8_deviceID, uchar reg);#endif/*-I2C.c-*/#includegloble.h#includei2c.hextern void delay(uchar us);30void i2c_init()SCL=1;delay(I2C_TIME);SDA=1;delay(I2C_TIME);void I2c_Start(void

52、)SDA=1;delay(I2C_TIME);SCL=1;delay(I2C_TIME);SDA=0;delay(I2C_TIME);SCL=0;delay(I2C_TIME);void I2c_Stop(void)SCL=0;delay(I2C_TIME);SDA=0;delay(I2C_TIME);SCL=1;delay(I2C_TIME);SDA=1;delay(I2C_TIME);湖南人文科技学院毕业设计31void respons()uchar i=0;SCL=1;delay(I2C_TIME);while(SDA=1)&(i255) i+; SCL=0;delay(I2C_

53、TIME);void noACK()SDA=1;delay(I2C_TIME);SCL=1;delay(I2C_TIME);SCL=0;delay(I2C_TIME);void I2c_Send(uchar u8_data) uchar i; for (i=0;i8;i+) SDA = (bit)(u8_data & 0 x80);32u8_data=u8_data1;SCL=1; delay(I2C_TIME);SCL=0; delay(I2C_TIME); uchar I2c_Read(void)uchar i,u8_data=0;SCL=0;delay(I2C_TIME); SD

54、A=1;for(i=0;i8;i+) SCL=1;delay(I2C_TIME);u8_data=(u8_data1)|SDA; /u8_data=*2;SCL=0;delay(I2C_TIME);delay(I2C_TIME);return(u8_data);void I2c_Write_Char(uchar u8_deviceID,uchar reg,uchar u8_data) I2c_Start();湖南人文科技学院毕业设计33I2c_Send(u8_deviceID); respons();I2c_Send(reg); respons();I2c_Send(u8_data);resp

55、ons(); I2c_Stop();uchar I2c_Read_Char(uchar u8_deviceID, uchar reg)uchar u8_out;I2c_Start();I2c_Send(u8_deviceID); respons();I2c_Send(reg); respons();I2c_Start();I2c_Send(u8_deviceID+1); respons();u8_out=I2c_Read();noACK();I2c_Stop();return u8_out;34附录 D:LCD 显示模块/*-Lcd.h-*/#ifndef _LCD_H#define _LCD

56、_Hvoid WaitForEnable(void);void write_com(uchar com);void write_data(uchar dat);void lcdinit (void);void Display(uchar i);void Display1(uchar i);void Display2(uchar i);void Display3(uchar i);#endif/*-Lcd.c-*/#includegloble.h#includeLcd.h#include extern void delay(uchar ms);uchar code Alcohol_DataGro

57、up3=0,.,1, /*0.1*/0,.,2, /*0.2*/0,.,3, /*0.3*/0,.,4, /*0.4*/0,.,5, /*0.5*/0,.,6, /*0.6*/0,.,7, /*0.7*/0,.,8, /*0.8*/0,.,9, /*0.9*/1,.,0, /*1.0*/湖南人文科技学院毕业设计351,.,7, /*1.7*/2,.,0, /*2.0*/2,.,5, /*2.5*/3,.,0, /*3.0*/4,.,0, /*4.0*/5,.,0, /*5.0*/6,.,0, /*6.0*/7,.,0, /*7.0*/8,.,0, /*8.0*/ 9,.,0, /*9.0*/1

58、,0,0 xa0 /*10 */; / alcohol concerntration datauchar unit_group=0 x6d,0 x67,0 x2f,0 x4c; /*(mg/L)*/uchar unit_group=m,g,/,L; /*遇忙等待函数*/void WaitForEnable(void) _nop_(); _nop_(); while(a8255_PA&0 x40); /1 忙 a8255_PA=0 xbf; /10111111 /*写命令*/void write_com(uchar com) a8255_CON=0 x80;36WaitForEnable

59、( );a8255_PA=0 x8f; /10001111a8255_PB=com;delay(2);a8255_PA=0 xcf;/11001111delay(2); a8255_PA=0 x8f;/10001111/*写数据函数*/void write_data(uchar dat) a8255_CON=0 x80;WaitForEnable(); a8255_PA=0 x9f;/10011111a8255_PB=dat;delay(2); a8255_PA=0 xdf; /11011111delay(2); a8255_PA=0 x9f;/*LCD1602 初始化*/void lcdin

60、it (void) a8255_PA=0 xff;a8255_CON=0 x80;a8255_PA=0 x9f;write_com(0 x38);write_com(0 x0f); /00001111 开显示,开光标,不闪烁write_com(0 x06); /00000111 指针加 1湖南人文科技学院毕业设计37/write_com(0 x01); /清屏/write_com(0 x80);/write_com(0 x80);void Display(uchar i) /displaying the alcohol concentration detecteduchar j;uchar *p=&Alcohol_DataGroupi0;uc

温馨提示

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

评论

0/150

提交评论