矩阵式键盘扫描原理

发布者:RainbowPromise最新更新时间:2011-11-15 来源: 电子产品世界关键字:矩阵式键盘 手机看文章 扫描二维码
随时随地手机看文章

矩阵式键盘扫描原理

  将键值显示在七节显示器上的单片机源码。把每个都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,比对之后就可知道是哪个键被按下。

  比如说扫描码送入01111111,前面的0111是代表扫描第一行P1.0列,而后面的1111是让读取的4行接脚先设為VDD,若第一行的第三列按键被按下,那读取的结果就会变成01111101(注意1111变成1101),其中LSB的第三个bit会由1变成0,这是因為这个按键被按下之后,会被垂直的扫描码电位short,而把读取的LSB的bit电位拉到0,此即為扫描原理。

  由於这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,為了避免让8051误判為多次输入同一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。

  SCAN:

  MOV R3,#F7H ; 扫描初始值

  MOV R1,#00H ; 取码指标

  SCAN1:

  MOV A,R3 ; 开始扫描

  MOV P1,A ; 将扫描值输出到 P1

  MOV A,P1 ; 读入 P1 判断是否有按下

  MOV R4,A ; 存到 R4, 判断是否放开

  SETB C ; C=1

  MOV R5,#04H ; 扫描 P14~P17

  L1:

  RLC A ; 将按键值左移一位元

  JNC KEYIN ; 若 C=0, 有按, 执行 KEYIN

  INC R1 ; 将指标值加 1, 继续扫描下一行

  DJNZ R5,L1 ; 扫描四行

  MOV A,R3 ; 载入扫描值

  SETB C ; C=1

  RRC A ; 扫描下一列(P13~P10)

  MOV R3,A ; 存回扫描值

  JC SCAN1 ; C=1, 尚未完成扫描

  RET ; 结束键盘扫描, 回到 Main Program

  KEYIN:

  MOV R7,#10 ; 消除弹跳

  D2:

  MOV R6,#248

  DJNZ R6,$

  DJNZ R7,D2

  D3:

  MOV A,P1 ; 读入 P1

  XRL A,R4

  JZ D3

  MOV A,R1

  MOV DPTR,#TABLE

  MOVC A,@A+DPTR

  Table:

  db0c0h,0f9h,0a4h,0b0h,099h   ;0-4

  db   092h,082h,0f8h,080h,090h   ;5-9

  db   088h,083h,0a7h,0a1h,086h   ;A-E

  db   08eh            ;F

  end

关键字:矩阵式键盘 引用地址:矩阵式键盘扫描原理

上一篇:基于DSP控制的在线式UPS整流技术
下一篇:嵌入式系统在触摸屏驱动程序中的应用

推荐阅读最新更新时间:2024-03-30 21:50

4×4 矩阵式键盘电路的改进
本文向大家推荐一个精简IO接口的4×4键盘电路,该键盘电路仅仅使用4条IO接口引线,即可完成一般需要8位接口才能完成的功能。 在51单片机系统中,经常使用4×4键盘,一般情况下,都是使用一个8位的接口,外接16个按键。 下图就是一个常规的4×4键盘电路图。 这种常规的矩阵键盘电路,相信大家都司空见惯了,好多人都会编写它的驱动程序。 图中使用了P0口的8个引脚(P0.0~P0.7),分别驱动键盘的行和列。按键的编号,在图中分别标注了0~F。 检测按键的一般的思路是在四个列线,分别输出一个低电平,然后输入行线,逐行检测是否存在低电平。 如果在某行有低电平出现,就说明该行、列的交叉点上的按键,被按下了。 其实,这些行、列引线,是“分
[单片机]
4×4 <font color='red'>矩阵式</font><font color='red'>键盘</font>电路的改进
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved