×
单片机 > 单片机程序设计 > 详情

单片机小白学习之路(九)---矩阵按键在数码管上显示数字

发布时间:2024-05-20 发布时间:
|

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


矩阵按键模块:

矩阵按键模块

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

矩阵按键识别方法:

(1)逐行扫描

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

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

(2)行列扫描

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

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

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

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

代码:

代码

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

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

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



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式