课程设计——酒精检测仪设计.doc_第1页
课程设计——酒精检测仪设计.doc_第2页
课程设计——酒精检测仪设计.doc_第3页
课程设计——酒精检测仪设计.doc_第4页
课程设计——酒精检测仪设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

重重庆庆三三峡峡学学院院 专专业业综综合合课课程程设设计计报报告告 题 目 51 单片机酒精浓度测试仪设计 系 别 电子与信息工程学院 专 业 电子信息工程 班 级 *级*班 姓 名 XXX 学 号 201107014115 2014 年 12 月 12 日 2 酒精浓度检测仪的设计酒精浓度检测仪的设计 一、一、设计目的设计目的 近年来,我国越来越多的人有了自己的私家车,而酒后驾车造成的交通事故也频 繁发生。为此,我国将酒驾列入刑法范围内,所以需要设计一智能仪器能够检测驾驶 员体内酒精含量。本课程设计研究的是一种以气敏传感器和单片机 A/D 转换器为主, 检测驾驶员呼出气体的酒精浓度,并具有声光报警功能的空气酒精浓度监测仪。其可 检测出空气环境中酒精浓度值,并可根据不同的环境设定不同的阈值,对超过的阈值 进行声光报警来提示危害。 本课题分为两部分:硬件设计部分和软件设计部分。硬件部分为利用 MQ3 气敏传 感器测量空气中酒精浓度,并转换为电压信号,经 A/D 转换器转换成数字信号后传给 单片机系统,由单片机及其相应外围电路进行信号的处理,显示酒精浓度值以及超阈 值声光报警。程序采用模块化设计思想,各个子程序的功能相对独立,便于调试和修 改。而硬件电路又大体可分为单片机小系统电路、A/D 转换电路、声光报警电路、LED 显示电路,按键电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍。 二、设计二、设计方案方案 1、酒精浓度检测仪总设计方案 设计时,考虑酒精浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏的 电压值且电压值稳定,外部干扰小等。因此,可以直接把传感器输出电压值经过A/D转 换器转换得到数据送入单片机进行处理。此外,还需接人LED数码管显示,键盘设定, 报警电路等。 其总体框图如图1所示。 被测 环境 气敏 传感器 A/D 转换 电路 单片机 声光报警电路 LED 显示 键盘 图图1 1 基本工作原理图基本工作原理图 3 3、设计内容设计内容 1、 酒精浓度检测仪设计要求分析 设计的酒精浓度测试仪应具有如下特点: (1)数据采集系统以单片机为控制核心,外围电路带有LED显示以及键盘响应电 3 路,无需要其他计算机,用户就可以与之进行交互工作,完成数据的采集、存储、计 算、分析等过程。 (2)系统具有低功耗、小型化、高性价比等特点。 (3)从便携式的角度出发,系统成功使用了数码管显示器以及小键盘。由单片机 系统控制键盘和LED显示来实现人机交互操作,界面友好。 (4)软件设计简单易懂。 2、设计内容要求 (1)传感器 TGS822的电压模拟输出范围为 0-5V; (2)模数转换芯片 ADC0809采样电压范围为 0-5V,分辨率为 8 位,采样精度 为 5/256V,达到 256 个量化级的数字电压,其工作频率为 1MHz; (3)单片机 AT89C52工作频率为 6 MHz;传感器 LCD 显示输出单片机数字输出控制 输出模数转换模拟输出 (4)LCD显示器用 50K 的可调电阻调节使其清晰显示。 4 4、电路设计与描述电路设计与描述 1 1、硬件设计、硬件设计 1.1 传感器的选择 本系统直接测量的是呼气中的酒精浓度,再转换为血液中的酒精含量浓度,故采 用气敏传感器。考虑到周围空气中的气体成分可能影响传感器测量的准确性,所以传 感器只能对酒精气体敏感,对其他气体不敏感,故选用 MQ3 型气敏传感器。其有很高 的灵敏度、良好的选择性、长期的使用寿命和可靠的稳定性。MQ3 型气敏传感器由微型 Al2O3,陶瓷管和 SnO2 敏感层、测量电极和加热器构成的敏感元件固定在塑料或不锈 钢的腔体内,加热器为气敏元件的工作提供了必要的工作条件。传感器的标准回路有 两部分组成。其一为加热回路,其二为信号输出回路,它可以准确反映传感器表面电 阻值的变化。传感器的表面电阻 RS 的变化,是通过与其串联的负载电阻 RL 上的有效 电压信号 VRL 输出面获得的。负载电阻 RL 可调为 05-200K。加热电压 Uh 为 5v。上 述这些参数使得传感器输出电压为 0-5V。MQ3 型气敏传感器的结构和外形、标准回路、 传感器阻值变化率与酒精浓度、外界温度的关系图如图 4 所示。为了使测量的精度达 到最高,误差最小,需要找到合适的温度,一般在测量前需将传感器预热 5 分钟。 图图2 2 MQ3MQ3 结构和外形结构和外形 4 A 1 F 2 A 3 B 4 F 5 B 6 RL1 MQ-3 +5GND RA2 220 RA1 220 GND IN 图图3 3 MQ3MQ3 结构图结构图 图图4 传感器阻值变化率与酒精浓度、外界温度之间的关系传感器阻值变化率与酒精浓度、外界温度之间的关系 1.2 A/D 转换电路 在单片机应用系统中,被测量对象的有关变化量,如温度、压力、流量、速度等 非电物理量,须经传感器转换成连续变化的模拟电信号(电压或电流),这些模拟电 信号必须转换成数字量后才能在单片机中用软件进行处理。实现模拟量转换成数字量 的器件称为 A/D 转换器(ADC)。 A/D 转换器大致分有三类:一是双积分 A/D 转换器,优点是精度高,抗干扰性好, 价格便宜,但速度慢;二是逐次逼近型 A/D 转换器,精度、速度、价格适中;三是- A/D 转换器。 该设计中选用的是 ADC0809 属第二类,是 8 位 A/D 转换器。0809 具有 8 路模拟信 号输入端口,地址线(23-25 脚)可决定那一路模拟信号进行 A/D 转换。22 脚为地址 锁存控制,当输入为高电平时,对地址信号进行锁存。6 脚为测试控制,当输入一个 2s 的高电平脉冲时,就开始 A/D 转换。7 引脚为 A/D 转换结束标志,当 A/D 转换结 束时,7 脚输出高电平。9 脚为 A/D 转换数据输出允许端,当 OE 脚为高电平时,A/D 转 换数据输出。10 脚为 0809 的时钟输入端。 1.2.1 ADC0809 的引脚及功能 逐次比较型 A/D 转换器在精度、速度、和价格上都适中,是最常用的 A/D 转换器 件。芯片采用的是 ADC0809,以下介绍 ADC0809 的引脚及功能。芯片如图 5 所示。 5 图图 5 5 ADC0809ADC0809 的引脚的引脚 ADC0809 是一种逐次比较式 8 路模拟输入、8 位数字量输出的 A/D 转换器。由图可 见,ADC0809 共有 28 个引脚,采用双列直插式封装。主要引脚功能如下: IN0-IN7 是 8 路模拟信号输入端。 D0-D7 是 8 位数字量输入端。 A、B、C 与 ALE 控制 8 路模拟通道的切换,A、B、C 分别与 3 根地址线或数据 线相连,3 位编码对应 8 个通道地址端口。 ADC0809 芯片有 28 条引脚,采用双列直插式封装,如图所示。下面说明各引脚功 能。 IN0IN7:8 路模拟量输入端。 2-12-8:8 位数字量输出端。 ADDA、ADDB、ADDC:3 位地址输入线,用于选通 8 路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START: A/D 转换启动脉冲输入端,输入一个正脉冲(至少 100ns 宽)使其启动 (脉冲上升沿使 0809 复位,下降沿启动 A/D 转换) 。 EOC: A/D 转换结束信号,输出,当 A/D 转换结束时,此端输出一个高电平(转 换期间一直为低电平) 。 OE:数据输出允许信号,输入,高电平有效。当 A/D 转换结束时,此端输入一个 高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于 640KHZ。 REF(+) 、REF(-):基准电压。 Vcc:电源,单一+5V。 GND:地。 首先输入 3 位地址,并使 ALE=1,将地址存入地址锁存器中。此地址经译码选通 8 路模拟输入之一到比较器。START 上升沿将逐次逼近寄存器复位。下降沿启动 A/D 转换,之后 EOC 输出信号变低,指示转换正在进行。直到 A/D 转换完成,EOC 变为 高电平,指示 A/D 转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当 OE 输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。 转换数据的传送 A/D 转换后得到的数据应及时传送给单片机进行处理。数据传送的关 键问题是如何确认 A/D 转换的完成,因为只有确认完成后,才能进行传送。为此可采 用下述三种方式。 (1)定时传送方式 对于一种 A/D 转换器来说,转换时间作为一项技术指标是已知的和固定的。例如 6 ADC0809 转换时间为 128s,相当于 6MHz 的 MCS-51 单片机共 64 个机器周期。可据 此设计一个延时子程序,A/D 转换启动后即调用此子程序,延迟时间一到,转换肯定 已 经完成了,接着就可进行数据传送。 (2)查询方式 A/D 转换芯片有表明转换完成的状态信号,例如 ADC0809 的 EOC 端。因此可以用查 询方式,测试 EOC 的状态,即可确认转换是否完成,并接着进行数据传送。 (3)中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先 送出口地址并以信号有效时,OE 信号即有效,把转换数据送上数据总线,供单片机接 受。 需要注意的是:ADC0809 虽然有 8 路模拟通道可以同时输入 8 路模拟信号,但每个 瞬间只能换 1 路,共用一个 A/D 转换器进行转换,各路之间的切换由软件改变 C、A、B 引脚上的代码来实现。地址锁存与译码电路完成对 A、B、C 3 个地址位进行 锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出, 因此可以直接与系统数据总线相连,图 6 为通道选择表。 图图 6 6 通道选择表通道选择表 OE、START、CLK 为控制信号端,OE 为输出允许端,START 为启动信号输入端, CLK 为时钟信号输入端。 VR(+)和 VR(-)为参考电压输入端。 1.2.2 ADC0809 的结构及转换原理 ADC0809 的结构框图如图 7。ADC0809 采用逐次比较的方法完成 A/D 转换的,由单 一的+5V 电源供电。片内有锁存功能的 8 路选 1 的模拟开关,由 C、B、A 引脚的功能来 决定所选的通道。0809 完成一次转换需 100s 左右,输出具有 TTL 三态锁存缓冲器, 可直接连接到 MCS-51 的数据总线上。 通过适当的外接电路,0809 可对 0-5V 的模拟信号进行转换。 7 START CLK OEVR(+) VR() VCC GND EOC D0 . . . D7 三态输 出锁存 器 8 位 A/D 转换 器 地址锁 存与密 码 C B A ALE 8 路模 拟量开 关 IN7 . IN0 图图 7 7 ADC0809ADC0809 的结构框图的结构框图 1.2.3 ADC0809 连线图 ADC0809 与单片机的连线图如图 8: In3 1 In5 3 In6 4 In7 5 ST ART 6 EOC 7 D3 8 OE 9 CLOCK 10 V cc 11 V ref+ 12 GND 13 D1 14 D2 15 V ref- 16 D0 17 D4 18 D5 19 D7 21 ALE 22 ADDC 23 ADDB 24 ADDA 25 In0 26 In1 27 In4 2 D6 20 In2 28 ADC0809 ADC1 ADC0809 +5 GND D0 D1 D2 GND D3 D4 D5 D6 D7 ST STEOC OE CLK IN 图图 8 8 ADC0809ADC0809 的连线图的连线图 1.3 89C51 单片机系统 单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算, 逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读 程序存储器(ROM),输入输出电路(I/O 口),可能还包括定时计数器,串行通信口(SCI), 显示驱动电路(LCD 或 LED 驱动电路),脉宽调制电路(PWM),模拟多路转换器及 A/D 转 换器等电路集成到一块单块芯片上,构成一个虽小然而完善的计算机系统。这些电路 能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。 8 1.3.1 单片机片内结构 51 单片机的片内结构如图 9 所示。它把那些作为控制应用所必需的基本内容都集 成在一个尺寸有限的集成电路芯片上。按功能划分,它有如下功能部件组成: 微处理器(CPU) 。 数据存储器(RAM)。 程序存储器(ROM/EPROM) 。 4 个 8 位并行 I/O 口(P0 口、P1 口、P2 口、P3 口) 。 一个串行口。 2 个 16 位定时器、计数器。 2 个 16 位定时器、计数器。 中断系统。 特殊功能寄存器(SFR) 。 PSEN 88 E O C X T A L 1 CPU (运算器) (控制器) 数据存储 器 RAM P 0 P 2 程序存储器 ROM/EPRO M P 1 串 行 口 定时 器/计 数器 中断 系 统 特殊功能 寄存器 (SFR) P 3 AL E EA IN7 . I 0 X T A L 2 8 8 RESE T 图图 9 9 5151 单片机片内结构单片机片内结构 上述功能部件都是通过片内单一总线连接而成,其基本结构依旧是 CPU 加上外围 芯片的传统结构模式。但 CPU 对各种功能部件的控制是采用特殊功能寄存器的集中控 制方式。 从硬件角度来看,与 MCS-51 指令完全兼容的新一代 AT89CXX 系列机,比在片外加 EPROM 才能相当的 8031 单片机抗干扰性能强,与 87C51 单片机技能相当,但功耗小。 程序修改直接用+5V 或+12V 电源擦除,更显方便、而且其工作电压放宽至 2.7V-6V,因 而受电压波动的影响更小,而且 4K 的程序存储器完全能满足单片机系统的软件要求, 故 AT89C51 单片机是构造本检测系统的更理想的选择。 1.3.2 89C51 芯片介绍 9 掌握 MCS-51 单片机,应首先了解 MCS-51 的引脚,熟悉并牢记各引脚的功能, MCS-51 系列中各种型号芯片的引脚是互相兼容的。制作工艺为 HMOS 的 MCS-51 的单片 机都采用 40 只引脚的双列直插封装方式,如图 10 所示。 图图 1010 AT89C51AT89C51 芯片管脚图芯片管脚图 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST (TXD) P3.1 (INT0) P3.2 (INT1) P3.3 T0 P3.4 T1 P3.5 (WR) P3.6 (RD) P3.7 XTAL1 XTAL2 GND Vcc P0.0 (AD0) P0.1 (AD1) P0.2 (AD2) P0.3 (AD3) P0.4 (AD4) P0.5 (AD5) P0.6 (AD6) P0.7 (AD7) EA/VPP PSEN P2.7 (A15) P2.6 (A14) P2.5 (A13) P2.4 (A12) P2.3 (A11) P2.2 (A10) P2.1 (A9) P2.0 (A8) PDIP (RXD) P3.0 ALE/PROG 40 只引脚按其功能来分,可分为如下 3 类: 电源及时钟引脚:Vcc、Vss、XTAL1、XTAL2。 电源引脚接入单片机的工作电源。Vcc 接+5V 电源,Vss 接地。 时钟引脚 XTAL1、XTAL2 外接晶体与片内的反相放大器构成了 1 个晶体振荡器,它为单 片机提供了时钟控制信号。2 个时钟引脚也可外接独立的晶体振荡器。XTAL1 接外部的 一个引脚。该引脚内部是一个反相放大器的输入端。这个反相放大器构成了片内振荡 器。如果采用外接晶体振荡器时,此引脚接地。XTAL2 接外部晶体的另一端,在该引脚 内部接至内部反相放大器的输出端。若采用外部时钟振荡器时,该引脚接受时钟振荡 器的信号,即把此信号直接接到内部时钟发生器的输入端。 控制引脚:、ALE、RESET(RST)。此类引脚提供控制信号,有的还PSENEA 具有复用功能。 RST/VPD引脚:RESET(RST)是复位信号输入端,高电平有效。当单片机运行 时,在此引脚加上持续时间大于 2 个机器周期(24 个振荡周期)的高电平时,就可以 完成复位操作。在单片机工作时,此引脚应为0.5V 低电平。VPD为本引脚的第二功能, 即备用电源的输入。当主电源发生故障,降低到某一规定值的低电平时,将+5V 电源自 动接入 RST 端,为内部 RAM 提供备用电源,以保证片内 RAM 的信息不丢失,从而使单 片机在复位后能正常进行。 ALE/ 引脚:ALE 引脚输出为地址锁存允许信号,当单片机上电正常工作PROG 10 后 ALE 引脚不断输出正脉冲信号。当单片机访问外部存储器时,ALE 输出信号的负跳沿 用于单片机发出的低 8 位地址经外部锁存器锁存的锁存控制信号。即使不访问外部锁 存器,ALE 端仍有正脉冲信号输出,此频率为时钟振荡器频率的 1/6。 为该引脚PROG 的第二功能。在对片内 EPROM 型单片机编程写入时,此引脚作为编程脉冲输入端。 引脚:程序存储器允许输出控制端。在单片机访问外部程序存储器时,此PSEN 引脚输出脉冲负跳沿作为读外部程序存储器的选通信号。此引脚接外部程序存储器的 OE(输出允许端)。 /VPP引脚:功能为片内程序存储器选择控制端。当引脚为高电平时,EAEAEA 单片机访问片内程序存储器,但在 PC 值超过 0FFFH 时,即超出片内程序存储器的 4KB 地址范围时将自动转向执行外部程序存储器内的程序。当引脚为低时,单片机只访EA 问外部程序存储器,不论是否有内部程序存储器。 I/O 口引脚:P0、P1、P2、P3,为四个 8 位 I/O 口的外部引脚。P0 口、P1 口、 P2 口、P3 口是 3 个 8 位准双向的 I/O 口,各口线在片内均有固定的上拉电阻。当这 3 个准双向 I/O 口作输入口使用时,要向该口先写 1,另外准双向口 I/O 口无高阻的“浮 空”状态。 由于单片机具有体积小、质量轻、价格便宜、耗电少等突出特点,所以本系统采 用 89C51 单片机,硬件设计电路图如图 1 所示。89C51 内部有 4KB 的 EPROM,128 字节 的 RAM,所以一般都要根据所需存储容量的大小来扩展 ROM 和 RAM。本电路接高电EA 平,没有扩展片外 ROM 和 RAM。 1.3.3 晶振电路和复位电路 最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始 终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最 小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D 扩展等,使单片机 完成较复杂的功能。 89C51 是片内有 ROM/EPROM 的单片机,因此,这种芯片构成的最小系统简单 可靠。用 89C51 单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路 即可,结构如图 11 所示,由于集成度的限制,最小应用系统只能用作一些小型的控制 单元。 图图 1111 单片机最小系统原理框图单片机最小系统原理框图 (1) 时钟电路 89C51 单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时 钟方式。内部时钟方式如图 12 所示。在 89C51 单片机内部有一振荡电路,只要在单片 机的 XTAL1(18)和 XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并 在单片机内部产生时钟脉冲信号。图中电容 C1 和 C2 的作用是稳定频率和快速起振, 时钟电路 复位电路 STC89C51 单片机 I/ O 口 11 电容值在 530pF,典型值为 30pF。晶振 CYS 的振荡频率范围在 1.212MHz 间选择, 典型值为 12MHz 和 6MHz。 Y1 11.0592MHz C2 30pF C3 30pF 18 19 图图 1212 89C5189C51 内部时钟电路内部时钟电路 (2) 复位电路 当在 89C51 单片机的 RST 引脚引入高电平并保持 2 个机器周期时,单片机内部就 执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。 最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来 实现的。只要 Vcc 的上升时间不超过 1ms,就可以实现自动上电复位。 除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按 键手动复位有电平方式和脉冲方式两种。其中电平复位是通过 RST(9)端与电源 Vcc 接 通而实现的。 R1 10k C1 10uF S4VCC 9 图图 1313 89C5189C51 复位电路复位电路 (3)89C51 中断技术概述 中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的 服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。当中断请 求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序, 转到中断服务处理程序处理中断服务请求。中断服务处理程序处理完中断服务请求后, 再回到原来被中止的程序之处(断点) ,继续执行被中断的主程序。 图 14 为整个中断响应和处理过程。 图图 1414 中断响应和处理过程中断响应和处理过程 1.4 LED 显示电路 LED 数码管(LED Segment Displays)是由多个发光二极管封装在一起组成 “8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。 数码管分为动态显示和静态显示驱动两种, 静态驱动也称直流驱动。静态驱动是 指每个数码管的每一个段码都由一个 单片机的 I/O 端口进行驱动,或者使用如 BCD 码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高, 缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 58=40 根 I/O 端口来 驱动,要知道一个 STC89C52 的 I/O 端口才 32 个呢:) ,实际应用时必须增加译码 12 驱动器进行驱动,增加了硬件电路的复杂性。数码管动态显示接口是单片机中应 用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8 个显示笔划 a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM 增加位选通 控制电路,位选通由各自独立的 I/O 线控制,当单片机输出字形码时,所有数码管 都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选 通 COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位 就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每 位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极管的 余辉效应, 尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是 一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够 节省大量的 I/O 端口,而且功耗更低。 本设计利用三极管驱动数码管,用4.7k 电阻起到限流作用,使得数码管亮度 适中。 数码管显示电路如下 a bf c g d e V CC1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS1 REDCA a bf c g d e V CC1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS2 REDCA a bf c g d e V CC1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS3 REDCA a bf c g d e V CC1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS4 REDCA D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 Q1 PNP Q2 PNP Q3 PNP Q4 PNP +5 R1 4.7k R2 4.7k R3 4.7k R4 4.7k 图图 1515 数码管显示电路数码管显示电路 1.5 键盘电路 本设计采用按键接低的方式来读取按键,单片机初始时,因为为高电平,当按键 按下的时候,会给单片机一个低电平,单片机对信号进行处理 单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个 I/O 口上只接一个按 键,按键的另一端接电源或接地(一般接地) ,这种接法程序比较简单且系统更加稳定; 而矩阵式键盘式接法程序比较复杂,但是占用的 I/O 少。根据本设计的需要这里选用 了独立式键盘接法。 独立式键盘的实现方法是利用单片机 I/O 口读取口的电平高低来判断是否有键按 下。将常开按键的一端接地,另一端接一个 I/O 口,程序开始时将此 I/O 口置于高电 平,平时无键按下时 I/O 口保护高电平。当有键按下时,此 I/O 口与地短路迫使 I/O 13 口为低电平。按键释放后,单片机内部的上拉电阻使 I/O 口仍然保持高电平。我们所 要做的就是在程序中查寻此 I/O 口的电平状态就可以了解我们是否有按键动作了。 在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。 这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常 现象,并不是我们在按键时通过注意可以避免的。这种抖动一般 10200 毫秒之间,这 种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢 长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动, 而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实 现法是先查寻按键当有低电平出现时立即延时 10200 毫秒以避开抖动(经典值为 20 毫秒) ,延时结束后再读一次 I/O 口的值,这一次的值如果为 1 表示低电平的时间不 到 10200 毫秒,视为干扰信号。当读出的值是 0 时则表示有按键按下,调用相应的处 理程序。硬件电路如图 16 所示: S1 SW SPST S2 SW SPST S3 SW SPST GND k1 k2 k3 图图 1616 按键电路按键电路 2 2、软件设计、软件设计 2.1 原理图如图 18 所示: P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 REST 9 P3.0/RX D 10 P3.1/T X D 11 P3.2/INT 0 12 P3.3/INT 1 13 P3.4/T 0 14 P3.5/T 1 15 P3.6/W R 16 P3.7/RD 17 X T AL2 18 X T AL1 19 GND 20 P2.0 21 P2.1 22 P2.2 23 P2.3 24 P2.4 25 P2.5 26 P2.7 28 SPEN 29 ALE 30 EA 31 P0.7 32 P0.6 33 P0.5 34 P0.4 35 P0.3 36 P0.2 37 P0.1 38 P0.0 39 V CC 40 P2.6 27 ST C89C52 U1 ST C89C52C1 30P C2 30P + C3 10uf 1 2 3 4 5 6 7 8 9 J110K Y1 12MHZ GND R1 10K GND +5 In3 1 In5 3 In6 4 In7 5 ST ART 6 EOC 7 D3 8 OE 9 CLOCK 10 V cc 11 V ref+ 12 GND 13 D1 14 D2 15 V ref- 16 D0 17 D4 18 D5 19 D7 21 ALE 22 ADDC 23 ADDB 24 ADDA 25 In0 26 In1 27 In4 2 D6 20 In2 28 ADC0809 ADC1 ADC0809 +5 GND D0 D1 D2 GND D3 D4 D5 D6 D7 ST ST ST EOC EOC OE OECLK CLK D0 D1 D2 D3 D4 D5 D6 D7 IN S1 SW SPST S2 SW SPST S3 SW SPST GND k1 k2 k3 A 1 F 2 A 3 B 4 F 5 B 6 RL1 MQ-3 +5GND RA2 220 RA1 220 GND IN +5 k1 k2 k3 a bf c g d e V CC1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS1 REDCA a bf c g d e V CC1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS2 REDCA a bf c g d e V CC1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS3 REDCA a bf c g d e V CC1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS4 REDCA D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 Q1 PNP Q2 PNP Q3 PNP Q4 PNP +5 R1 4.7k R2 4.7k R3 4.7k R4 4.7k +5 3 21 P1 POW ER 1 1 2 2 3 3 4 4 5 5 6 6 S1 +5 GND A 1 B 2 F BUZ Z ER Q5 PNP +5 GND FR1 2.2k D2 LED D1 LED RL1 2.2K RL2 2.2K 图图 1717 原理图原理图 五、程序设计五、程序设计 14 1程序设计的基本思路 主程序流程图如下图所示: 图图 1818 主程序框图主程序框图 2.数据采集子程序程序框图 A/D 转换子程序流程图如下图 19 所示。ADC0809 初始化后,把 0 通道输入的 0-5V 的模拟信号转换为对应的数字量,然后将对应数值存储到内存单元。 开始 初始化 读取 AD 转换酒精值 判断当前 酒精范围 判断按键 是否按下 执行相应 的指示控制 N 设置相应参数 显示设置数值 结束 Y 15 图图 1919 数据采集子程序框图数据采集子程序框图 3.程序代码 /程序头函数 #include /宏定义 #define uint unsigned int #define uchar unsigned char #define Data_ADC0809 P1 /ADC0809 sbit ST=P33; sbit EOC=P34; sbit OE=P32; /显示数组0-9 - F uchar Data_=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x71,0 x3f; sbit Wei1 = P27; sbit Wei2 = P26; sbit Wei3 = P25; sbit Wei4 = P24; /函数声明 extern uchar ADC0809(); void Display(uchar X,uchar Data); void delay(uint t); /酒精含量变量 uchar temp=0; 开始 启动 ADC0809 通道,并延时 100s 转换完? 读出 A/D 转换结果 结果存入内存单元 返回 Y N 16 /显示模式 uchar Mode=0; uchar p; void main() /主函数 while(1) /正常模式 if(Mode=0) /读取 AD 值 temp=ADC0809(); for(p=0;p30;p+) Display(0,temp); /ADC0809 读取信息 uchar ADC0809() uchar temp_=0 x00; /初始化高阻太 OE=0; /转化初始化 ST=0; /开始转换 ST=1; ST=0; /外部中断等待 AD 转换结束 while(EOC=0) /读取转换的 AD 值 OE=1; temp_=Data_ADC0809; OE=0; return temp_; /延时 void delay(uint t) uint i,j; for(i=0;it;i+) for(j=0;j10;j+); /显示 X 表示状态 Data 表示数据 void Display(uchar X,uchar Data) Wei1=1; 17 Wei2=1; Wei3=1; Wei4=1; P0=0 xff; /正常模式 if(X=0) P0=Data_11; /非正常 else P0=Data_10; Wei1=0; Wei2=1; Wei3=1; Wei4=1; delay(10); Wei1=1; Wei2=1; Wei3=1; Wei4=1; P0=Data_Data/100; Wei1=1; Wei2=0; Wei3=1; Wei4=1; delay(10); Wei1=1; Wei2=1; Wei3=1; Wei4=1; P0=Data_D

温馨提示

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

评论

0/150

提交评论