摘 要: 由点阵式液晶显示器和旋转式光电编码开关构成的智能仪器的人机交互界面,使仪器的操作向菜单式、傻瓜型迈进。在阐述光电编码开关基本原理和使用方法的基础上,介绍了I2C 接口芯片电路形成的硬件输入结构,该结构体现了简洁的风格。在软件方面,则以当前的液晶屏显示窗口作为界面状态,以状态跟踪为主线形成基于界面状态的模块式程序结构,这种程序结构的作业链清晰,便于调试,而且适合于仪器改进和升级时功能软件的增加或变换。在由上位机与之组成自动测试系统时,操作命令下传后的任务执行程序也是及其简单的。
带有微处理器的仪器的操作曾经是通过仪器面板上众多的功能键和数字键来实现人机交互的,程序用查询的方法扫描键盘或响应键盘中断的方法读回键值,然后散转各分支程序去执行相应的功能子程序,完成相应的作业。使用者往往不得不借助厚厚的使用说明书来熟悉、来指南仪器面板上各种按键的定义和操作的方法。随着微电子技术的发展及大屏幕点阵式液晶显示器的出现,使得智能化仪器的操作也向菜单式、傻瓜型迈进。通过液晶屏上的菜单选项,用面板上三四个按键或旋转式光电编码开关,就能完成仪器操作所必需的参数设置、命令执行等必要的人机交互。该类仪器的程序结构也适应了其菜单式"傻瓜"界面的特点,用后台大量的编程工作换取了前台仪器操作的极其简单和方便。本文从软硬件设计的角度,讨论智能仪器中菜单式交互界面形成的原理和实现的方法。
1 交互界面的输入结构
在菜单式界面的智能仪器中,人机交互的指令输入部件可用按键或旋转式光电编码开关。按键由增键、减键和确认键构成(图1) .使用这3 种操作可以用来在液晶显示屏上移动光标、数据输入和操作选定等。增键和减键用于选择菜单中选项时的光标移动,以及在设定数值时对数值大小的增减;确认键用于对选中的选项和设定的数值大小的确定。
图1 按键示意图
按键的功能可以用旋转式光电编码开关来替代。旋转式光电编码开关的功能类似计算机上使用的鼠标,它有3 种操作:"左旋""右旋"和"按下选定", 可对应着按键输入时的增键、减键和确认键。
图2 是光电编码开关的外形图、电原理图、输出信号真值表和波形图。该开关压下时②和③短路输出,旋转时,由把柄带动穿孔圆盘一起转动。开关内有2 个发光二极管、2 个光敏三极管和1 个穿孔圆盘,圆盘上的穿孔按特定规律分布。光敏二极管接收发光二极管发出的光,形成二路旋转输出信号"输出A"和"输出B".旋转时,当穿孔圆盘上的某个圆孔正对着发光二极管时,发光二极管发出的光通过该圆孔照射到光敏三极管上,三极管导通,输出低电平信号;当圆盘上的所有圆孔都错开发光二极管时,光敏三极管因收不到光信号而截止,输出高电平信号。
图2 光电编码开关
由图2 (c) 真值表可见,其实"输出B"和"输出A"的编码对应着2 位循环码(格雷码) ,循环码的特点是由一个计数状态变到下一个计数状态的过程中,只有一位数码变化,因此在循环码的译码器中,不会产生竞争冒险现象。在智能仪器中微处理器引脚状态变化的中断输入中也不会产生中断事件的竞争。但循环码不能用二进制计算来判别大小和顺序,所以要判别光电编码开关是"左旋"还是"右旋"时,要引入"输出B"和"输出A"电平的现状态和前状态进行分支逻辑判断,软件编程稍稍复杂一点。
现在很多单片微控制器的I/ O 口线都带有键盘中断功能,图1 所示的按键和图2 所示的旋转式光电编码开关,可通过上拉电阻的形式直接接到这些I/ O 口线上。有操作信号时,口线的电平改变会引起键盘中断的发生,CPU 响应中断后可去处理相应的操作。在微处理器I/ O 口线或外中断口线紧张的情况下,可以如图3 所示,通过I2 C 总线外扩一片串行变并行的PCF8574 芯片,芯片P0~ P7 的8根口线可用作输入或输出;用作输入时,口线电平的变化会引起芯片13 脚电平变低向微处理器申请中断。图3 中RL K 是旋转式光电编码开关,它的"输出A""输出B"和"按下开关"接到了PCF8574 的P4、P5 和P6 ,在笔者研制的"电流互感器伏安特性试验仪"中,PCF8574 的P0~P3 被用作输出,经接插件J9 ,通过光耦去驱动试验电压量程切换的继电器。
图3 节省I/ O 口线的按键输入接口电路
2 交互界面的输出结构
菜单式交互界面的输出部件可采用能显示字符、汉字及图形和曲线的大屏幕点阵式液晶显示器。
带有驱动控制器的点阵式LCD 液晶屏与微处理器的接口信号线除了8 位数据线外,一般还带有读有效线、写有效线及地址译码的片选线,所以对它的连接和读写操作,可看作是对微处理器片外的RAM 单元的连接和读写操作。读写操作中,不同的驱动控制器具有不同的指令格式,如常用于驱动320 ×240 点阵式液晶显示屏的SED1335 液晶驱动芯片就带有13 条指令,能方便地完成各种显示功能。多任务下的选择菜单可由多屏菜单形成多级链式结构,为便于叙述,以三级任务菜单为例,将作业分为主任务(用大写字母A 、B、C 等表示) 、子任务(用小写字母a 、b 、c 等表示) 和支任务(用数字1 、2 、3 等表示) ,图4 是显示界面的部分屏显的汇总。每屏界面都有自己的编号:win1 、win2 、win3 ??.图中win1 为主屏菜单,提供了主任务A、B 和C 3 个选项;win2 、win3 、win4 为第一级子菜单,为每项主任务提供了各自的子任务的选择(如win2 屏是主任务A 的子任务A2a 、A2b 和A2c 的选项) ;win5 、win6和win7 是第二级子菜单,为第一级子菜单中的子任务提供下一级支任务(如win5 屏为win2 中的子任务选项A2a 提供A2a21 、A2a22 和A2a23 的支任务选项) ;各级子菜单中均有"返回"的选项,选择执行后返回上一级菜单。图4 中的选项标志用■和□来指示, ■表示该项选中,选项的变动由增键和减键(或旋转式光电编码开关的"左旋"和"右旋") 来完成,选项的执行由确认键(或旋转式光电编码开关的"按下选定") 来完成,根据■所在的位置,选项号opt =0 ,1 ,2 …….图中举例win14~win18 是具体任务的执行情况界面,可以是测量值显示,也可以是某参数的动态曲线显示,可以是历史数据查询,等等。这些界面的"返回"功能在作业完成后自动进行,或默认按"确认"键返回。
这种结构还很适合仪器在改进和升级时功能程序模块的增加和变换。比如系统要增加"子任务B2d",只要在如图4 所示的win3 屏显中插入这个选项为opt = 3 ,使该屏为5 选项,则当标志■选中该项时程序即调用执行"子任务B2d"的子程序。要增加"主任务D"的方法是类似的,只要在win1 屏显中加入这个选项,然后程序根据菜单的选择来分支就行了。
图4 显示界面的部分屏显汇总
3 基于界面状态的程序结构
仪器仪表的系统程序结构,由按键和作业的对应关系可分为一键一义型和一键多义型两种结构。
对于一键多义型系统程序,作业的调度条件是多因数的,不仅与外因(键盘操作) 有关,也与内因(系统当前所处的状态) 有关。为此,引入系统状态的概念,即将系统运行情况分成若干状态(如图4 所示的界面状态和选项状态,选项状态属于界面状态的子状态) ,使得在任何一个状态下每一个按键只有唯一的定义。这样一来,系统运行去向就可以由当前状态和当前键码来共同决定了。智能化仪器仪表正由一键一义型向一键多义型进化。如用图4 所示的显示界面来表征系统当前所处的状态,其程序结构称之为基于界面状态的程序结构。
为提高系统效率,对键盘(或旋转式光电编码开关) 的操作响应可采用中断的方式进行。进入键中断服务程序后,先判别是增建、减键、确认键(或旋转式光电编码开关的"左旋""右旋""按下选定") 的哪一个键码触发中断;接着判别当前系统所处的状态(当前的显示屏号win 及选项号opt ) ; 再由键码key ,系统状态win 和opt 决定执行什么作业。程序框图如图5 所示。值得一提的是,对那些不适合在中断服务程序中执行或执行时间过长的作业(如打印等) ,可在中断服务程序中置位该作业的启动标志,待中断返回后在主程序中再执行选中的作业,完成后清除该作业的启动标志。
图5 基于界面的交互过程
4 操作界面的上位机介入
电子技术的飞速发展,使嵌入式系统中的存储器体积越来越小、容量越来越大。但是,如果要在一台试验用的仪器上进行日积月累的试验数据的查询和管理,如果要使仪器的实时试验曲线具有较高的分辨率和对局部曲线进行分析,如果要使仪器的操作能远程控制,那么,仪器单机的资源就略显不足。
满足上述要求的通常做法是用PC 机(或笔记本电脑) 作为仪器的上位机,通过RS232 串口(或USB口) 与仪器通信构成自动测试系统,使仪器共享上位计算机的资源,进一步增强智能仪器的性能。
基于界面状态的程序结构为上位计算机介入后对仪器的控制提供了很好的软件平台。微处理器在响应串口中断的中断服务程序中,首先从接收到的上位机传来的信息判断是何种作业,然后用调用子程序的方法,调用图4 所示的基于界面状态的opt 作业程序。这样,原来基于界面状态的程序结构几乎不用改动,只要在串口中断服务程序中根据上位机的命令来分支调用子程序就行了。当然,在上位机控制下执行相应作业时,仪器上的液晶显示界面仍然将同步显示当前作业,为远程操作仪器和实地监视仪器提供了方便。
5 结 语
大屏幕点阵式液晶显示器和内置大容量程序存储器的微处理器的出现,给仪器仪表的智能化进程推波助澜。上述人机交互界面的软硬件设计,仅是笔者在工程项目中的初步尝试,基本达到了结构简单、操作方便、编程高效和界面友好的效果。用后台大量的工作换取前台操作的极其简单和方便,应是仪器仪表业内同行始终追求的境界。