资源描述
毕业设计(论文)
YQ7多气体参数测定器产品设计
论文作者:
郝才才
指导教师:
XXX
专 业:
应用电子技术
系 (院):
电气与电子工程系
答辩日期:
年 月 日
摘要
摘 要
本设计利用六种气体传感器,一个风速与温度合一传感器,分别为一氧化碳、硫化氢、二氧化碳、甲烷、氧气、二氧化硫、检测风速与温度的AR866-CT ,在使用这些传感器之前先预热五分钟左右,预热完之后将这些传感元器放置与待测的环境中,这些传感器可以根据与可燃气体的浓度分别转换为电压,然后将装换得到的电压经过MCP6002运算放大,最后送入MSP430单片机进行A/D模数转换处理。为了方便用户对可燃气体浓度的实时了解,在MSP430单片机外围链接了用于显示的KD023C-1B 型2.3寸彩色液晶,将经过单片机处理的浓度显示在液屏上,以防止事故的发生;为了更好地设置可燃气体的报警浓度,还在单片机周围链接了四个按键以便于设置报警浓度,当检测的浓度超过了设置的浓度时,单片机控制蜂鸣器发声。
本次设计YQ7多气体参数测定器所用的MSP430单片机价格便宜,性能稳定。以可燃气体传感器和MSP430单片机为核心设计的可燃气体检测仪,设计方法简单易行,使用效果良好。下面给出了YQ7多气体参数测定器产品的总体设计原理,硬件电路和所有的软件设计。
关键词: 气体传感器、MSP430单片机、模数转换、液晶
目录
目 录
第1章 绪 论 1
1.1 多气体参数测定器的课题背景 1
1.1.1 多气体参数测定器设计的目的 1
1.1.2 在国内外的发展概况 1
1.2 多气体参数测定器设计方案 2
第2章 多气体参数测定器主要元件简介 3
2.1 MSP430单片机 3
2.1.1 MSP430单片机简介 3
2.1.2 MSP430单片机的特点 3
2.2 可燃气体传感器 4
2.2.1 传感器的定义与组成 4
2.2.2 可燃气体传感器工作原理 5
2.3 MCP6002芯片 5
2.3.1 MCP6002简介 5
2.3.2 MCP6002引脚及引脚功能 6
2.4 2.3寸彩色液晶 7
2.4.1 KD023C-1B型液晶简介 7
2.4.2 液晶接口接线图 8
第3章 多气体参数测定器系统的硬件设计 9
3.1 多气体参数测定器基本原理 9
3.2 单片机最小系统 9
3.3 报警电路设计 11
3.4 液晶显示模块设计 11
3.5 信号运算放大模块设计 12
第4章 多气体参数测定器系统的软件设计 13
4.1 多气体参数测定器的主程序流程图 13
4.2 控制器主程序设计要点 13
4.3 液晶显示程序设计 13
4.4 报警程序设计 15 4.5 模数转换子程序设计 19
第5章 结 论 22
参考文献 23
致 谢 24
第1章 绪 论
第1章 绪 论
1.1 多气体参数测定器的课题背景
1.1.1 多气体参数测定器设计的目的
随着中国经济的高速发展,仪器仪表产业也得到了快速发展,各种气体检测仪表伴随我国经济的快速发展也将迎来高速增长的时期。相对于近几年仪器仪表行业20%以上的市场增长速度,而气体检测仪器仪表行业的速度更是达到惊人的30%。
在煤矿行业中含有大量的CH4(甲烷)及CO(一氧化碳)等易燃易爆有毒气体,发生事故后会造成巨大的经济损失,甚至危及矿工的生命。本课题也是国家S863项目“易燃易爆气体检测微系统(No.2003AA404180)”的一部分,为煤矿井下提供一种低功耗的智能仪表,该仪表能快速检测混合气体,保障矿工安全,减少事故发生,对矿井中气体进行快速准确地检测显得尤其重要。
所以,为了矿工们的生命安全,减少不必要的经济损失,实现多气体参数测定器研究和开发也一直是人们关注的问题。
1.1.2 在国内外的发展概况
随着我国的改革开放,我国的经济科技得到了飞跃的发展,我国电子信息业在上世纪八十年代第一次腾飞后,国民经济信息化进程的加快,之后又进入持续快速发展的新时期。这个时期电子信息产业的主要特征表现为:一是正在从单一的制造业转变为物质生产与知识生产,装备制造与系统集成,硬件制造与软件制造,工业生产与信息服务相结合的现代信息产业;二是产业结构,企业结构,运行机制,管理模式等方面发生了深刻变化;三是我国信息产业成为国民经济的支柱产业和先导产业,是新世纪的战略产业,为国民经济和社会信息化建设提供主要技术和物质支撑。
报警器技术及其产业的特点是:基础、应用两头依附;技术、投资两个密集;产品、产业两大分散。基础、应用两头依附,是指报警器技术的发展依附于敏感机理、敏感材料、工艺设备和计测技术这四块基石。敏感机理千差万别,敏感材料多种多样,工艺设备各不相同,计测技术大相径庭,没有上述四块基石的支撑,报警器技术难以为继。
仪器仪表行业在中国经过一个阶段的发展,已经趋近成熟。而气体报警器作为工业仪器仪表的一个重要项目,它不仅代表了仪器仪表的发展状况,也反映了工业化的发展程度。用于气体报警器的传感器也在经历着飞速的变化,经过了多次的技术创新和更新换代,传感器行业,可燃气体报警器行业又迎来了新的发展和突破。在传感器行业,一直在进行着反复试验,希望通过工程创新方法来改善传感器的灵敏度,但遗憾的是业界并没有一个新的框架来总括所有的经验法则,以作为新一代传感器的设计方法。而来自美国普度大学的工程师补足了这个遗憾,为设计可燃气体报警器传感器提供了新的途径。为了测试他们的可燃气体报警器传感器设计法则系统,他们着手研究使用哪一种纳米级传感器设计,是透过目标分子进行感测最适合的材料。研究人员过去就已经发现,当感测单个分子时(例如气体烟雾探测器或生物、化学探测器),感测组件越小越好,但其原因一直没有一个理论来解释和证实,是否与目标分子的扩散情况会限制传感器运作速度有关系。而艾姆和尼尔宣称已经证实了以上理论。首先,他们比较了传统的平面传感器组件与圆柱形的单纳米管传感器组件,结果显示较小的圆柱形传感器的灵敏度至少高出传统的平面传感器100倍,这足以证明感测器组建越小越好的理论是正确的。
1.2 多气体参数测定器设计方案
多气体参数测定器设计是利用单片机控制技术,制作了多种气体与一体的报警器。该仪器对这六种气体进行实时监控,当这些气体的浓度超过上限值时,单片机发送所接收到的气体浓度给液晶显示进行实时的监测,并且单片机控制电路进行发声音报警,时刻提醒人们,以防事故发生。基于MSP430性价比高的优势,主要运用了MSP430单片机进行控制。而对与报警器而言至关重要的部分是传感器,由于气敏元件采用半导体敏感材料,其灵敏度、选择性、稳定性、抗干扰性、响应时间及寿命等主要性能,均达到国内先进水平。用该系列元件组装成易燃易爆气体泄漏报警器及检测装置,可广泛运用于矿山、油田、化工、国防、医药及家庭。在模数转换这块,利用MCP600芯片双通道运放,经过MSP430单片机的内部D/A转换,实现模数转换,MCP6002是低功率双运算放大器,它采用了Microchip先进的CMOS工艺。为了方便用户了解浓度信息,好提前准备,还采用了显示环节。显示环节用2.3寸彩色液晶显示。显示器显示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。可以提供单独锁存的I/O接口电路很多。总的来说,本次设计主要利用了以上的检测模块,A/D转换模块,显示模块,控制模块四大模块,组成了可燃气体探测报警器。
24
第2章 多气体参数测定器主要元件简介
第2章 多气体参数测定器主要元件简介
2.1 MSP430单片机
2.1.1 MSP430单片机简介
MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片机”解决方案。该系列单片机多应用于需要电池供电的便携式仪器仪表中。
MSP430系列的部分产品具有Flash存储器,在系统设计、开发调试及实际应用上都表现出较明显的优点。TI公司推出具有Flash 型存储器及JTAG边界扫描技术的廉价开发工具MSP-FET430X110,将国际上先进的JTAG技术和Flash在线编程技术引入MSP430。这种以Flash 技术与FET开发工具组合的开发方式,具有方便、廉价、实用等优点,给用户提供了一个较为理想的样机开发方式。
2.1.2 MSP430单片机特点
1.处理能力强
MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。
2.运算速度快
MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如 FFT 等)。
MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。
首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM保持模式下的最低功耗只有0.1μA。
其次,独特的时钟系统设计。在 MSP430 系列中有两个不同的时钟系统:基本时钟系统、锁频环(FLL 和FLL+)时钟系统和DCO数字振荡器时钟系统。可以只使用一个晶体振荡器(32768Hz),也可以使用两个晶体振荡器。由系统时钟系统产生 CPU 和各功能所需的时钟。并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。
由于系统运行时开启的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式(AM)和五种低功耗模式(LPM0~LPM4)。在实时时钟模式下,可达2.5μA ,在RAM 保持模式下,最低可达0.1μA 。
3.片内资源丰富
MSP430 系列单片机的各系列都集成了较丰富的片内外设。它们分别是看门狗(WDT)、模拟比较器A、定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC、16位Σ-Δ ADC、DMA、I/O端口、基本定时器(Basic Timer)、实时时钟(RTC)和USB控制器等若干外围模块的不同组合。其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出A/D 转换器;16 位定时器(Timer_A 和 Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、 PWM 等;有的器件更具有可实现异步、同步及多址访问串行通信接口可方便的实现多机通信等应用;具有较多的 I/O 端口,P0、P1、P2 端口能够接收外部上升沿或下降沿的中断输入;10/12位硬件 A/D 转换器有较高的转换速率,最高可达200kbps ,能够满足大多数数据采集应用;能直接驱动液晶多达 160 段;实现两路的 12 位 D/A 转换;硬件I2C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用的DMA模块。MSP430 系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。
另外,MSP430 系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。当系统处于省电的低功耗状态时,中断唤醒只需5μs。
MSP430 系列有 OTP 型、 FLASH 型和 ROM 型三种类型的器件,这些器件的开发手段不同。对于 OTP 型和 ROM 型的器件是使用仿真器开发成功之后烧写或掩膜芯片;对于 FLASH 型则有十分方便的开发调试环境,因为器件片内有 JTAG 调试接口,还有可电擦写的 FLASH 存储器,因此采用先下载程序到 FLASH 内,再在器件内通过软件控制程序的运行,由 JTAG 接口读取片内信息供设计者调试使用的方法进行开发。这种方式只需要一台 PC 机和一个 JTAG 调试器,而不需要仿真器和编程器。开发语言有汇编语言和 C 语言。
2.2 可燃气体传感器
2.2.1传感器的定义与组成
传感器是能感受规定的被测量并按照一定规律转换成可用输出信号的器件或装置。 在有些国家和有些科学领域,也将传感器称为变换器、检测器或探测器等。
一般来讲,传感器由敏感元件和转换元件组成。但是,由于传感器输出的信号一般都很微弱,需要有信号调节与转换电路将其放大或转换为容易传输、处理、记录和显示的形式。随着半导体器件与集成技术在传感器中的应用,传感器的信号调节与转换电路可能安装在传感器的壳体里或与敏感元件一起集成在同一芯片上。因此,信号调节与转换电路以及所需电源都应作为传感器组成的一部分。常见的信号调节与转换电路有放大器、电桥、振荡器、变阻器等等,如图2-1所示。
图2-1传感器组成图
2.2.2 可燃气体传感器工作原理
可燃气体传感器是利用难熔金属铂丝加热后的电阻变化来测定可燃气体浓度 。当可燃气体进入探测器时,在铂丝表面引起氧化反应(无焰燃烧),其产生的热量使铂丝的温度升高,而铂丝的电阻率便发生变化,当空气中有可燃气体存在并吸附在氧化物烧结体上,引起半导体电导率或热导率的变化,使其阻值变小,从而将被测气体的浓度信息转变为电信号。
由于接触燃烧式气体传感器是利用可燃性气体氧化燃烧使电热丝升温来达到检测可燃气体的目的,因此这种类型传感器对不燃烧气体不敏感,不会造成其他气体的交叉感染。而且传感器受环境温度湿度的影响比较小,性能稳定。催化燃烧式气体传感器采用电桥原理构成检测电路,其线性度及灵敏度比较好。
2.3 MCP6002芯片
2.3.1 MCP6002简介
Microchip Technology Inc.的MCP6001/2/4系列运算放大器是专门为各种通用应用设计的。这一系列器件具有1MHz增益带宽积(Gain Bandwidth Product,GBWP)和90°相位容限(典型值)。在500pF的容性负载下,它也同样具有45°相位容限(典型值)。即使单电源供电电压只有1.8V,这个系列的运算放大器仍可工作,此时静态电流为100µA(典型值)。此外,MCP6001/2/4支持轨到轨输入输出,它的共模输入电压范围为VDD+300mV 到VSS-300mV。这个系列的运算放大器在设计中采用了Microchip先进的CMOS工艺。
应用领域有提供单运放、双运放和四运放封装、汽车、便携式设备、光电二极管放大器、模拟滤波器、笔记本电脑和PDA、电池供电系统。
2.3.2 MCP6002引脚及引脚功能
1.MCP6002引脚,如图2-2所示。
图2-2 MCP6002引脚图
2.MCP6002引脚功能,如表2-1所示。
表2-1 MCP6002引脚功能图
2.4 2.3寸彩色液晶
2.4.1 KD023C-1B型液晶简介
1. 模块名称:2.3寸320*240, ILI9342C, 8/9/16/18位MCU, 3/4线SPI, 16/18位RGB接口TFT 彩色液晶屏带铁框
2. 型号:KD023C-1B
3. 兼容型号:否
4. 尺寸:2.3寸
5. 是否带触摸:否
6. 显示模式:TFT
7. 显示色彩:65K/262K
8. 分辨率: 320*240
9. 点距:0.1461(H)*0.1461(V)
10. 视角:12:00
11. 控制IC:ILI9342C
12. 显示类型:全透型,常白
13. 外形尺寸:52.35*46.35*2.60mm
14. 可视面积:48.65*36.96mm
15. 点阵区面积:46.75*35.06mm
16. 亮度:350cd/m2
17. 对比度:500
18. 接口类型: 8080 8/9/16/18位 MCU接口、16/18位RGB、3/4线SPI
19. 引脚数:45
20. 引脚距离:0.5mm
21. 连接类型: FPC插接型
22. 工作电压:3.3V
23. 背光灯颜色及类型: 白色LED背光
24. 背光电路:4 LED并联, 共阳,Vled =3.2V, Iled=80mA
25. 使用寿命:100000h
26. 工作温度:-20 -- 70°C
27. 储存温度:-30 -- 80°C
28. 质量体系认证:ISO9001:2008
29. 产品认证:RoHS
2.4.2 液晶接口接线图
液晶外围驱动电路。如图2-4所示。
图2-4液晶接线图
第3章 多气体参数测定器系统的硬件设计
第3章 多气体参数测定器系统的硬件设计
3.1 多气体参数测定器基本原理
多气体参数测定器主要有三部分组成,一是检测仪器,也就是甲烷,一氧化碳,二氧化碳,五个传感器采集空气中的可燃气体,安装在可燃气体释放源的附近环境中,当这些检测仪器检测到附近的环境中有可燃气体时,这个检测仪器就能将可燃气体浓度的变化转成相应的模拟信号;二是转换器,转换器的作用就是把检测仪器的输出的模拟电信号转换成数字信号;三是控制器,控制器的作用是把转换器输出的数字信号进行处理并把处理过的信号浓度送到液晶屏上显示,并能在浓度超过一定值发出信号控制报警电路。
3.2 单片机最小系统
1.复位电路,如图3-1(a)所示。
图3-1(a) MSP430单片机上电复位电路
单片机在启动时都需要复位,已使CPU及系统处于确定的初始状态,并从初始状态开始工作。单片机的复位方式有:手动按钮复位和上电复位。
手动复位:需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源VCC之间接一个按钮。
上电复位:只要在RST复位端输入引脚接一个电容至VCC端,下接一个电阻到地即可。
2.时钟电路
MSP430系列单片机时钟模块包括数控振荡器(DCO)、高速晶体振荡器和低速晶体振荡器等3个时钟源。这是为了解决系统的快速处理数据要求和低功耗要求的矛盾,通过设计多个时钟源或为时钟设计各种不同工作模式,才能解决某些外围部件实时应用的时钟要求,如低频通信、LCD显示、定时器、计数器等。数字控制振荡器DCO已经集成在MSP430内部,在系统中只需设计高速晶体振荡器和低速晶体振荡器两部分电路。
低速晶体振荡器(LFXTl)满足了低功耗及使用32.768kHz晶振的要求。LFXTl振荡器默认工作在低频模式,即32.768kHz,也可以通过外接450kHz~8MHz的高速晶体振荡器或陶瓷谐振器工作在高频模式,在本电路中我们使用低频模式,晶振外接2个22pF的电容经过XIN和XOUT连接到MCU。
高速晶振也称为第二振荡器XT2,它为MSP430F149工作在高频模式时提供时钟,XT2最高可达8MHz。在系统中XT2采用4MHz的晶体,XT2外接2个22pF的电容经过XT2IN和XT2OUT连接到MCU。如图3-1(b)所示。
图3-1(b)高速时钟电路
3.数据存储
数据存储选择大容量的E2PROMCAT24WC256。它是一个256K位串行CMOS E2PROM,内部含有32768个字节,每字节为8位,CATALYST公司的先进CMOS技术减少了器件的功耗,CAT24WC256有一个64字节页写缓冲器该器件通过I2C总线接口进行操作。如图3-1(c)所示。
图3-1(c)数据存储电路
4.整个单片机最小系统
单片机最小系统上面就有复位电路、时钟电路、数据存储、电源,在加上MSP430单片机组成,单片机最小系统的电路图3-1(d)所示。
图3-1(d)MSP430单片机最小系统
3.3 报警电路设计
报警电路是声音报警,电路是有蜂鸣器一个三极管和电阻组成,三极管是为了放大从单片机的输出信号使蜂鸣器能都被驱动,如图3-2所示。
图3-2报警电路
3.4 液晶显示模块设计
液晶显示模块的的设计,如图3-3所示。
KD023C-1B型的液晶接口RD、WR、RS、CS、REST分别接入单片机的P4.3、P4.4、P4.5、P4.6、P4.7引脚,数据口接MSP430单片机的P5口。
图3-3液晶显示电路
3.5 信号运算放大模块设计
气体传感器采集的信号,由MCP6002运算放大器进行放大,发送到单片机MSP430中,在单片机内部进行A\D模数转换,如图3-4所示。
图3-4运算放大模块设计
第4章 多气体参数测定器系统的软件设计
第4章 多气体参数测定器系统的软件设计
4.1 多气体参数测定器的主程序流程图
主程序流程图,如图4-1所示。
可燃气体
传感器
MCP6002芯片对信号处理
MSP430
单片机
3寸液晶显示
按键设置浓度
报警
不报警
判断是否超过设置浓度
Y N
图4-1主程序流程图
4.2 控制器主程序设计要点
系统程序只有采集程序,显示程序,按键程序,报警程序组成。在设计程序的时候要学会模块化编程,模块化编程比较容易理解也更容易发现错误。模块程序编写的原则是:不该让外界知道的信息就不应该出现头文件里面,而外界调用的模块内借口或者接口变量所必须的信息就一定出现在有文件里面,否则,外界无法正确的调用我们提供的借口功能。因为为了让外部函数或者文件调用我们提供的这个接口描述文件----即头文件。同时我们自身模块也需要包含这份模块头文件(因为其包含了模块源文件中所需要的宏定义或者结构体)。
4.3 液晶显示程序设计
void LCD_PageMain(UINT8 mSelectedItem)//主菜单:参数、曲线、数据、时间、归零、标定
{
UINT16 mForColor[6],mColor[6];
UINT16 i;
if(CurrentPageIndex!=PageMain)
{
LCDClear(SYS_WHITE);
CurrentPageIndex=PageMain;
DisplayCircleFill(159,120,100,SYS_GREEN); //圆形标题
//DisplayCircle(159,120,40,SYS_WHITE);
DisplayCircle(159,120,41,SYS_WHITE);
//DisplayCircle(159,120,42,SYS_WHITE);
DrowLine(109,34,139,86,SYS_WHITE);
DrowLine(209,206,179,154,SYS_WHITE);
DrowLine(109,206,139,154,SYS_WHITE);
DrowLine(209,34,179,86,SYS_WHITE);
DrowLine(59,119,119,119,SYS_WHITE);
DrowLine(199,119,259,119,SYS_WHITE);
/*
GUI_LineWith(109,34,139,86,3,SYS_WHITE);
GUI_LineWith(209,206,179,154,3,SYS_WHITE);
GUI_LineWith(109,206,139,154,3,SYS_WHITE);
GUI_LineWith(209,34,179,86,3,SYS_WHITE);
GUI_LineWith(59,119,119,119,3,SYS_WHITE);
GUI_LineWith(199,119,259,119,3,SYS_WHITE);
*/
//LcdFill(0,LCD_H-35,LCD_W,35,SYS_BLUE);
//LcdTxt(15,LCD_H-25,2,16,16,TXT_Select ,SYS_WHITE,SYS_BLUE);
}
for(i=0;i<6;i++)
{
mColor[i]=SYS_WINDOWS_Main_COLOR;
mForColor[i]=SYS_WINDOWS_TXT_COLOR;
}
mColor[mSelectedItem-1]=SYS_WINDOWS_SEL_COLOR;
mForColor[mSelectedItem-1]=SYS_WINDOWS_SEL_TXT_COLOR;
LcdTxt(109+28,36,2,24,24,TXT_Measure_CN,mForColor[0],mColor[0]);
LcdTxt(198,74,2,24,24,TXT_Curve_CN ,mForColor[1],mColor[1]);
LcdTxt(198,145,2,24,24,TXT_Data_CN ,mForColor[2],mColor[2]);
LcdTxt(109+28,180,2,24,24,TXT_Time_CN ,mForColor[3],mColor[3]);
LcdTxt(75,145,2,24,24,TXT_Zero_CN ,mForColor[4],mColor[4]);
LcdTxt(75,74,2,24,24,TXT_Calibrate_CN ,mForColor[5],mColor[5]);
}
4.4 报警程序设计
void LCD_PageAlarmSetup_Key(UINT8 mKeyValue)//报警设置
{
UnionFP32 mTFpData;
switch (mKeyValue)
{
case Key_FUNC:
if(SysParaHoldFlag)
SysParaHoldFlag=FALSE;
else
SysParaHoldFlag=TRUE;
PageRefreshEnable=TRUE;
break;
case Key_DOWN:
switch(SelectedItemIndex)
{
case 1:
if(SysParaHoldFlag)
AlarmLimit[CO2_TYPE]-=0.1;
else
AlarmLimit[CO2_TYPE]-=0.01;
if(AlarmLimit[CO2_TYPE]<CO2_LOW_SCALE)
AlarmLimit[CO2_TYPE]=CO2_HIGH_SCALE;
break;
case 2:
if(SysParaHoldFlag)
AlarmLimit[SO2_TYPE]-=10;
else
AlarmLimit[SO2_TYPE]-=1;
if(AlarmLimit[SO2_TYPE]<SO2_LOW_SCALE)
AlarmLimit[SO2_TYPE]=SO2_HIGH_SCALE;
break;
case 3:
if(SysParaHoldFlag)
AlarmLimit[CH4_TYPE]-=0.1;
else
AlarmLimit[CH4_TYPE]-=0.01;
if(AlarmLimit[CH4_TYPE]<CH4_LOW_SCALE)
AlarmLimit[CH4_TYPE]=CH4_HIGH_SCALE;
break;
case 4:
if(SysParaHoldFlag)
AlarmLimit[O2_TYPE]-=1;
else
AlarmLimit[O2_TYPE]-=0.1;
if(AlarmLimit[O2_TYPE]<O2_LOW_SCALE)
AlarmLimit[O2_TYPE]=O2_HIGH_SCALE;
break;
case 5:
if(SysParaHoldFlag)
AlarmLimit[CO_TYPE]-=10;
else
AlarmLimit[CO_TYPE]-=1;
if(AlarmLimit[CO_TYPE]<CO_LOW_SCALE)
AlarmLimit[CO_TYPE]=CO_HIGH_SCALE;
break;
case 6:
if(SysParaHoldFlag)
AlarmLimit[H2S_TYPE]-=10;
else
AlarmLimit[H2S_TYPE]-=1;
if(AlarmLimit[H2S_TYPE]<H2S_LOW_SCALE)
AlarmLimit[H2S_TYPE]=H2S_HIGH_SCALE;
break;
}
PageRefreshEnable=TRUE;
break;
case Key_UP:
switch(SelectedItemIndex)
{
case 1:
if(SysParaHoldFlag)
AlarmLimit[CO2_TYPE]+=0.1;
else
AlarmLimit[CO2_TYPE]+=0.01;
if(AlarmLimit[CO2_TYPE]>CO2_HIGH_SCALE)
AlarmLimit[CO2_TYPE]=CO2_LOW_SCALE;
break;
case 2:
if(SysParaHoldFlag)
AlarmLimit[SO2_TYPE]+=10;
else
AlarmLimit[SO2_TYPE]+=1;
if(AlarmLimit[SO2_TYPE]>SO2_HIGH_SCALE)
AlarmLimit[SO2_TYPE]=SO2_LOW_SCALE;
break;
case 3:
if(SysParaHoldFlag)
AlarmLimit[CH4_TYPE]+=0.1;
else
AlarmLimit[CH4_TYPE]+=0.01;
if(AlarmLimit[CH4_TYPE]>CH4_HIGH_SCALE)
AlarmLimit[CH4_TYPE]=CH4_LOW_SCALE;
break;
展开阅读全文