摘要 介绍一种用N+1个I/O端口实现N×N矩阵式键盘的一般方法,并用该方法设计一个5×5的矩阵式键盘作为例子,给出软件编制框图并对该方法进行探讨。
关键词 键盘 矩阵 接口电路
引言
随着微机系统应用领域的扩大,操作人员与微机系统需要交流的信息越来越多,用来交流的手段和途径也更为灵活多样;而键盘输入作为最常用的输入设备仍有其不可替代的作用。因此,探讨一些键盘的特殊结构,用尽可能少的输入输出端口实现较多数量的按键数仍具有重要的应用价值。
有些特殊情况下,在组成一个最小的单片机系统的过程中,由于通用的I/O口有限,而又需要大量的按键输入,这就要求一种新的键盘结构,即用尽量少的I/O口实现尽可能多的键盘输入。
本文将从硬件和软件两个方面介绍一种用N+1个I/O口实现N×N矩阵式键盘的方法(为了与传统键盘区分,以下简称新型键盘)。首先,对传统键盘作一个简单的介绍。
一、传统键盘的介绍
键盘的结构通常有两种形式:线性键盘和矩阵键盘。在不同的场合下,这两种键盘均得到了广泛的应用。
线性键盘由若干个独立的按键组成,每个按键的一端与微机的一个I/O口相连。有多少个键就要有多少根连线与微机的I/O口相连,因此,只适用于按键少的场合。
矩阵键盘的按键按N行M列排列,每个按键占据行列的一个交点,需要的I/O口数目是N+M,容许的最大按键数是N×M。显然,矩阵键盘可以减少与微机接口的连线数,简化结构,是一般微机常用的键盘结构。根据矩阵键盘的识键和译键方法的不同,矩阵键盘又可以分为非编码键盘和编码键盘两种。
◇ 非编码键盘
非编码键盘主要用软件的方法识键和译键。根据扫描方法的不同,可以分为行扫描法、列扫描法和反转法三种。
◇ 编码键盘
编码键盘主要用硬件来实现键的扫描和识别,通常使用8279专用接口芯片,在硬件上要求较高。
二、新型键盘的硬件和软件实现原理
经过分析,实际上用N+1个I/O口,辅以适当的接口电路,是可以实现N×N个按键的。现以6个端口实现5×5的按键为例来叙述。
1. 硬件实现
图1所示为用6个I/O口来实现25个按键的示意图。具体的物理实现电路如图2所示。
图1 6个I/O口实现5×5按键矩阵的示意图
由图1和图2可见,硬件部分分为两块:一块是普通键盘矩阵,另外一块是中断和接口电路,主要由相应数目的二极管和电阻组成。具体对6个I/O口的情况,实现5×5的按键矩阵的中断和接口电路(图2)共需要10只二极管、12只电阻和1只三极管。10只二极管按其在电路中所起的作用可分为两组:第一组包括D6、D7、D8、D9和D10,用于保证按键信息的单一流向;第二组包括D1、D2、D3、D4和D5,它们在电路上对NPN三极管的基极构成"或"的逻辑关系,对单片机进行初始化。除了PORT6(其要求具有中断功能)以外,其余的I/O口均被置成高电平,这样当有键按下时,三极管的基极由低变高,三极管导通;集电极由高电平跳变成低电平,向单片机发出中断信号,从而启动键盘扫描程序。
图2 用6个I/O口实现5×5按键矩阵的原理图
2. 软件实现
按键的识别主要靠软件来实现,需要编写键盘扫描程序。
(1) 键盘扫描原理
为了更好地说明键盘扫描的过程,假设编号为S12的键(见图2)被按下,扫描程序已经启动,扫描的具体过程如表1所列。
表1
(2) 键盘扫描程序的流程
在启动键盘扫描程序以前首先要对CPU进行初始化(主要是对所使用的中断进行初始化)。假设已经有键按下,并引发了相应的中断服务程序(即键盘扫描程序),其流程图如图3所示。
图3 键盘扫描程序流程图
结束语
◇ 在I/O口数量有限的情况下,用该方法可以实现尽可能多的按键输入;
◇ 该方法还可以用于需要大量开关量测量的场合。
参考文献
1 MOTOROLA Inc. Minimum I/O to Matrix Keyboard with DragonBallTM EZ328. 1996
2 刘乐善,叶济忠,叶永坚. 微型计算机接口技术原理及应用. 湖北:华中理工大学出版社,1996