1、辽 宁 工 业 大 学单片机原理及接口技术 课程设计(论文)题目: CO气体浓度监测仪设计 院(系): 电气工程学院 专业班级: 学 号: 学生姓名: 指导老师: (签字)起止时间:.06.24-.07.12 课程设计(论文)任务及评语院(系):电气工程学院 教研室: 学 号学生姓名专业班级课程设计(论文)题目CO气体浓度监测仪设计课程设计(论文)任务该监测仪关键用于公共场所及一些车间空气中CO浓度监测,检测标准是:CO浓度小时均值应低于3mg/m3,日均值应低于4mg/m3。. 设计任务:1. CPU最小系统设计(包含CPU选择,晶振电路,复位电路)2. 传感器选择和模拟量检测电路设计3.
2、人机对话接口电路设计(要求强弱电隔离)4. .程序步骤图设计机程序清单编写技术参数:1CO浓度小时均值应低于3mg/m3,日均值应低于4mg/m3。2工作电源220V设计要求:1、分析系统功效,选择适宜单片机及传感器,模拟量输入电路设计等;2、应用专业绘图软件绘制硬件电路图和软件步骤图;3、按要求格式,撰写、打印设计说明书一份,其中程序开发要有具体软件设计说明,具体叙述系统工作过程,字数应在4000字以上。进度计划第1天 查阅搜集资料第2天 总体设计方案确实定第3-4天 CPU最小系统设计 第5天 传感器选择和模拟量检测电路设计 第6天人机对话接口电路设计第7天 程序步骤图设计第8天 软件编写
3、和调试第9天 设计说明书完成第10天 答辩指导老师评语及成绩 平时: 论文质量: 答辩: 总成绩: 指导老师签字: 年 月 日注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算摘 要本系统利用51单片机做关键控制模块,利用MQ-7一氧化碳传感器探测一氧化碳。实时监控多处一氧化碳浓度改变,假如某处一氧化碳浓度过高,系统将发出声音报警,并显示报警传感器号码,提醒大家立即抢险。本系统可用于家庭环境,也适适用于工业环境。因为单片机成本低廉,自动控制功效比较强大,运行稳定,环境适应性好,所以本系统采取单片机做控制关键元件。MQ-7一氧化碳传感器对一氧化碳灵敏度高;长寿命,低成本;简单驱动电路
4、即可。所以,很适适用于家庭一氧化碳检测。数码管能清楚显示报警房间号码,即使在光线较暗时,所以选择数码管做显示模块。关键词:一氧化碳;单片机;检测;报警目 录目 录IV第1章 绪论11.1 CO浓度监测仪研究概况11.2 本文研究内容1第2章 CPU最小系统设计22.1 CO气体浓度监测仪总体设计方案22.2 CPU选择32.3 时钟电路设计62.4 复位电路设计72.5 单片机最小系统设计7第3章 CO浓度监测仪输入输出电路设计83.1 CO传感器选择83.2 运算放大器选择103.3 A/D转换电路103.4 声光报警电路113.5 显示电路12第4章 软件设计134.1 步骤图设计134.
5、2 程序编写144.2.1 主程序144.2.2 调零子程序154.2.3 显示子程序164.2.4 报警子程序194.2.5 中止取值子程序19第5章 软件仿真22第6章 课程设计总结24参考文件25附录 硬件原理图26第1章 绪论1.1 CO浓度监测仪研究概况燃气(人工煤气、天然气、液化石油气)普及,提升了生产效率、市民生活质量,但在使用燃气过程中,因燃气泄漏、废气等原因造成燃气爆炸、中毒等意外事故时有发生,给大家生命和财产安全带来了严重威胁,所以安全使用燃气一直是燃气主管部门工作重中之重。CO浓度监测仪能有效监测环境中可燃气体或毒性气体CO浓度,一旦其浓度超出报警限定值,就能发出声光报警
6、信号,而且能自动开启排风扇把燃气排出室外,甚至能经过联动装置自动切断燃气供给预防燃气继续泄漏,起到安全防范作用。但监测仪选择得是否合理,直接关系到其功效充足发挥。该设计所研究CO浓度监测仪正是应这种要求而开发。一氧化碳是一个无色、无味气体,它和血液中血红素结合能力是氧 240 倍,它和血红素形成稳定络合物,使血红蛋白丧失了输送氧气能力,从而造成组织低氧症,甚至死亡。一氧化碳浓度高低是评价空气质量好坏关键指标之一,也是工厂、煤矿井下是否发生自燃火灾关键标志之一。为了确保大家身体健康和环境洁净,世界各国全部纷纷致力于预防空气污染产生监测仪是否灵敏可靠关系到人身财产安全,所以监测仪属于强制检定计量器
7、具。现在大多数报警器用户全部使用汽油或液化气等超出以上高浓度易挥发可燃气体对报警器进行检测, 若报警即判定监测仪正常。这么做即使省缺了购置可燃气体标准物质麻烦和费用, 但实际上达不到确保安全目标, 从而形成重大安全隐患, 有时还会造成报警器检测元件中毒。假如使用标准气体检测报警器, 就能确保人身安全, 同时杜绝报警器检测探头中毒现象。1.2 本文研究内容本文所设计数字气体报警器采取单片机AT89C51,其价格廉价,易于产品化。本设计能将置于测试环境中气体传感器输出模拟电压经过A/D转换器送入单片机AT89C51中进行处理并经过数码管显示,经过设置报警值,当检测到浓度达成或超出设定值时,用单片机
8、控制发光二极管发光报警,同时打开喇叭发出声音报警,来达成报警目标,并经过外接排风扇和电磁阀对其进行程控,以防事故发生。而当系统出现故障时,黄色LED亮启,便于用户立即对报警器进行维修。系统以MQ-7气体传感器和AT89C51 单片机为关键, 设计气体泄漏报警器。实现:1正确测量周围环境中可燃性气体、有毒有害气体泄漏;2实现系统各个模块功效控制;3实现单片机编程语言系统控制及传感器电路控制。4研究单片机各接口作用及功效;5了解MQ-7气体传感器具体功效;6实现对基础报警电路控制。第2章 CPU最小系统设计2.1 CO气体浓度监测仪总体设计方案单片机应用系统结构分三个层次:(1)单片机:通常指应用
9、系统主处理机,即所选择单片机器件。(2)单片机系统:指根据单片机技术要求和嵌入对象资源要求而组成基础系统,如时钟电路、复位电路和扩展存放器等和单片机组成了单片机系统。(3)单片机应用系统:能满足嵌入对象要求全部电路系统。在单片机系统基础上加上面向对象接口电路,如前向通道、后向通道、人机交互通道(键盘、显示器、打印机等)和串行通行口(RS232)和应用程序等。以此了解,一氧化碳报警器一样含有单片机应用系统三个层次。其中以AT89C51单片机为关键组成单片机系统。在此系统中,检测信号进入单片机进行运算处理。为了愈加好理清设计思绪,将整个系统细分为三部分加以设计说明。整个报警器由三个部分组成,分为三
10、大模块:浓度检测模块、主控模块和报警模块。在此次设计中,使用关键器件是单片机和一氧化碳传感器。为了保重整个系统可靠运行,设计中必需明确三大部分实际联络:以单片机为中心,其它各大模块一一展开。其中,浓度检测及显示模块所实现功效是将房间中一氧化碳浓度值转换成为单片机能够处理数字信号,而且浓度值显示出来:主控模块以单片机为主,对其它模块运行进行控制;报警模块是此系统外部电路,它功效是实现报警。系统框图图2-1所表示。单片机转换显示报警声音报警传感器AD图2-1 总体框图2.2 CPU选择数据处理过程是关键由AT89C51单片机等芯片完成。AT89C51是一个带4K字节闪烁可编程可擦除只读存放器(FP
11、EROM-Flash Programmable and Erasable Read Only Memory)低电压,高性能CMOS8位微处理器,俗称单片机。其中包含128 字节内部RAM,32个I/O 口线,2个16位定时/计数器,一个5 向量两级中止结构,一个全双工串行通信口,片内振荡器立即钟电路。同时,AT89C51 降至0Hz 静态逻辑操作,并支持两种可选节电工作模式26。空闲方法体制CPU 工作,但许可RAM,定时/计数器,串行通信口及中止系统继续工作。掉电方法保留RAM 中内容,但振荡器体制工作并严禁其它全部不见工作直到下一个硬件复位。单片机可擦除只读存放器能够反复擦除100次。该器
12、件采取ATMEL高密度非易失存放器制造技术制造,和工业标准MCS-51指令集和输出管脚相兼容。因为将多功效8位CPU和闪烁存放器组合在单个芯片中,ATMELAT89C51是一个高效微控制器。AT89C51单片机为很多嵌入式控制系统提供了一个灵活性高且廉价方案。AT89C51单片机管脚图图2-2所表示图2-2 AT89C51单片机管脚图引脚功效说明以下:VCC:电源电压GND:地P0口:P0口是一组8 位漏极开路型双向I/O口,也即地址/数据总线复用。作为输出口用时,每位能吸收电流方法驱动8个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存放器或程序存放器时,这组口线分时
13、转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻8 位双向I/O口,P1输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,经过内部上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash 编程和程序校验期间,P1接收低8 位地址。P2口:P2是一个带有内部上拉电阻8 位双向I/O 口,P2输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
14、对端口写“1”,经过内部上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存放器或16位四肢外部数据存放器(比如实施MOVX DPTR指令)时,P2口送出高8 位地址数据,在访问8 位地址外部数据存放器(比如实施MOVX RI 指令)时,P2口线上内容(也即特殊功效寄存器(SFR)区中R2 寄存器内容),在整个访问期间不改变。Flash编程和程序校验时,P2也接收高位地址和其它控制信号。P3口:P3是一个带有内部上拉电阻8位双向I/O口,P3输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对
15、端口写“1”,经过内部上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。P3 口还接收部分用于Flash闪速存放器编程和程序校验控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存放器或数据存放器时,ALE(地址锁存许可)输出脉冲用于锁存地址低8位字节。即使不访问外部存放器,ALE仍以时钟振荡频率1/6输出固定正脉冲信号,所以它可对外输出时钟或用于定时目标。要注意是,每当访问外部数据存放器时将跳过一个ALE脉冲。对Flash存放器编程期
16、间,该引脚还用于输入编程脉冲(PROG)。如有必需,可经过对特殊功效寄存器(SFR)区中8EH单元D0位置位,可严禁ALE操作。该位置,只有一条MOVX和MOVC指令ALE 才会被激活。另外,该引脚会被微弱拉高,单片机实施外部程序时,应设置ALE无效。PSEN:程序存放许可输出是外部程序存放器读选通型号,当89C51由外部存放器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存放器,这两次有效PSEN信号不出现。EA/VPP:外部访问许可。欲使CPU仅访问外部程序存放器(地址为0000HFFFFH),EA端必需保持低电平(接地)。需注意是:假如加密位L
17、B1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则实施内部程序存放器中指令。Flash存放器编程时,该引脚加上+12v编程许可电源VPP,当然这必需是该器件使用12v编程电压VPP。XTAL1:振荡器反相放大器及内部时钟发生器输入端。XTAL2:振荡器反相放大器输出端。89C51中有一个用于组成内部振荡器高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器输入端和输出端。这个放大器和作为反馈元件片外石英晶体或陶瓷谐振器一起组成自激振荡器,外接石英晶体或陶瓷谐振器及电容C1、C2接在放大器反馈回路中组成并联振荡电路。对电容C1、C2虽没有十分严格要求,但电容容
18、量大小会轻微影响振荡频率高低、振荡器工作稳定性、起振难易程度及温度稳定性,假如使用石英晶体,我们推荐电容使用30Pf10Pf,而如使用陶瓷谐振器提议选择40Pf10Pf。用户也能够采取外部时钟。这种情况下,外部时钟脉冲接到XTAL端,即内部时钟发生器输入端XTAL则悬空。2.3 时钟电路设计单片机工作时,从取指令到译码再进行微操作,必需在时钟信号控制下才能有序地进行,时钟电路就是为单片机工作提供基础时钟。单片机时钟信号通常有两种产生方法:内部时钟方法和外部时钟方法。本课题采取内部时钟方法。在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个稳频电容,能够和单片机片内电路组成一个稳定自激振荡
19、器。晶振频率取12 MHz。外接电容作用是对振荡器进行频率微调,使振荡信号频率和晶振频率一致,同时起到稳定频率作用,本课题选择33pF电容。易知:本单片机最小系统振荡周期=1/(12MHz)=1/12us,时钟周期=1/6us,机器周期=1us。图2-3时钟电路原理图2.4 复位电路设计不管是在单片机刚开始接上电源时,还是运行过程中发生故障全部需要复位。复位电路用于将单片机内部各电路状态恢复到一个确定初始值,并从这个状态开始工作。单片机复位条件:必需使其RST引脚上连续出现两个(或以上)机器周期高电平。单片机复位形式:上电复位、按键复位。本课题采取按键复位。在单片机开启0.1S后,电容C两端电
20、压连续充电为5V,这是时候10K电阻两端电压靠近于0V,RST处于低电平所以系统正常工作。当按键按下时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下这个过程中,电容开始释放之前充电量。伴随时间推移,电容电压在0.1S内,从5V释放到变为了1.5V,甚至更小。依据串联电路电压为各处之和,这个时候10K电阻两端电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。图2-4 复位电路原理图2.5 单片机最小系统设计单片机最小系统是由组成单片机系统必需部分元件组成,除了单片机之外,还需要包含电源供电电路、时钟电路、复位电路。图2-5 单片机最小系统原理图
21、第3章 CO浓度监测仪输入输出电路设计3.1 CO传感器选择选择一氧化碳传感器关键考虑以下性能指标:(1)输入和输出之间成百分比,直线性好、灵敏度高、分辨力强、测量范围宽。 (2)滞后、漂移误差小 (3)动态特征好 (4)功耗小 (5)时间老化特征优良 (6)和被测体匹配良好,既不因接入传感器而使得被测对象受到影响,受被测量之外影响小。(7)体积小、重量轻、价格低廉。(8)故障率低,易于校准和维护。(9)因为传感元件输出信号一边比较小,为了便于能够驱动控制电路,在传感器电路中还应该包含放大器。鉴于以上选择关键点,本文中用到传感器必需含有良好测量效果、功耗小、动态特征良好和体积小、重量轻、价格低
22、廉等多个关键特征。为此我们选择了MQ-7系列传感器。半导体一氧化碳传感器MQ-7所使用气敏材料是在清洁空气中电导率较低二氧化锡(SnO2)。采取高低温循环检测方法低温(1.5V加热)检测一氧化碳,传感器电导率随空气中一氧化碳气体浓度增加而增大,高温(5.0V加热)清洗低温时吸附杂散气体。使用简单电路即可将电导率改变,转换为和该气体浓度相对应输出信号。MQ-7气体传感器对一氧化碳灵敏度高,这种传感器可检测多个含一氧化碳气体,是一款适合多个应用低成本传感器。关键特点及应用:l 对一氧化碳高灵敏度。l 长寿命,低成本。l 简单驱动电路即可l 家用气体泄漏报警器l 工业用一氧化碳报警器l 便携式气体检
23、测器MQ-7气敏元件结构和外形图3-1所表示,由微型Al2O3陶瓷管、SnO2敏感层,测量电极和加热器组成敏感元件固定在塑料或不锈钢制成腔体内,为了改善传感器选择性,传感器气室用活性炭过滤层和外界隔开。加热器为气敏元件提供了必需工作条件。封装好气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。图3-1 MQ-7实物图3.2 运算放大器选择因为气体传感器输出电压值过低,无法直接使用A/D读取,必需要加入放大电路,对电压放大然后再经过A/D读取。在此,选择LM358作为运算放大器。LM358 内部包含有两个独立、高增益、内部频率赔偿双运算放大器,适合于电源电压范围很宽单电源使用,
24、也适适用于双电源工作模式,在推荐工作条件下,电源电流和电源电压无关。它使用范围包含传感放大器、直流增益模块和其它全部可用单电源供电使用运算放大器场所。LM358含有以下特征:内部频率赔偿;直流电压增益高(约100dB);单位增益频带宽(约1MHz);电源电压范围宽:单电源(3-30V)、双电源(1.5-15V) ;低功耗电流,适合于电池供电;低输入偏流,低输入失调电压和失调电流;共模输入电压范围宽,包含接地;差模输入电压范围宽,等于电源电压范围;输出电压摆幅大(0 至Vcc-1.5V)。图3-2 运算放大器电路原理图3.3 A/D转换电路为了方便和AT89C5单片机链接,本系统采取AD0809
25、模数转换芯片对采集到气体信息进行数模转换。其分辨率为8位,无须进行零点和满度调整,且含有高阻抗斩波稳定比较器,8个通道多路开关可直接存取8个单端模拟信号中一个。利用单片机开启AD0809转换器,转换结束后再由AD0809向AT89C51发出中止请求信号, CPU响应中止请求。经过对译码器读操作,读取转换结果并送到被测量响应存放区。再重新选择被测量,并再次开启AD0809转换器转换后中止返回。AD0809和单片机AT89C51连线线路图3-3所表示。图3-3 AD0809和单片机AT89C51连线线路3.4 声光报警电路 系统声,光报警电路由发光二极管和低电压蜂鸣器组成,分别由PIC单片机2个端
26、口控制。发光二极管LED含有体积小,抗冲击和抗震性能好,可靠性高,寿命长,工作电压低,功耗小,响应速度快等优点,常见于显示系统工作状态,有益于控制系统设计和维护。当该部分工作时,整机工作电流将增加为未报警状态时电流数倍,消耗功率会比较大,所以采取了分时供电方法,经过单片机控制该部分电源通断,即质量浓度达成报警时才给其供电;另外,用单片机输出周期脉冲报警信号控制振荡器启停,用振荡器输出信号控制蜂鸣器和发光二极管,振荡器能够用TTL门电路组成多谐振荡器。采取这2种方法可降低该部分电路功耗。设计中,LED发光二极管工作电流为5-20mA,最大不超出50mA,不然会烧坏器件。为了取得良好发光效果,LE
27、D工作电流控制在10-15mA较为合理。在图3-4中所表示电路中,D口得RD4,RD5,RD6,RD7,接声,光报警电路,其中D口RD5-RD7分别接质量浓度过高,相等,过低LED。当气体检测仪检测质量浓度低于设定值时,绿灯亮;当气体质量浓度达成某一定值时,黄灯亮;当高于设定值时,红灯亮并发出警报信号。图3-4 声光报警电路原理图3.5 显示电路在该设计中,LED显示器显示方法采取动态显示。LED动态显示基础做法在于分时轮番选通数码管公共端,使得各数码管轮番导通,在选通对应LED后,即在显示字段上得到显示字形码。这种方法不仅能提升数码管发光效率,而且因为各个数码管字段线是并联使用,从而大大简化
28、了硬件线路。本设计中处理结果采取4位LED显示,首次显示气体类别,后3位显示气体浓度。逐位轮番点亮各个LED,每一位保持1ms,在10-20ms之内再一次点亮,反复不止。这么利用人视觉停留,仿佛4位LED同时点亮一样。图3-5 显示电路原理图第4章 软件设计4.1 步骤图设计图4-1 软件步骤图4.2 程序编写4.2.1 主程序整个程序一共使用了两个中止,一个外部中止即INT0中止,一个定时/计数器中止即IT0中止.这两个中止各有其作用,INT0中止是用来判定A/D转换器ADC0809对模拟信号转换是否完成,当A/D转换结束后,ADC0809发出结束EOC(高电平)信号,该信号可供单片机查询,
29、也可反相后作为向单片机发出中止信号,而本设计正是用这个方法,使得程序进入中止取值程序.而程序中所用到IT0中止,是为产生一个周期为2S方波而设计,其作用是为看门狗产生喂狗子信号.具体程序以下: ORG 00H JMP START ;主程序入口地址 ORG 03H JMP INTO ;外中止INTO入口 ORG 0BH JMP ITOP ; 定时器0中止入口 ORG 0100HSTART: MOV IE,#10000001B ;INT0中止使能 MOV IP,#00000001B ;INT0中止优先 MOV TCON,#00000000B ;设置INT0为电平触发 MOV SCON,#00000
30、000B ;串行口发送,接收标志位请0 MOV SP,#60H ;设堆栈指针 MOV TMOD,#01H ;设置T0为方法1 CALL PT0M0HERE: AJMP HERE ;本身跳转PT0M0: MOV TL0,#0CH ;T0中止服务程序,T0重新置初值 MOV TH0,#0FEH SETB TR0 ;开启T0 SETB ET0 ;许可T0中止 SETB EA ;CPU开中止 RETITOP: MOV TL0,#0CH ;T0中止服务程序,T0置初值 MOV TH0,0FEH CPL P1.0 ;P1.0状态取反 RETI ACALL LED ;调用LED自检子程序 MOV 33H,#
31、00H ;设置中止完成标志为0 MOV DPTR,#0FEFFH ;ADC0809端口地址 MOVX DPTR,A ;使BUS为高阻抗,令ADC0809开始转换WAIT:MOV A,33H ;等候A/D转换完成信号 JNZ INTOK JMP WAIT ;未完成则跳回等候INTOK: MOV A,32H ;将最新浓度值存入累加器中,(若A/D未工作,则A=0) JNZ L1 MOV A,30H JMP L2L1: MOV 30H,31H MOV A,31H ;将新浓度载入累加器L2: CALL BCD ;调用BCD码调整程序 CALL DISP ;显示目前浓度 CALL ADZERO ;调用零
32、点调整子程序 CALL ALARM ;调用判定报警程序 CALL BCD CALL DISP ;调用显示子程序 CLR A ;清除累加器值 JMP START ;返回在主程序经过对33H中数值判定断定A/D是否转换完成,当33H中为1时,转换完成,程序调用调零、报警、显示模块对输入数据进行处理。4.2.2 调零子程序因为未知问题,可能造成送入单片机中显示模拟电压量和真实电压存在区分,这种误差能够经过在中止处理中对A/D转换数值加上一个调整值来处理。这么,我们就能依据实际情况来对报警器输出数值进行控制,使其记数愈加正确,使用更方便。我们能够利用对端口电平高低来判定是否需要进行调零处理,故可将按键
33、开关接于端口P2.2.若开关按下,则说明有调零需要,于是进入调零处理程序;若开关没有按下,则说明没有调零需要,系统进入下一步.经过设置一个按键,既可确保程序顺利进行,又方便用户使用.具体程序以下:ADZERO:CALL DELAYJB P2.2,JMP1 ;判定调零按钮是否按下,没按则跳JMP1.JMP1:RET经过对P2.2位判定来分辨是否有调零请求,若有则跳入调零模式,调零模式中程序以下:LOOP1:CALL DELAY JNB P2.2,$ ;消除抖动延时 MOV A,40H ;将调零预设值40H送入 CLR C ;清除进位标志 SUBB A,#01H ;调零值减1 JNC LOOP2
34、;未借位则跳LOOP2 MOV A,#05H ;有借位则重设调零值为5LOOP2:MOV 40H,A ;将调零值送回40H保留 MOV A,R3 ;将目前浓度值送入A JZ XEND DEC A ;目前浓度值减1(响应调整改变)XEND1 :MOV 30H,A ;送回30H保留 MOV 31H,A ;送回31H保留 CALL BCD ;调用BCD码调整 CALL DISP ;调用显示子程序JMP LOOPXEND: MOV A,#63H JMP XEND1进入调零模式后,若有按键则,LED数码管示数响应按键改变。若3秒无任何按键,则退出调零模式返回主程序。4.2.3 显示子程序因为经过A/D转
35、换进入单片机8051浓度值以十六进制存在,为了让LED显示需要转换为BCD码,其BCD码转换程序以下:BCD:MOV 55H,#00H ;存放BCD转换中百位数MOV 56H,#00H ;存放BCD转换中十位数CLR C ;清除进位标志为下面SUBB准备 MOV R2,#00H ;清除R2CHAN:SUBB A,#64H ;减100JC CHAN1 ;不能减,转INC R1 ;百位值JMP CHAN ;循环判定百位CHAN1: ADD A,#64H ;还原百位数 CLR C ;清除进位标志为下面SUBB准备CHAN2: SUBB A,#0AH ;减10JC CHAN3 ;不够减,跳INC R2
36、 ;够减十位加1JMP CHAN2 ;反复减10CHAN3: ADD A,#0AH ;还原十位数MOV 60H,R2 ;把十位数放60H中MOV 61H,A ;把个位数放61H中RET这么把转换成BCD码,个位存于61H中,十位存入60H中,再编写显示模块以下:DISP: MOV R7,#03H MOV R0,#60HLED1: MOV A,R0 MOV DPTR,#TABLELED2: MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC R0 DJNZ R7,LED1 RET将数值送入到LED显示74LS164驱动数码管过程:在单片机应用系统中,显示器显
37、示常见两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器全部要占用单独含有锁存功效I/O接口用于笔划段字形代码。这么单片机只要把要显示字形代码发送到接口电路,就不用管它了,直到要显示新数据时,再发送新字形码,所以,使用这种方法单片机中CPU开销小。能够提供单独锁存I/O接口电路很多,这里以常见串并转换电路74LS164为例,介绍一个常见静态显示电路,以使大家对静态显示有一定了解。 MCS-51单片机串行口方法0为移位寄存器方法,外接3片74LS164作为3位LED显示器静态显示接口,把8031RXD作为数据输出线,TXD作为移位时钟脉冲。74LS164为TTL单向8位移位寄存器,
38、可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑和运算规律输入信号,共一个输入信号时可并接。T(第8脚)为时钟输入端,可连接到串行口TXD端。每一个时钟信号上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。Q1Q8(第3-6和10-13引脚)并行输出端分别接LED显示器hga各段对应引脚上。在给出了8个脉冲后,最优异入74LS164第一个数据抵达了最高位,然后再来一个脉冲会有什么发生呢?再来一个脉冲,第一个脉冲就会从最高位移出,搞清
39、了这一点,下面让我们来看电路,3片7LS164首尾相串,而时钟端则接在一起,这么,当输入8个脉冲时,从单片机RXD端输出数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新数据则进入了第一片74LS164,这么,当第六个8个脉冲完成后,首次送出数据被送到了最左面164中,其它数据依次出现在第一、二、三片74LS164中。因为本设计采取是机械按键,和地线想连,按键按下,输入为低电平,释放按键则输入为高电平。实际上,机械式按键落片存在着轻微弹跳现象其时间由操作员按键动作所确定,为了确保CPU对按键一次闭合仅做一次处理,必需去除抖动,通常经过调
40、用子程序延时来处理,在键稳定闭合或释放时才读出键状态,具体程序以下:DELAY: MOVR 5,#60 设定30毫秒D1: MOV R6,#248 ;设定0.5毫秒DJNZ R6,$ DJNZ R5,D1 RET因为石英晶体为12MHZ,一个机器周期为1微秒,这么如上程序可达成延时30毫秒目标。4.2.4 报警子程序本设计采取了声光报警,当探测器探测浓度超出报警设定值时就会同时产生音乐报警和灯光报警,此时红灯亮启,喇叭发出音乐,而正常时,喇叭关闭,红灯关闭,而显示正常绿色LED亮启,本设计为了安全起见,还设置了事故处理装置,即出现危险使,探测器除了报警外,还会使排气扇阀门打开,对室内进行排气,以免产生气体爆炸或是中毒.具体程序以下ALARM: MOV A,30H ;将目前浓度值送如累加器 CLR C ;清除进位标志 SUBB A,50H ;和预警值进行判定 JNC GOOD1 ;若无借位,则目前浓度值高于或等于预警值,跳GOOD1报警 SETB P1.6 ;关闭声光报警 SETB P1.7 CLR P2.3 ;关闭排气阀门 SETB P1.5 ;关闭黄色LED CLR P1.4