储罐液位控制系统程序
模块一液位串级控制方案

某水库采用了液位串级控制方案,通过合理配置和控制水泵、闸门等设备,实现了对水库液位的精确控制。该方 案有效保障了供水安全和稳定,提高了水资源利用率,为当地经济发展提供了有力支持。
感谢您的观看
THANKS
能耗较高。
维护成本高
03
由于液位串级控制系统的复杂性,维护和调试成本相对较高。
安全性问题
泄漏风险
液位串级控制涉及多个储罐和管道,存在一定的泄漏风险, 需要采取安全措施以降低泄漏事故发生的可能性。
01
压力安全
在液位控制过程中,储罐内的压力可能 会发生变化,需要采取措施确保压力在 安全范围内。
02
03
保障安全
对液位进行实时监控和调节,可 以防止因液位过高或过低引起的 溢流、空罐等安全问题。
节约资源
精确的液位控制有助于减少不必 要的液体浪费,节约资源,降低 生产成本。
液位串级控制方案的历史与发展
历史回顾
液位串级控制方案的发展可追溯至上世纪末,随着工业自动化技术的不断进步,该方案 逐渐得到广泛应用。
精确度高
液位串级控制方案采用多级控制,能够显著提高液位控制的精确度, 减少误差。
适用范围广
该方案可应用于各种液体容器的液位控制,如水箱、油罐等,具有广 泛的适用性。
灵活性高
液位串级控制方案可根据实际需求调整各级控制器的参数,实现灵活 的控制效果。
液位串级控制方案的重要性
提高生产效率
精确的液位控制能够确保生产过 程中的稳定性和连续性,从而提 高生产效率。
技术革新
近年来,随着智能传感器、物联网等技术的快速发展,液位串级控制方案在精度、稳定 性和智能化方面得到了进一步优化和提升。
未来展望
罗斯蒙特储罐计量系统说明书

Rosemount™储罐计量系统一切挑战,尽在掌控散装液体存储解决方案目录艾默生帮您应对当下和未来的各种挑战为推动业务绩效,制造商面临规模不断增长的生产力和资源优化的需求。
通过罗斯蒙特储罐计量系统,您可以一直满足效率、安全、精度、可靠性和数据安全性需求。
您将获得精确的净体积库存计算,符合当前和未来最新的防溢罐保护标准。
无论您面临什么样的储罐计量库存测量挑战,我们的解决方案可帮助取得业务优质绩效:• 确保高效运营• 提升安全水平• 确保精确测量系统特性 4–7雷达液位测量 8-10温度测量 11库存管理软件与功能 12-13安全性:防溢罐、证明试验、浮顶监测14-18升级/扩展项目:模拟和无线通讯 19-23液化气全容储罐完整存储解决方案 24-25雷达储罐计量发明者的解决方案26-27运营数据,着手可得。
效率安全精度可扩展性实时访问精确数据促进工厂运营效率防溢罐保护解决方案满足 API 2350 和 IEC 61511 要求可靠的净体积计算,基于 API和 ISO 标准开放通讯标准使设备添加与更换更方便让您的罐区运营尽在掌控之中储罐计量的精度、可靠性和安全性根据 API 行业标准组织所规定,储罐计量系统应能够提供高精度的净体积和质量库存计算。
OIML 标准 R 85:2008 定义了贸易交接应用储罐液位计的最高精度要求。
损耗控制和质量平衡还要求高精度的库存测量。
此外,储罐计量装置为罐区提供基本的过程控制层。
独立的高液位指示器或液位开关则形成另一层保护。
这两个保护层中如果有未检测到的故障,可能会导致灾难性事故发生。
请相信,艾默生提供的可扩展的储罐计量系统解决方案可以满足此需求。
控制库存并准确了解储罐中产品存储量。
库存控制是一种关键的管理工具,涉及大型资产。
精确测量船只、口岸和管道输送系统之间的批次和贸易交接量。
石油动向和运营功能用于日常运作、调度和混合方案。
追踪泄漏并防止溢出,从而降低由于油品损耗造成的环境影响和财务损失。
实训报告2 储罐工艺操作&液位控制

工程项目1 简单控制系统的分析与设计03子项目2 储罐工艺操作与液位控制班级12电气自动化3 姓名项目日期2012一、项目目标1、初步了解液位和流量的动态响应特性2、了解单回路控制系统的组态、投运过程3、了解自衡过程与非自衡过程动态特性以及原因4、初步掌握质量平衡的概念二、项目设备SMPT—1000三、项目方案(一)非线性液位与离心泵系统工艺流程a)非线性液位来自于卧式储罐V1101,圆形卧式储罐液位变化为非线性,当液位处于50%时,储罐水平截面积最大,惯性也最大。
当液位从50%向高或低端变化时,储罐水平截面积越来越小,惯性也变小。
由于储罐出口设有离心泵,强制排水,因此储罐液位是非自衡系统。
储罐液位为LI1101。
b)工艺流程图,定义了从原料到产品的过程,用框架加箭头的方法交代各个单元,用文字标明各个步骤的生产原料和产物,用数字和字母标识设备。
c)工艺流程图中的设备、仪表、执行机构等均具有用数字和字母表示的唯一性标识,称为号。
控制流程图(二)储罐工艺操作a)在没有打开任何工程的前提下,在SMPT-1000监控环境中打开储罐工程Tank for Control。
b)点击工具栏中的按钮,打开阀门/挡板控制配置对话框,确认阀门FV1106设置为手操状态,阀门FV1101设置为内控。
①在趋势画面中添加FI1106、FV1106和LI1101的实时曲线。
②选择趋势画面1窗口,在窗口中央空白处,鼠标右键单击。
在弹出的菜单中选择【属性】项,将弹出趋势画面属性对话框,选择曲线选项卡。
e)点击【添加】按钮,在曲线属性对话框中选择位号FI1106,该位号将自动添加到显示标题栏中,可以修改显示标题。
按【确定】返回上一对话框。
f)添加FV1106和LI1101曲线。
g)选中LI1101标签,点击【定义颜色】按钮,将LI1101显示曲线的颜色改为黑色。
按【确定】返回上一对话框。
在属性对话框中,还可以对现有的曲线属性进行修改、删除、隐藏和显示。
纯化水系统标准操作规程

纯化水系统标准操作规程【目的】规范和指导本车间纯化水系统的日常运行和操作,以保证纯化水系统的正常运行。
【范围】适用于本车间纯化水系统的日常运行及操作,记录及报警故障处理。
【职责】1纯化水系统使用人员负责机器的日常操作。
2维修人员负责机器的故障处理。
3车间管理人员和现场监控QA负责检查本规程的执行。
【内容】1说明1.1系统概述原水箱中的饮用水,经原水泵进入石英砂过滤器、活性炭过滤器、加药装置进行预处理;然后经保安过滤器进入一级RO,制备出的中间水进入中间水储罐;接着再进入二级反渗透,制备出纯化水;纯化水经纯化水分配系统后,供给各使用点。
1.2设备流程板式换热器饮用水石英砂阻垢剂活性炭过滤器5um精密过滤器二级反渗透中间水罐一级反渗透纯化水罐纯化水分配系统使用点双管换热器第1页共5页1.3通用操作1.3.1操作人员经培训合格才能操作该设备;1.3.2定期进行反冲洗,保持管路畅通;1.3.3纯化水泵禁止干运转,防止机械密封损坏;1.3.4RO膜严禁缺水,在停产时每日要开机运行1-2小时;1.3.5RO严禁超压运行,RO的出口阀门要保证一定的开启度;1.3.6每次工作完毕后,应保持反渗透膜湿润;1.3.7冬季注意保暖,机组的室内温度不得<4℃;1.3.8制水过程操作人员不得长时间离开机组。
密切注意出水质量和供水情况。
1.4系统访问1.4.1系统访问级别设置为操作员、工艺员、管理员3个级别。
1.4.2管理员在工厂预先设置好操作程序。
1.4.3系统状态1.4.3.1模式选择:分为自动、手动两种运行模式。
手动模式只有在调试和处理故障时才允许使用。
1.4.3.2报警确认:所有警报在PLC中产生并储存。
2系统正常运行2.1运行前的检查与准备2.1.1开机前充分冲洗前处理部分,去除杂质和其它污染物以避免污水进入膜元件。
2.1.2打开原水箱的供水阀使原水自动注满原水箱。
2.1.3打开保安过滤器的排气阀直至有原水喷出即关闭。
石油化工罐区自动控制系统和生产管理系统

石油化工罐区自动控制系统和生产管理系统张华莎【摘要】介绍了石油化工储运罐区自动控制系统的基本结构和功能,从工程设计角度讨论了罐区特有的设计内容和设计方法,库存量统计和信息管理是罐区特有的内容,从工程设计上考虑,罐区应配备相应的自动化仪表和储罐数据管理设备以实现罐容计算,提高罐区的控制和管理水平.特别介绍了储罐液位仪表和电动控制阀的通信连接方案及通信设备配置的注意事项,并给出了仪表接线的示例.阐述了罐区生产管理系统的结构、功能、各组成部分间的信号关系,列举了该系统应配备的基本硬件、软件,结合实际的罐区生产作业介绍了各软件的功能,提出了罐区自动控制系统和生产管理系统应遵循配置合理、功能齐全、层次清晰、管控兼顾的设计概念.【期刊名称】《石油化工自动化》【年(卷),期】2016(052)001【总页数】8页(P7-14)【关键词】石油化工罐区;罐区自动控制系统;储罐信号通信单元;电动阀通信单元;储罐数据管理单元;罐区生产管理系统【作者】张华莎【作者单位】中国石化工程建设有限公司,北京100101【正文语种】中文【中图分类】TP273近年来国内新建的石油化工厂储运罐区的自动化水平已经不仅局限于采用仪表测量加分散型控制系统(DCS),有些厂家还配有罐区生产管理系统。
将罐区的自动控制系统、生产管理系统与工厂信息管理系统结合起来,卓有成效地提高了储运系统的整体自动化水平和管理水平,实现了控制和管理的系统集成、数据共享、功能集成。
这是新建工厂储运系统的运行和管理模式,也是老厂改造的方向。
储运罐区在自控工程设计之初就应对将来的自动控制水平、设备和技术的先进程度、生产运行的管理层次和模式等多方面充分考虑,明确定位。
本文针对工程设计的范畴,重点讨论在设计目标明确定位的基础上,如何合理配置自动化测量仪表,建立适用的测量基础,配备以DCS为核心的过程控制系统,在此基础上实施罐区生产管理系统的设计方案和设计方法。
十几年前,国内炼油工业储运系统的自动化水平较低,自动测量仪表较少,配备的仪表精度不高,罐区过程控制和生产操作多采用小型控制仪或工业控制机。
串级pid控制液位及出口压力的调节方法

串级PID控制液位及出口压力的调节方法一、概述在工业生产过程中,控制系统是非常重要的一环,它可以对生产过程中的各种参数进行监测和调节,从而保证产品质量和生产效率。
液位和出口压力是一些特定工业生产中需要重点控制的参数,而串级PID控制是一种常见的控制方法,本文将介绍串级PID控制液位及出口压力的调节方法。
二、串级PID控制原理串级PID控制是指在控制系统中同时使用比例、积分和微分控制器来实现对参数的精确控制。
在液位和出口压力控制中,串级PID控制可以通过对系统的反馈信息进行实时监测和调节,从而达到对参数的精确控制。
串级PID控制的基本原理是通过调节不同的参数来实现对系统稳定性和动态响应的优化,从而实现对液位和出口压力的精确控制。
三、串级PID控制液位的调节方法1. 液位传感器的选择和安装在进行液位控制前,首先需要选择合适的液位传感器,并对其进行正确安装。
液位传感器的选择要根据工艺要求和环境条件来确定,安装时要保证其与被控液体之间的接触良好,避免干扰和误差。
2. 液位控制系统的建立建立液位控制系统,包括液位传感器、控制阀以及控制器等组成部分。
通过串级PID控制器对液位进行实时监测和调节,保证系统的稳定性和精确性。
3. 液位控制参数调节根据实际需求和系统特性,对串级PID控制器的比例、积分和微分参数进行调节,以实现对液位的精确控制。
在调节过程中需要进行实时监测和反馈,对参数进行逐步调整直至达到理想的控制效果。
四、串级PID控制出口压力的调节方法1. 出口压力传感器的选择和安装与液位控制类似,出口压力的控制也需要合适的传感器来进行监测。
选择合适的压力传感器,并根据系统要求进行正确的安装和调试。
2. 出口压力控制系统的建立建立出口压力控制系统,包括压力传感器、控制阀以及串级PID控制器等组成部分。
通过串级PID控制器对出口压力进行实时监测和调节,保证系统的稳定性和精确性。
3. 出口压力控制参数调节根据实际需求和系统特性,对串级PID控制器的比例、积分和微分参数进行调节,以实现对出口压力的精确控制。
组态王储油罐液位控制

1绪论随着工业自动化技术的不断发展,人们对系统监测性能的要求越来越高,组态王作为一个开发型的通用工业来监控系统,拥有良好的图形化操作界面,便于生产的组织与管理;同时,作为工业控制软件,它又可以很好的保证系统的可靠性与实时性。
组态王开发监控系统软件是新型的工业自动控制系统正以标准的工业计算机软、硬件平台构成的集成系统取代传统的封闭式系统,它具有适应性强、开放性好、易于扩展、经济、开发周期短等优点。
通常可以把这样的系统划分为控制层、监控层、管理层三个层次结构。
其中监控层对下连接控制层,对上连接管理层,它不但实现对现场的实时监测与控制,且在自动控制系统中完成上传下达、组态开发的重要作用。
尤其考虑三方面问题:画面、数据、动画。
通过对监控系统要求及实现功能的分析,采用组态王对监控系统进行设计。
组态软件也为试验者提供了可视化监控画面,有利于试验者实时现场监控。
而且,它能充分利用Windows 的图形编辑功能,方便地构成监控画面,并以动画方式显示控制设备的状态,具有报警窗口、实时趋势曲线等,可便利的生成各种报表。
它还具有丰富的设备驱动程序和灵活的组态方式、数据链接功能。
2系统需求分析在石油、化工、工矿等企业一般都有油库,这些油库是企业重要的燃料基地,是一个重要的生产环节。
各种油库的建设规模越来越大,造价也越来越高,为了确保油库的安全,必须要对影响油库安全的部分物理参数进行实时的数据采集,实现油库的自动化管理。
能及时掌握油库油罐的液位、温度、压力、油气浓度等状态参数可以大大提高油库的进油,储油和管理的工作效率,极大的提高安全保障,因此有广泛的应用价值。
通过对液位、温度、压力、油气浓度等状态量的实时监测,在智能仪表上实时显示并设置报警值,在越过限值时即可产生声光报警。
此外这些状态值也可以通过互联网传输,有访问权限的管理者可以在任何地方通过浏览器查看油库的安全参数,实现无人职守的远程监测系统。
3 系统方案论证在本设计中,为了实现对液位的控制,我使用了一个原油库,用来储存大量的原油,一个催化剂库用来存储大量的催化剂,它们分别在原料油罐催化剂罐液位少于20的时候进料,成品油罐用来存储成品油。
基于PLC的液位控制系统研究毕业设计(论文)

毕业设计论文基于PLC的液位控制系统研究摘要本文设计了一种基于PLC的储罐液位控制系统。
它以一台S7-200系列的CPU224和一个模拟量扩展模块EM235进行液位检测和电动阀门开度调节。
系统主要实现的功能是恒液位PID控制和高低限报警。
本文的主要研究内容:控制系统方案的选择,系统硬件配置,PID算法介绍,系统建模及仿真和PLC编程实现。
本设计用PLC编程实现对储罐液位的控制,具有接线简单、编程容易,易于修改、维护方便等优点。
关键字:储罐;液位控制;仿真;PLCAbstractThis article is designed based on PLC, tank level control system. It takes a series s7-200 CPU224 and an analog quantities of EM235 expansion module to level detection and electric valve opening regulation.System main function is to achieve constant low level PID control and limiting alarm.The main contents of this paper: the choice of the control system plan, system hardware configuration, PID algorithm introduced, system modeling and simulation, and PLC programming. PLC programming with the design of the tank level control have the advantage of simple wiring, easy programming, easy to modify, easy maintenance and so on.Key word: tank ; level ;control ;simulation ;plc目录摘要 (I)ABSTRACT ........................................................... I I 1 绪论. (1)1.1盐酸储罐恒液位控制任务 (1)1.2本文研究的意义 (2)1.3本文研究的主要内容 (2)2 控制系统方案设计 (3)2.1储罐液位控制的发展及现状 (3)2.2系统功能分析 (3)2.3系统方案设计 (4)3 系统硬件配置 (5)3.1电动控制阀的选择 (5)3.1.1 控制阀的选择原则 (5)3.1.2 ZAJP 精小型电动单座调节阀性能和技术参数介绍 (10)3.2液位测量变送仪表的选择 (13)3.2.1 液位仪表的现状及发展趋势 (13)3.2.2 差压变送器的测量原理 (13)3.2.3 差压式液位变送器的选型原则 (14)3.2.4 DP系列LT型智能液位变送器产品介绍 (15)3.3PLC机型选择 (16)3.3.1 PLC历史及发展现状 (16)3.3.2 PLC机型的选择 (18)3.3.3 S7-200系列CPU224和EM235介绍 (20)4 PID算法原理及指令介绍 (21)4.1PID算法介绍 (22)4.2PID回路指令 (24)5 系统建模及仿真 (28)5.1系统建模 (28)5.2系统仿真 (30)5.2,1 MATLAB语言中Simulink交互式仿真环境简介 (30)5.2.2 系统仿真 (31)第6章系统编程实现 (33)6.1硬件设计 (33)6.1.1 绘制控制接线示意图 (33)6,1.2 I/O资源分配 (33)6.2软件设计 (34)6.2.1 STEP 7 Micro/Win V4.0 SP6编程软件介绍 (34)6.2.2 恒液位PID控制系统的PLC控制流程 (35)6.2.3 编写控制程序 (36)6.2.4 程序清单 (39)结束语 (40)参考文献 (41)致谢 (42)1 绪论1.1 盐酸储罐恒液位控制任务如图1.1所示为某化工厂稀盐酸储罐,该罐为钢衬聚四氟乙烯储罐,罐体高6米,容量为50立方米,重500千克。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
储罐液位控制系统——计算机控制技术课程设计①核心:单片机89s52②片外扩展:8KB RAM存储器6264,I/O口扩展8155③转换器:ADC0809,DAC0832④锁存器等:74HC373,74H377,74HC245和3-8译码器74HC138⑤输入/输出部件:6个LED,4个按键89S52的RD及PSEN用与门接在一起后送入6264的OE端,使得6264既可以作为数据存储器,也可以作为程序存储器。
①液位信号(电压值)从ADC0809的IN0引脚输入,A/D 转换后存储。
②液位给定值由键盘设定,与液位信号比较得出偏差值。
若超限,则报警,LED4现实P,同时以P1.0驱动报警器,以P1.1驱动蜂鸣器。
③按达林算法计算控制器的输出值。
④输出值经D/A 转换得到模拟电压值并输出。
⑤液位信号的电压值经标度转换后,变为液位值存储,送LED 显示。
6个LED显示如图a所示。
LED5显示H或L,LED4为超限指示,LED3~LED0显示液位值,LED1数码管加小数点,显示围为000.0~999.9。
显示器与键盘设置LED5 LED4 LED3 LED2 LED1 LED0H 1 9 9.5⑥键盘设定液位的高低报警限。
采用4键方式,4个按键的功能如图b所示。
显示与键盘循环扫描,无键按下时,LED显示实时液位,右键按下时,进入液位报警限的修改。
先按选择键方可进入修改,先按其他3个键无效。
进入修改状态后,待修改的显示位LED5闪动,按+或-键可循环选择H或L,同时后4位LED显示对应的液位值。
按确认件后调到下一个待修改的显示为LED3并闪动,按+或-键循环修改0~9数字,再按确认键调到下一位置,如此进行,知道4个数字修改完毕后退出修改状态。
在修改状态时,若不按确认键,则8秒后退出修改状态。
从视觉舒适的角度考虑,数字应为每0.4秒闪动一次。
显示器与键盘设计选择+ - 确定①数据采集:A/D转换,采样周期为10s。
②数字滤波:采用5个数平均滤波法。
③标度转换:将液位变送器的标准电压信号转换为液位值。
④动态显示:动态循环显示。
⑤键盘扫描:读键值并判断功能。
⑥控制计算:达林算法。
⑦控制输出:D/A转换。
⑧报警处理:超过高、低报警器限时驱动报警灯及蜂鸣器。
//实现程序//#include <reg52.h>#include <math.h>#define uchar unsigned char#define uint unsigned intuchar xdata *p=0x0000;uchar xdata *p1=0x2000;uint getdata;//采样值uint w=0,jishi8=0;//计数加长计时,时间uint yh,yl,ye;//液位高低限及期望值sbit jingdeng=P1^0;sbit jingsheng=P1^1;uchar code table[]={ //段码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x73,0x38};//19个字符uchar dispbuf[4]={0,0,0,0};float e[2]={0,0},u[6]={0,0,0,0,0,0};float con=0;jingdeng=0;//警灯jingsheng=0;//,蜂鸣器初始化viod main(){void intdingshi();//定时器初始化//键盘扫描及修改设定值//void keyscan();//实时液位显示//void led();//达林算法实现,DAC控制输出//void dalin();void control();//输出控制量//报警程序//void baojing();while(1){//键盘扫描及修改设定值//keyscan();//实时液位显示//led();//达林算法实现,DAC控制输出//dalin();control();//输出控制量//报警程序//baojing();}}viod delay(uchar i) //延时{while(i--)_nop_();}//实现每八秒采样一次//void intdingshi()//定时器初始化{TMOD=0x01;IT0=1;TH0=0x3C;TL0=0xB0;//定时50msTR0=1;//启动定时器EA=1;//开中断ET0=1;}void dingshi() interrupt 1 //定时器0中断,实现八秒定时{TH0=0x3C;TL0=0xB0;//定时50msw++;jishi8++;while(w==200){p=0x8000;//指针ADC地址*p=0x00;//qi dongEX0=1;//打开外部中断0,采样一次w=0;}TR0=1;//启动定时器}void waibu() interrupt 0 //外部中断0,实现ADC采样5次,取平均值{uint i=0,a5=0;p=0x8000;//指针ADC地址P0=*p;getdata=P0;a5=a5+getdata;i++;if(i==5){qy=a5/5;//平均滤波i=0;a5=0;}}//实时液位显示//void led(){dispbuf[3]=qy/100;dispbuf[2]=(qy%100)/10;dispbuf[1]=(qy%100)%10;dispbuf[0]=int((qy-dispbuf[3]*100-dispbuf[2]*10-dispbuf[0])*10); p=0xC000;*p=0xFE;p1=0xE000;*p1=table[dispbuf[0]];delay(5);*p=(*p)<<1;*p1=table[dispbuf[1]];delay(5);*p=(*p)<<1;*p1=table[dispbuf[2]];delay(5);*p=(*p)<<1;*p1=table[dispbuf[3]];delay(5);}//达林算法实现,DAC控制输出//void dalin(){e[0]=qy-ye;//求出输入误差u[0]=0.9355*u[1]+0.0645*u[5]+0.8377*e[0]-0.8054*e[1];con=u[0],//数字控制量输出e[1]=e[0];u[5]=u[4];u[4]=u[3];u[3]=u[2];u[2]=u[1];u[1]=u[0];}void control()//输出控制量{p=0x6000;*p=con;}//键盘扫描及修改设定值//void keyscan(){uint a=16,b=dispbuf[3],c=dispbuf[2],d=dispbuf[1],e=dispbuf[0];//记录各位设定值p=0xA000;P0=*p;if(P0==0xfe)//说明开始修改,键0{void dispplay(a,b,c,d,e);void dispplay(a,b,c,d,e);//延时10msp=0xA000;P0=*p;if(P0==0xfe)p1=0xc000;//字位*p1=0xdf;//led5位选p1=0xe000;//字段disp(18);//初始显示"L"P0=*p;while(P0!=0xf7)//键3{void dispplay(a,b,c,d,e);void dispplay(a,b,c,d,e);//延时10msp=0xA000;P0=*p;//读键盘if(P0==0xfd)//键1{a++;if(a>=18)a=18;}elseif(P0==0xfb)//键2{a--;if(a<=16)a=16;}p1=0xc000;//字位*p1=0xdf;p1=0xe000;//字段disp(a);//初始显示"L"if(jishu8>=160)//超时跳出扫描{jishu8=0;goto keyz; }}key2: P0=*p;while(P0!=0xf7){void dispplay(a,b,c,d,e);//延时10msvoid dispplay(a,b,c,d,e);p=0xA000;P0=*p;if(P0==0xfd){b++;if(b>=9)b=9;}elseif(P0==0xfb){if(b>=1);b--;else b=0;}p1=0xc000;//字位*p1=0xf7;//led3位选p1=0xe000;//字段disp(b);//初始显示"L"if(jishu8>=160){jishu8=0;goto keyz;}}key3: P0=*p;while(P0!=0xf7){void dispplay(a,b,c,d,e);void dispplay(a,b,c,d,e);//延时10msp=0xA000;P0=*p;if(P0==0xfd){c++;if(c>=9)c=9;}elseif(P0==0xfb){if(c>=1);c--;else c=0;}p1=0xc000;//字位*p1=0xfb;//led2位选p1=0xe000;//字段disp(c);//初始显示"L"if(jishu8>=160){jishu8=0;goto keyz;}}key4: P0=*p;while(P0!=0xf7)//键3{void dispplay(a,b,c,d,e);void dispplay(a,b,c,d,e);//延时10msp=0xA000;P0=*p;if(P0==0xfd)//键1{d++;if(d>=9)d=9;}elseif(P0==0xfb)//键2{if(d>=1);d--;else d=0;}p1=0xc000;//字位*p1=0xfd;//led1位选p1=0xe000;//字段disp(d);//初始显示"L"if(jishu8>=160){jishu8=0;goto keyz;}}key5: P0=*p;while(P0!=0xf7){void dispplay(a,b,c,d,e);void dispplay(a,b,c,d,e);//延时10msp=0xA000;P0=*p;if(P0==0xfd){e++;if(e>=9)e=9;}elseif(P0==0xfb){if(e>=1);e--;else e=0;}p1=0xc000;//字位*p1=0xfe;//led0位选p1=0xe000;//字段disp(e);//初始显示"L"if(jishu8>=160){jishu8=0;goto keyz;}if(a==18)yl=b*100+c*10p+d+e*0.1;//液位低限sheding elseif(a==16)yh=b*100+c*10p+d+e*0.1; //液位高限elseif(a==17)ye=b*100+c*10p+d+e*0.1; //液位期望值}keyz: return}}disp(uint x){*p1=table[x];}//扫描时液位显示,充当延时除颤程序//void dispplay(uint x0,uint x1,uint x2,uint x3,uint x4,) {p=0xC000;*p=0xFE;p1=0xE000;*p1=table[x1];delay(5);*p=(*p)<<1;*p1=table[x2];delay(5);*p=(*p)<<1;*p1=table[x3];delay(5);*p=(*p)<<1;*p1=table[x4];delay(5);*p=(*p)<<2;*p1=table[x0];}//报警程序//void baojing(){while(qy>=qh||qy<=ql){jingdeng=~jingdeng;jingsheng=1;p=0xC000;*p=0xef;p1=0xe000;*p1=table[17];delay(5000);}}。