• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

51单片机4*4矩阵键盘有什么好方法扫描识别

72ad391ea0958b57 2019-04-10 浏览量:981
关于51单片机的4*4矩阵键盘,有什么你比较好扫描识别方法,麻烦告知一下,十分感谢!!
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 一共16个按键,一种是一个一个的测,也就是要使用16个GPIO

    还有一种是分别进行列扫描与行扫描,再定位按下的按键

    • 发布于 2019-04-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 4*4矩阵键盘,按键检测通常使用循环检测;固定周期下去检测是否有按键按下

    • 发布于2019-04-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 最好是将8个IO口接到一个Port口上,方便编程,方法是

    (1)循环行输出高电平,其余为低电平

    (2)检测列高电平,判断相应按键触发

    行列反过来,或电平反过来都可以

    • 发布于2019-04-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 成品的矩阵键盘一般都是8个端口或者12个端口或,要具体看手册,其上一般有扫描处理要求信息。这两种不同的类型扫描程序也不同。

    用的最多的是8个端口的,一般4个行线,4个列线,分别行线输出状态,列线预拉到反状态进行接收;然后列线输出状态,行线预拉到反状态进行接收,两次接收情况综合就可以判断哪些键被按下(导通了),这种方法支持同时按下多个键检测,不过状态值就比较复杂、比较多啦,有16bit啦。


    • 发布于2019-04-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 每次拉低一根行线检测4根列线上的状态,一个循环发送4个行就可以了,这样就可以读取16个键的值了,
    • 发布于2019-04-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 4*4按键矩阵扫描,分为四个行和四个列,四个行作为IO输入,并且上拉到VCC,四个列IO作为输出,默认输出低电平,当有按键按下是行和列交叉接通,按键按下的所在行变为低电平,此时就可以知道是哪一行被按下了。接下来在列输出三个高和一个低电平比如1110,如果此时读取行信息中有低电平,说明列输出的0所在列为按键所在列,这样就知道按键的列信息了。知道了行列信息就可以唯一确定按键了。

    0008.png


    0010.png

    0009.png

    0011.png

    • 发布于2019-04-11
    • 举报
    • 评论 1
    • 0
    • 0
xdsnet 回复了 Angel_YY :这个是单检测,就是同时只能有一个按下的情况。 回复

  • 用51单片机的4x4键盘,一般使用的都是反转法,就是行拉高列拉低,扫一次,行拉低列拉高,再扫一次,这种个人感觉效率不是很高,并且键盘挂载的按键数量有限,可以使用ADC来做,一组电阻串联分压,然后按键接到电阻与电阻的分压点,这样只要分压变化值大于单片机的AD分辨率,可以挂N多按键。
    • 发布于2019-04-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 最好的方法就是加一片串行转并行的芯片,比如74HC595这种,然后用IO口模拟I2C去驱动,这样只需要两个IO口就可以扫描这个4*4矩阵键盘了

    这样做唯一缺陷就是实时性不足,由于用的轮询方法,需要隔一段时间扫描一次,而且51的IO翻转速度比较慢,用模拟I2C也需要消耗时间

    • 发布于2019-04-13
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

51单片机4*4矩阵键盘有什么好方法扫描识别