当前位置:文档之家› 基于c51单片机的船舶辅锅炉水位自动控制系统设计

基于c51单片机的船舶辅锅炉水位自动控制系统设计

基于c51单片机的船舶辅锅炉水位自动控制系统设计
基于c51单片机的船舶辅锅炉水位自动控制系统设计

摘要

锅炉水位是锅炉运行时重要的参数,水位过低可能会发生锅炉干烧现象,导致锅炉烧坏。水位过高会导致蒸汽带水过多,蒸汽品质下降,会引起设备腐蚀、水击,烧坏过热器管子。

本文在“育鲲”轮辅锅炉现有设备的基础上,设计了一套简易的锅炉水位自动控制系统,由于育鲲轮通常是在航行时使用废气锅炉,停泊时使用燃油锅炉,对水位的控制不需要很精确,所以本系统对燃油锅炉水位采用单冲量控制。系统由硬件系统和软件系统两部分组成。硬件系统和软件系统都采用模块化设计,将系统分为若干模块进行初步设计,然后将各个模块进行整合,经过改进最终形成一个完善的控制系统。用仿真软件Proteus和编程软件Keil 相结合,完成系统硬件设计和软件编程,程序由C语言编写。硬件系统以STC89C52单片机为核心,包括模拟量采集输入模块、单片机最小单元模块、报警模块、键盘模块、显示模块及端口扩展模块。软件系统包括初始化模块、中断模块、数据处理模块、键盘模块、显示模块、A/D转换模块和报警模块。通过硬件系统和软件系统相结合,实现具有液位检测和控制的双重功能,同时也具有报警和显示的功能,并能通过键盘对参数值进行手动设定。最后,提出了显示模块的合理改进方案,并且在育鲲轮现有的通信网络基础上设计了通信模块,使系统功能更加完善。

关键词:锅炉液位,单片机,单冲量控制,模块化

ABSTRACT

Water 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 become worse. What’s 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 boiler’s water level based on existing equipments of the “YU KUN”vessel. Generally, exhaust gas boiler is 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 all 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. Programs 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 modularization. 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 the water level. Also, the system has functions of displaying and alarming. What’s 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 communications network that “YU KUN” vessel is applying in order to make the system more complete. Keywords: Boiler, Water level, Microcontroller, Single pulse control, Modularization

目录

1 前言 (1)

1.1课题意义 (1)

1.2发展状况 (1)

2 硬件系统设计 (2)

2.1 系统总体设计 (2)

2.1.1 系统功能 (2)

2.1.2 硬件系统示意图 (2)

2.2 各硬件模块设计 (3)

2.2.1 模拟量采集输入模块 (3)

2.2.2 单片机最小单元模块 (5)

2.2.3 I/O端口扩展模块 (7)

2.2.4 键盘模块 (9)

2.2.5 显示模块 (11)

2.2.6 报警模块 (12)

2.3 硬件系统总原理图 (13)

3 软件系统设计 (14)

3.1 软件系统总体设计 (14)

3.1.1 软件程序流程 (14)

3.1.2 软件程序主函数 (15)

3.2 软件各模块程序设计 (15)

3.2.1 初始化模块 (15)

3.2.2 AD转换模块 (16)

3.2.3 数据处理模块 (17)

3.2.4 显示模块 (20)

3.2.5 报警模块 (23)

3.2.6 键盘模块 (25)

3.2.7 中断模块 (28)

4 系统功能改进与扩展 (30)

4.1 显示模块改进 (30)

4.1.1 LCD1602液晶显示 (30)

4.1.2 液晶显示程序设计 (31)

4.2通信功能扩展 (36)

4.2.1 RS-485通信 (36)

4.2.2通信模块设计 (36)

5总结 (37)

参考文献 (39)

致谢 (39)

1 前言

1.1课题意义

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

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

本设计以锅炉液位的自动控制为例,实现了以单片机为核心的自动控制系统,克服了传统控制锅炉液位的缺陷,突显了单片机控制系统的优势。

1.2发展状况

锅炉作为能源转换和消耗的设备已有两百多年的历史了,处于历史的原因,我国锅炉自动控制的水平一直都较低,锅炉微机控制是近几年是近年来开发的新技术,它是微型计算机软件、硬件、自动控制、锅炉节能等几项技术密结合的产物。工业锅炉采用微机控制和原有控制方式相比具有明显优势,能够直观而集中的显示锅炉各运行参数,显示液位压力温度的状态。而作为锅炉控制装置,其主要任务是保证锅炉的安全、稳定、济运行,减轻操作人员的劳动强度。在采用计算机控制的锅炉控制系统中,有十分周到的安全机制,能够杜绝由于人为疏忽造成的重大事故。锅炉工业的迅猛发展是近几年的事情,国外的锅炉工业50年代发展最快,70年代达到高峰。一直以来,用单片机实现锅炉的控制是控制领域的一个典型的问题,伴随着控制理论和技术的法发展,锅炉自动化控制水平也在逐渐提高,锅炉的自动

控制,经历了30年代的单参数仪表控制,40年代的组成仪表复合参数仪表控制,以及60年代兴起的计算机过程控制几个阶段。而用单片机实现锅炉的控制,也是近几年才发展起来的,是一个逐渐深入的过程,虽然与其他发达国家相比还存在差距,但是在此方面的进步却是很大的[13]。现在船舶上应用最多的锅炉自动控制系统基本由国外公司所垄断,国内公司自主开发的锅炉自动控制系统存在许多的缺陷,可靠性不高,包括制造工艺和技术等各方面的问题。导致船舶锅炉控制的市场份额基本被国外公司所占据,因此设计具有自主知识产权的高可靠性的船舶锅炉自动控制系统是很有必要的。

2 硬件系统设计

2.1 系统总体设计

2.1.1 系统功能

本系统采用单冲量的控制方法来完成对燃油锅炉水位的控制,确保锅炉运行的安全性。本系统能够完成以下功能:

a)能够显示锅炉当前水位值;

b)当水位高于最高水位和低于最低水位时能够发出报警,并能够自动控制供水泵的启停和燃烧器供油的紧急切断;

c)能够通过键盘对最高/低水位、供水泵启停水位和燃烧器供油切断水位进行人工调节。

本系统以STC89C52单片机为核心,包括模拟量采集输入模块、单片机最小单元模块、端口扩展模块、报警模块、按键及显示模块、数字量输出模块。模拟量采集输入模块包括液位传感器、A/D转换器,将模拟量转换成数字量,再将数据传给单片机进行处理。单片机单元模块即单片机最小单元,使单片机能正常工作。串口扩展模块通过端口扩展芯片8255A 完成人机交互的一些功能。按键及显示模块由独立式按键键盘和3位数码管及相应的驱动电路组成。报警模块将单片机的控制数据通过驱动芯片控制相应发光二极管、继电器和报警器的工作,实现对燃油锅炉各种工作状态的监视报警。

2.1.2 硬件系统示意图

硬件系统是由多个子模块连接而成的,以STC89C52单片机为核心,包括模拟量采集输入模块、单片机最小单元模块、报警模块、键盘模块、显示模块及端口扩展模块。硬件系统示意图如图1所示:

2.2 各硬件模块设计

2.2.1 模拟量采集输入模块

本模块采用NRGT26-1S 型水位监测单元来采集炉内水位,输出的电流模拟信号经电流—电压转换电路转换成电压信号,模数转换器(ADC0804)将采集到的电压信号转换为数字信号,然后把数字信号经过8255A 扩展芯片送入单片机进行处理。此模块原理图如图2所示

图2 模拟量采集输入模块原理图

(1)水位监测单元

NRGT26-1S型水位监测单元,根据电容测量原理,可以监测导电性和绝缘的液体液位差。在电极盒内有一个液位变送器,可以产生4-20mA的输出电流,不需要额外的转换设备,特别适合持续监测和远程指示液位。最大工作压力/温度:2bar/238°C。水位检测单元接线图[17]和外形示意图[17]如图3、4所示:

图3 水位监测单元接线图图4 水位监测单元示意图

(2)电流—电压转换电路

水位监测单元产生的是4-20mA的标准电流,要对模拟量信号在ADC中进行AD转换就要将电流信号转换成电压信号。

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

图5 电流-电压转换电路

输入电流直接接入运放的求和点(反相输入端),运放输出端将通过R1向求和点提供同样大小的电流以达到平衡,电路的增益由R1决定,Uout=IinR 。该电路唯一的误差来源于偏置电流,偏置电流作为误差与输入电流进行了代数叠加。

(3)A/D 转换器

A/D 转换器的作用是将模拟量信号转换成数字量信号。不同的A /D 转换方式具有各自的特点,在要求转换速度高的场合,选用并行A /D 转换器;在要求精度高的情况下,可采用双积分型A /D 转换器,也可以选择分辨率更高的其他形式的转换器,但成本会增加。而逐次比较性A /D 转换器在一定程度上兼有以上两种转换器的优点,应用较多,ADC0804就是此类单片集成A /D 转换器。

ADC0804采用CMOS 工艺20引脚集成芯片,分辨率为8位,转换时间为100us ,输入电压范围是0~5V ,由一个8位A /D 转换器、一个8路模拟量开关、8路模拟量地址锁存/译码器和一个三态数据输出锁存器组成。在A /D 转换器内部含有一个高阻抗斩波稳定比较器,一个带有模拟开关树组的256电阻分压器,以及一个逐次逼近型寄存器。8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个通道的模拟信号。由于多路开关的地址输入部分能够进行锁存和译码,而且三态TTL 输出也可以锁存,所以它易于与微型计算机接口。内部结构原理图[15]如图6所示,引脚图如图7所示;

图6 内部结构原理图 图7 引脚图

2.2.2 单片机最小单元模块

单片机最小单元是保证单片机能正常的最基本的电路,本文采用STC89C52芯片为核心芯片,采用内部时钟电路和上电复位电路。本模块原理图如图8所示

V V REF OE

图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系列单片机内部已具有振荡电路,只要在18脚(XTAL2)和19脚(XTAL1)上连接简单的晶体振荡器即可,典型的晶体振荡器频率可以选11.0592MHz,它可以准确地得到9600波特率和19200波特率,另一个典型的晶体振荡器频率为12MHz,可以产生精确地微秒级延时,方便定时场合。本系统采用的是12MHz的晶体振荡器。晶体振荡器实物如图11所示:

图11 晶体振荡器实物图

单片机的复位引脚是第9脚(RST),当次引脚连接高电平超过两个机器周期,即可产生复位的动作。为了保证应用系统可靠地复位,在设计复位电路时通常使RST引脚保持10ms 以上的高电平。复位电路有上电复位和手动复位两种,还可以采用上电和按钮复合复位,本系统采用上电复位的形式。

2.2.3 I/O端口扩展模块

单片机本身的I/O口是很有限的,当所要连接的外设较多时,就要扩展I/O接口。扩展并行I/O口所用的芯片有可编程芯片(如8255、8155等)、通过TTL、CMOS锁存器和缓冲器(如74LS373、74LS573、74LS244等)。本模块选择的并行I/O口扩展芯片为可编程并行接口芯片8255A和TTL锁存器和缓冲器74HC573。

(1)可编程并行接口芯片8255A

8255A是Intel公司生产的通用可编程并行I/O接口芯片,允许采用同步异步和中断方式传送I/O数据。8255A内部由四部分电路组成。它们是A口、B口和C口,A组控制器和B 组控制器,数据缓冲器及读写控制逻辑,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所示:

(2)锁存器和缓冲器74HC573

74HC573是八进制高电流三态同步输出锁存器,器件的输入是和标准的CMOS输出兼容的,当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步),当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出能直接接到CMOS,NMOS和TTL接口上;操作电压范围:2.0V~6.0V;低输入电流:1.0uA;CMOS器件的高噪音抵抗特性。74HC573引脚图[18]如图15所示,真值表如表1所示:

图15 74HC573引脚图

表1:4HC573真值表

输入

2.2.4 键盘模块

键盘模块主要完成对参数手动设置的功能。

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

图16 矩阵键盘设计原理图

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

所示:

图17 键盘模块原理图

2.2.5 显示模块

显示模块的功能是对当前锅炉液位进行显示,在进行参数手动设置时对调节参数进行显示。

液位显示初期设计采用数码管动态显示,范围从0~999,选择的数码管是7段共阴极连接,型号是MPX3-CA。在这里使用到了74LS573,它是一个8位的D触发器,在单片机系统中经常使用,可以作地址数据总线扩展的锁存器,也可以作为普通的LED的驱动器件。

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示[10]。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

显示模块原理图如图18所示:U7(74HC573)为数码管位选数据锁存器,Q0、Q1、Q2分别接三个数码管的位选端。U8(74HC573)为数码管段选数据锁存器,Q0~Q7分别接数码管的段选端。8255A的C口的PC0接位选锁存器的输入使能端,PC1接段选锁存器的输入使能端。

B口用于输出数码管的位选段选数据。

图18 显示模块原理图

2.2.6 报警模块

报警模块的功能是对单片机的控制命令和报警命令进行输出。声光报警功能由发光二极管和喇叭完成,继电器则用于将单片机的控制命令进行输出,控制外部设备动作。报警模块原理图如图19所示,各器件功能如表3所示:

LED(发光二极管),体积小,耗电量低,常作为微计算机与数字电路的输出设备,用于指示信号状态。具有二极管单向导通的特性,施加反向电压时LED不亮,而施加正向电压时,LED将发光。随着通过LED正向电流的增加,LED将更亮,LED的寿命也将缩短,因此电流以5~15mA为宜。51系列的单片机的I/O口都是漏极开路的输出,其中P1、P2与P3内有30 kΩ的上拉电阻,因此想让I/O口提供10~20mA的电流驱动LED发光比较困难。所以扩展一片ULN2803作为驱动。

继电器是当输入量达到规定值时,是被控制的输出电路导通或断开的电器,实际上是用较小的电流去控制较大电流的一种“自动开关”。

本系统中采用的是直流电磁机械继电器,尽管机械继电器的开关响应时间较长,但是已经能够满足本系统对控制响应时间的要求。而且,机械继电器最大的优点是其开关状态时理

想的[6]。电阻R10、R11、R12用于调整继电器的驱动电流,二极管D11、D12、D13用于在继电器关断时为线圈提供感生电流的放电电路。

图19 报警模块原理图

2.3 硬件系统总原理图

以上是对硬件系统以模块的形式进行的初步设计,只有将各个模块进行整合,经过改进最终才能形成一个完善的控制系统。本部分就是将模拟量采集输入模块、单片机最小单元模块、报警模块、键盘模块、显示模块及端口扩展模块进行了整合,形成了一个完整的硬件系统,以在软件设计部分进行编程。

图20 硬件系统总原理图

3 软件系统设计

3.1 软件系统总体设计

3.1.1 软件程序流程

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

3.1.2 软件程序主函数

软件系统程序主函数C语言程序如下:

void main() //程序主函数

{

initial(); //调用初始化子函数

while(1); //大循环

{

write_ad(); //调用启动A/D子函数

delay(100); //等待AD转换完成

AD_8255to89c51(); //将AD转换结果从8255传到单片机

handle(); //调用数据处理子函数

alarm(); //调用报警子函数

display(uint num); //调用显示子函数

}

}

3.2 软件各模块程序设计

3.2.1 初始化模块

(1)初始化流程

初始化是程序编程的第一步,初始化的目的就是把所有用到的标志位、变量回到所要设定的初始值,以及完成引脚分配的工作,并为配置寄存器写入需要的值[7]。系统开始后首先要进行初始化,初始化主要是完成开中断,清标志位的任务,本设计采用的中断是INT0中断、INT1中断和定时器T0中断,并将初始值送入到寄存器中。初始化程序流程图如图22所示。

初始化模块具体C语言程序如下:

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=0x01; //设定T0为工作方式1,M1M0=01

TH0=(65536-50000)/256; //为T0赋初值

TL0=(65536-50000)%256;

IT0=1; //INTO为边沿触发方式

IT1=1; //INT1为边沿触发方式

TR0=0; //禁止启动T0

}

3.2.2 AD转换模块

(1) AD转换流程

启动A/D转换,延时一段时间以等待转换完成,再读取转换结果,将结果经过8255A 读取到单片机中,在单片机中对数据进行处理。A/D转换模块的程序流程图如图23所示。

AD转换模块具体C语言程序如下:

sbit wr=P3^6; //AD写端口

sbit rd=P3^7; //AD读端口

sbit ad_cs=P2^1; //AD片选端

void write_ad() //启动A/D转换子函数

{

ad_cs=0; //将AD0804的CS拉低

wr=0;

delay(1);

wr=1;

ad_cs=1; //将AD0804的CS置高

}

sbit io8255_cs=P2^2; //8255片选端

sbit io8255_a0=P2^3; //8255A0引脚

sbit io8255_a1=P2^4; //8255A1引脚

uint adnum; //存储AD的转换结果

void AD_8255to89c51() //将AD转换结果从8255传到单片机

{

io8255_cs=0; //将8255A选通CS=0,A1A0=11

wr=0; //写控制字

P0=0x90; //将A口设置为工作方式0

rd=0;

P2=0xe4; //读A口

delay(5);

adnum=P0; //将AD结果存储在adnum中

}

void delay (uchar x)//延时程序

{

uchar a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

3.2.3 数据处理模块

(1)数据处理流程

首先,由电容式传感器对水位进行采样输出模拟信号,再经A/D 转换变成相应的数字信号,送入80C51 单片机进行数据处理。单片机经运算后,把当前测得的液位值num与设

相关主题
文本预览
相关文档 最新文档