51单片机独立按键与矩阵按键

本文探讨了初学者在处理独立和矩阵按键时可能遇到的电频初始化问题。独立按键通常接地,而矩阵按键需要行列式扫描或线翻转法检测。作者解释了两种方法的工作原理并给出了链接到更详细的教程。
摘要由CSDN通过智能技术生成

在初学者编写独立按键和矩阵按键的时候,或许有人敏锐的观察到了之间某段代码的区别,即初始值一个是高电频,一个是低电频。因此我们就需要通过查询开发手册来寻找答案。

4aab1fe5f19743c0800b2546791b2777.jpg

b73336f3e5624180998acb06c8174acf.jpg

 

这个是独立按键模块的开发板原理图,可以看到右侧GND是接地模块,即稳定低电频,因此我们左侧的引脚初始值一定为高电频,通过按下按键,改变电频高低,从而形成电流,所以说在编写程序的时候我们可以认为初始值就是一个高电频(某个按下对应a值变为0,进入循环)

1cb317223c2a4e75bca2e42ec7c57e66.jpg

 这个是矩阵按键模块,与独立按键不同的是独立按键两端的引脚并未接地,因此要通过其他方法来检测按键被按下的情况:

方法一:行列式扫描法

因为没有两端没有接地的情况,我们可以通过改变两端的电频来判断按下的位置(不理解矩阵按键行列建议去网上先了解),我们要对按键进行两次判断,将十六个矩阵按键拆分成一个一个的独立按键。我们先将所有列从左到右一次标号1~4,所有行从上到下标号1~4,为了检测哪一列有按键被按下,我们依次对列赋予低电频(其他列为高电频),变为低电频的那一列的四个按键我们就可以近似看为一组独立按键,一端接地,然后对这一组进行检测,看是否有按键变为低电频被按下,编程方法最为简单。

方法二:线翻转法

标号继承,第一次检测,我们先对所有行的I0上述口赋予低电频0,此时假如第三行第二列那个按键被按下,则在扫描的过程中,第二列全为低电频,而其他列因为没有被按下,全为高电频,无法判断是哪一个按键被按下(不管第二列哪一行的按键被按下,只要有一个按下,则整列就全变为低电频,因此需要检测第二次)。

第二次检测,我们将所有列的I0口赋予低电频,然后用同样的方法判断行,第三行第二列按键被按下,则第三行会输出低电频,其他行均为高电频,通过列和行分别扫描检测,最终定位到具体按键。

矩阵按键两种检测程序后续文章再详细阐述,见:

行列式扫描法https://blog.csdn.net/id212204999/article/details/137748069

线翻转法

https://blog.csdn.net/id212204999/article/details/137752949

 

 

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值