理论教育 键盘接口工作原理及接口技术

键盘接口工作原理及接口技术

时间:2023-11-05 理论教育 版权反馈
【摘要】:图8-5为查询方式的独立式键盘工作电路,按键直接与803l的I/O口线相接,通过读I/O口,判断各I/O口线的电平状态,即可以识别出按下的键。当有且仅有一键图8-7采用三态缓冲器的独立式键盘接口按下时才予以识别,如有两个或多个键同时按下将不予以处理。

键盘接口工作原理及接口技术

常用键盘接口分为独立式键盘接口和行列式键盘接口。

1.独立式键盘接口

独立式键盘就是各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易的判断哪个按键被按下。

在按键数目较多时,独立式键盘电路需要较多的输入口线且电路结构复杂,故此种键盘适用于按键较少或操作速度较高的场合。下面介绍几种独立式键盘的接口。

图8-5(a)为中断方式的独立式键盘工作电路,只要有一键按下,与门的输出即为低电平,向8031发出中断请求,在中断服务程序中,对按下的键进行识别。图8-5(b)为查询方式的独立式键盘工作电路,按键直接与803l的I/O口线相接,通过读I/O口,判断各I/O口线的电平状态,即可以识别出按下的键。

图8-5 独立式键盘接口电路

(a)中断方式;(b)查询方式

此外,也可以用扩展的I/O口作为独立式键盘接口电路,图8-6为采用8255A扩展I/O,图8-7为用三态缓冲器扩展的I/O口。这两种接口电路,都是把按键当作外部RAM某一工作单元的位来对待,通过读片外RAM的方法,识别按键的状态。

图8-6 通过8255A扩展的独立式键盘接口

上述各种独立式键盘电路中。各按键均采用了上拉电阻,这是为了保证在按键断开时,各I/O口有确定的高电平,当然如果输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。

现在对图8-7所示的独立式键盘进行软件编程,采用软件消除键抖动的方法,以查询工作方式检测各按键的状态。当有且仅有一键

图8-7 采用三态缓冲器的独立式键盘接口

按下时才予以识别,如有两个或多个键同时按下将不予以处理。

程序如下:

2.行列式键盘接口

行列式(也称矩阵式)键盘用于按键数目较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。如图8-8所示,1个3×3的行、列结构可以构成1个具有9个按键的键盘。同理1个4×4的行、列结构可以构成1个16个按键的键盘等。在按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。

图8-8 行列式键盘结构

(a)3×3键盘;(b)4×4键盘(www.daowen.com)

(1)行列式键盘工作原理

按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上。无按键按下时,行线处于高电平状态;而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平亦为高。这一点是识别行列式键盘按键是否按下的关键所在。由于行列式键盘中行、列线为多键共用,各按键均影响该键所在行和列的电平。因此各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。

(2)按键的识别方法

1)扫描法。下面以图8-8(b)中3号键被按下为例,来说明此键是如何被识别出来的。

当3号键被按下时,与3号键相连的行线电平将由与此键相连的列线电平决定,而行线电平在无按键按下时处于高电平状态。如果让所有的列线处于低电平,很明显,按键所在行电平将被接成低电平,根据此行电平的变化,便能判定此行一定有键被按下。但还不能确定是键3被按下,因为如果键3不被按下,而同一行的键2、1或0之一被按下,均会产生同样的效果。所以,行线处于低电平只能得出某行有键被按下的结论。为进一步判定到底是哪一列的键被按下,可采用扫描法来识别。即在某一时刻只让1条列线处于低电平,其余所有列线处于高电平。当第1列为低电平,其余各列为高电平时,因为是键3被按下,所以第1行仍处于高电平状态;而当第2列为低电平,而其余各列为高电平时,同样我们会发现第1行仍处于高电平状态;直到让第4列为低电平,其余各列为高电平时,因为此时3号键被按下,所以第1行的电平将由高电平转换到第4列所处的低电平。据此可判断第1行第4列交叉点处的按键,即3号键被按下。

根据上面的分析,很容易想到识别键盘有无键被按下的方法,此方法分2步进行:第1步,识别键盘有无键被按下;第2步,如有键被拉下,识别出具体的按键。分别介绍如下:

首先把所有的列线均置为低电平,检查各行线电平是否有变化,如果有变化,则说明有键被按下;如果没有变化,则说明无键被按下。

上述识别具体按键的力法也称为扫描法,即先把某一列置低电平,其余各列置为高电平,检查各行线电平的变化,如果某行线电平为低电平,则可确定此行此列交叉点处的按键被按下。

2)线反转法。扫描法要逐列扫描查询,当被按下的键处于最后1列时,则要经过多次扫描才能最后获得此按键所处的行列值。而线反转法则显得很简练,无论被按键是处于第1列或最后1列,均只需经过2步便能获得此按键所在的行列值,线反转法的原理如图8-9所示。

图中用1个8位I/O口构成1个4×4的矩阵键盘,采用查询方式进行工作,下面介绍线反转法的两个具体操作步骤:

图8-9 线反转法原理图

第1步,让行线编程为输入线,列线编程为输出线,并使输出线输出全为低电平、则行线中电平由高变低的所在行为按键所在行。

第2步,再把行线编程为输出线,列续编程为输入线,并使输出线输出全为低电平,则列线中电平由高变低所在列为按键所在列。

结合上述第2步的结果,可确定按键所在行和列,从而识别出所按的键。

假设3号键被按下,那么第1步即在D0~D3输出全为0,然后读入D4~D7位,结果D4=0,而D5、D6和D7均为1,因此,第1行出现电平的变化,说明第1行有键按下;第2步让D4~D7输出全为0,然后读入D0~D3位,结果D0=0,而D1、D2和D3均为1,因此第4列出现电平的变化,说明第4列有键按下。综合上述分析,即第1行第4列按键被按下,此按键即是3号键。因此线反转法非常简单实用。当然实际编程中要考虑采用软件延时进行消抖处理。

(3)键盘的编码

对于独立式键盘,由于按键的数目比较少,可根据实际需要灵活编码。对于行列式键盘,按键的位置由行号和列号唯一确定,所以常常采用依次排列键号的方式对键盘进行编码。以4×4键盘为例,键号可以编码为0l H,02H,03H,…,0EH,0FH,10H共16个。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈