欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

微控制器白色学习路径 (IX) - 在数码管上显示数字的矩阵键

最编程 2024-04-13 14:39:37
...

目标:矩阵按键在数码管上显示数字


矩阵按键模块:

矩阵按键模块

P0~3是一组,P4~7是一组

矩阵按键识别方法

(1)逐行扫描

是种常见的方法,先把高四位全部置低电平,低四位置高电平,如果有按键按下那么低四位就会出现不全为1的情况,因为按键变不导通状态,之前是导通,这样就知道有按键按下了。

知道按键按下后就要判断具体是哪个按键按下的,于是把高四位和低四位变高电平,然后逐行逐列检测发现有行有个低电平,又发现个列有低电平,两个一交叉就知道是哪个按键按下的了

(2)行列扫描

通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位变不全为高电平,说明有按键按下,然后通过接收的数据值,判断是哪一有按键按下。

然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一有按键按下,这样就能够确定是哪一个按键按下了。

矩阵按键可以变成独立按键吗?

独立按键以前说过,就是一端接地的区别,所以把列接地,就变成的独立按键,可以拿排针把高位接出来

代码:

代码

LSA, LSB, LSC是数码管位选,定义了两个全局变量

第一个if是让低四位置高电平,判断列,通过P1口数值的不同知道是那个列按下,给keyvlaue赋相应值,然后再判断行,行与行之间相差4,所以这里第四行与第一行差12,其它自行对比

那个while((a<50)&&(Butt!=0x0f))是判断按键是否松开,还能防止一直按着使cpu一直工作