7.3 单片机矩阵式键盘

更新于 2026年10月10日 版权声明
7.3 单片机矩阵式键盘

在单片机系统中,若使用按键较多时,通常采用矩阵式(也称行列式)键盘。

7.3.1 矩阵键盘硬件电路

矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如图7-8所示。

图示

图7-8 矩阵键盘硬件电路(见彩插)

由图7-8可知,一个4×4的行、列结构可以构成一个含有16个按键的键盘,行、列线分别连接到按键开关的两端。当无键按下时,行线处于低电平状态,列线处于高电平状态;当有键按下时,行、列线将导通,CPU根据列电平的变化,便能判定相应的列有键按下,此时,列线电平将由与此列线相连的行线电平决定,这是识别按键是否按下的关键。

然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。

7.3.2 矩阵键盘软件设计

矩阵键盘软件设计主要是按键识别方法,一般有行列反转法、逐行扫描法两种。

1.行列反转法

(1)行列反转法原理。

行列反转法是通过设置矩阵键盘行线和列线互为相反的值,再将分别读出的行值和列值按位或组合,得到每个按键唯一的识别码。主要分为以下3个步骤。

第一步,找行值。首先初始化行值,将行引脚设置为高电平,列引脚设置为低电平,如图7-9所示。程序代码为P1=0xF0;如果有按键按下,然后读行值,cord_h=P1&0xF0。

第二步,找列值。首先初始化列值,将列引脚设置为高电平,行引脚设置为低电平,程序代码为P1=0x0F;如果有按键按下,然后读列值,cord_l=P1&0x0F。

第三步,行列组合,得到唯一识别码。将找到的行值和列值做位或运算,value=cord_h|cord_l,得到识别码,每个按键都有唯一的识别码与之相对应,如图7-10所示。

第四步,根据识别码,识别按键。

(2)行列反转法软件设计。

行列反转法软件设计流程图如图7-11所示。(https://www.daowen.com)

图示

图7-9 初始化行设置(见彩插)

图示

图7-10 按键识别码(见彩插)

图示

图7-11 行列反转法流程图

2.逐行扫描法

(1)逐行扫描法原理。

逐行扫描法分为以下两个步骤。

第一步,判断键盘中有无键按下。

首先初始化设置,将行线设置为高电平,列线设置为低电平,程序代码为P1=0xF0。然后判断只要有一行的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根列线相交叉的4个按键之中。若所有行线均为高电平,则键盘中无键按下。

第二步,判断闭合键所在的位置。

在确认有键按下后,即可进入确定具体闭合键的过程。其方法是,依次将行线设置为低电平,即在置某根行线为低电平时,其他线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

(2)逐行扫描法软件设计。

逐行扫描法软件设计流程图如图7-12所示。

图示

图7-12 逐行扫描法流程图

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)