android嵌入式键盘,嵌入式系统的键盘设计

在嵌入式系统中,经常需要接受用户输入或者选择。按键多的时候,一般采用现成的键盘扫描芯片来处理,如8279,而按键少的时候,则一般自己用I/O口做键盘扫描端口,这样便需要自己编写键盘扫描程序程序。

键盘扫描方式有两种,即交叉扫描和直接扫描,它们各有优点。在同样多I/O口的情况下,交叉扫描可以接比较多的键盘,但处理相对复杂一些,直接扫描可以接的键盘较少,但处理简单。

所谓交叉扫描,是将I/O口分成两组,分别做行和列,形成一个键盘矩阵。假设行为M个,列为N个,则可以提供MxN个按键,接法如下:

r_cs.JPG

扫描每隔一段时间进行一次,例如50ms。扫描时,先将行作为输出,列作为输入。先在第一行输出L(低电平),其余行输出H(高电平),读取N个列的值,如果有L,则说明在则一列上有按键按下,那么将行变为输入,列变为输出,在该列输出L,其余列输出H,读出M行的值,哪一行为L则该行和该列交叉的按键被按下,这样便得到了按键的ID。按照这个方法,依次扫描到第M行,则所有按键都能被扫描到。在扫描过程中,如果有多行或者多列读出来的值为L,则说明有多个按键按下,因为每个按键都能被准确定位,因此每次只接受一个按键还是都接受可以按自己的需要处理。

所谓直接扫描,是每个端口直接接按键,不与其它端口交叉,因此有多少端口就可以接多少按键。接法如下:

r_ds.JPG

跟交叉扫描一样,也是每隔一段时间扫描一次。扫描时,直接读取端口的值,如果某位为L,则表示对应的按键按下。

当然,不管是交叉扫描还是直接扫描,都有去抖动的问题,可以用软件来解决,如多次判断,或者加大扫描间隔,也可以用硬件来解决,如加RC网络。则要看自己的喜好和需要了。

还有一个问题就是重复按键的问题,即按住一个键一段时间后,可视为重复按键,这个也是根据需要通过软件的算法做到的。

posted on 2005-03-13 20:14 逍遥万里 阅读(2519)

--------------------next---------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值