设为首页 | 成都一卡通
人脸消费应用方案
浅析测控系统中微机化监控程序的设计
发布时间:2013-06-03 来源:未知
引言
监控程序负责系统中全部硬件和软件资源的分配、调度工作,是系统设计中的一个重要组成部分。它提供用户接口, 使用户获得友好的工作环境, 使计算机获得很高的效率和高度的自动化。
随着系统结构的日益复杂和功能的全面, 其监控程序的设计难度也越来越大。监控程序的质量直接影响系统的操作和运行,一个高质量的监控程序应是功能齐全、键数合理、操作方便、容错性好。监控程序在一定的意义上就是键盘分析程序,因此如何在面积较小的面板上设计一个功能多、操作简便的键盘操作系统成为智能仪器设计中非常重要的任务之一。
键盘上的按键可分为2类:单义键和多义键。单义键,是指按键的含义是固定的,一个按键代表一个命令或一个数字,执行一种功能,即一键一义;多义键是指一个按键的键义不是单一的,而是具有多重含义,多个键互相配合才产生一个动作,执行一种功能,即一键多义。下面结合实例介绍这2种键盘监控程序的设计。
1 单义键监控程序的设计
CPU对键盘管理的方式一般有3种,即查询法、中断法和定时查询法。这3种方式的主要差别在于CPU转向键盘处理程序的方法。如果从程序设计逻辑讲,都是“有键按下则转去处理”。因此它们的键盘管理程序是可以相互转化的。下面以查询法为例,介绍一键一义键盘管理程序的设计。
微处理器周而复始地扫描键盘,当发现按键时,首先判别是命令键还是数字键。若是数字键,则把按键读数读入存储器,通常还进行显示;若是命令键,则根据按键读数查阅转移表,以获得处理子程序的入口。设一4×8的键盘,其中下面16个键为数字键,上面16个键为功能键。
通过键盘扫描已经获得按键的编码,并且将该编码存储于累加器A中。那么,当键码小于10H时为数字键,否则为功能键。具体程序如下:
一键一义键盘管理的核心是一张一维的转移表,在转移表内顺序登记了各个处理子程序的转移命令。
2 多义键监控程序的设计
对于功能复杂的微机化系统,若仍然采用“一键一义”,则按键使用往往过多,不但增加了费用,而且面板难以布置,操作也不方便。因此,有些键盘设计成一键多义方式。在一键多义的情况下,一个命令不是由按键,而是由一个按键序列组成。也就是说,对于一个按键的解释除了本次的按键外,还取决于这之前按了一些什么键。一键多义的监控程序有2种方法,即转移表法和状态转移法。下面对这两种方法进行介绍。
2.1 转移表法实现多义键监控程序
多义键的监控程序仍然可以采用转移表法进行设计,不过这时要用多张转移表。首先,要判断一个按键序列是否构成了一个合法的命令。若已经构成了合法命令,则根据前几个按键把控制引向某张合适的转移表,根据还不错后一个按键编码查阅该转移表,就找到了要求的子程序入口。以一个8回路微机温控仪为例。该系统中有6个按键:C(回路号为1~8,第8回路为环境温度补偿,其余为控温点)、P(参数号,有实测值、设定值、P、I、D参数,上下限报警值,输出控制值等8个参数)、 Δ(加1)、Δ(减1)、R(运行)和S(停止运行)。显然,这些按键都是一键多义的。 Δ和Δ键的工作执行与否,取决于前面按过的C和P键;R键的功能执行与否,取决于当前的C值。用转移表法实现这些功能的流程如图1所示。
图1 转移表法实现多义键监控程序流程
从流程图可以看出,用转移表法实现多义键的设计需要两级转移表。
2.2 状态转移法实现多义键监控程序
状态转移法是整体地来考虑应用系统,把它看作是一个系统,从而引入“状态”的概念。将系统工作过程划分为若干个“状态”,在任一状态下,每个按键都有一个确定的含义,即执行某一个子程序且变迁到下一个状态(称为“次态”,NEXST)。因此,就需要在存储器内开辟一个单元记住当前状态(称为“现态”,PREST),根据当前状态和当前按键这两个关键词,就能对当前按键的含义作出正确的解释。
用状态转移法设计的监控程序,其程序基本框架是相同的,具有通用性强、修改方便、便于阅读的优点。本文结合“多功能波形发生器”应用实例,详细介绍了状态转移法的监控程序设计过程。
2.2.1 键语分析的定义
键语必须有明确的定义, 而且应有一套无二意的语法规则。假设多功能波形发生器的按键如图2 所示。
图2 多功能波形发生器的按键
各按键的定义如下: AMPL(幅度)、FREQ(频率)、FUNC(函数)、OFST(偏移)、MODE(模式)、UNIT(单元号)、ON(开)、OFF(关)、CHS(换符号)、DIG(数字键统称)、MULT(乘法)。
2.2.2 建立键语状态图
用普通语言对全部键语做出详尽准确的规定是很困难的, 可以用键语状态图的方法对全部的键语做出完备的定义。这里用图3所示的键语状态图来描述键语的完备集。
图3 键语状态图
状态图中每一个方框表示一个状态(按过一次键), 框内的数字是状态的代号。箭头表示状态变迁的方向, 箭头上的标语是一个按键的代名, 表示变迁的条件, 其中非法键统称为“*”。假设还不错初开机时初始化使系统处于0态, 只要按过一个键之后, 系统就不可能再处于0态。假定系统现在处于0态,按下AMPL键后系统就转入了1态。在1态中,如果按下CHS或者DIG键就可以进行幅值的设定;如果按下其他的键,则为无效键,系统重新回到0态。第1页第2页