毕业论文-基于C51单片机的船舶辅锅炉水位自动控制系统设计_第1页
毕业论文-基于C51单片机的船舶辅锅炉水位自动控制系统设计_第2页
毕业论文-基于C51单片机的船舶辅锅炉水位自动控制系统设计_第3页
毕业论文-基于C51单片机的船舶辅锅炉水位自动控制系统设计_第4页
毕业论文-基于C51单片机的船舶辅锅炉水位自动控制系统设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、 装 订 线 大连海事大学 装 订 线 毕业论文二零一二年六月基于C51单片机的船舶辅锅炉水位自动控制系统设计专业班级:轮机管理18班姓 名: 指导老师: 轮机工程学院摘要锅炉水位是锅炉运行时重要的参数,水位过低可能会发生锅炉干烧现象,导致锅炉烧坏。水位过高会导致蒸汽带水过多,蒸汽品质下降,会引起设备腐蚀、水击,烧坏过热器管子。本文在“育鲲”轮辅锅炉现有设备的基础上,设计了一套简易的锅炉水位自动控制系统,由于育鲲轮通常是在航行时使用废气锅炉,停泊时使用燃油锅炉,对水位的控制不需要很精确,所以本系统对燃油锅炉水位采用单冲量控制。系统由硬件系统和软件系统两部分组成。硬件系统和软件系统都采用模块化设

2、计,将系统分为若干模块进行初步设计,然后将各个模块进行整合,经过改进最终形成一个完善的控制系统。用仿真软件Proteus和编程软件Keil相结合,完成系统硬件设计和软件编程,程序由C语言编写。硬件系统以STC89C52单片机为核心,包括模拟量采集输入模块、单片机最小单元模块、报警模块、键盘模块、显示模块及端口扩展模块。软件系统包括初始化模块、中断模块、数据处理模块、键盘模块、显示模块、A/D转换模块和报警模块。通过硬件系统和软件系统相结合,实现具有液位检测和控制的双重功能,同时也具有报警和显示的功能,并能通过键盘对参数值进行手动设定。最后,提出了显示模块的合理改进方案,并且在育鲲轮现有的通信网

3、络基础上设计了通信模块,使系统功能更加完善。关键词:锅炉液位,单片机,单冲量控制,模块化ABSTRACTWater level is an important parameter when a boiler is running. The phenomenon of distilling without water may occur when the water level is too low, and the boiler may be burn down finally. Due to high water level, the quality of the steam will be

4、come worse. Whats worse, it may also cause corrosion and water attack of equipments, and burn down the super-heater coil.This paper aims at design a simple set of automatic control system of the boilers water level based on existing equipments of the “YU KUN” vessel. Generally, exhaust gas boiler is

5、 in service during sailing and auxiliary oil-burning boiler is in service in harbor. Thus, the control of water level does not need to be very precisely. This control system applies single pulse control to the water level. It is composed of two parts: hardware system and software system. They are al

6、l modularized. Initially, this system is divided into several independent modularization and finally form a concrete system together. Programmer software “Keil uVision3” accomplished the design of the software system. And simulate software “Proteus” accomplished the design of the hardware system. Pr

7、ograms are accomplished with C programming language. Hardware system is based on STC89C52 microcontroller, including the imitation input modularization, the microcontroller least unit modularization, alarm modularization, keyboard modularization, display modularization and I/O extending modularizati

8、on. Software system includes the initial modularization, interrupt modularization, data handling modularization, the keyboard modularization, display modularization and A/D transform modularization. Hardware system and software system cooperate to accomplish the function of detecting and controlling

9、 the water level. Also, the system has functions of displaying and alarming. Whats more, the system parameters data can be programmed manually through keyboard. Finally, a more reasonable suggestion of display modularization can be achieved. And communication modularization is designed on basic of c

10、ommunications network that “YU KUN” vessel is applying in order to make the system more completeKeywords: Boiler, Water level, Microcontroller, Single pulse control, Modularization目录 TOC o 1-3 h z u HYPERLINK l _Toc323198780 1 前言 PAGEREF _Toc323198780 h 1 HYPERLINK l _Toc323198781 1.1课题意义 PAGEREF _T

11、oc323198781 h 1 HYPERLINK l _Toc323198782 1.2发展状况 PAGEREF _Toc323198782 h 1 HYPERLINK l _Toc323198783 2 硬件系统设计 PAGEREF _Toc323198783 h 2 HYPERLINK l _Toc323198784 2.1 系统总体设计 PAGEREF _Toc323198784 h 2 HYPERLINK l _Toc323198785 2.1.1 系统功能 PAGEREF _Toc323198785 h 2 HYPERLINK l _Toc323198786 2.1.2 硬件系统示

12、意图 PAGEREF _Toc323198786 h 2 HYPERLINK l _Toc323198787 2.2 各硬件模块设计 PAGEREF _Toc323198787 h 3 HYPERLINK l _Toc323198788 2.2.1 模拟量采集输入模块 PAGEREF _Toc323198788 h 3 HYPERLINK l _Toc323198789 2.2.2 单片机最小单元模块 PAGEREF _Toc323198789 h 5 HYPERLINK l _Toc323198790 2.2.3 I/O端口扩展模块 PAGEREF _Toc323198790 h 7 HYP

13、ERLINK l _Toc323198791 2.2.4 键盘模块 PAGEREF _Toc323198791 h 9 HYPERLINK l _Toc323198792 2.2.5 显示模块 PAGEREF _Toc323198792 h 11 HYPERLINK l _Toc323198793 2.2.6 报警模块 PAGEREF _Toc323198793 h 12 HYPERLINK l _Toc323198794 2.3 硬件系统总原理图 PAGEREF _Toc323198794 h 13 HYPERLINK l _Toc323198795 3 软件系统设计 PAGEREF _To

14、c323198795 h 14 HYPERLINK l _Toc323198796 3.1 软件系统总体设计 PAGEREF _Toc323198796 h 14 HYPERLINK l _Toc323198797 3.1.1 软件程序流程 PAGEREF _Toc323198797 h 14 HYPERLINK l _Toc323198798 3.1.2 软件程序主函数 PAGEREF _Toc323198798 h 15 HYPERLINK l _Toc323198799 3.2 软件各模块程序设计 PAGEREF _Toc323198799 h 16 HYPERLINK l _Toc32

15、3198800 3.2.1 初始化模块 PAGEREF _Toc323198800 h 16 HYPERLINK l _Toc323198801 3.2.2 AD转换模块 PAGEREF _Toc323198801 h 17 HYPERLINK l _Toc323198802 3.2.3 数据处理模块 PAGEREF _Toc323198802 h 18 HYPERLINK l _Toc323198803 3.2.4 显示模块 PAGEREF _Toc323198803 h 20 HYPERLINK l _Toc323198804 3.2.5 报警模块 PAGEREF _Toc32319880

16、4 h 23 HYPERLINK l _Toc323198805 3.2.6 键盘模块 PAGEREF _Toc323198805 h 25 HYPERLINK l _Toc323198806 3.2.7 中断模块 PAGEREF _Toc323198806 h 28 HYPERLINK l _Toc323198807 4 系统功能改进与扩展 PAGEREF _Toc323198807 h 30 HYPERLINK l _Toc323198808 4.1 显示模块改进 PAGEREF _Toc323198808 h 30 HYPERLINK l _Toc323198809 4.1.1 LCD1

17、602液晶显示 PAGEREF _Toc323198809 h 30 HYPERLINK l _Toc323198810 4.1.2 液晶显示程序设计 PAGEREF _Toc323198810 h 31 HYPERLINK l _Toc323198811 4.2通信功能扩展 PAGEREF _Toc323198811 h 36 HYPERLINK l _Toc323198812 4.2.1 RS-485通信 PAGEREF _Toc323198812 h 36 HYPERLINK l _Toc323198813 4.2.2通信模块设计 PAGEREF _Toc323198813 h 36 H

18、YPERLINK l _Toc323198814 5总结 PAGEREF _Toc323198814 h 38 HYPERLINK l _Toc323198815 参考文献 PAGEREF _Toc323198815 h 39 HYPERLINK l _Toc323198816 致谢 PAGEREF _Toc323198816 h 39PAGE 401 前言1.1课题意义 在以内燃机为动力装置的船上,辅锅炉是船舶的重要设备,产生的蒸汽主要用于加热主、副机所用的燃油,以及供厨房及空调等用汽。因此具有蒸发量较小、工作压力较低、对水位控制质量要求不高的特点4。而锅炉水位是锅炉运行时重要的参数,水位过

19、低可能会发生锅炉干烧现象,导致锅炉烧坏。水位过高会导致蒸汽带水过多,蒸汽品质下降,会引起设备腐蚀、水击,烧坏过热器管子。当前船舶机舱自动化的要求越来越高,锅炉的自动控制在实现无人机舱中是必不可少的。目前,国内较数船舶的辅锅炉的自动控制仍由继电器、接触器、时间继电器等组成,实现各种控制功能,它们的共同特点是线路复杂、可靠性差、有时容易出现误动作,特别是触头氧化及铁芯与衔铁弄脏后的吸力不足,机械运动部件运动不灵活而出现被卡烧坏线圈等故障,给维护过程带来极大不便,甚至会影响正常营运工作,而且,控制设备体积大、数量多、重量重、价格贵。因此应用更先进的控制方法是很有必要的。目前应用较为广泛的可作为传统继

20、电接触器控制系统的替代产品主要有可编程控制器(PLC)和单片机(MCU),都可以通过软件来改变控制过程,而且都具有体积小、组装灵活、编程简单、抗干扰及可靠性高等特点。锅炉自控系统是一个典型的大惯性、大滞后、多变量的过程控制系统 ,其涉及到压力、温度、水位等多个物理参数检测与控制 ,需要同时控制循环泵、补水泵、加热装置 自动排除故障等。由于模拟输入量多 ,需要的硬件电路也多 ,控制起来不简单。现阶段 ,很多厂家都是利用 PLC对锅炉进行控制 ,其自动化程度和可靠性较高 ,但是成本也很高 ,而且程序修改和参数设置比较困难。以单片机为控制核心的智能控制系统由于成本低、可靠性好、安全性高 ,受到了更多

21、企业的喜爱16。总之,以单片机为核心的控制系统经济性更高,体积更小,控制更灵活,并可以以模块化更换来代替维修。单片机控制系统必然会得到更广泛的应用,在工业控制现场具有良好的应用前景。本设计以锅炉液位的自动控制为例,实现了以单片机为核心的自动控制系统,克服了传统控制锅炉液位的缺陷,突显了单片机控制系统的优势。1.2发展状况 锅炉作为能源转换和消耗的设备已有两百多年的历史了,处于历史的原因,我国锅炉自动控制的水平一直都较低,锅炉微机控制是近几年是近年来开发的新技术,它是微型计算机软件、硬件、自动控制、锅炉节能等几项技术密结合的产物。工业锅炉采用微机控制和原有控制方式相比具有明显优势,能够直观而集中

22、的显示锅炉各运行参数,显示液位压力温度的状态。而作为锅炉控制装置,其主要任务是保证锅炉的安全、稳定、济运行,减轻操作人员的劳动强度。在采用计算机控制的锅炉控制系统中,有十分周到的安全机制,能够杜绝由于人为疏忽造成的重大事故。 锅炉工业的迅猛发展是近几年的事情,国外的锅炉工业50年代发展最快,70年代达到高峰。一直以来,用单片机实现锅炉的控制是控制领域的一个典型的问题,伴随着控制理论和技术的法发展,锅炉自动化控制水平也在逐渐提高,锅炉的自动控制,经历了30年代的单参数仪表控制,40年代的组成仪表复合参数仪表控制,以及60年代兴起的计算机过程控制几个阶段。而用单片机实现锅炉的控制,也是近几年才发展

23、起来的,是一个逐渐深入的过程,虽然与其他发达国家相比还存在差距,但是在此方面的进步却是很大的13。现在船舶上应用最多的锅炉自动控制系统基本由国外公司所垄断,国内公司自主开发的锅炉自动控制系统存在许多的缺陷,可靠性不高,包括制造工艺和技术等各方面的问题。导致船舶锅炉控制的市场份额基本被国外公司所占据,因此设计具有自主知识产权的高可靠性的船舶锅炉自动控制系统是很有必要的。2 硬件系统设计2.1 系统总体设计2.1.1 系统功能本系统采用单冲量的控制方法来完成对燃油锅炉水位的控制,确保锅炉运行的安全性。本系统能够完成以下功能:a)能够显示锅炉当前水位值;b)当水位高于最高水位和低于最低水位时能够发出

24、报警,并能够自动控制供水泵的启停和燃烧器供油的紧急切断;c)能够通过键盘对最高/低水位、供水泵启停水位和燃烧器供油切断水位进行人工调节。本系统以STC89C52单片机为核心,包括模拟量采集输入模块、单片机最小单元模块、端口扩展模块、报警模块、按键及显示模块、数字量输出模块。模拟量采集输入模块包括液位传感器、A/D转换器,将模拟量转换成数字量,再将数据传给单片机进行处理。单片机单元模块即单片机最小单元,使单片机能正常工作。串口扩展模块通过端口扩展芯片8255A完成人机交互的一些功能。按键及显示模块由独立式按键键盘和3位数码管及相应的驱动电路组成。报警模块将单片机的控制数据通过驱动芯片控制相应发光

25、二极管、继电器和报警器的工作,实现对燃油锅炉各种工作状态的监视报警。2.1.2 硬件系统示意图硬件系统是由多个子模块连接而成的,以STC89C52单片机为核心,包括模拟量采集输入模块、单片机最小单元模块、报警模块、键盘模块、显示模块及端口扩展模块。硬件系统示意图如图1所示:STCSTC89C52单片机时钟电路独立按键键盘水位监测单元A/D转换器报警模块8255A I/O扩展显示模块图1 硬件系统示意图2.2 各硬件模块设计2.2.1 模拟量采集输入模块本模块采用NRGT26-1S型水位监测单元来采集炉内水位,输出的电流模拟信号经电流电压转换电路转换成电压信号,模数转换器(ADC0804)将采集

26、到的电压信号转换为数字信号,然后把数字信号经过8255A扩展芯片送入单片机进行处理。此模块原理图如图2所示图2 模拟量采集输入模块原理图(1)水位监测单元NRGT26-1S型水位监测单元,根据电容测量原理,可以监测导电性和绝缘的液体液位差。在电极盒内有一个液位变送器,可以产生4-20mA的输出电流,不需要额外的转换设备,特别适合持续监测和远程指示液位。最大工作压力/温度:2bar/238C。水位检测单元接线图17和外形示意图17如图3 图3 水位监测单元接线图 图4 水位监测单元示意图(2)电流电压转换电路水位监测单元产生的是4-20mA的标准电流,要对模拟量信号在ADC中进行AD转换就要将电

27、流信号转换成电压信号。应用运放进行电流测量有两种方法,一是利用电流在电阻上的压降(电路初步设计阶段就采用的此方法),再进行电压放大;二是直接将电流注入运放的求和点。应用这样的电路,转换得到的电压信号可以直接加在运放的输入端。这种转换方式有两个不妥之处:首先,电阻的加入会破坏电路原来的状态,带来测量上的误差;其次,运放的失调电压也会被运放自己放大,并加到测量的输出结果上。使用“电流-电压”转换电路可以避免上述两个不足,其电路结构如图5所示:图5 电流-电压转换电路输入电流直接接入运放的求和点(反相输入端),运放输出端将通过R1向求和点提供同样大小的电流以达到平衡,电路的增益由R1决定,Uout=

28、IinR。该电路唯一的误差来源于偏置电流,偏置电流作为误差与输入电流进行了代数叠加。(3)A/D转换器A/D转换器的作用是将模拟量信号转换成数字量信号。不同的AD转换方式具有各自的特点,在要求转换速度高的场合,选用并行AD转换器;在要求精度高的情况下,可采用双积分型AD转换器,也可以选择分辨率更高的其他形式的转换器,但成本会增加。而逐次比较性AD转换器在一定程度上兼有以上两种转换器的优点,应用较多,ADC0804就是此类单片集成AD转换器。ADC0804采用CMOS工艺20引脚集成芯片,分辨率为8位,转换时间为100us,输入电压范围是05V,由一个8位AD转换器、一个8路模拟量开关、8路模拟

29、量地址锁存译码器和一个三态数据输出锁存器组成。在AD转换器内部含有一个高阻抗斩波稳定比较器,一个带有模拟开关树组的256电阻分压器,以及一个逐次逼近型寄存器。8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个通道的模拟信号。由于多路开关的地址输入部分能够进行锁存和译码,而且三态TTL输出也可以锁存,所以它易于与微型计算机接口。内部结构原理图15如图6所示,引脚图如图7所示; 图6 内部结构原理图 图7 引脚图2.2.2 单片机最小单元模块单片机最小单元是保证单片机能正常的最基本的电路,本文采用STC89C52芯片为核心芯片,采用内部时钟电路和上电复位电路。本模块原理图如图8所

30、示图8 单片机最小单元模块原理图(1) STC89C52单片机整个系统以STC公司生产的89C52为核心芯片。该芯片为8051内核芯片,内部含Flash E2PROM 存储器,芯片内部程序存储空间为8KB,内部RAM为512B,PDIP(双列直插)式封装,芯片外观如图9所示,引脚图如图10所示:STC89C52单片机具有以下优点14:a)加密性强b)抗干扰能力强,高抗静电,宽电压、不怕电源抖动,宽温度范围:-40到80摄氏度c)价格低廉d)超低功耗e)速度快,可靠性高 图9 STC89C52外观图7 图10 STC89C52引脚图7(2) 晶体振荡器电路及复位电路51系列单片机内部已具有振荡电

31、路,只要在18脚(XTAL2)和19脚(XTAL1)上连接简单的晶体振荡器即可,典型的晶体振荡器频率可以选11.0592MHz,它可以准确地得到9600波特率和19200波特率,另一个典型的晶体振荡器频率为12MHz,可以产生精确地微秒级延时,方便定时场合。本系统采用的是12MHz的晶体振荡器。晶体振荡器实物如图11所示:图11 晶体振荡器实物图单片机的复位引脚是第9脚(RST),当次引脚连接高电平超过两个机器周期,即可产生复位的动作。为了保证应用系统可靠地复位,在设计复位电路时通常使RST引脚保持10ms以上的高电平。复位电路有上电复位和手动复位两种,还可以采用上电和按钮复合复位,本系统采用

32、上电复位的形式。2.2.3 I/O端口扩展模块单片机本身的I/O口是很有限的,当所要连接的外设较多时,就要扩展I/O接口。扩展并行I/O口所用的芯片有可编程芯片(如8255、8155等)、通过TTL、CMOS锁存器和缓冲器(如74LS373、74LS573、74LS244等)。本模块选择的并行I/O口扩展芯片为可编程并行接口芯片8255A和TTL锁存器和缓冲器74HC573。(1)可编程并行接口芯片8255A8255A是Intel公司生产的通用可编程并行I/O接口芯片,允许采用同步异步和中断方式传送I/O数据。8255A内部由四部分电路组成。它们是A口、B口和C口,A组控制器和B组控制器,数据

33、缓冲器及读写控制逻辑,8255A内部结构原理图如图13所示,芯片引脚图2如图12所示:图12 8255A引脚图 图13 8255A内部结构原理图8255A共有3种工作方式:方式0、方式1和方式2。本系统是采用的8255A的工作方式0,方式0为基本输入/输出方式,无需联络信号,直接输入或输出,PA,PB和PC中任一端口都可以通过方式控制字设定为输入或输出。单片机可对8255A进行I/O数据无条件传送,外设的I/O数据可以在8255A的各端口得到锁存和缓冲。方式0工作示意图如图14所示:控制线CB控制线CB数据线DBD7D0WRRD地址线ABCSA1A0B口PB7PB0PC3PC0PC7PC4PA

34、7PA0A口C口图14 8255A方式0工作示意图(2)锁存器和缓冲器74HC57374HC573是八进制高电流三态同步输出锁存器,器件的输入是和标准的CMOS输出兼容的,当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步),当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出能直接接到CMOS,NMOS和TTL接口上;操作电压范围:2.0V6.0V;低输入电流:1.0uA;CMOS器件的高噪音抵抗特性。74HC573引脚图18如图15所示,真值表如表1所示:图15 74HC573引脚图表1:4HC573真值表输入输出QOELEDLHHHLHLLLLXQHXXZ2.2

35、.4 键盘模块键盘模块主要完成对参数手动设置的功能。键盘在单片机应用系统中能实现单片机输入数据、传送命令等功能,是人工干预单片机的主要手段。键盘分为编码键盘和和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的键盘称为非编码键盘,非编码键盘又分为独立键盘和矩阵键盘。当需要的按键较多时,为了减少占用单片机的I/O线资源,通常采用矩阵式键盘。矩阵式键盘有行线和列线组成,按键位于行与列的交叉点上,矩阵键盘能有效的提高I/O口的利用率。本系统在设计方案中,为了节约I/O线资源,采用了矩阵键盘的设计方法,如图16所示:图16 矩阵

36、键盘设计原理图在后来不断改进过程中发现,有的按键功能重叠,经过改进之后功能键最终确定为8个,完全可以采用独立按键的设计方法。由于键盘的扫描只是CPU工作的内容之一,CPU还要做其他工作,如液晶显示、A/D转换等,为了保证CPU能及时响应按键操作,又不过多的占用CPU的工作时间,键盘的工作方式选为中断扫描方式。图17所示为独立键盘中断方式下与单片机接口电路,7个调节功能按键接单片机P1口的P10、P11、P12、P13、P14、P15、P16,进入/退出按键设置键接到单片机外部中断0口(P32)。各功能键功能如表2所示:表2:各功能键功能按键序号按键名称按键功能1HWL最高工作水位2P_STOP

37、 WL供水泵停止水位3P_START WL供水泵启动水位4LWL最低工作水位5BOC:最低危险水位,燃烧器停止6+设定值加17设定值减18ENTER/EXIT手动设定/退出键图17 键盘模块原理图2.2.5 显示模块显示模块的功能是对当前锅炉液位进行显示,在进行参数手动设置时对调节参数进行显示。液位显示初期设计采用数码管动态显示,范围从0999,选择的数码管是7段共阴极连接,型号是MPX3-CA。在这里使用到了74LS573,它是一个8位的D触发器,在单片机系统中经常使用,可以作地址数据总线扩展的锁存器,也可以作为普通的LED的驱动器件。动态显示的特点是将所有位数码管的段选线并联在一起,由位选

38、线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示10。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 显示模块原理图如图18所示:U7(74HC573)为数码管位选数据锁存器,Q0、Q1、Q2分别接三个数码管的位选端。U8(74HC573)为数码管段选数据锁存器,Q0Q7分别接数码管的段选端。8255A的C口的PC0接位选锁存器的输入使能端,PC1接段选锁

39、存器的输入使能端。B口用于输出数码管的位选段选数据。图18 显示模块原理图2.2.6 报警模块报警模块的功能是对单片机的控制命令和报警命令进行输出。声光报警功能由发光二极管和喇叭完成,继电器则用于将单片机的控制命令进行输出,控制外部设备动作。报警模块原理图如图19所示,各器件功能如表3所示:表3:报警模块各器件功能序号器件功能1发光二极管D1高水位报警指示2发光二极管D2低水位报警指示3发光二极管D3正常水位指示4发光二极管D4喇叭报警指示5发光二极管D51#供水泵运行指示6发光二极管D62#供水泵运行指示7喇叭SPEAKER声音报警8继电器RL1控制1#供水泵启停9继电器RL2控制2#供水泵

40、启停10继电器RL3燃烧器停油LED(发光二极管),体积小,耗电量低,常作为微计算机与数字电路的输出设备,用于指示信号状态。具有二极管单向导通的特性,施加反向电压时LED不亮,而施加正向电压时,LED将发光。随着通过LED正向电流的增加,LED将更亮,LED的寿命也将缩短,因此电流以515mA为宜。51系列的单片机的I/O口都是漏极开路的输出,其中P1、P2与P3内有30 k的上拉电阻,因此想让I/O口提供1020mA的电流驱动LED发光比较困难。所以扩展一片ULN2803作为驱动。继电器是当输入量达到规定值时,是被控制的输出电路导通或断开的电器,实际上是用较小的电流去控制较大电流的一种“自动

41、开关”。本系统中采用的是直流电磁机械继电器,尽管机械继电器的开关响应时间较长,但是已经能够满足本系统对控制响应时间的要求。而且,机械继电器最大的优点是其开关状态时理想的6。电阻R10、R11、R12用于调整继电器的驱动电流,二极管D11、D12、D13用于在继电器关断时为线圈提供感生电流的放电电路。图19 报警模块原理图2.3 硬件系统总原理图以上是对硬件系统以模块的形式进行的初步设计,只有将各个模块进行整合,经过改进最终才能形成一个完善的控制系统。本部分就是将模拟量采集输入模块、单片机最小单元模块、报警模块、键盘模块、显示模块及端口扩展模块进行了整合,形成了一个完整的硬件系统,以在软件设计部

42、分进行编程。图20 硬件系统总原理图3 软件系统设计3.1 软件系统总体设计3.1.1 软件程序流程软件系统指挥着硬件系统的操作,软件系统设计的成功与否直接影响着系统性能的优劣,本软件系统的程序设计实施模块化,将程序分为若干模块。分别是初始化模块、中断模块、键盘模块、显示模块、A/D转换模块和报警模块。初始化主要是完成开中断,清标志位的任务,接着系统就开始启动A/D检测信号,延时等待AD转换完成,接着通过I/O扩展芯片8555A将AD转换的结果读到单片机中,在单片机中对AD转换的数据进行处理,判断此刻系统的水位状态,从而执行不同水位状态相对应的报警程序,并将此时的水位显示在数码管上。按键设置是

43、通过响应中断来实现的,在不对参数设置时,不会执行键盘扫描程序。通过以上设置,系统就能按要求对锅炉液位进行控制了。图21是系统的程序流程图。开始开始初始化启动A/D延时等待转换完成读取A/D转换数据数据处理报警显示图21 主程序流程图3.1.2 软件程序主函数软件系统程序主函数C语言程序如下:void main() /程序主函数initial(); /调用初始化子函数while(1); /大循环write_ad(); /调用启动A/D子函数delay(100); /等待AD转换完成AD_8255to89c51(); /将AD转换结果从8255传到单片机handle(); /调用数据处理子函数al

44、arm(); /调用报警子函数display(uint num); /调用显示子函数3.2 软件各模块程序设计3.2.1 初始化模块(1)初始化流程初始化是程序编程的第一步,初始化的目的就是把所有用到的标志位、变量回到所要设定的初始值,以及完成引脚分配的工作,并为配置寄存器写入需要的值7。系统开始后首先要进行初始化,初始化主要是完成开中断,清标志位的任务,本设计采用的中断是INT0中断、INT1中断和定时器T0中断,并将初始值送入到寄存器中。初始化程序流程图如图22所示。初始化初始化开始寄存器赋初始值开中断INT0、INT1、T0图22 初始化程序流程图(2)初始化C语言程序初始化模块具体C语

45、言程序如下:void initial() HWLA=524 /最高工作水位P_STOP WL=404 /供水泵停止水位P_START WL=244 /供水泵启动水位LWLA=124 /最低工作水位BOC=74 /最低危险水位flag=0; /系统水位状态标志位flag_key=0; /外部中断INT0标志位EA=1; /开总中断EX0=1; /开INTO中断EX1=1; /开INT1中断ET0=1; /开T0中断TMOD=0 x01; /设定T0为工作方式1,M1M0=01TH0=(65536-50000)/256; /为T0赋初值TL0=(65536-50000)%256;IT0=1; /I

46、NTO为边沿触发方式IT1=1; /INT1为边沿触发方式TR0=0; /禁止启动T03.2.2 AD转换模块(1) AD转换流程启动A/D转换,延时一段时间以等待转换完成,再读取转换结果,将结果经过8255A读取到单片机中,在单片机中对数据进行处理。A/D转换模块的程序流程图如图23所示。开始开始启动AD转换软件延时启动8255A读取转换结果存储数据图23 AD转换程序流程图(2)AD转换C语言程序AD转换模块具体C语言程序如下:sbit wr=P36; /AD写端口sbit rd=P37; /AD读端口sbit ad_cs=P21; /AD片选端void write_ad() /启动A/D

47、转换子函数ad_cs=0; /将AD0804的CS拉低wr=0; delay(1);wr=1;ad_cs=1; /将AD0804的CS置高sbit io8255_cs=P22; /8255片选端sbit io8255_a0=P23; /8255A0引脚sbit io8255_a1=P24; /8255A1引脚uint adnum; /存储AD的转换结果void AD_8255to89c51() /将AD转换结果从8255传到单片机io8255_cs=0; /将8255A选通CS=0,A1A0=11wr=0; /写控制字P0=0 x90; /将A口设置为工作方式0rd=0;P2=0 xe4; /

48、读A口delay(5);adnum=P0; /将AD结果存储在adnum中void delay (uchar x)/延时程序uchar a,b;for(a=x;a0;a-)for(b=110;b0;b-);3.2.3 数据处理模块(1)数据处理流程首先,由电容式传感器对水位进行采样输出模拟信号,再经A/D 转换变成相应的数字信号,送入80C51 单片机进行数据处理。单片机经运算后,把当前测得的液位值num与设定的液位值依次进行比较:若numHWL,则表示达至最高工作液位,系统水位状态标志位flag=1,启动报警器报警;若numP_STOP WL,则表示达至供水泵停止液位,系统水位状态标志位fl

49、ag=2,供水泵停止,水泵工作指示灯不亮;若P_START WLnumP_STOP WL,则表示正常液位,系统水位状态标志位flag=3,水位正常指示灯亮, 呈绿色;若BOC numP_STOP WLflag=1flag=2P_START WL numP_STOP WLflag=3BOC=HWL)flag=1;if(HWLnum=P_STOP WL)flag=2;if(P_START WL numP_STOP WL)flag=3;if(BOCnum=P_START WL)flag=4;else if(num=LWL)flag=5;if(num=1200)count=0;flag_key=2;

50、/如果按键设置超过一分钟,则标志位flag_key置2P1=0 xff;temp=P1;if(temp!=0 xff)delay(5); /延时消抖(下降沿)if(temp!=0 xff)while(temp=0 xff); delay(10); /延时消抖(上升沿) while(temp=0 xff); switch(temp)case 0 xfe: change=1;show= HWL; display(show);break;case 0 xfd:change =2;show= P_STOP WL ;display(show);break;case 0 xfb: change =3;sh

51、ow= P_START WL;display(show);break;case 0 xf7:change =4;show= LWL ;display(show);break;case 0 xef:change =5;show= BOC;display(show);break;case 0 xdf:show+;display(show);switch(change)case 1:HWL=show;break;case 2: P_STOP WL =show;break;case 3: P_START WL =show;break;case 4: LWL =show;break;case 5: BO

52、C =show;break;break;case 0 xbf:show-;display(show);switch(change)case 1:HWL=show;break;case 2: P_STOP WL =show;break;case 3:P_START WL =show;break;case 4: LWL =show;break;case 5: BOC =show;break;break;3.2.7 中断模块(1)中断程序流程本模块涉及到的中断有外部中断INT0和定时器中断T0,INT0在ENTER/EXIT键按下时被触发,INT0被出发后立即关中断INT0,以防止受到再次出发外部中

53、断INT0的干扰,标志位flag_key加1,判断标志位flag_key的值,如果flag_key=1,说明是要进入按键设置,此时开定时器中断T0,调用按键程序,要求在一分钟之内进行完参数手动设置,否则标志位flag_key加1,当ENTER/EXIT键再次被按下时,标志位flag_key同样加1,执行完按键程序后,再次判断标志位flag_key的值,如果flag_key=1,说明仍然是要进入按键设置,如果flag_key=2,则说明是要退出按键设置,导致退出按键设置的原因有两个:一是按下ENTER/EXIT键执行EXIT功能,而是在一分钟之内未完成按键设置,系统强制退出按键设置。退出时开中断

54、T0,开中断INT0。中断模块程序流程图如图28所示:NONONOYESYESENTER/EXIT键按下关中断INT0进入外部中断INT0flag_key=1调用按键程序flag_key=2开中断INT0退出中断INT0图28 中断模块程序流程图开中断T0开中断T0flag_key加1(2)中断C语言程序具体的中断C语言程序如下:uint count;void timer0() /定时器T0中断TH0=0 xec;TL0=0 x78; /5ms定时count+; void int0() interrupt 0 /外部中断INT0EX=0; /关外部中断0flag_key+;while(1)if

55、(flag_key=1) /外部中断标志为1则执行按键程序TR0=1; /开定时器T0key();if(flag_key=2) /外部中断标志位2则退出循环TR0=0; /关定时器中断T0flag_key=0;break;EX0=1; /开INT0中断4 系统功能改进与扩展4.1 显示模块改进原设计中的水位显示应用的是三位数码管,在进行按键设置时,未能反映出当前显示的水位为何种水位参数,很容易造成误操作。因此,仅仅显示数字是不够的,只有数字和文字相结合才能更有效地、更准确地传达信息。所以液晶显示器(LCD)是比数码管更优的人机交互设备选择。4.1.1 LCD1602液晶显示各种型号的液晶通常是

56、按照显示字符的行数或液晶点阵的行列数来命名的。比如:1602的意思是每行显示16个字符,一共可以显示两行;类似的命名还有0801,0802,1601等,这类液晶通常都是字符型液晶,即只能显示ASC码字符,如数字、大小写字母、各种符号等。12232液晶属于图形型液晶,由122行、32列组成,即共有122x32个点来显示各种图形,我们可以通过程序控制122x32个点中的任一个点显示或不显示。类似的命名还有12864,19264,192128,320240等,根据客户需要,厂家可以设计出任意数组合的点阵液晶。经比较,1602已经能满足本系统的要求,所以选择1602来代替数码管进行显示。本系统采用的是

57、长沙太阳人电子有限公司生产的LCD1602字符型液晶显示器,实物如图29所示:图29 LCD1602字符型液晶显示器经改进后的显示模块原理图如图30所示,LCD1602的引脚1为电源地;引脚2为电源正;第3引脚为液晶显示器对比度调整端,接正电源时对比度最低,接地时对比度最高,通过接一个10K的电位器调整对比度;第4引脚RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器,与8255A的PB0引脚相连;第5引脚R/W为读写选择,高电平时进行读操作,低电平时进行写操作,由于本模块只用到了写操作,所以此引脚与地相连;第6引脚E为使能端,当其由高电平跳变为低电平时,执行命令,此引脚与825

58、5A的PB1引脚相连;D0D7为数据线,与8255A的PC口相连。图30 液晶显示模块原理图4.1.2 液晶显示程序设计换用液晶显示后,不但要对显示程序进行设计,而且要对主函数、键盘程序等进行修改,次处为了更简洁明了的说明液晶显示程序,只对液晶显示程序和键盘程序进行了设计和修改。显示模块的程序流程图如图31所示:调用显示函数调用显示函数把要显示的int型数字转换成char型并拆分为百、十、个三位数字启动8255A(写B、C口)写指令显示图31 显示模块程序流程图LCD1602初始化写数据显示模块具体C语言程序如下:char code table10= ; /要显示的参数名放在数组table中c

59、har code table13= ; /要显示的数据放在数组table1中char code table22= ; /要显示的数据单位mm放在数组table2中void display() /液晶显示函数uchar l,m,n;lcd_init(); /*液晶初始化(应在主函数中进行液晶初始化,次处仅针对液晶显示函数)*/lcd_writecom(0 x80+0 x04); /显示地址设为80H(00H),即上排第一位for(m=0;m10;m+) /将table中的数据依次写入LCD1602显示lcd_writedat(tablem);delay(10);lcd_writecom(0 x8

60、0+0 x40); /重新设定显示地址为0 xc4,即下排第1位for(l=0;l3;l+)lcd_writedat(table1n);delay(10);for(n=0;n=1200)count=0;flag_key=2; /如果按键设置超过一分钟,则标志位flag_key置2P1=0 xff;temp=P1;if(temp!=0 xff)delay(5); /延时消抖(下降沿)if(temp!=0 xff)while(temp=0 xff); delay(10); /延时消抖(上升沿) while(temp=0 xff);switch(temp)case 0 xfe: change=1;s

温馨提示

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

评论

0/150

提交评论