气体浓度监测仪设计单片机原理及接口技术课程设计_第1页
气体浓度监测仪设计单片机原理及接口技术课程设计_第2页
气体浓度监测仪设计单片机原理及接口技术课程设计_第3页
气体浓度监测仪设计单片机原理及接口技术课程设计_第4页
气体浓度监测仪设计单片机原理及接口技术课程设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

aaaa辽宁工业大学单片机原理及接口技术课程设计(论文) 题目: co气体浓度监测仪设计院(系):电气工程学院专业班级: 学号: 学生姓名: 指导教师: (签字)起止时间:2013.06.24-2013.07.12课程设计(论文)任务及评语院(系):电气工程学院 教研室:学号_学生姓名 专业班级1s<xnn担恕睫CO气体浓度监测仪设计课程设计(论文)任务该监测仪主要用于公共场所及某些车间空气中CO浓度的监测,检测标准是:CO浓度小时均值应低于3mg/m3,日均值应低于4mg/m3。.设计任务:CPU最小系统设计(包括CPU选择,晶振电路,复位电路)传感器选择以及模拟量检测电路设计人机对话接口电路设计(要求强弱电隔离)4..程序流程图设计机程序清单编写技术参数:1.CO浓度小时均值应低于3mg/m3,日均值应低于4mg/m3。2.工作电源220V设计要求:1、 分析系统功能,选择合适的单片机及传感器,模拟量输入电路设计等;2、 应用专业绘图软件绘制硬件电路图和软件流程图;3、 按规定格式,撰写、打印设计说明书一份,其中程序开发要有详细的软件设计说明,详细阐述系统的工作过程,字数应在4000字以上。进度计划第1天 查阅收集资料第2天 总体设计方案的确定第3-4天 CPU最小系统设计第5天 传感器选择以及模拟量检测电路设计第6天 人机对话接口电路设计第7天 程序流程图设计第8天 软件编写与调试第9天 设计说明书完成第10天 答辩指导教绩师评语及成平时: 论文质量: 答辩: 总成绩: 指导教师签字: 年月 日注:成绩:平时20%论文质量60%答辩20%以百分制计算aaaa本系统利用51单片机做核心控制模块,利用MQ-7一氧化碳传感器探测一氧化碳。实时监控多处一氧化碳浓度变化,如果某处一氧化碳浓度过高,系统将发出声音报警,并显示报警传感器号码,提醒人们及时抢险。本系统可用于家庭环境,也适用于工业环境。由于单片机成本低廉,自动控制功能比较强大,运行稳定,环境适应性好,所以本系统采用单片机做控制的核心元件。MQ-7一氧化碳传感器对一氧化碳的灵敏度高;长寿命,低成本;简单的驱动电路即可。因此,很适用于家庭的一氧化碳检测。数码管能清晰的显示报警的房间号码,即使在光线较暗时,所以选用数码管做显示模块。关键词:一氧化碳;单片机;检测;报警aaa目录TOC\o"1-5"\h\z\o"CurrentDocument"目录 IV\o"CurrentDocument"第1章绪论 1\o"CurrentDocument"CO浓度监测仪研究概况 1\o"CurrentDocument"1.2本文研究内容 1\o"CurrentDocument"第2章CPU最小系统设计 2\o"CurrentDocument"CO气体浓度监测仪总体设计方案 2\o"CurrentDocument"CPU的选择 3\o"CurrentDocument"2.3时钟电路设计 6\o"CurrentDocument"2.4复位电路设计 7\o"CurrentDocument"2.5单片机最小系统设计 7\o"CurrentDocument"第3章CO浓度监测仪输入输出电路设计 8\o"CurrentDocument"3.1CO传感器的选择 8\o"CurrentDocument"3.2运算放大器选择 10\o"CurrentDocument"A/D转换电路 10\o"CurrentDocument"3.4声光报警电路 11\o"CurrentDocument"3.5显示电路 12\o"CurrentDocument"第4章软件设计 134.1流程图设计 13\o"CurrentDocument"4.2程序编写 144.2.1主程序 144.2.2调零子程序 154.2.3显示子程序 164.2.4报警子程序 194.2.5中断取值子程序 19\o"CurrentDocument"第5章软件仿真 22\o"CurrentDocument"第6章课程设计总结 24\o"CurrentDocument"参考文献 25\o"CurrentDocument"附录硬件原理图 26aaaa第1章绪论1.1CO浓度监测仪研究概况燃气(人工煤气、天然气、液化石油气)的普及,提高了生产效率、市民的生活质量,但在使用燃气的过程中,因燃气泄漏、废气等原因造成的燃气爆炸、中毒等意外事故时有发生,给人们的生命和财产安全带来了严重的威胁,因此安全使用燃气一直是燃气主管部门工作的重中之重。CO浓度监测仪能有效监测环境中可燃气体或毒性气体co的浓度,一旦其浓度超出报警限定值,就能发出声光报警信号,并且能自动开启排风扇把燃气排出室外,甚至能通过联动装置自动切断燃气供应防止燃气继续泄漏,起到安全防范的作用。但监测仪选用得是否合理,直接关系到其功能的充分发挥。该设计所研究的co浓度监测仪正是应这种要求而开发的。一氧化碳是一种无色、无味的气体,它与血液中的血红素结合的能力是氧的240倍,它与血红素形成稳定的络合物,使血红蛋白丧失了输送氧气的能力,从而导致组织低氧症,甚至死亡。一氧化碳浓度的高低是评价空气质量好坏的重要指标之一,也是工厂、煤矿井下是否发生自燃火灾的重要标志之一。为了保证人们身体健康和环境洁净,世界各国都纷纷致力于防止空气污染的产生监测仪是否灵敏可靠关系到人身财产安全,因此监测仪属于强制检定的计量器具。目前大多数报警器用户都使用汽油或液化气等超过以上高浓度的易挥发可燃气体对报警器进行检测,若报警即判断监测仪正常。这样做虽然省缺了购买可燃气体标准物质的麻烦和费用,但实际上达不到保证安全的目的,从而形成重大安全隐患,有时还会造成报警器检测元件中毒。如果使用标准气体检测报警器,就能保证人身安全,同时杜绝报警器检测探头中毒现象。1.2本文研究内容本文所设计的数字气体报警器采用单片机AT89C51,其价格便宜,易于产品化。本设计能将置于测试环境中的气体传感器输出的模拟电压通过A/D转换器送入单片机AT89C51中进行处理并通过数码管显示,通过设置报警值,当检测到的浓度达到或者超过设定值时,用单片机控制发光二极管发光报警,同时打开喇叭发出声音报警,来达到报警的目的,并通过外接排风扇与电磁阀对其进行程控,以防事故的发生。而当系统出现故障时,黄色LED亮启,便于用户及时对报警器进行维修。系统以MQ-7气体传感器和AT89C51单片机为核心,设计气体泄漏报警器。实现:1.准确测量周围环境中的可燃性气体、有毒有害气体的泄漏;实现系统各个模块的功能控制;实现单片机编程语言系统的控制及传感器电路的控制。研究单片机各接口的作用及功能;5.了解MQ-7气体传感器的具体功能;6.实现对基本报警电路的控制。第2章CPU最小系统设计2.1CO气体浓度监测仪总体设计方案单片机应用系统的结构分三个层次:aaaa单片机:通常指应用系统主处理机,即所选择的单片机器件。单片机系统:指按照单片机的技术要求和嵌入对象的资源要求而构成的基本系统,如时钟电路、复位电路和扩展存储器等与单片机构成了单片机系统。单片机应用系统:能满足嵌入对象要求的全部电路系统。在单片机系统的基础上加上面向对象的接口电路,如前向通道、后向通道、人机交互通道(键盘、显示器、打印机等)和串行通行口(RS232)以及应用程序等。以此理解,一氧化碳报警器同样具有单片机应用系统的三个层次。其中以AT89C51单片机为核心构成单片机系统。在此系统中,检测信号进入单片机进行运算处理。为了更好的理清设计思路,将整个系统细分为三部分加以设计说明。整个报警器由三个部分组成,分为三大模块:浓度检测模块、主控模块和报警模块。在本次设计中,使用的核心器件是单片机和一氧化碳传感器。为了保重整个系统可靠的运行,设计中必须明确三大部分的实际联系:以单片机为中心,其他各大模块一一展开。其中,浓度检测及显示模块所实现的功能是将房间中的一氧化碳浓度值转换成为单片机能够处理的数字信号,并且浓度值显示出来:主控模块以单片机为主,对其他模块的运行进行控制;报警模块是此系统的外部电路,它的功能是实现报警。系统框图如图2-1所示。图2-1总体框图2.2CPU的选择数据处理过程是主要由AT89C51单片机等芯片完成的。AT89C51是一种带4K字节的闪烁可编程可擦除只读存储器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。其中包括128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51降至OHz的静态逻辑操作,并支持两种可选的节电工作模式[26】。空闲方式体制CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。单片机的可擦除只读存储器可以反复擦除1。。次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案°AT89C51单片机管脚图如图2-2所示1U1 392P10P00383P11P01374P12P02365P13P03356P14P04347P15P05338P16P0632P17P0713-O2112qINT1P2022INTOP212315P222414T1P2325TOP2426P253127EA/VPP262819P2718X1X2910RESETRXD11TXD1703016ALE/PQ_29 WRPSEN89C51图2-2AT89C51单片机管脚图引脚功能说明如下:-VCC:电源电压-GND:地•P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P。口接受指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。•P1□:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接受低8位地址。•P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位四肢的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据,在访问8位地址的外部数据存储器(例如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程和程序校验时,P2也接收高位地址和其他控制信号。•P3□:P3是一个带有内部上拉电阻的8位双向I/O口,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。aaaa-RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。•ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元DO位置位,可禁止ALE操作。该位置,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。•PSEN:程序存储允许输出是外部程序存储器的读选通型号,当89C51由外部存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。•EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12v的编程允许电源VPP,当然这必须是该器件使用12v编程电压VPP。•XTAL1:振荡器反相放大器及内部时钟发生器的输入端。-XTAL2:振荡器反相放大器的输出端。89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,外接石英晶体或陶瓷谐振器及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对电容C1、C2虽没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30Pf±10Pf,而如使用陶瓷谐振器建议选择40Pf±10Pf。用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到XTAL端,即内部时钟发生器的输入端XTAL则悬空。2.3时钟电路设计单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基本时钟的。单片机的时钟信号通常有两种产生方式:内部时钟方式和外部时钟方式。本课题采用内部时钟方式。在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。晶振频率取12MHz。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,本课题选用33pF的电容。易知:本单片机最小系统的振荡周期=1/(12MHz)=1/12uS寸钟周期=1/6us机器周期=lus。C1X1CRYSTAL33p图2-3C1X1CRYSTAL33p图2-3时钟电路原理图2.4复位电路设计无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。复位电路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作。单片机的复位条件:必须使其RST引脚上持续出现两个(或以上)机器周期的高电平。单片机的复位形式:上电复位、按键复位。本课题采用按键复位。在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于OV,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在aa0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。图2-4复位电路原理图2.5单片机最小系统设计单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路、时钟电路、复位电路。U1P10pooP11P01P12P02P13P03P14P04P15P05P16P06P17P07INT1P20INTOP21P22T1P23TOP24P25EA/VPP26P27X1X2RESETRXDtxd"RD-ALE/Paaaa图2-5单片机最小系统原理图第3章CO浓度监测仪输入输出电路设计3.1CO传感器的选择选择一氧化碳传感器主要考虑以下的性能指标: 输入和输出之间成比例,直线性好、灵敏度高、分辨力强、测量范围宽。滞后、漂移误差小动态特性好功耗小时间老化特性优良 与被测体匹配良好,既不因接入传感器而使得被测对象受到影响,受被测量之外的影响小。体积小、重量轻、价格低廉。 故障率低,易于校准和维护。 由于传感元件的输出信号一边比较小,为了便于能够驱动控制电路,在传感器电路中还应该包括放大器。鉴于以上选择要点,本文中用到的传感器必须具备良好的测量效果、功耗小、动态特性良好和体积小、重量轻、价格低廉等几个主要特性。为此我们选择了MQ-7系列传感器。半导体一氧化碳传感器MQ-7所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。采用高低温循环检测方式低温1.5V加热)检测一氧化碳,传感器的电导率随空气中一氧化碳气体浓度增加而增大,高温(5.0V加热)清洗低温时吸附的杂散气体。使用简单的电路即可将电导率的变化,转换为与该气体浓度相对应的输出信号。MQ-7气体传感器对一氧化碳的灵敏度高,这种传感器可检测多种含一氧化碳的气体,是一款适合多种应用的低成本传感器。主要特点及应用:•对一氧化碳的高灵敏度。•长寿命,低成本。•简单的驱动电路即可•家用气体泄漏报警器•工业用一氧化碳报警器•便携式气体检测器MQ-7气敏元件的结构和外形如图3-1所示,由微型A12O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,为了改善传感器的选择性,传感器气室用活性炭过滤层与外界隔开。加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。图3-1MQ-7实物图3.2运算放大器选择由于气体传感器输出的电压值过低,无法直接使用A/D读取,必须要加入放大电路,对电压放大然后再经过A/D读取。在此,选择LM358作为运算放大器。LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。LM358具备以下特性:内部频率补偿;直流电压增益高(约100dB);单位增益频带宽(约1MHz);电源电压范围宽:单电源(3-30V)、双电源(±1.5-±15V);低功耗电流,适合于电池供电;低输入偏流,低输入失调电压和失调电流;共模输入电压范围宽,包括接地;差模输入电压范围宽,等于电源电压范围;输出电压摆幅大(0至VCC-1.5V)。图3-2运算放大器电路原理图3.3A/D转换电路为了方便与AT89C5单片机的链接,本系统采用AD0809模数转换芯片对采集到的气体信息进行数模转换。其分辨率为8位,不必进行零点和满度调整,且具有高阻抗斩波稳定比较器,8个通道的多路开关可直接存取8个单端模拟信号中的一个。利用单片机启动AD0809转换器,转换结束后再由AD0809向AT89C51发出中断请求信号,CPU响应中断请求。通过对译码器的读操作,读取转换结果并送到被测量的响应存储区。再重新选择被测量,并再次启动AD0809转换器转换后中断返回°AD0809与单片机AT89C51连线线路如图3-3所示。aaaaVCC34567-JNTN1NINJNSTEDC7D3~~8~7OVCC34567-JNTN1NINJNSTEDC7D3~~8~7OE~V~ClW~1112口114丿E0CALKD3D7OED6CLCKD5\rccD4\rREF+DOGNDVREF-DLD2Z卩OINJNINS1S2_54--222221D7^20-06^S~D4F、1SD2L DAC08A9图3-3AD0809与单片机AT89C51连线线路3.4声光报警电路系统的声,光报警电路由发光二极管和低电压蜂鸣器构成,分别由PIC单片机的2个端口控制。发光二极管LED具有体积小,抗冲击和抗震性能好,可靠性高,寿命长,工作电压低,功耗小,响应速度快等优点,常用于显示系统的工作状态,有益于控制系统的设计和维护。当该部分工作时,整机的工作电流将增加为未报警状态时的电流的数倍,消耗的功率会比较大,因此采用了分时供电的方法,通过单片机控制该部分电源的通断,即质量浓度达到报警时才给其供电;另外,用单片机输出的周期脉冲报警信号控制振荡器的启停,用振荡器输出信号控制蜂鸣器和发光二极管,振荡器可以用TTL门电路构成的多谐振荡器。采用这2种方法可降低该部分的电路的功耗。设计中,LED发光二极管的工作电流为5-20mA,最大不超过50mA,否则会烧坏器件。为了获得良好的发光效果,LED工作电流控制在10-15mA较为合理。在图3-4中所示电路中,D口得RD4,RD5,RD6,RD7,接声,光报警电路,其中D口的RD5-RD7分别接质量浓度过高,相等,过低的LED。当气体检测仪检测质量浓度低于设定值时,绿灯亮;当气体质量浓度达到某一定值时,黄灯亮;当高于设定值时,红灯亮并发出警报信号。图3-4声光报警电路原理图3.5显示电路在该设计中,LED显示器的显示方法采用动态显示。LED动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应的LED后,即在显示字段上得到显示字形码。这种方式不但能提高数码管的发光效率,并且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。本设计中处理结果采用4位LED显示,首次显示气体类别,后3位显示气体浓度。逐位轮流点亮各个LED,每一位保持1ms,在10-20ms之内再一次点亮,重复不止。这样利用人的视觉停留,好像4位LED同时点亮一样。图3-5显示电路原理图第4章软件设计4.1流程图设计1图4-1软件流程图aaaa4.2程序编写4.2.1主程序整个程序一共使用了两个中断,一个外部中断即INTO中断,一个定时/计数器中断即IT0中断.这两个中断各有其作用,INT。中断是用来判断A/D转换器ADC0809对模拟信号的转换是否完成,当A/D转换结束后,ADC0809发出结束EOC(高电平)信号,该信号可供单片机查询,也可反相后作为向单片机发出中断信号,而本设计正是用的这个方法,使得程序进入中断取值程序.而程序中所用到的IT0中断,是为产生一个周期为2S的方波而设计的,其作用是为看门狗产生喂狗子信号.具体程序如下:ORG00HJMPSTART;主程序入口地址ORG03HJMPINTO汐卜中断INTO入口ORG0BHJMPITOP;定时器。中断入口ORG0100HSTART:MOVIE,#10000001B;INT0中断使能MOVIP,#00000001B;INT0中断优先MOVTCON,#00000000B;设置INT0为电平触发MOVSCON,#00000000B ;串行口发送,接收标志位请0MOVSP,#60H;设堆栈指针MOVTMOD,#O1H;设置TO为方式1CALLPT0M0HERE:AJMPHERE;自身跳转PT0M0:MOVTLO,#OCH;T0中断服务程序,TO重新置初值MOVTHO,#OFEHSETBTRO;启动TOSETBETO;允许T。中断SETBEA;CPU开中断RETITOP:MOVTLO,#OCH;T。中断服务程序,T。置初值MOVTHO,OFEHCPLP1.0;P1.。状态取反RETIACALLLED;调用LED自检子程序MOV33H,#00H;设置中断完成标志为。MOVDPTR,#OFEFFH;ADC0809的端口地址MOVX@DPTR,A;使BUS为高阻抗,令ADC0809开始转换WAIT:MOVA,33H;等待A/D转换完成信号JNZINTOKJMPWAITINTOK:MOVA,32H中,(若A/D未工作,则A=0)JNZLIMOVA,30HJMPL2L1: MOV30H,31HMOVA,31HL2: CALLBCDCALLDISPCALLADZEROCALLALARMCALLBCDCALLDISPCLRAJMPSTART;未完成则跳回等待 ;将最新的浓度值存入累加器;将新浓度载入累加器;调用BCD码调整程序;显示当前浓度;调用零点调整子程序;调用判断报警程序;调用显示子程序;清除累加器值;返回在主程序通过对33H中数值的判断断定A/D是否转换完成,当33H中为1时,转换完成,程序调用调零、报警、显示模块对输入数据进行处理。4.2.2调零子程序由于未知问题,可能造成送入单片机中显示的模拟电压量与真实电压存在区别,这种误差可以通过在中断处理中对A/D转换的数值加上一个调整值来解决。这样,我们就能根据实际情况来对报警器输出的数值进行控制,使其记数更加精确,使用更方便。我们可以利用对端口的电平高低来判断是否需要进行调零处理,故可将按键开关接于端口P2.2.若开关按下,则说明有调零需要,于是进入调零处理程序;若开关没有按下,则说明没有调零需要,系统进入下一步.通过设置一个按键,既可保证程序顺利进行,又方便用户使用.具体程序如下:ADZERO:CALLDELAYJBP2.2JMP1 ;判断调零按钮是否按下,没按则跳JMP1JMP1:RET通过对P2.2位的判断来分辨是否有调零请求,若有则跳入调零模式,调零模式中程序如下:LOOP1:CALLDELAYJNBP2.2,$MOVA,40H;消除抖动延时;将调零预设值40H送入aaaaCLRCSUBBA,#01HCLRCSUBBA,#01HJNCLOOP2;清除进位标志;调零值减1;未借位则跳LOOP2MOVA,#05HLOOP2:MOV40H,AMOVA,R3JZXEND;有借位则重设调零值为5;将调零值送回40H保存;将当前浓度值送入ADECAXEND1:MOV30H,AMOV31H,ACALLBCDCALLDISP;当前浓度值减1(响应调整变化);送回30H保存;送回31H保存;调用BCD码调整;调用显示子程序JMPLOOPXEND:MOVA,#63HJMPXEND1进入调零模式后,若有按键则,LED数码管示数响应按键变化。若3秒无任何按键,则退出调零模式返回主程序。4.2.3显示子程序因为通过A/D转换进入单片机8051的浓度值以十六进制存在,为了让LED显示需要转换为BCD码,其BCD码转换程序如下:

BCD:MOV55H,#00H;存放BCD转换中的百位数MOV56H,#00H;存放BCD转换中的十位数CLRC ;清除进位标志为下面的SUBB准备MOVR2,#00H;清除R2CHAN:SUBBA,#64H;减100JCCHAN1;不能减,转INCR1;百位值JMPCHAN;循环判断百位CHAN1:ADDA,#64H;还原百位数CLRC ;清除进位标志为下面的SUBB准备CHAN2:SUBBA,#0AH;减1。JCCHAN3;不够减,跳INCR2;够减十位加1JMPCHAN2;重复减10CHAN3:ADDA,#0AH;还原十位数MOV60H,R2;把十位数放60H中MOV61H,A;把个位数放61H中RET这样把转换成的BCD码,个位存于61H中,十位存入60H中,再编写显示模块如下:DISP:MOVR7,#03HMOVR0,#60HLED1:MOVA,@ROMOVDPTR,#TABLELED2:MOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIINCR0DJNZR7,LED1RET将数值送入到LED显示74LS164驱动数码管的过程:在单片机应用系统中,显示器显示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的1/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。可以提供单独锁存的I/O接口电路很多,这里以常用的串并转换电路74LS164为例,介绍一种常用静态显示电路,以使大家对静态显示有一定的了解。MCS-51单片机串行口方式。为移位寄存器方式,外接3片74LS164作为3位LED显示器的静态显示接口,把8031的RXD作为数据输出线,TXD作为移位时钟脉冲。74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输入信号时可并接。T(第8脚)为时钟输入端,可连接到串行口的TXD端。每一个时钟信号的上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1・・・Q8(第3-6和10-13引脚)并行输出端分别接LED显示器的hg---a各段对应的引脚上。在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,然后再来一个脉冲会有什么发生呢?再来一个脉冲,第一个脉冲就会从最高位移出,搞清了这一点,下面让我们来看电路,3片7LS164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样,当第六个8个脉冲完成后,首次送出的数据被送到了最左面的164中,其他数据依次出现在第一、二、三片74LS164中。由于本设计采用的是机械按键,与地线想连,按键按下,输入为低电平,释放按键则输入为高电平。实际上,机械式按键的落片存在着轻微的弹跳现象其时间由操作员按键的动作所确定,为了确保CPU对按键的一次闭合仅做一次处理,必须去除抖动,一般通过调用子程序延时来解决,在键的稳定闭合或释放时才读出键的状态,具体程序如下:DELAY:MOVR5,#60 设定30毫秒DI: MOVR6,#248 ;设定0.5毫秒DJNZR6,$DJNZR5,D1RET因为石英晶体为12MHZ,一个机器周期为1微秒,这样如上程序可达到延时30毫秒的目的。aaaa4.2.4报警子程序本设计米用了声光报警,当探测器探测的浓度超过报警设定值时就会同时产生音乐报警和灯光报警,此时红灯亮启,喇叭发出音乐,而正常时,喇叭关闭,红灯关闭,而显示正常的绿色LED亮启,本设计为了安全起见,还设置了事故处理装置,即出现危险使,探测器除了报警外,还会使排气扇的阀门打开,对室内进行排气,以免产生气体爆炸或是中毒.具体程序如下ALARM:MOVA,30H;将当前浓度值送如累加器CLRC;清除进位标志SUBBA,50H;与预警值进行判断JNCGOOD1;若无借位,则当前浓度值咼于或者等于预警值,跳GOOD1报警SETBP1.6;关闭声光报警SETBP1.7CLRP2.3;关闭排气阀门SETBP1.5;关闭黄色LEDCLRP1.4;打开绿色LED(显示正常)RETGOOD1:CLRP1.6;打开声光报警(危险报警)CLRP1.7CLRP2.3;打开排气阀门SETBP1.5;关闭黄色LEDSETBP1.4;关闭绿色LED(显示不正常?RET4.2.5中断取值子程序从硬件电路图可以看出,A/D0809的INTR端通过反相器与单片机的外部中断INT0相连,由A/D0809的管脚功能可知,当A/D开始转换送入的模拟电压时,INTR端为低电平,转换完成后,INTR端变成高电平,通过反相器变成低电平使单片机89C51产生外部中断,进入中断处理程序:****************;INTO:PUSHACC;将累加器值压入堆栈保存PUSHPSW;将PSW值压入堆栈保存MOVXA,@DPTR;将A/D转换好的值送入累加器MOV32H,A;将A/D读得的值存入32H保;判断获得的电压是否小于;当前;判断获得的电压是否小于;当前A/D转换的电压小于;调用ADJUST将其调整为浓;调用ADDD将其与调零预设;将调整后的值送入31H保存;关闭INT0中断使能,关闭;至堆栈取回PSW值;至堆栈取回ACC值;中断完成,设置完成标记33H;将A/D转换的值减50再除存CLRCSUBBA,51H1V(5O)JNCOK1MOV32H,#00HIV,则A/D转换得的示数为00JMPEMP1OK1:MOVA,32HCALLADJUST度对应的16进制CALLADDD值相加,得到调整后的16进制MOV31H,AEMP1:MOVIE,#10000000B中断POPPSWPOPACCMOV33H,#01H为1RETI****************;; 调整相加子程序.'k****************?ADJUST:CLRCSUBBA,#32H10乘5可得当前浓度的16进制值MOVB,#0AHDIVABMOVB,#05HMULABRETADDD:ADDA,40HTABLE:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90HEND在中断处理过程中,因为A/D0809在模拟电压为1~5V时送入单片机的数值为5。~250,为了使示数在0~99间变化,编写数值转换程序如下:ADJUST:CLRCSUBBA,#32H ;将A/D转换的值减50再除10乘5可得当前浓度的16进制值MOVB,#0AHDIVABMOVB,#0

温馨提示

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

最新文档

评论

0/150

提交评论