基于单片机氧气浓度测与控制的设计毕业论文1

上传人:1666****666 文档编号:36078125 上传时间:2021-10-29 格式:DOC 页数:39 大小:383.52KB
返回 下载 相关 举报
基于单片机氧气浓度测与控制的设计毕业论文1_第1页
第1页 / 共39页
基于单片机氧气浓度测与控制的设计毕业论文1_第2页
第2页 / 共39页
基于单片机氧气浓度测与控制的设计毕业论文1_第3页
第3页 / 共39页
点击查看更多>>
资源描述
本科毕业论文(设计) 题 目:基于单片机氧气浓度测与控制的设计 院 系:电子与通信工程学院 专 业:电子信息科学与技术 姓 名: 学 号:090605402032 指导教师: 教师职称:副教授 填写日期:2013年 4月 26 日 摘 要 目前随着煤炭事业的发展的需要,对安全的要求越来越严格了,为此,煤矿里氧气浓度的测量与控制成了安全生产的重要措施。对可能造成灾害的各种有毒气体和矿尘进行严格控制,一旦有不良情况,在第一时间处理,减少旷工安全事故,提高煤炭的生产效益。 本论文介绍基于AT89S52单片机的一种便携式氧气浓度检测仪的设计与实现。用电化学式氧化锆传感器首先氧气浓度信号转为电流信号,经调理放大后传送到单片机AT89S52,再经A/D转换后,再进行串口输出和现场LED显示。本系统主要用于空气中氧气浓度的检测,并进报警。采用嵌入式串/网口转换器将异步串行485通信信号转换成网络信号,通过局域网或互联网进行有线网络传输,以达到远程监测和本地显示的目的。关键词:AT89S52单片机;氧化锆;报警AbstractIn order to prevent accidents, protect the health and safety of miners, to promote the development of production, improve the economic benefits of coal enterprises to deal with underground weather detection, timely and accurate on a variety of disasters may cause some harmful gas and mineral dust testing and strict control, in the event of disaster, ambulance personnel in distress and handling accident must be timely. All of these need to have the appropriate testing equipment and ambulance equipment.This paper introduces the Design and Implementation of 89S52 microcontroller - based portable oxygen concentration detector. The electrochemical reaction of oxygen sensor first oxygen concentration signal into a current signal conditioning zoom send to the microcontroller 89S52 , after A / D converter , serial output and on-site LED display . Embedded string / network port convert asynchronous serial 485 signals into the network signal, the cable network transmission via LAN or the Internet in order to achieve the remote monitoring purposes. This system is mainly used to detect airborne oxygen concentration, and test data for both local and remote display, while also measuring the maximum distance set, transfinite live audio alarm. Management software achieves the displaying and testing of historical data. The instrument measuring circuit is versatile, suitably adjust parameters can be achieved on the measurement of gas with different gas sensors.Keywords: Single-chipAT89S52; Zirconia; Alarm 目 录前 言1第一章 课题的基本介绍2第一节 氧气浓度检测的背景和意义2第二节 国内外研究现状及发展趋势2第三节 主要研究的内容4第二章 氧气浓度测量控制系统的确定5第一节 氧气浓度测量控制系统硬件设计5一、氧化锆传感器的选择6二、氧值的运算及输出6第二节 ADC0809转换器7一 ADC0809的说明7二、ADC0809应用说明8三、主要特性8四、内部结构9五外部特性(引脚功能)9第三节 AT89C52单片机的选择10第四节 单片机最小系统的设计12第五节 显示电路的设计13第六节 时钟芯片的选择与设计13第六节 电源的设计16第三章 软件设计17第一节 软件结构设计17第二节 主程序模块的设计17第三节 模数转换的设计18第四节 时钟设计19总 结21致 谢22参考文献23附录24 前 言 氧气浓度的测量与控制设备是由氧气传感器,A/D转换器,单片机等模块组成的检测系统。在当前,在我国的煤矿开采中大多数在井下进行开采,国家重点煤矿也基本属于瓦斯矿井。煤矿生产是地下作业,自然条件和生产条件都复杂,在采掘过程中出现的瓦斯涌出、煤尘飞扬、自然发火等都有可能造成严重事故。为了防止事故发生,保障矿工的健康和安全,促进生产发展,提高煤炭企业的经济效益,应对井下的气象进行检测,对可能造成灾害事故的各种有的害气体及矿尘进行及时而准确的检测和严格控制,一旦发生灾变,必须及时救护遇难人员和处理事故。所有这些都需要有相应的检测仪器和救护装备。 本论文介绍基于AT89S52单片机的一种便携式氧气浓度检测仪的设计与实现。用电化学式氧化锆传感器首先把氧气浓度信号转为电流信号,经调理放大后传送到单片机AT89S52,再经A/D转换后,再进行串口输出和现场LED显示。本系统主要用于空气中氧气浓度的检测,并进报警。采用嵌入式串/网口转换器将异步串行485通信信号转换成网络信号,通过局域网或互联网进行有线网络传输,以达到远程监测和本地显示的目的。 本毕业论文主要通过对氧气浓度的测量与控制系统的设计,掌握电子系统的一般设计方法,熟悉常用元器件,对所学专业知识进一步强化,了解电路设计的基本方法,培养综合应用所学理论知识来指导设计的能力。第1章 课题的基本介绍第1节 氧气浓度检测的背景和意义 在我国的煤矿开采中大多数在井下进行开采,国家重点煤矿也基本属于瓦斯矿井。煤矿安全规程第一百条规定,采掘工作面的进风流中,氧气浓度不得低于百分之二十。空气中含有氮气,二氧化碳和氧气三种主要成分,氧气占21%,人们一直在这种条件下呼吸氧气。实际适当提高一些氧气含量人们机体的感觉会更好。40%-80%,然后加入少量二氧化碳气体,可以使机体感到非常舒适。 煤矿生产是地下作业,自然条件和生产条件都复杂,在采掘过程中出现的瓦斯涌出、煤尘飞扬、自然发火等都有可能造成严重事故。为了防止事故发生,保障矿工的健康和安全,促进生产发展,提高煤炭企业的经济效益,应对井下的气象进行检测,对可能造成灾害事故的各种有的害气体及矿尘进行及时而准确的检测和严格控制,一旦发生灾变,必须及时救护遇难人员和处理事故。所有这些都需要有相应的检测仪器和救护装备。 对煤矿井下氧气浓度连续检测是现代煤矿生产中必不可少的重要工作。鉴于传统的模拟式氧气浓度报警仪精度不高且不能数字显示, 由于井下空气中的含氧气量不易控制,所以设想研制出一种由单片机控制的氧气浓度检测系统。第2节 国内外研究现状及发展趋势 最近几年接连发生了多起矿井安全事故,事故的结果触目惊心,因此通过强化管理,提高通风、氧气及甲烷浓度检测监控水平,已成为中小型煤矿检测监控的最迫切的任务之一。实践证明,煤矿生产安全监控系统对保障煤矿安全生产,提高煤矿生产率,提高煤矿自动化程度以及促进煤矿管理现代化水平,都有着举足轻重的作用。 生产安全监控系统虽在国内已有生产和应用,但还没有一种真正适合于中小型煤矿使用的产品,我国从八十年代初期开始引进煤矿生产安全监控系统,历经了直接引进、消化吸收、仿制配套、自主开发的过程,但迄今为止的产品大多都是面对大型矿井设计的,而且自身尚有一些有待解决的问题,如: (1)造价高,系统最基本的配置过于庞大,运行费用大;(2)传感器测量稳定性差,调校频繁,寿命短;(3)系统安装、维护复杂,操作不便,人机界面较差;(4)系统设备可靠性差;(5)必须依赖专业的维护队伍,对人员技术,素质有较高的要求。 目前市面上流行的AT-B-O2便携式氧气检测报警仪,可在工业环境中连续检测氧气浓度。采用进口电化学传感器,先进稳定的电路设计,整机性能居国内领先水平。高音量蜂鸣器报警,可以使用户在各种恶劣环境中及时有效地得到仪器报警信号。 Honeywell Impulse XP的性能更加完善。它装有高级传感器,可以测量更多种类的毒气体。小巧精致的外观适合更多数用户的需要。紧凑的外形设计易于维护是此款机型的最本质特点。报警时XP发出响亮的声音和超亮的灯光警报。标准配置还具有振动报警功能,以便在嘈杂的环境使用时引起使用者的注意。Honeywell Impulse XP性能稳定可靠,读数准确,抗电池干扰。另外它还有持续显示气体浓度值.显示15分钟和8小时平均值.两级报警和峰值锁定的功能。由于使用了温度校正和抗中毒传感器。XP确定保反复测量时具有高精确度。运行成本低廉。内置的衰减补偿电池将两次校正间的时间延长至12个月,常用的传感器寿命大于两年,电池寿命三年,操作费用减至最低。电池和传感器更换容易。 PortaSensII便携式气体检测仪能在现场检测环境空气中的有毒有害气体,可用于环境应急监测、职业卫生场所有毒有害气体检测、石化企业安全检测以及储运、泄露检测等。该仪器最出色的特点是它能通过更换相应传感器模块检测多种类型的气体,即不需为每 种类型的气体分别购买单独的主机,一台检测仪与不同的传感器结合使用,就能检测超过30种不同的气体,传感器可以即插即用,不需再次校准。检测量程可在最大量程和最小量程范围之间任意可调,可以根据检测的需要自由设置量程。通过一个RS-232 接口和专用接口电缆及专用软件,仪器可对电脑进行上传和下载数据。 此外还有固定式氧气检测探头,数字显示型氧气检测探头以及法国奥德姆氧气检测探头等。第3节 主要研究的内容 仪器的设计,本着简明、科学、实用的原则,力求从整体出发,从实际使用出发,突出系统的可靠性、免维护、免培训等特点和系统结构的简明和完整性,把对操作人员的专业技术要求降到最低,发挥系统整体设计的优势,使系统整体性能达到最佳,功能强大而操作简单,测量精确而维护方便。在系统设计中,应充分应用近年来发展起来的各种新技术、新器件、新方法,在保证各项性能指标能够满足系统各方面要求的前提下,力求简化结构,降低成本,提高可靠性和稳定性。作为一种完整的氧气浓度监控系统,它至少应具备以下设备和功能:1.气体传感器:能感知环境中氧气浓度的一种敏感元件,它能将与气体种类和浓度有关的信息转换成电信号。 a,监测要素的采集,转换; b,转换后电信号的处理,加工;2.显示单元:根据测量信号,由单片机将待显示的数据按相应方式进行数据传输送给显示处理模块显示与仪表。3.声光报警单元:当检测气体浓度超出设定报警值时,发出声光报警。4.通讯单元:将采集数据通过通讯方式进行数据通讯。5.数据采集分析软件:编写串口通讯软件,实现气体数据的采集,分析以及保存。 第2章 氧气浓度测量控制系统的确定 在目前检测氧浓度的方法中,有很多的方法都可以检测到氧气浓度,比如电化学、顺磁氧、氧化锆方法及超声波流量浓度检测法。本论文主要完成氧气检测仪软件和硬件设计,采用单片机为控制核心,以实现一氧化碳检测仪的基本控制功能。系统主要功能内容包括:信号采集、信号放大、A/D转换器程序、控制程序、超标报警、数据显示等。 第1节 氧气浓度测量控制系统硬件设计 硬件设计部分主要包括:单片机、A/D转换器、运算放大器、显示屏、蜂鸣器等芯片的选择。硬件电路设计,数据采集,模数转换环节,显示电路,报鸣电路设计等功能模块如图2-1。数字显示单片机AT89C52信号采集 信号放大报警电路A/D转换 图21 硬件结构框图1、 氧化锆传感器的选择 氧化锫测氧是利用氧化锆浓差电池原理来测定气体中氧含量的电化学分析方法。如图l所示,测氧系统的氧敏感元件氧化锆元件是由氧化钇或氧化钙稳定的氧化锆材料组成。在高温条件下,它是良好的氧离子导体。在理想状态下,当氧化锆元件内、外电极表面氧含量不同时便形成一个氧浓差电池,产生电池电动势。电池电动势与氧浓度的关系符合能斯特方程: 式中: P x 为氧分压, 反映氧气浓度的大小; R 为气体常数; F为法拉第常数; P a 为参考气体中的氧分压, 可以事先用标准仪器测定。Px 值与设定值进行比较, 可以确定是否启动或停止换气扇。氧化锫测氧是利用氧化锆浓差电池原理来测定气体中氧含量的电化学分析方法。如图2-2所示,测氧系统的氧敏感元件氧化锆元件是由氧化钇或氧化钙稳定的氧化锆材料组成。在高温条件下,它是良好的氧离子导体。在理想状态下,当氧化锆元件内、外电极表面氧含量不同时便形成一个氧浓差电池,产生电池电动势。2、 氧值的运算及输出 氧量及温度毫伏信号经过放大后与室温信号一同进入通道选择器,由AD转换模块循环选择进行转换,中央处理单元MCU读取转换结果并计算相应温度及氧量值。MCU计算结果一路经光电耦合隔离后进入DA转换变为模拟信号。再经过VI转换变为4mA20mA和010mA电流信号输出:另一路MCU输出串行输入到显示驱动专用集成模块后控制4位LED显示测量结果。 图2-2 氧化锆氧浓差电池原理第2节 ADC0809转换器ADC0809是M美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片。一 ADC0809的说明 ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。 ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。 ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条 。 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道模拟量输入转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表2-3所示。数字量输出及控制线:11条。 ST为转换启动信号。当ST到上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(),VREF()为参考电压输入。2、 ADC0809应用说明 (1)ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。 (2)初始化时,使ST和OE信号全为低电平。 (3)送要转换的哪一通道的地址到A,B,C端口上。 (4)在ST端给出一个至少有100ns宽的正脉冲信号。 (5)是否转换完毕,我们根据EOC信号来判断。 (6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。 三、主要特性 (1)8路输入通道,8位AD转换器,即分辨率为8位。 (2)具有转换起停控制端。 (3)转换时间为100s(时钟为640kHz时),130s(时钟为500kHz时) (4)单个5V电源供电 (5)模拟输入电压范围05V,不需零点和满刻度校准。 (6)工作温度范围为-4085摄氏度 (7)低功耗,约15mW。 四、内部结构ADC0809是CMOS单片型逐次逼近式AD转换器,内部结构如图1322所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近 五外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,如图1323所示。下面说明各引脚功能。 IN0IN7:8路模拟量输入端。 2-12-8:8位数字量输出端。 ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START: AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC: AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、REF(-):基准电压。 Vcc:电源,单一5V。 CBA 通道000IN0001IN1010IN2011IN3100IN4101IN5110IN5111IN6 图2-3 通道选择第3节 AT89C52单片机的选择 本系统采用AT89C52单片机。而目前世界上较为著名的8位单片机的生产厂家和主要机型如下: 美国Intel公司:MCS51系列及其增强型系列; 美国Motorola公司:6801系列和6805系列; 美国atmel公司:89C51等单片机; 美国Zilog公司:Z8系列及SUPER8; 美国Fairchild公司:F8系列和3870系列; 美国Rockwell公司:6500/1系列; 美国TI(德克萨司仪器仪表)公司:TMS7000系列; NS(美国国家半导体)公司:NS8070系列等等。 尽管单片机的品种很多,但是在我国使用最多的还是Intel公司的MCS52系列单片机和美国Atmel公司的89C52单片机。 MCS51系列单片机包括三个基本型8031、8051、8751。 本系统采用AT89C52单片机为控制核心。而相比之下52型功能更为强大,ROM和RAM存储空间更大,52还兼容51指令系统。基于本系统设计内容的需要,综合考虑后,我们选择单片机ATME公司的AT89C52为控制核心;主要基于考虑AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM)、6个中断源;时钟频率024MHz;器件采用高密度、非易失性存储技术生产,并兼容标准MCS-51指令系统,功能强大。 AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes的可反复擦写的只读程序存储器(PEROM)和256K bytes的随机存取数据存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器和FLASH存储单元,功能强大,AT89C52单片机适合于许多较为复杂控制应用场合。 图2-4 AT89C52引脚图 主要性能参数:与MCS-51产品指令和引脚完全兼容;8K字节可重擦写FLASH闪存存储器;1000次写/擦循环;时钟频率:0Hz24MHz;三级加密存储器;256字节内部RAM;32个可编程I/O口线;3个16位定时/计数器;6个中断源;可编程串行UART通道。第4节 单片机最小系统的设计 采用AT89C52来设计一个单片机系统能运行起来的需求最小的系统,电路图见图2-5: 图2-5 单片机最小系统图上图的最小单片机系统包含有晶振电路和复位电路,AT89C52芯片组成。(1)晶振电路晶振电路在各种指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序, AT89C52的时钟产生方式有两种,一种是内部时钟方式,一种是外部时钟方式。 在89C52单片机的内部有一个震荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振)就构成了自激振荡器并在单片机内部产生时钟脉冲信号,图中电容器C1和C2稳定频率和快速起振,晶振CRY选择的是12MHz。(2)复位电路 复位电路在单片机工作中仍然是不可缺少的主要部件中,单片机工作时必须处于一种确定的状态。端口线电平和输入输出状态不确定可能使外围设备误动作,导致严重事故的发生;内部一些控制寄存器(专用寄存器)内容不确定可能导致定时器溢出、程序尚未开始就要中断及串口乱传向外设发送数据。 本设计中复位电路采用的是上电复位与手动复位电路,开关未按下是上电复位电路,上电复位电路在上电的瞬间,由于电容上的电压不能突变,电容处于充电(导通)状态,故RST脚的电压与VCC相同。随着电容的充电,RST脚上的电压才慢慢下降。选择合理的充电常数,就能保证在开关按下时是RST端有两个机器周期以上的高电平从而使AT89C52内部复位。开关按下时是按键手动复位电路,RST端通过电阻与VCC电源接通,通过电阻的分压就可以实现单片机的复位。第5节 显示电路的设计 七段显示器主要有荧光数码管和半导体显示器、液晶数码显示器。半导体(发光二极管)显示器是数字电路中比较方便使用的显示器。它有共阳极和共阴极两种接法。 数字显示译码器将BCD代码译成数码管显示字所需要的相应高、低电平信号,使数码管显示出BCD代码所表示的对应十进制数,这是一种代码译码器。第6节 时钟芯片的选择与设计 在本系统,我们选择了DS1302时钟芯片。因为此系统需要记录测量发生的时间,所以需要时钟芯片来记录不同时间的监测数据,因此我们在系统中加入了时钟芯片。 (1)我们时钟电路选择的芯片是DS1302,其内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机通信。而通信时,仅需要3个口线:RES(复位),I/O数据线,SCLK(串行时钟)。时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。 (2)DS1302主要性能有:时钟能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年的调整能力;读/写时钟或RAM数据时,有单字节和多字节传送两种方式,与DS1202/TTL兼容。 (3)DS1302引脚概述:X1,X2;振荡源,外接32.768KHZ晶振;SCLK:行时钟输入端。见表2-6。晶体振荡器的选择:一个32.768KHz的晶振可以直接接在DS1302的2、3管脚之间,可以设定规定载荷电容为6pf。 电源控制:Vcc1可提供单电源控制也可以用来作为备用电源,Vcc2为主电源。在主电源关闭的情况下,也可以保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电;当Vcc2小与Vcc1时,DS1302由Vcc1供电。表2-1时钟控制字对照表寄存器名命令字取值范围各位内容写操作读操作765430秒寄存器80H81H0059CH10SECSEC时寄存器84H85H0112 002312/24010/(A/P)HRHR日寄存器86H87H0128,29、30、310010DATEDATE月寄存器88H89H011200010MMONTH周寄存器8AH8BH01070000DAY年寄存器8CH8DH019910YEARYEAR保护寄存器8EH8FHWP0000慢充电寄存器90H91HTCSTCSTCSTCSDSDSRSRS时钟突发寄存器BEHBFH(4)数据输入是在输入写命令字的8个SCLK周期之后,在接下来的8个SCLK周期中的每个脉冲的上升沿输入数据,数据从0位开始。如果有额外的SCLK周期,它们将被忽略。 图2-6 时钟电路图 数据输出是在输出命令字的8个SCLK周期之后,在接下来的8个SCLK周期中的每个脉冲的下降沿输出数据,数据从0位开始。需要注意的是,第一个数据位在命令字节的最后一位之后的第一个下降沿被输出。只要RST保持高电平,如果有额外的SCLK周期,将重新发送数据字节,即多字节传送。其电路图见图2-7。第6节 电源的设计 本系统主电源采用直流电源5V和6V供电,电源部分电路为典型的7805(7806)应用电路,具有两路电源输出。该电路具有短路保护功能,变压器输出7V交流电,经桥路整流,电容滤波,送入7805/7806输入端,最后输出5V/6V直流电。 第三章 软件设计第1节 软件结构设计 软件设计部分主要包括:主程序/子程序流程的设计、功能模块程序的编写、软/硬件结合调试与演示。主要包括以下功能模块:51驱动、检测、数码管显示、模数软换,软件结构图如下3-1所示。 系统初始化信号采集并放大A/D转换并输出数据数据处理串行通信显示数据 图3-1软件框图第2节 主程序模块的设计主程序实现的功能:与硬件相结合实现便携式一氧化碳检测仪的各个功能。主要是检测与显示,时间调整与显示,数据存储,功能子函数的调用,见图3-2。开 始初始化CPU初始化时钟初始化LED屏显示开机画面显示时间显示主菜单读 键 图3.2 主程序流程图检测主程序程序见附录。第3节 模数转换的设计 模数转换模块的主要功能就是将经放大器放大的模拟电压信号转化为MCU能够处理的数字信号,并传送给单片机。ADC0809转换的流程图见下图3.3。开始使能芯片产生时钟信号输入通道控制字读取2字节数据字节数据校正送入指定寄存器结束图3.3数转换流程图第四节 时钟设计 (1)DS1302模块主要是用于设置时间和与MCU通信经LCD显示时间。 (2)时钟模块操作流程图见下图。开始初始化保护寄存器操作向DS写入字节数据向DS读取字节数据开始 图3.4 时钟模块操作流程图软件程序设计见附录。 总 结本设计体积小,质量轻,性价比高。主要分为硬件设计和软件设计。基本实现了设计前对该系统所要求的设计功能。软件是基于C语言编写的,具有很好的可控性、模块化和移植性。编写的思路以模块化思想,将系统的各个功能进行划分,然后对各个模块进行设计。本系统主要模块为氧气浓度检测、A/D转换、信号处理、显示数据、时钟设置。 由于所学知识有限,本系统实现的功能不是很健全,但在设计过程中让自己学会了很多。基于单片机的氧气浓度检测系统的设计,是一个实际的小工程。作为一个本科生,我对实际的工程设计认识不够,经验不足,难免在设计的整体框架中,有很多的细节没有考虑。请老师和同学给予我鼓励和很多宝贵的建议,并且悉心引导,给予我一个比较清晰的设计思路,帮助我解决了许多设计上的困难。最后希望论文评审的老师们对论文的不足之处敬请批评点。 致 谢本论文是在彭晓珊老师的悉心指导下完成的,谨向澎宇老师表示崇高的敬意和衷心的感谢。 参考文献1 于永权.单片机在控制系统中的应用M.北京:电子工业出版社,20032 王衍生,等.监测监控系统在矿井瓦斯管理中的应用J.北京:矿业安全与环保,20003 齐涛,王平等. 基于MSP430的便携式甲烷气体浓度监测仪M. 维纳电子技术,20074 罗亚非凌阳十六位单片机应用基础M北京:北京航空航天大学出版社,20055 宋凤娟, 付侃, 薛雅丽. STC12C5A60S2单片机高速A/D转换方法J. 煤矿机械,20106 张毅坤,单片机微型计算机原理及应用M.西安:西安电子科技大学出版社,19987李萍. AT89S51 单片机原理、开发与应用实例M . 北京: 中国电力出版社,20088 肖景和. 实用报警电路300例M . 北京: 中国电力出版社,2005 附 录 程序代码#include #include #include #include #include #include #include void init_cpu() EA=1;TR0=1;TR1=1;TMOD=0x11;TH1=0x3c;TL1=0xb0;/*void time1(void) interrupt 3 using 1 TH1=(65536-50000)/256;TL1=(65536-50000)%256; keyval=P1; * /初始化CPU结束/void main_menu_initial() /LCD主菜单初始化./main1_menu0.menu_count=4; /有4个菜单项./main1_menu0.display=measurearray; /定义一个”开始测量“数组/main1_menu0.subs=NULL; main1_menu0.children_menus=measure_menu;/当前菜单子菜单的指针main1_menu0.parent_menus=NULL;void measure_menu_initial() /“开始测量”菜单设置/ measure_menu0.menu_count=2; measure_menu0.display=qr; /开始测量函数, 确认. measure_menu0.subs=start_measure_function; /开始测量函数 measure_menu0.children_menus=NULL; measure_menu0.parent_menus=main1_menu; measure_menu1.menu_count=2; measure_menu1.display=qx; /开始测量函数, 取消. measure_menu1.subs=NULL; measure_menu1.children_menus=NULL; measure_menu1.parent_menus=main1_menu; /还有void store_menu_initial()、void time_menu_initial()/void led_menu_pro() max_item=menu_led-menu_count;switch(keyval)case 0: break;case 1: /向上键.if(user_choosen=0)user_choosen=max_item;shuaxin=1;user_choosen-;break; /“向上”“向下”“确认”“取消”键/if(shuaxin)/是否需要刷新LCD标志位. Clr_Scr(); shuaxin=0;led_menu_show();v oid led_menu_show()uchar n;max_item=menu_led-menu_count;if (max_item=4) /菜单项为3则表示为主菜单.for(n=0;n4;n+) draw_bmp(n*2,20,96,0,menu_ledn.display);select_item(user_choosen); /标记出当前菜单项.elseswitch(temp_choosen) case 0:draw_bmp(0,20,96,0,measurearray); /“开始测量”数组/break; default:break;for(n=0;n1)&0x1; _nop_(); _nop_(); ADCLK=0;/拉低CLK端,形成下降沿3 ADDI=1;/控制命令结束 _nop_(); _nop_(); dat=0; for(i=0;i8;i+) dat|=ADDO;/收数据 ADCLK=1; _nop_(); _nop_(); ADCLK=0;/形成一次时钟脉冲 _nop_(); _nop_(); dat=1; if(i=7)dat|=ADDO; for(i=0;i8;i+) j=0; j=j|ADDO;/收数据 ADCLK=1; _nop_(); _nop_(); ADCLK=0;/形成一次时钟脉冲 _nop_(); _nop_(); j=j7; ndat=ndat|j; if(i=1; ADCS=1;/拉低CS端 ADCLK=0;/拉低CLK端 ADDO=1;/拉高数据端,回到初始状态 dat=8; dat|=ndat; return(dat); /return ad k/*-点阵字符采集函数-*/void tra(uchar *p) /数组dsp里面的字符查询后,再储储存到另一个显示数组valuevoid main_Menu() Clr_Scr(); / 先清屏 / CS2=1;CS1=0; hz_disp16(0,32,1,yangqi); /氧/气/测/量/数/据/存/储/delay(2000); do /* k=Adc0832(0); /AD转换结果 l=k/255.0*100.0;ltemp=floor(l);dsw0=ltemp/10;dsw1=ltemp%10;/ sprintf(dsw,%2.3f,l); / dsw0=1; switch(dsw0) case 0: sz_disp16(2,32,1,sz0); break; case 1:sz_disp16(2,32,1,sz9); switch(dsw1) case 0: sz_disp16(2,40,1,sz0); break; case 1:sz_disp16(2,40,1,sz9); */ sz_disp16(2,40,1,sz0); /* tra(dsw); CS2=1;CS1=0; sz_disp16(2,56,1,value);*/ while(P1_3)34
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!