首页 理论教育 单片机键盘结构与按键识别

单片机键盘结构与按键识别

时间:2023-11-19 理论教育 版权反馈
【摘要】:通常人们把按压式或触摸式常开型按钮开关称为按键,而键盘则是一组按键的集合。根据以上两次扫描结果可以得知,X2行Y3列的位置上有按键被按下,也就是按键2被按下,从而正确地识别出了被按下的按键。

单片机键盘结构与按键识别

通常人们把按压式或触摸式常开型按钮开关称为按键,而键盘则是一组按键的集合。在常态下,键盘每个按键的触点处于断开状态,只有当按下时才闭合形成回路,下面介绍常用键盘接口的使用。

1.键盘的分类

键盘按照不同的标准有不同的分类方法,此处介绍最常用的几种分类。

从组成键盘的按键编码方面来讲,键盘通常可以分成编码键盘和非编码键盘两种。编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置,由编码电路产生一个唯一对应的编码信息(如ASCII码)。而非编码键盘是由软件完成键盘识别功能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由CPU将位置码通过查表程序转换成相应的编码信息。

从键盘排列的方式方面来看,键盘又可分成独立式键盘和矩阵式键盘。独立式键盘每个按键单独连接,一般用于按键较少的场合;矩阵式键盘,有行列组成N×M个交叉点,一般用于按键较多并要求端口占用较少的场合。

2.独立式键盘接口

独立式连接是指每一个按键单独占用一根I/O接口线,因而每根I/O接口线上按键的工作状态不会影响其他I/O接口线的工作状态,独立式键盘连接电路图如图5-19所示。在嵌入式系统中,当使用按键数量较少的时候,经常使用这种连接的独立式非编码键盘。

978-7-111-50417-7-Chapter05-26.jpg

图5-19 独立式键盘连接电路图

在图5-19所述的电路中由于键盘连接到单片机端口时外接上拉电阻,当没有任何按键按下时,PTE端口读取到的值都为电平,当任何一个键按下时与之连接的输入数据线即被置0(低电平),因而要判断是否有键按下是只要查询端口的输入量判断读入数据是否有低电平即可。

3.矩阵式键盘接口

以行列形式连接的非编码键盘又称为矩阵式键盘,其结构的特点是用I/O接口线组成行、列结构,行、列线不相通,通过一个按键设置在行、列交叉点上控制行线和列线的连通,4×4矩阵式键盘连接电路图如图5-20所示。若需要设置N×M个按键,则需要N+M根I/O口线。在按键数量较多时,这种连接方式可以减少占用I/O口线,因而在嵌入式系统中需要使用较多的按键又不想占用太多I/O口线时,可以使用矩阵式键盘实现。

在上图键盘电路中由4条行线、4条列线组成4×4矩阵式键盘,每根行线和列线分别单独连接单片机的一个I/O口,因而16个按键共需要消耗8个I/O端口线,使用时可以通过逐行扫描或行列反转等方法来实现按键的识别。

4.按键识别

在键盘操作中当确认有按键按下后有一个非常重要的步骤来确定到底是哪一个按键被按下,这个操作就称为“按键识别”。按键识别常用的方法有两种:逐行扫描法和行列反转法。(www.xing528.com)

978-7-111-50417-7-Chapter05-27.jpg

图5-20 4×4矩阵式键盘连接电路图

(1)逐行扫描法

单片机每次向矩阵式键盘的某一行Xi(i=1~4)输出扫描信号,即使其为0,然后通过读取列线Yj(j=1~4)的状态来确定键闭合的位置。列线Yj通过上拉电阻接置+5V。当无按键按下时,行线Xi和列线Yj断开,列线Y1~Y4呈现高电平。当某一按键闭合时,该键所在行、列线短接。若该行线输出为0,则该列线的电平被拉成0(其余3根列线电平仍为1),此时单片机就可以此判断出闭合按键所在的行、列及键值

例如,扫描从第一行有效开始,则单片机输出X4X3X2X1=1110,以下类推:第二行为X4X3X2X1=1101,第三行为X4X3X2X1=1011,第四行为X4X3X2X1=0111。设4号键闭合,代表4号键闭合的特征信号为:

列信号Y4Y3Y2Y1=0111;第四列有效。

行信号X4X3X2X1=1011;第三行有效。

通常为了便于单片机处理,将行、列信号拼装成一个字节,我们将其称为按键对应的“特征字”,即4号按键的特征字7BH,即01111011(列在高位,行在低位)。

(2)行列反转法

行列反转法的操作步骤是:操作时,单片机先输出行有效信号,读入此刻列线的状态得到前半个特征字;然后再输出列有效信号,读入此刻行线的状态得到后半个特征字;经过组合、处理得到按键的特征字。所谓的“行列反转”其实是指行线和列线的输入、输出状态切换,由于在该方法中任意一个按键的特征字只需一次行列反转就可唯一确定,因而在识别效率上要优于前面介绍的逐行扫描法,尤其是当矩阵键盘行列数量较大时本方法具有明显的优势。

例如,设图5-20所示的矩阵式键盘中按键2被按下。CPU输出行扫描信号X4X3X2X1=0000,由于按键2被按下,所以CPU读入列的状态为Y4Y3Y2Y1=1011,此时可以判断出是Y3这列上有按键按下。其后,CPU再输出列有效信号Y4Y3Y2Y1=0000,同时行线输出X4X3X2X1=1111,由于此时按键2被按下,所以CPU读入行的状态X4X3X2X1=1101,由此可以判断出是X2这行有键被按下。

根据以上两次扫描结果可以得知,X2行Y3列的位置上有按键被按下,也就是按键2被按下,从而正确地识别出了被按下的按键。由于这种对应是唯一的,所以可以用来识别键盘上所有的键。在后续操作中单片机可以通过软件方式制作一个按键特征字表,这样就很容易判断闭合按键的号码。当然需要再说明的是在这种按键识别方法中不同的接线方式,得到的特征字可能不同,但键号和特征字的对应关系是唯一的。

在嵌入式系统的实际使用过程中非编码矩阵式键盘结构简单,并且可通过软件为某些键的重定义提供很大的方便,因而得到广泛使用,后续项目实践中将着重介绍非编码矩阵式键盘的使用。

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

我要反馈