【51单片机学习过程记录】4矩阵键盘

本文详细介绍了51单片机实现4x4矩阵键盘的工作原理和检测方法,包括硬件分析、实现原理及代码实现。通过设置不同的初始状态,逐行检测按键,以确定哪个按键被按下。同时还探讨了IO口的电平状态和内部结构的重要性。
摘要由CSDN通过智能技术生成

aa硬件分析:

矩阵键盘是指S1--S16按键, 其 连接单片机引脚分别是 P3^0--P3^7,其中可以看出,按键的左端分别连接P3^0--P3^3, 按键的右端分别连接P3^4--P3^7。

电平;然后当按键被按下之后,会改变按键两端的电平状态,例如,S1左端是低电平,记作0,右端是高电平,记作1,那么当S1被按下,左右两端连通,那么按键的右端被拉低,那么按键两端都为0。

(**这里要注意一点,就是单片机IO口的状态,或者说是内部结构需要了解下,例如IO口内部有没接上拉电阻......这个我还没了解,当问题出现时的确需要继续了解的。这里P123口应该是接上拉电阻的,只有P0口没有接,通常P0口是在开发板上外部接上拉电阻。再有,当IO口作接收数据时,要先置1。)


bb实现原理分析:

那么对于四行四列的十六个按键,如何去检测时哪一个按键被按下呢?当然,想到是当按键按下时的电平变化,也就是说,需要设定按键两端为不一样的电平。(当然,这里的假设哪个引脚低哪个引脚高就不多说了,可以自己想下)


设定引脚初始状态,为的是后面检测被按下按键的位置。

设定第一行,即P3^0为低电平,其他都为高电平。  因此,当第一行的第1个按键被按下,那么对应按键右端的引脚P3^4被拉低为0,从而判断出被按下的按键是第一个,S1。

然后,在这种情况下?如何检测得到其他行的按键被按下呢,显然是不足以的。

所以,继续给引脚设定不同的初始状态,进行其他按键的检测。

设定第二行,即P3^1为低电平,其他都是高电平,注意,第一行这时也要设为高电平,因为这次的检测是从第二行开始的(第一行没有被按下时,就需要运行这次的检测了)


如此操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值