鲁庆宾
(南阳理工学院 计算机科学与技术系,河南 南阳 473004)
键盘是一组按键的集合,是最常用的微机输入设备。操作员可以通过键盘输入数据或指令,实现简单的人机通信[1]。连击是键盘操作中常用的方法,可以在很大程度上提高键盘的使用效率[2]。
在下文中,短击是指短暂按下某键,时间小于500 ms,长击是指长时间按住某键不放,时间超过1 s。比如,在手机键盘中,短击“*”键则可以在输入框中输入该符号,长击则锁定键盘或解锁;短击向下箭头则执行一次下移操作,长击超过一定时间则可以执行连续的下移操作。
笔者以 STC89C51的P1口设计的4×4式键盘为例[3],介绍在一个键盘中存在的以下3情况:一是该键按下只执行单一功能;二是该键按下时短击执行该键第一功能,长击执行第二功能;三是该键按下时短击执行第一功能,长击则每隔一个较短的时间连续执行该键的功能。该方法在Keil C下编译通过。
矩阵式键盘的结构如图1所示[4]。从键盘的行线送出全0,读取列线的值,如果键盘中有键按下,则相应的列线必然被拉为低电平,即读取到列线的值不全为1,否则,当键盘中无键按下时,读取到列线的值全为1。于是,当判断键盘中无键按下时键盘扫描函数直接返回-1;有键按下时,需要判断是哪一个按键按下,步骤为:从第0行送0,其他行送1,读取列线的值,若读取到的列线值不全为1,则所按下的键必在该行,否则,所按下的键不在该行,从下一行送0,其他行送1,直到最后一行。……