2.3.2 用并行口设计键盘电路
键盘是计算机系统中不可缺少的输入设备,当键盘少时可接成线性键盘,当按键较多时,占用口线较多。将键盘接成矩阵的形式,可以节省口线。例如,两个4位接口可接16个按键(4×4矩阵的形式),两个8位接口可接64个按键(8×8矩阵的形式)。
矩阵键盘按键的状态同样需要变成数字量“1”和“0”,开关的一端(列线)通过电阻接Vcc,开关另一端(行线)的接地是通过程序输出数字“0”实现的。矩阵键盘每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵键盘的行线和列线分别通过两个并行口和CPU通信,在接键盘的行线和列线的两个并行口中,一个输出扫描码,使按键逐行动态接地(称为行扫描,键盘的行值),另一个并行口输入按键状态(称为回馈信号,键盘的列值)。由行扫描和列回馈信号共同形成键编码。
用8XX51的并行口P0设计4×4矩阵键盘的电路及各键编码,如图2.21所示,图中P0.0~P0.3接键盘行线,输出接地信号,P0.4~P0.7接列线,输入回馈信号,以检测按键是否按下。不同的按键有不同的编码,通过编码识别不同的按键,再通过软件查表,查出该键的功能,转向不同的处理程序。因此键盘的处理程序的任务是:确定有无键按下;判断哪一个键编码;根据键的功能,转相应的处理程序。
图2.21 4×4矩阵键盘
键的编码可通过软件对行、列值的运算来完成,这种键盘称为非编码键盘;键的编码也可由硬件编码器完成,这种键盘称为编码键盘。
编码键盘还要消除按键再闭合或断开时的抖动。消除抖动的方法可采用消抖电路(RS触发器或者单稳态电路硬件消除抖动),也可采用延时软件消除抖动(延时后再重读,以跳过抖动期)。在矩阵键盘中,通常采用软件消除抖动。
行列式键盘按键的识别方法有扫描法和反转法。
扫描法识别键盘的步骤如下。
(1)判断有无键按下。依次拉低行线(或列线),检查各列线(或行线)电平的变化,如果某列线(或行线)电平由高电平变为低电平,则可确定此行与交叉点处的按键被按下了。
(2)确定是否真的有键被按下,并确定按键的位置。调用软件延时程序(10 ms),然后再判断键盘状态,如果两次判断得到的与闭合的按键一致,则认为有一个确定按键被按下了。否则当作按键抖动处理,根据闭合键所在的行和列推算按键的键号。
(3)键值处理。根据键号定义的值进行处理操作。