原创 打破思维定式——两种键盘扫描方法比较分析

2011-4-7 10:26 9218 3 34 分类: 消费电子

说到键盘扫描,相信大多数人第一反应就是行列矩阵扫描,这样我们可以用相对有限的IO口得到尽可能多的按键。键盘扫描是单片机技术的一种基本处理方法,学校的单片机课程都会有相应章节进行阐述,只要按照课本上讲述的方法,一般都能设计出比较可靠的键盘扫描电路与程序。
  
课本上的键盘扫描方法(见下图接法二)不能说是尽善尽美,从易懂性、成本、程序难易程度等方面综合看应该是不错的方法,给人感觉是已经没有太多的改善空间,至少我是这么认为的。

然而前段时间一位台湾朋友画给我的键盘扫描矩阵电路(见下图接法二),让我又一次看到到自己的思维还有许多地方被自己的所谓“经验”束缚着。

 

tu1.jpg



单纯的从硬件接法看,两种接法并没有明显区别,接法一甚至要复杂一些,但如果结合到键盘扫描的程序来看,就会发现接法一确实更好。

两种接法我都没有把上拉电阻包含进来,来让我们看一下两种接法到底有什么不同:

接法二:

我们熟悉的传统扫键处理电路,假定键盘行列IO口标号分别为H1/H2/H3和V1/V2/V3,扫键流程通常如下。

2.1. H1设置为输出,H2/H3和V1/V2/V3设置为输入

2.2. H1分别输出1和0,读V1/V2/V3状态,如果Vy状态与H1一致,则认为H1与Vy交叉位置的键按下

2.3. H2设置为输出,H1/H3和V1/V2/V3设置为输入

2.4. H2分别输出1和0,读V1/V2/V3状态,如果Vy状态与H2一致,则认为H2与Vy交叉位置的键按下

2.5. H3设置为输出,H1/H2和V1/V2/V3设置为输入

2.6. H3分别输出1和0,读V1/V2/V3状态,如果Vy状态与H3一致,则认为H3与Vy交叉位置的键按下


接法一:

新扫键处理电路,假定键盘行列IO口标号分别为H1/H2/H3和V1/V2/V3,扫键流程通常如下。

1.1. H1/H2/H3和V1/V2/V3都设置为输入

1.2. 读H1/H2/H3和V1/V2/V3状态,如果Hx和Vy读到的状态均为0,则认为Hx与Vy交叉位置的键按下

从上面流程可以看出接法一的程序代码要简单不少,既能减少扫键的代码量,又能加快扫键处理的时间,站在软件的角度看确实要比接法二要好。后来我反思了一下为什么我们教材上的传统处理方法没有采用接法一,虽然接法一软件上要简单一些,但硬件布局要复杂,传统的按键只有两条接线,接法一需要三条接线,所以用传统的按键是无法实现的,但现在许多电子产品的按键都用导电橡胶或锅仔片来实现,所以接法一变得可行。


注:这两种电路对于同时按键达到3个的情况都有可能形成错误的按键逻辑。

文章评论31条评论)

登录后参与讨论

jacky631102_473256898 2016-5-16 11:15

Good

312819595_633478710 2016-5-13 09:02

看看

lixupengdonghong_399668983 2012-8-14 20:32

学习 mark

yuhongqing880323_829631586 2012-7-10 12:57

笔锋犀利,但不失中肯之处,有收获!

ssyniuej_957112275 2011-8-19 08:48

这不是新技术,至少在五年前用过。在键盘数量不多的时候,优势不明显。其实完全可以用行列反转式来扫描。速度快,消抖动也很轻松完成,还可以实现任意按键随意组合。这种属于一种梯形扫描。不过楼主的代码有误。如果有人实际做过就知道了。这里面其实不再以什么行线和列线来分析,会掉到一种思维定式里面了。在扫描的时候,每次改变扫描线,只扫描剩下的线就可以了。例如有八条线,当L0输出的时候读取L1-L7,然后将L1输出,读取L2-L7... ...,这样八条线最多能够实现28键,而行列式最多实现的是16键。

330421671_953673522 2011-7-21 15:44

MARK

megaton_sh_901023014 2011-7-10 22:09

民企生存环境太恶劣,只能靠炒作概念来吸引投资者的眼球

737825690_987173384 2011-7-4 21:35

学习学习

wangfeng2008sz_292597452 2011-6-21 23:43

都想挣快钱啊

qiuhuijun758_155307078 2011-6-9 17:45

描述的现象是挺对的。

相关推荐阅读
daishangju_162733976 2015-12-19 20:46
个人所见植保无人机
      实在是太久太久没有了上来了,在过去的这段时间里,一些不方便说的原因,还一些方便说的原因,缠绕在一起,让自己封闭(不好意思用蛰伏这个词)一年多,不单是博客没有来,就是邮箱都很少打开。...
daishangju_162733976 2014-10-23 19:48
微观经济1409
位于东莞市凤岗镇的一家小吃店,旁边是一家酒店,老板去年请了7个工人,每天销售5000~7000,今年9月只有1个工人,销售肯定1000以内。   ...
daishangju_162733976 2014-10-23 17:27
市场去哪儿了
好像是从2008年开始,但凡是市场情况不好,总是能见到是经济危机导致欧美市场疲软的解释,看到电视里面安然轰然倒下、华尔街员工茫然抱着纸箱的画面,我对这个解释也是深信不疑。转眼五、六年过去,可是市场...
daishangju_162733976 2014-09-10 14:29
一名电子工程师在深圳的迁移路线图
1999年中,来到宝安区翻身村,在某电子厂工程部当小弟混饭吃,当时小霸王系诸多好汉豪杰正在那边分猪肉。(今天是WWW要搞的前海CBD)   1999年末,转往福田区华强北,在某电子公司开发...
daishangju_162733976 2014-09-05 16:37
另眼看客户“你自己去做,我一定支持你”这句话
我们常常看到或听到这样的事,小X在某行业中打工,经过一番努力,做得还不错,这时候就有客户说:“小X啊,你自己去做吧,我一定支持你”,这个时候小X往往都是已经在考虑是不是要自己出去单干,听到这样的话...
daishangju_162733976 2014-07-03 16:47
谁是优秀的职业经理人?
LEE是公司元老,在公司上下眼里,他能力超凡,数次于水火中力挽狂澜,没有人不承认他是一名福将。LEE有多厉害呢?他主导的产品成功率大约为三分之一,除了他自己,没人知道他是如何选定产品的,甚至他自己...
广告
EE直播间
更多
我要评论
31
3
广告
关闭 热点推荐上一条 /7 下一条