首页 理论教育 学会矩阵键盘编程方法:扫描法和二维数组存储键值

学会矩阵键盘编程方法:扫描法和二维数组存储键值

时间:2023-10-11 理论教育 版权反馈
【摘要】:不管是多少行多少列的矩阵键盘,其编程思路是一样的。下面介绍最常用的两种判断键值的方法——扫描法和利用二维数组存储键值。程序代码示例3.利用二维数组存储键值二维数组。利用二维数组获取矩阵键盘键值的典型应用示例1)任务书:矩阵键盘的键值分布如图8-10a所示,单片机与矩阵键盘行列的连接如图8-9a所示。利用二维数组获取矩阵键盘的键值,并送到图8-11所示的8位LED进行显示。函数的返回值为1。

学会矩阵键盘编程方法:扫描法和二维数组存储键值

不管是多少行多少列的矩阵键盘,其编程思路是一样的。下面介绍最常用的两种判断键值(即判断是哪个按键按下了)的方法——扫描法和利用二维数组存储键值。

1.扫描法简介

扫描法是常用的一种按键识别方法,容易理解。其方法是依次将行线中的每一根线的电平置为低电平,再逐次判断列线的电平。如果某列线的电平为低,则判定该列线与行线交叉处的按键被按下(闭合)。也可以依次将列线中的每一根线置为低电平,再逐次判断行线的电平。

2.扫描法应用典型示例

(1)任务书:使用YL-236单片机实训台的矩阵键盘(与单片机的连接如图8-9a所示),实现当某个键按下时,8位数码管同时显示按键的值(单片机的P3口与数码管的D0~D7相连)。

(2)程序代码示例

978-7-111-46996-4-Part02-134.jpg

978-7-111-46996-4-Part02-135.jpg

978-7-111-46996-4-Part02-136.jpg

3.利用二维数组存储键值

(1)二维数组。二维数组定义的一般形式为:

类型说明符 数组名[常量表达式][常量表达式]

例如:inta[2][4];

定义为2行、4列的数组。

给二维数组初始化(即赋初值)的方法有以下两种:

1)对数组的全部元素赋初值。例如:

inta[3][4]=﹛﹛1,3,2,4﹜,﹛5,6,7,9﹜,﹛8,10,11,12﹜﹜;

这种赋值方法很直观,将第一个{}内的元素赋给第0行,第二个{}内的元素赋给第1行。也可以写成下面的格式更为直观:

978-7-111-46996-4-Part02-137.jpg

还可以将所有的数据写在一个{}内,例如:

inta[3][4]=﹛1,3,2,4,5,6,7,9,8,10,11,12﹜;(www.xing528.com)

2)对数组的部分元素赋初值。例如

inta[3][4]=﹛﹛1﹜,﹛5﹜,﹛8﹜﹜;

对二维数组的存入和取出顺序是:通过下标来按行存取(注:行下标数的最大值等于行数减1,列下标的最大值等于列数减1,这和一维数组是一样的),先存取第0行的第0列、第1列、第2列……直到第0行的最后一列,再存取第1行的第0列、第1列、第2列……直到第1行的最后一列。

例如:temp=a[0][3],就是将第0行的第3个元素值赋给变量temp。temp=a[2][3]就是将第2行的第3个元素值赋给变量temp。

(2)利用二维数组获取矩阵键盘键值的典型应用示例

1)任务书:矩阵键盘的键值分布如图8-10a所示,单片机与矩阵键盘行列的连接如图8-9a所示。利用二维数组获取矩阵键盘的键值,并送到图8-11所示的8位LED进行显示(例如:若键3被按下,3的二进制数为00000011,则LED1和LED0被点亮,其余的都不点亮)。

978-7-111-46996-4-Part02-138.jpg

图8-11 YL-236单片机实训台的LED模块

2)程序代码(参考)如下:

978-7-111-46996-4-Part02-139.jpg

978-7-111-46996-4-Part02-140.jpg

3)程序代码解释

当i=0时,执行到12行时P1=11101111,执行第13行以后,有以下4种情况:

当j=0时→执行14行:_cror_(0x08,j)仍为0x08即00001000,该值与P1“按位与”后的值若为0,则肯定是第0列有键按下。所以键值为ka[i][j]=ka[0][0],即0,函数的返回值为0。

当j=1时→执行14行:_cror_(0x08,j)变为00000100,该值与P1按位与后的值若为0,则肯定是第1列有键按下。所以键值为ka[i][j]=ka[0][1],即1。函数的返回值为1。

当j=2时→执行14行:_cror_(0x08,j)变为00000010,该值与P1按位与后的值若为0,则肯定是第2列有键按下。所以键值为ka[i][j]=ka[0][2],即2;函数的返回值为2。

当j=3时→执行14行:_cror_(0x08,j)变为00000001,该值与P1按位与后的值若为0,则肯定是第3列有键按下。所以键值为ka[i][j]=ka[0][3],即3;函数的返回值为3。

当i=1时,j=0、1、2、3对应的函数的键值分别为4、5、6、7,函数返回值为4、5、6、7。

当i=2,i=3时,键值和函数的返回值可用相同的方法去分析。

这种方法的优点是程序简洁,占用的空间小,不足之处是执行的效率没有扫描法高。

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

我要反馈