资源描述
武汉理工大学毕业设计(论文)基于AT89S51单片机酒精浓度探测仪的设计与实现学院(系): 理学院物理系 专业班级:电子信息科学与技术0602班 学生姓名: 黄制兵 指导教师: 徐晓英 易迎彦 V目 录摘 要IAbstractII1 绪论11.1 设计背景11.2 气敏传感器的研究现状11.3 设计酒精气体传感器的意义21.4 本文主要研究工作22 硬件电路设计与实现42.1 单片机开发流程42.2 硬件系统框图42.3 信号采集电路52.4 信号转换电路82.5 发光二极管显示报警电路142.6 数码管显示电路162.7 系统整体电路图183 软件编程203.1 开发环境203.2 程序流程203.3 程序代码编写224 电路调试与测试结果284.1 电路调试284.2 浓度与显示之间的关系295 结束语33参考文献34附 录35致 谢38武汉理工大学毕业设计(论文)摘 要本设计实现了对不同浓度酒精的检测和显示,通过适当改进可以用于检测酒后驾车。本文用AT89S51单片机与MQ-3型气体传感器实现了对酒精浓度的测量,并对测量数据进行显示,同时利用二极管简单显示浓度的高低,在设计允许值时发出报警。论文主要研究了(1)硬件方面,MQ-3气体传感器技术参数的检测和将它接入到酒精浓度检测模块中;将模拟电压信号放大驱动发光二极管点亮报警;将采集到的模拟电压信号通过单片机控制经A/D转换,得到数字电压信号;用于显示浓度的数码管显示模块。(2)软件方面,主要研究了电压到浓度的线性转换和最终浓度值的数码管显示。(3)对设计的传感器进行了标定。设计的传感器对酒精气体反应灵敏,能在有效范围内测量它的浓度值。并且在检测低浓度酒精时误差较小,最大误差为8.2%满足设计要求。本文的特色在于标准的确定。对于流动空气,样品的稳定性和水蒸气的影响,提出了解决方案和验证方法。对不同的区间浓度和电压转换关系做线性化处理,简化了硬件电路的设计。设计的传感器可以检测不同浓度的酒精气体,改进之后对解决酒后驾车事故和特殊场合酒精检测都可以使用。关键词:气体传感器,模数转换,单片机38AbstractDifferent concentrations of alcohol solution are detected and showed in the design. The design can be used to the detection of drunk driving through improvement. In this thesis, the concentration of alcohol can be measured and displayed by using the gas sensor based on AT89S51 MCU and MQ-3. At the same time the concentration is displayed by LED, and the system allow to alarm in the certain value. In the thesis Major researches are three points. (1) In the hardware, detecting the technology parameters MQ-3 gas sensor, and connecting it to a testing part of the alcohol gas concentration; Analog voltage signal amplification to drive light-emitting diode light to alarm; conversing the voltage signal through the A/D conversion at the control of the single-chip, obtaining the digital voltage signal; displaying the concentration in the digital tube display module.(2)In the Software, linear conversion between the concentration of the alcohol and the voltage and the digital display of the final concentration value.(3) The designed sensor is calibrated. The design of gas sensor is responsive to the alcohol, can measure concentration in the effective range of its concentration. And in the low concentration of alcohol in the test the error is small with the maximum error 8.2%, meeting requirements of the design. The characteristics of the thesis are to determine the standard. The solutions and verification methods are proposed about the flow of air samples, the sample stability and water vapor. The conversion between voltage and concentration in different range is treated as linear relationship. The design of sensor can detect different the alcohol gas with different concentration. It plays an important role to solve the drunk-driving accidents and alcohol testing for special occasions after improvement.Key Words: Gas sensor, A/D conversion, Single-chip Microcomputer1 绪论1.1 设计背景 我国传感器市场的增长率超过15%,2003年销售额为186亿元人民币,2006年销售额为283亿元人民币,预计2007年为325亿元人民币,2008年为374亿元人民币。我国传感器4大类中,工业和汽车电子产品占市场份额的33.5%。近年来,传感器正处于传统型向新型传感器转型的发展阶段,新型传感器的特点是微型化、数字化、智能化、多功能化、系统化、网络化,它将不仅促进系统产业的改造,而且可导致建立新型工业和军事变革,是21世纪新的经济增长点1。 由于气体与人类的日常生活密切相关,对气体的检测已经是保护和改善生态居住环境不可缺少的手段,气体传感器发挥着极其重要的作用。气体传感器是把气体中的特定成分检测出来,并转化为电信号的一类器件,用来对有害气体,易燃易爆气体等进行安全检测和报警,对生产生活中需要了解的气体进行检测,分析,研究等。近年来,我国气敏传感器产业有了较快的发展,但与国外相比,从技术水平,产业化及应用等领域均存在着不小的差距。目前,气敏传感器领域还存在一些问题。一是元件的稳定性差。由于元件电阻和灵敏度随时间而不断变化,漂移大给检测结果的可靠性带来不稳定的因素。二是选择性差。由于在检测气体时,往往还存在着其它的干扰气体(如烟酒等),使气敏元件发生交叉响应,产生误报。三是催化剂中毒。掺有催化剂的气敏元件接触某些气体后,活性组分被毒化,将会改变元件的选择性,降低其敏感度和稳定性,另外催化剂本身也存在着不稳定性问题。灵敏度问题。四是SnO2元件有时由于灵敏度过大导致误报,但是在检测某些低浓度气体时灵敏度却难以达到要求2。1.2 气敏传感器的研究现状气敏元件性能与敏感功能材料的种类、结构及制作工艺密切相关。用金属氧化敏感材料制作的半导体式气敏元件具有灵敏度高,结构简单,体小质轻,坚固耐用等优点而得到广泛的应用,目前仍以SnO2材料为主3。SnO2是一种广普型的气敏材料,围绕SnO2为基体材料的气敏材料的制备及其气敏元件制备的研究课题十分活跃。纯SnO2的气敏特性不甚好,尤其是它的热稳定性不高。为改善其气敏特性,常在SnO2基体中掺入贵金属或其他金属氧化物。尽管SnO2基传感材料具有许多优点,作为材料也存在一定缺点。通过控制气敏材料微粒大小,颗粒纳米化,掺杂其它添加剂或催化剂,利用过滤设备或透气膜来获得选择性,控制工作温度及环境湿度影响,改进制备等方法可以改善SnO2传感器的气敏性能4。纳米科学技术(NanoST)是研究尺寸在0.1100nm的物质组成体系的运动规律和相互作用以及可能的实际应用中的技术问题的科学技术。纳米技术的发展,不仅为传感器提供了优良的敏感材料,而且为传感器制作提供了许多新型方法。纳米固体材料具有庞大的界面,提供了大量气体通道,从而大大提高了灵敏度,工作温度大大降低,大大缩小了传感器的尺寸。当然,在己获得明显进展的纳米传感领域中尚存在很多问题,从敏感材料到制作技术都很不成熟,其性能也有不尽人意的地方5。气敏传感器在家用电器中也有相当广泛的应用。吸油烟机等产品上常用MQ-3型半导体气敏传感器,它采用旁热式结构,陶瓷管内装有高阻抗加热丝,管外涂有梳状金属电极,金属电极之外涂有SnO2材料,使SnO2烧结体位于两电极之间6。气敏传感器工作时,加热器通电加热,若无被检气体侵入时,气敏元件的阻值基本不变当气敏元件表面产生吸附作用,其阻值将随气体浓度的变化变化。当被检气体浓度增大到一定值时,气敏元件的阻值将随之下降到某一值,使电压比较器的状态发生变化,输出控制信号经电流放大后,控制继电器或双向晶闸管接通电动机电源使吸排油烟机工作7。1.3 设计酒精浓度探测仪的意义本设计基于AT89S51单片机设计的酒精气体浓度探测仪,可用来检测酒精气体浓度,最主要的用途是检测司机的酒精含量。酒后驾车发生事故的机率高达27%。随着摄入酒精量的增加,选择反应错误率显著增加,当血液中酒精含量由0.5增至1,发生车祸的可能性便增加5倍,如果增至1.5,可能性再增加6倍。机动车驾驶人员“酒后驾车” 及“醉酒驾车”极易发生道路交通事故, 严重危害了道路交通安全和人民生命财产安全。人饮酒后, 酒精通过消化系统被人体吸收, 经过血液循环, 约有90%的酒精通过肺部呼气排出, 因此测量呼气中的酒精含量, 就可判断其醉酒程度。开车司机只要将嘴对着传感头使劲吹气,仪器就能发上显示出酒精浓度的高低,从而判断该司机是否酒后驾车,避免事故的发生。当然,最好的办法是在车内安装这种测试仪,司机一进入车内检测仪就检测司机的酒精含量,如果超出允许值,系统控制引擎无法启动,这样就可从根本上解决酒后驾车问题。 酒精气体浓度探测仪在生产生活中也有重要的应用,比如,在一些环境要求严格的生产车间,用这种酒精浓度探测仪,可随时检测车间内的酒精气体浓度,当酒精气体浓度高于允许限定值时,发出警报,提醒人们及时通风换气,做到安全生产。1.4 本文主要研究工作本文以AT89S51单片机为核心,设计了用于测量酒精浓度的探测仪,主要研究工作包括以下3个方面。(1)硬件电路方面,对气体传感器MQ-3按检测电路,接上一定阻值的负载电阻,检测它的技术参数,确定MQ-3所接负载电阻的大小,完成信号采样电路的设计;采样到的模拟电压电信号通过A/D转换,得到可供单片机处理的数字信号,再由单片机作相应的数据处理;发光二极管报警显示和3个单位8段共阴数码管浓度值显示。(2)软件方面,标准的确定是该部分要做的主要工作。因为原始的采样值是一个间接的负载分压值,需要将它转化为被测酒精浓度值。通过多个样品的测量确定多个浓度区间的转换标准,并将每个区间的转换关系近似线性化处理,然后通过软件编程的方法来实现。(3)为了尽量减少设计的气体传感器的测量误差,在测量酒精溶液样品时要考虑并解决3个主要问题。一是外界环境流动空气对传感器的影响和对气体样品的稀释,二是样品的稳定性对测量带来的误差,三是水蒸气对测量的影响。针对这3个主要问题提出以下解决方案和验证方法。测量样品时,将探头尽量放入塑料瓶内,可以在一定程度上消除流动空气的影响,同时应选择空气流动较小的室内环境来测量。水蒸气对MQ-3的影响很小,这一点可以通过对只装有纯净水的塑料瓶的多次测量来验证。用相同容量的塑料瓶配制好不同浓度的酒精溶液后,将它密封并放置一段时间,待其稳定后再测量。再通过反复多次测量多组数据,求其平均值的方法来缩小测量误差。2 硬件电路设计与实现2.1 单片机开发流程(1)可行性调研。可行性调研的目的,是分析完成这个项目的可能性。进行这方面的工作,可参考国内外有关资料,看是否有人进行过类似的工作。如果有,则可分析他人是如何进行这方面工作的,有什么有点和缺点,有什么值得借鉴的;如果没有,则需要作进一步的调研,此时的重点应放在能否实现这个环节,首先从理论上进行分析,探讨实现的可能性,所需求的客观条件是否具备,然后结合实际情况,再决定能否立项的问题。(2)系统总体方案的设计。在进行可行性调研后,如果可以立项,下一步工作就是系统总体方案的设计。工作的重点应放在该项目的技术难度上,此时可参考这一方面更详细、更具体的资料,根据系统的不同部分和要实现的功能,参考国内外同类产品的性能,提出合理而可行的技术指标,编写出设计任务书,从而完成系统总体方案设计。(3)设计方案细化,确定软硬件功能。一旦总体方案确定下来,下一步的工作就是将该项目细化,即需明确哪些部分用硬件来完成,哪些部分用软件来完成。由于硬件结构与软件方案会相互影响,因此,从简化电路结构、降低成本、减少故障率、提高系统的灵活性与通用性方面考虑,提倡软件能实现的功能尽可能由软件来完成;但也应考虑软件代硬件的实质是以降低系统的实时性、增加处理进行为代价的,而且软件设计费用、研制周期也将增加,因此系统的软硬件功能分配应根据系统的要求及实际情况而合理安排,统一考虑。在确定软硬件功能的基础上,设计者的工作就开始涉及到具体的问题,如仪器的体积及与具体技术指标相对应的硬件实现方案,软件的总体规划等。在确定人员分工、安排工作进度、规定接口参数后,就比须考虑硬件软件的具体问题了。(4)一个单片机应用系统经过调研、总体设计、硬件软件设计、制版、元件安装后,在系统的程序存储器中放入编制好的应用程序,系统即可运行。但一次性成功的几乎是不是不可能的。由于单片机在执行程序时人工是无法控制的,为了能够调试程序,检查硬件、软件运行情况,这就需要借助某种开发工具模拟用户实际的单片机,并且能随时观察运行的中间过程而不改变运行中有的数据性能和结果,从而进行模拟现场的真实调试。2.2 硬件系统框图基于AT89S51单片机用MQ-3型气体传感器实现酒精气体浓度的检测,需要信号采集模块用于对酒精浓度信号的采集,该信号是通过MQ-3气体传感器和负载电压得到分压电信号。信号转换模块用来把采集到得模拟电压信号转换位可以用单片机处理的数字信号。数码管显示模块是对单片机处理后的数字信号的显示,用来显示酒精的浓度。报警模块是对设定值提供报警功能,该功能用发光二极管显示。根据各功能模块的设计,可得到它的系统总框图,如图1所示。酒精气敏传感器LM3914发光二极管ADC0809单片机数码管图1 系统总框图2.3 信号采集电路2.3.1 气体传感器的选择根据被检测气体的不同,气敏传感器可分为以下三类:(1)可燃性气体气敏传感器。目前该类气敏传感器需求量最大,包含各种无机和有机类气体检测,主要用于抽油烟机、泄露报警器和空气清新剂等方面,并已经形成生产规模,在油田、矿区、化工、企业及家庭等生产和生活领域广泛用作气体泄露报普,特别是用于家庭气体泄露报警,需求量不断增加,使该类传感器有着广泛的发展空间。(2)CO和H2气敏传感器。CO气敏元件可用于工业生产、环保、汽车、家庭等CO泄露和不完全燃烧检测报警;H2气敏元件除应用于工业等领域外,主要用于家庭管道煤气泄露报警。由于我国管道煤气中H2含量很高,而氢敏元件较氧化碳元件价格低,灵敏度高,因此,用氢敏元件做城市管道煤气泄露报警更为适宜。(3)毒性气体传感器。毒性气体传感器又称为环境有毒有害气体传感器,主要用于检测烟气、尾气、废气等环境污染气体,虽然SnO2气敏传感器对CO,H2S等有毒有害气体敏感,但应用最多的仍是电解式化学传感器。 传感器的分类方式有很多种,以上是根据被检测气体的性质进行的分类,也有根据元件的物理特性进行分类的。一个新型的气体检测系统应该包括:(1)基于一种或几种传感技术的气体传感器。(2)组合了气体传感器和采样调理电路的探头。(3)配有人机接口软件的中心监测和控制系统。(4)在一些应用中,与其它安全系统和仪器的接口。本设计中的酒精气体传感器采用河南汉威电子有限公司的MQ-3型,它属于MQ系列气敏元件的一种。如图2所示:图2 MQ-3特点:检测范围为10ppm2000ppm ;灵敏度高,输出信号为伏特级;响应速度快,小于10秒;功耗小于0.75W,尺寸:D17*H10。 MQ-3型气敏传感器的敏感部分是由金属氧化物(二氧化锡)的N型半导体微晶烧结层构成。当其表面吸附有被测气体酒精分子时,表面导电电子比例就会发生变化,从而其表面电阻会随着被测气体浓度的变化而变化。由于这种变化是可逆的,所以能重复使用。MQ-3的灵敏度特性曲线如 图3所示。图3 MQ-3灵敏度特性曲线检测电路如图4所示,当电源开关S断开时,传感器加热电流为零,实测A,B之间电阻大于20M。S接通,则f,f之间电流由开始时155mA降至153mA而稳定。加热开始几秒钟后A,B之间电阻迅速下降至10K以下,然后又逐渐上升至120K以上后并保持着。此时如果将酒精溶液样品靠近MQ-3传感器,我们立即可以看到数字万用表显示值马上由原来大于120K降至10K以下。移开小瓶过1分钟左右后,A,B之间电阻恢复至大于120K。这种反应可以重复试验,但要注意使空气恢复到洁净状态。经实验的反复检测,MQ-3传感器可以正常工作使用,对不同浓度的酒精溶液有不同的变化,响应时间和恢复时间都正常,可以开始作信号采样模块电路的设计。图4 MQ-3检测电路2.3.2 信号采样电路信号的采样模块电路如图5所示。MQ-3的加热电阻两端即H引脚接至+5V直流稳压电源,用于电阻丝对敏感体电阻的加热。MQ-3的两个A引脚相连,作为敏感体电阻的一个电极。MQ-3的两个B引脚也连接在一起,作为敏感体电阻的另一个电极。将电极断A接到电源正极,电极端B接两个270并联的电阻。MQ-3型气敏传感器与电位器串联构成分压电路,采样点为电位器的分压。MQ-3型气敏传感器的敏感部分是由金属氧化物SnO2的N型半导体微晶烧结层构成。当其表面吸附有被测气体酒精分子时,表面导电电子比例就会发生变化,从而其表面电阻会随着被测气体浓度的变化而变化。由于这种变化是可逆的,所以能重复使用。当气敏传感器的敏感体电阻阻值发生改变时,对应的电位器的分压值也会发生相应的变化,即一个电压值对应着一个被测酒精气体浓度。对酒精气体浓度的采样就可以转化为对电位器分压的采样。 在采样硬件电路中实际要考虑到MQ-3的实际技术参数,即加热电阻和敏感体电阻的大小,该部分应与电源正极相连。负载电阻要根据MQ-3实际的技术参数而选择阻值合适的电阻。应为实验所用的MQ-3在预热5到10分钟后,它的敏感体电阻只有120K,所以负载电阻选用两个270并联,构成采样部分的分压电阻。图5 采样模块2.4 信号转换电路单片微机是单片微型计算机的译名简称,在国内也常称为“单片微机”或“单片机”。它包括中央处理器CPU,随机存储器RAM,只读存储器ROM,中断系统,定时器/计数器,串行口和I/O口等等。现在,单片微机已不仅指单片计算机,还包括微计算机,微处理器,微控制器和嵌入式控制器,单片微机已是它们的俗称8。AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4K的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器,既可在线编程也可以用传统方法进行编程及通用8位微处理器于单片芯片中,可灵活应用于各种控制领域。AT89S51提供以下标准功能:4KBFlash闪存存储器,128B内部RAM,32个I/O口线,看门狗,两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。根据实际需要,本次设计选用的是以8051为核心单元Atmel公司的低耗AT89S51单片机。AT89S51芯片有40条引脚,采用双列直插式封装,如图6所示。下面说明各引脚功能。 图6 AT89S51芯片管脚VCC:运行和程序校验时接电源正端。GND:接地。XTAL1:输入到单片机内部振荡器的反相放大器。XTAL2:反相放大器的输出,输入到内部时钟发生器。P0口:8位漏极开路的。使用片外存储器时,作低八位地址和数据分时复用,能驱动8个LSTTL上拉电阻。P1口:8位、准双向I/O口。P2口:8位、准双向I/O口。当使用片外存储器(ROM及RAM)时,输出高8位地址。可以驱动4个LSTTL负载。P3口:8位、准双向I/O口,具有内部上拉电路,提供各种替代功能。P3.0RXD串行口输入口,P3.1TXD串行口输出口,P3.2外部中断0输入,P3.3外部中断1输入,P3.4T0定时器/计数器0的外部输入,P3.5T1定时器/计数器1的外部输入,P3.6低电平有效,输出,片外存储器写选通,P3.7低电平有效,输出,片外存储器读选通。RST:复位输入信号,高电平有效。在振荡器工作时,在RST上作用两个机器周期以上的高电平,将器件复位。/VCC:片外程序存储器访问允许信号,低电平有效。高电平时选择片内程序存储器,低电平时程序存储器全部在片外而不管片内是否有程序存储器。ALE/PROG:地址锁存允许信号,输出。ALE以1/6的振荡频率固定速率输出,可作为对外输出的时钟或用作外部定时脉冲。单片机最小系统的设计包括电源,晶振和复位电路三个部分。这是使单片机正常工作的必要外围电路部分。针对不同型号的单片机在最小系统设计上会有一些差别。对于选用的AT89S51单片机,根据美国ATMEL公司提供的技术资料,可以对它的最小系统作恰当的设计,如图8所示9。对于电源部分,技术资料中性能参数里给出的标准工作电压是4.05.5V。因此,单片机的引脚40对应的VCC接到+5V电源的正极,引脚10对应的GND接到+5V电源的接地端,为AT89S51单片机提供正常的工作电压。对于晶振部分,AT89S51单片机中有一个用于构成内部振荡器的高增益反相放大器,引脚19对应的XTAL1和18对应的XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。如图8所示,石英晶体及电容C1和C2接在放大器的反馈回路中构成并联谐振电路。石英晶体的两端分别接到引脚XTAL1 和引脚XTAL2,同时石英晶体的两端分别接一个电容C1和C2,电容的另一端接地。对于外接电容C1和C2的大小虽然没有十分严格的要求,但电容容量的大小还是会对振荡频率的高低、振荡器工作的稳定性、起振的难易程度和温度稳定性带来一定的影响。根据技术资料的推荐,使用石英晶体推荐电容容量为30pF10pF,使用陶瓷谐振器推荐电容容量为40pF10pF。因为电路中接的是石英晶体,所以设计中接的两个电容C1和C2的容量都为33pF。对于复位电路部分,AT89S51技术资料给出,当振荡器工作时,RST引脚出现两个机器周期以上的高电平将使单片机复位。复位是单片机的初始化操作,当由于程序运行出错或操作错误使系统处于死锁状态时,为了摆脱困境,可以按复位键以重新启动,所以复位电路的设计很有必要。复位操作有上电自动复位、按键电平复位和外部脉冲复位三种方式,本设计选用按键电平复位方式。如图7所示,10F的电容C3与270的电阻并联后再与一个10K的电阻串联,电容的正极端接到电源的正极,电容的另一端接至引脚RST。设计中选用的石英晶体大小为11.0952MHz,但复位键按下后,电容和电阻选用的参数值能够保证给复位端RST提供大于2个机器周期的高电平复位信号10。图7 AT89S51单片机最小系统设计电路ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图8所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。 图8 ADC0809内部结构ADC0809芯片有28条引脚,采用双列直插式封装,如图9所示。下面说明各引脚功能。 图9 ADC0809芯片IN0IN7:8路模拟量输入端。 2-12-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。如表1所示。ALE:地址锁存允许信号,输入,高电平有效。 START:A/D转换启动信号,输入,高电平有效。 EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、REF(-):基准电压。 Vcc:电源,单一+5V。 GND:地。 ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。当检测到酒精气味时,气体传感器的A-B间电阻变小,则ADC0809的模拟输入端IN0的电压变大。采用查询方式对输入模拟信号进行A/D转换,然后将数据通过三位八段数码管显示。表1 ADC0809通道地址ADDC ADDB ADDA 选通通道0 0 0IN00 0 1IN10 1 0IN20 1 1IN31 0 0IN41 0 1IN51 1 0IN61 1 1IN7ADC0809芯片内部没有时钟脉冲源,可以用单片机提供的地址锁存控制输入信号ALE经D触发器二分频后,作为 ADC0809的时钟输入。ALE端信号的频率是单片机时钟频率的1/6。单片机的时钟频率是11.0952MHz,则ALE端输出信号的频率为1.8492MHz,再二分频后为0.9246Hz,符合ADC0809对时钟频率的要求。由于ADC0809具有三态输出数据琐存器,其8位数据输出端可以直接与数据总线相连。地址选通端ADDA,ADDB,ADDC分别与单片机地址总线的低三位A0,A1,A2相连,用于选通IN0-IN7中的某一通道。由于ALE和START连在一起,ADC0809在锁存通道地址的同时启动A/D转换。在读取A/D转换结果时,OE产生的正脉冲信号用于打开三态输出锁存器。ADC0809的EOC信号与单片机的P3.3相连,作为A/D转换是否结束的状态信号供单片机查询。ADC0809与AT89S51单片机的接口电路如图10所示11。单片机引脚P3.6与P2.7进过或非门后于模数转换芯片的ALE端和START端子用导线相连接,用于对模数转换芯片写入数据的写信号。单片机的RD端P3.7与P2.7进过或非门后于模数转换芯片的OE端子用导线相连接,作为单片机读取模数转换数据的读信号。单片机引脚P3.3与模数转换芯片的EOC端经过或非门后的输出端用导线相连接,用于单片机对模数转换是否结束的查询,模数转换结束后可以查询到P3.3为高电平,为单片机读取数据作准备。单片机的ALE端口接到D触发器的时钟信号输入端CK,D触发器的反相输出端与触发信号输入端用导线相连,D触发器的清零和复位端为低电平有效,分别接高电平,D触发器的正向输出端与模数转换芯片的CLK端子用导线相连接,为模数转换芯片提供正常的时钟信号。把模数转换芯片的A2A1A0端分别用导线连接到地址锁存器的低三位,用于选择模数转换的通道。模数转换芯片的IN0端子用导线与信号采样部分的负载电阻端相连,作为要模数转换的输入端。单片机引脚P0.0P0.7连接到模数转换芯片的数据输出端D0D1D2D3D4D5D6D7端,用于读取模数转换后的数据。地址地址锁存芯片74LS373的输入端低三位分别与单片机引脚P0.0P0.2连接,用于锁存选择模数转换通道的地址。图10 ADC0809与单片机AT89S51接口电路2.5 发光二极管显示报警电路发光二极管集成驱动芯片LM3914的管脚图如图11所示。其内部的缓冲放大器最大限度的提高了该集成电路的输入电阻(5脚),电压输入信号经过缓冲器(增益为零)同时送到10个电压比较器的异相(-)输入端。10个电压比较器的同相输入(+)端分别接到10个等值电阻(1K)串联回路的10个分压端。因为与串联回路相接的内部参考电压为1.2V,所以相邻分压端之间的电压差为1.2V/10=0.12V。为了驱动LED1发光,集成电路LM3914的1脚输出应该为低电平,因此要求电压比较器异相(-)端的输入电压应大于0.12V。同理,要使LED2发光,异相端输入电压应大于0.12*2=0.24V;要使LED10发光,异相端输入电压应大于0.12*10=1.2V。LM3914的9脚为点,条方式选择端,当9脚与11脚相接为点状显示;当9脚与3脚相接,则为条状显示。本系统采用条状显示方式,即将引脚9和引脚3都接到电源的正极。图11 LM3914管脚图如图12所示,LM3914的3和9引脚接电源正极,使发光二极管成柱状显示,7和8引脚接一个2K的电阻,控制发光二极管的亮度,5引脚为采样信号的输入端,10到18引脚和1引脚分别接发光二极管的负极端,4和2引脚与发光二极管的正极间接一个10F的电容,作为发光二极管的虚电源,驱动要反光的二极管点亮。当检测到酒精气味时,气敏传感器的A-B间电阻变小,LM3914的5端电位升高,通过比较放大,驱动发光二极管依次发光,从而区分出酒精含量的高低,直观的看出所测的酒精浓度达到了哪个水平值,起到报警的作用。输入灵敏度可以通过负载电阻的调节来实现,即对地电阻调小时灵敏度下降;反之,灵敏度增加。改变7脚与8脚之间电阻的阻值可以调节发光二极管的显示亮度,当阻值增加亮度减弱,反之加强。图12 发光二极管显示2.6 数码管显示电路发光二极管一般是砷化镓半导体二极管,在发放光二极管两端加上正向电压,则发光二极管发光。数码管是由若干发光二极管组合而成的,有共阴极和共阳极两种结构形。8段共阴数码管由abcdefg、dg这8个发光二极管组成。把8个发光二极管的阴极连接在一起构成共阴极端,接进电路时,共阴极端接地,给要发光显示的二极管的阳极端接高电平可使该发光二极管导通点亮。如图13所示。图13 8段共阴数码管结构图用单片机驱动数码管有静态显示和动态显示,静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就可以驱动数码管显示数据,直到下一次显示数据需要更新时再传送一次新的数据就可以了。静态显示数据稳定,占用CPU时间少。动态显示需要时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU 时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。设计选用3个单位8段共阴数码管来显示输出的数据,因为电路硬件相对较简单,所以选择静态显示方法。选用3个移位寄存器74LS164驱动数码管发光点亮。电路连接如图14所示。移位寄存器在电路中一是驱动数码管点亮,二是对输入的串行数据并行输出,起到串并转换的作用。移位寄存器74LS164串行数据输入端与前一位的并行输出最高位相连,第一位移位寄存器的数据输入端与单片机的数据输出端P1.7连接。单片机引脚P1.6用于给移位寄存器提供移位的时钟脉冲,该引脚与三个移位寄存器的时钟输入端CLK相连。因为每位数据串行输出先输出的是低位,所以数码管引脚a、b、c、d、e、f、g、dg应顺序与对应位的移位寄存器并行输出端的Q7、Q6、Q5、Q4、Q3、Q2、Q1、Q0连接。图14 数码管显示电路2.7 系统整体电路图信号采样模块电路的输出接到发光二极管显示LM3914的输入端,同时也将采样信号输出端接至A/D转换芯片的输入端,再加上单片机最小系统电路、单片机与模数转换芯片的连接和单片机与数码管显示的连接,即可作出它的整体电路图,如图15所示。图15 整体电路图3 软件编程3.1 开发环境选用的开发平台为MedWin单片机集成开发环境,只需在PC机上安装MedWin软件,然后在MedWin软件代码编辑器编辑程序代码,经汇编,修改,产生代码,形成输入输出口实验十六进制.HEX文件。打开Microcontrmller ISP Software,在菜单options选项中选择select device,在弹出的窗口中选择器件AT89S51,并选Byte Mode点击OK。初始化器件后,将经过编译生成的.HEX十六进制文件下载到单片机。对于8051系列单片机,现有四种语言支持,即汇编、PL/M、C和BASIC。本设计软件编程部分选用汇编语言来写程序代码。3.2 程序流程当检测到酒精气味时,气体传感器MQ-3两个电极端A-B间电阻将变小,对应与气体传感器负载电阻的分压将变大。因为ADC0809的模拟输入端IN0与负载电阻的一端用导线连在了一起。所以单片机在启动测试模数转换芯片之前要选择通道0,写入模数转换芯片,并将用作查询的单片机引脚P3.3置位,然后启动对通道IN0端输入的采集电压信号作模数转换,等待转换的结束。利用单片机丰富的I/O口可以采用查询方式来检测模数转换是否结束,当单片机引脚P3.3为1时转换未结束等待,当查询到P3.3为0时表示模数转换已经结束,可以开始读取数据了。单片机通过I/O口与模数转换芯片的数据输出口相连读取转换后的数据。读取后的数据送到数据存储器单元中,经过单片机作相应的处理,即要将该电压值转换为酒精浓度值,然后处理后的数据转换成三位十进制BCD码用数码管显示。程序流程图如图16所示。单片机选择A/D通道地址单片机P3.3置位并启动A/D测试A/D转换结束?P3.3=1?数码管显示NY单片机初始化开始单片机读取数据并作处理图16 程序流程图3.3 程序代码编写系统电源线接通或者系统复位后,程序从主程序入口进入运行。因为在程序中每次对模数转换后读取的数据,需要相应的存储空间,同时对读取的数据作适当处理后也要送到特定的存储空间存储起来,以供后面的数码管显示用。当然,在程序运行的过程当中,还要用到工作寄存器,因为工作寄存器都是临时存储数据,不需要保存作为以后处理要用到的数据,所以工作寄存器的初始化这部分可以省去。于是,对于程序的初始化程序代码可以相应写出13。START:MOV R7,#60HMOV R0,#20HCLR ALOOP:MOV R0,AINC R0DJNZ R7,LOOP初始化程序从数据存储器地址为20H单元开始,到80H单元全部清零。即每次的初始化将上次存储的数据全部清除,用于存放当前要存储的数据。对模拟电压信号的数字转换由模数转换芯片ADC0809加单片机AT89S51控制来完成。模拟电压的输入端接在模数转换芯片的IN0通道,再根据单片机与模数转换芯片的连接,单片机在选择读写地址时应该为#7FF8H。因为单片机高8位地址位的P2.7位与单片机的位经或非后与模数转换芯片的START和ALE用导线连接。所以单片机在将地址#7FF8H写入模数转换芯片后,一方面模数转换芯片锁存地址选择线的状态,从而选通相应的模拟通道,同时启动模数转换。模数转换需要一定的时间,这时可以开始对转换是否结束进行不断的查询。ADC0809中模数转换结束输出标志位是EOC,转换结束时为高电平有效。该位通过一个反相器与单片机引脚P3.3相连,因为启动模数转换之前P3.3位被置位,所以当查询到P3.3位为0时即表示模数转换结束。最后将转换后的数据读取到单片机累加器A中。根据这思路可以写出模数转换的子程序代码。TEST:MOV DPTR,#7FF8H SETB P3.3 MOVX DPTR,A JB P3.3,$ MOVX A,DPTR RET把转换后得到的数字电压值读取到单片机后,因为,实际的电压值范围在0+5V之间,而ADC0809模数转换芯片对应的是8位精度的处理,即从00000000B到11111111B,所以单片机还要对它作个除#51的处理工作。而在处理过程中对于有些数据的处理,可能要碰到双字节相除的情况。为此,在第一位单字节除#51后,接下来的小数部分位的除#51则要作双字节的除法,这样才能保证使所有位能显示出来。如果所有位都当单字节除法来运算的话,对于有些要作双字节除法的位上的数字则无法显示,而能是显示0。相除后对应的每一位分别送到地址为#7DH,#7EH,#7FH的存储单元保存,以供显示或后续处理用。思路明确后,实际电压值转换部分程序可以写出来。MOV B,#51DIV ABMOV 7DH,AMOV A,BMOV B,#10MUL ABMOV R6,AMOV R7,BACALL DIV16MOV 7EH,R6MOV A,R2MOV B,#10MUL ABMOV R6,AMOV R7,BACALL DIV16MOV 7FH,R6经过处理后实际采样到的电压值对应的各个位就分别存储在#7DH,#7EH,#7FH三个存储单元里面了。模数转换后得到的数字电压量被单片机读取后还要作一定的数据处理,其中包括把电压值转换为与之相对应的酒精浓度值,根据总体设计思路,对电压值都近似作对应区间的线性转换。即首先,单片机要对采集到的数据在哪个区间作个判断跳转,然后再根据该区间的线性关系作转换,得到对应的酒精浓度值。根据酒精浓度与电压的线性映射关系,如表3所示,可以写出该部分的程序代码MOV B,#100MVL ABMOV R6,AMOV R7,BMOV R5,#0MOV R4,#51ACALL DIV16MOV 70H,R6MOV 71H,R7MOV A,71HJNZ L5L1:MOV 72H,#75CLR CMOV A,70HSUBB A,72HJNC L2ACALL PP0AJMP PPL2:MOV 72H,#145CLR CMOV A,70HSUBB A,72HJNC L3ACALL PP1AJMP PPL3:MOV 72H,#173CLR CMOV A,70HSUBB A,72HJNC L4ACALL PP2AJMP PPL4:MOV 72H,#233CLR CMOV A,70HSUBB A,72HJNC L5ACALL PP3AJMP PPL5:MOV 72H,#18CLR CMOV A,70HSUBB A,72HJNC L6ACALL PP4AJMP PPL6:MOV 72H,#64CLR CMOV A,70HSUBB A,72HJNC L7ACALL PP5AJMP PPL7:MOV 72H,#105CLR CMOV A,70HSUBB A,72HJNC L8ACALL PP6AJMP PPL8:ACALL PP7AJMP PP从读取到的电压值得到酒精浓度值后,还要把该值转换为3位10进制BCD码,存储到特定的存储单元以供数码管显示数值。数码管显示选用的是静态显示的方法,要在每次显示数据时把要显示的3个位按顺序串行送到数码管集成驱动电路74LS164并行输出,以同时驱动3个数码管同时点亮。根据7段数码管的字型码如表2所示和移位寄存器74LS164的逻辑功能,将对应的共阴极字型码放在一个表格中,然后通过查表的方式找到要显示的数字送移位寄存器驱动数码管显示。单片机对每次移出的位通过P1.7输入到移位寄存器的数据输入端,移位寄存器的时钟脉冲通过单片机P1.6模拟的时钟信号提供。于是可以写出显示部分的程序代码。DISP:MOV DPTR,#TABMOV A,7FHMOVC A,A+DPTRACALL SOMOV A,7EHMOVC A,A+DPTRACALL SOMOV A,7DHMOVC A,A+DPTRACALL SORETSO:MOV R7,#8SO1:CLR P1.6 RRC A MOV P1.7,C SETB P1.6 DJNZ R7,SO1 RET表2 七段LED字型码显示字符共阴极字型码共阳极字型码03FHC0H106HF9H25BHA4H34FHB0H466H99H56DH92H67DH82H707HF8H87FH80H96FH90H 程序当中为了显示的精确,在有些位相除时用到了双字节相除的算法。对于多字节无符号数的除法,可以依照移位相减的基本方法来进行。除法运算是按位进行的,每一位是一个循环,每个循环中要作三件事,一是被除数左移一位,二是余数减除数,最后根据是否减来置商位为1或0。对于被除数的移动,最简单的办法是把被除数向余数单元左移,把被除数左移后空出的低位存放商数,当除法完成后,被除数已全部移动到余数单元并逐次被减而得到余数,而被除数单元中内容已成为商数。据此,可以写出双字节除法的程序代码。DIV16:MOV R5,#0 MOV R4,#51 MOV R3,#0 MOV R2,#0 MOV R1,#16LP1:CLR C MOV A,R6 RLC A MOV R6,A MOV A,R7 RLC A MOV R7,A MOV A,R2 RLC A MOV R2,A MOV A,R3 RLC A MOV R3,A MOV A,R2 CLR C SUBB A,R4 JC NEXT MOV R0,A MOV A,R3 SUBB A,R5 JC NEXT INC R6 MOV R3,A MOV A,R0 MOV R2,ANEXT:DJNZ R1,LP1RET根据程序流程图和各个子程序的编写可以得到整个设计的总程序代码,见附录。打开实验开发平台MedWin单片机集成开发环境,在MedWin软件代码编辑器编辑程序代码,经汇编,修改,产生代码。4 电路调试与测试结果4.1 电路调试根据各个模块功能的设计和绘制的整体电路图,找到各功能模块的连接点。按照设计的步骤,并对照总电路图,在面包板上连接电路。电路的连接顺序是,先连接好各个模块,在调试检查正确的前提下再把各个模块连接起来。打开MedWin软件,将写好的调试程序代码在计算机上输入、汇编、修改、产生代码,形成输入输出口实验.HEX文件。打开打开Microcontrmller ISP Software软件,在菜单options选项中选择select device,在弹出的窗口中选择器件AT89S51,并选Byte Mode点击OK。初始化器件后,将经过编译生成的,HEX十六进制文件下载到单片机。电路连接好,并将调试程序代码(注释电压到酒精浓度转换关系代码)烧写到AT89S51单片机上后,接上+5V电源开始调试。先把气体传感器探头用一个阻值为20k的电阻替代,复位单片机,观察数码管上的显示数据和发光二极管的点亮情况。用万用表测量采样点的电压值,看用万用表测得的电压值与数码管上显示数据是否一致。因为各导线和元器件对电压电流的影响,数码管显示的数据与万用表测得的数据存在一定的偏差,但在可接受的范围内。调节电位器,观察数码管数据显示的变化,同样用万用表测量电压值作比较。测量数据与数码管显示数据基本一致,说明电路数码管显示部分连接正确。然后,
展开阅读全文