关于矩阵键盘扫描的理解

设计思路:
要理解扫描原理,就必须重点理解这一点:

    我们知道row【3:0】作为FPGA的输入口,而col【3:0】作为输出口,当没有键按下时,row为上拉为高电平(因为

IC的输入口阻抗很大,导致上拉电阻两侧几乎没有电流流过,就没有形成压降,所以上拉电阻两侧电压相等=3.3V左右,为高电平),而在初始状态col作为输
出,处于输出低电平状态(col=4‘b0000),当键被按下时,只有当col输出有低电平时,row【3:0】才有可能有低电平输入。因为如果键被按下
则row【3:0】与col【3:0】是接通了的,所以col为低,则row才可能为低,相反,如果col为高,即使键被按下,row也为高。这为后面扫描原理
形成判断具体哪个按键值有关。

 行判断:

     由4*4矩阵键盘的原理图我们可知:行输入信号row[3:0]在上拉电阻的作用下,初始状态保持高电平,当有键被按下的时候才会变成低电平,而且对于4*4的

矩阵一行中只要有一个键被按下(且在按键被按下那一行的COL输出为0时),则整行电平都会被拉低(如果col为1 就算按键按下row也不会为低) ,所以我们可以根据
row[3:0]这4个引脚信号的高低,判定具体哪一行有键被按下。(因为初始状态col为低电平4’b0000).
如:假设第一行被按下,则引脚信号即为0111;
假设第二行被按下,则引脚信号即为1011;
假设第三行被按下,则引脚信号即为1101;
假设第四行被按下,则引脚信号即为1110;

 列判断:
      由上可知,我们已经得到了行的键值,现在只需要确定列的键值col[3:0],则可以确定具体的输出键值和具体那个键被按下。
      所以,我们对列进行编码,我们假设对列进行扫描,第一列。。第二列。。第三列。。第四列,一旦对那一列扫描,我们就将那一列设
      为低电平(设为低电平,假设第二列第二行的键被按下,那么由行引脚信号可知,row为1011,现在开始扫描列了,扫描第一列,则col设为0111,),其余三列为高点平。
                        如:假设对第一列进行扫描,则列键值可编码为0111;
                            假设对第二列进行扫描,则列键值可编码为1011;
              
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值