EDN China > 技术文章 > 微处理器与DSP > 多媒体处理器 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 探讨布尔技术解读键盘矩阵的方法

来源:单片机与嵌入式系统应用/作者:宁波天安(集团)股份有限公司 张春峰?? 2007年11月27日 ?? 收藏0

  2.7 扫描哪个输出口线输出有效电平

  图2所示的键盘矩阵电路结构中,输出端口Pm.x与输入端口Pn.y是直接由键连接交叉的。当键按下时哪一个输入端口的电平被拉低确定后,则跳转到查询Pm.x(Pm.0、Pm.1、Pm.2、Pm.3、Pm.4、Pm.5)六个端口中是哪个端口输出低电平,进而确定具体哪一个键按下,跳转至几号键进行解释处理。任何时候扫描输出低电平的端口是唯一的,也只有行扫描输出低电平的那个Pm.x口,才会将列输入Pn.y口的电平拉低。这时,键按下有效交叉的行、列相应端口都处于低电平。

  若运用典型的51系列MCU的指令去写汇编程序来解读矩阵的具体键时,则有:

Key_scan:JNB Pn.y,Key_matrix_j
    ;当输入端口Pn.y(y=0,1,2,3,4)被拉低时,跳转至Key_matrix_j(j=y)
      LJMPReturn
    ;若端口Pn.y一个也没被拉低,则返回
  Key_matrix_j: JNBPm.x,Key_gloze_i
    ;当知晓Pn.y的某个端口被拉低,则再查询Pm.x(x=0,1,2,3,4,5)的哪个端口扫描输出低电平来确定具体是i号按键,则跳转至Key_gloze_i(i=1,2,3,…,29,30)以对i号键作相应的解释处理
      LJMPReturn
  Key_gloze_1:…;1号键解释处理
      LJMPReturn
  Key_gloze_2:…;2号键解释处理
      LJMPReturn
  …
  Key_gloze_29:…;29号键解释处理
      LJMPReturn
  Key_gloze_30:…;30号键解释处理
  Return:RET;键盘矩阵扫描解读返回

键盘矩阵扫描倒树形结构

图4 键盘矩阵扫描倒树形结构

  以上汇编语言所述的键盘矩阵扫描解读过程,可借助图4来较形象化地解释。由图4可见,每一Pn.y(y=0,1,2,3,4)口都与Pm.x(x=0,1,2,3,4,5)的6个口有关联,而每一Pn.y口线与Pm.x的6个口线中任一口线相交都揭出一个键(i号),结合以上程序,若输入端口Pn.0被拉低,且是端口Pm.1有效扫描输出低电平,则有(JNBPn.0,Key_matrix_0)指令跳转至Key_matrix_0,继而查询输出端口(JNBPm.1,Key_gloze_6)跳转至Key_gloze_6,也就是先查询到Pn.0被拉低跳转至Key_matrix_0→再查询到Pm.1扫描输出低电平跳转至Key_gloze_6→揭出是6号键按下并赋予其相应的解释处理。以此类推。

  如果键盘矩阵的电路结构如图3所示,其扫描输出端口Pm.x不是直接与输入端口Pn.y交叉的,而是经过用于数码显示位驱动的反相组件后再与入端口Pn.y交叉的。为此,其扫描输出有效端口不是低电平了,而是输出高电平经反相组件后再成为低电平,通过按键同样将与之交叉的输入端口线拉低。所以,在查询输入端口时与图2所示的是相同的,而在查询扫描输出有效端口时与图2的就有所不同了。

  图2所示电路结构查询的是哪个端口扫描输出低电平,有:

  JNBPm.x,Key_gloze_i;

  图3所示电路结构查询的却是哪个端口扫描输出高电平,则:

  JBPm.x,Key_gloze_i;

  由图4可知,若输入端口Pn.2被拉低,且是端口Pm.3有效扫描输出高电平,则有先查询到Pn.2被拉低→再查询到Pm.3扫描输出高电平→揭出是18号键按下并赋予其相应的解释处理。依此类推。具体的程序跳转如图5所示,可见其过程都是位的查询跳转。

键盘矩阵扫描程序跳转结构图

图5 键盘矩阵扫描程序跳转结构图

  2.8 执行各对应键具体处理

  因为输出口线为行线,与输入口线为列线的交叉点是唯一的,故确定了输出哪一端口与输入哪一端口,也就确定了具

体哪一个键(i号键)按下了,就能赋予该键相应的解释处理。整个过程中,没必要区别哪个是数字键、哪个是功能键。每一个键的解读都是等价的,是数字键就直接赋予其相应的数值处理,是功能键就直接赋予其具体的功能解释。

  2.9 置位键解读标志位

  为保证键每闭合一次MCU只作一次处理,每一次键解读后都将置键解读标志位为逻辑1。对于键解读标志位的置位,可以在每一个键解释处理完毕后进行,也可在消抖动延时后就进行一次总置。不管键有多少个,键解读标志位用的却是同一个。

  其实,引入了键解读标志位,不只是控制键每闭合一次MCU只作一次处理,还可对那些持久按着的键有控地进行多次处理(如用于对一些数据递进、或递减的连续设置等)。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

布尔技术? 键盘矩阵? MCU?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈