您的位置 首页 解答

按键规划一览

按键——在嵌入式系统应用里,占有非常重要的地位。按键——也是用户交互系统里最重要的一个部分。虽然,目前大行其道的触摸屏,电容屏吞噬了大壁江山,但是按

  按键——在嵌入式体系运用里,占有十分重要的方位。按键——也是用户交互体系里最重要的一个部分。尽管,现在大行其道的触摸屏,电容屏吞噬了大壁江山,可是按键仍然不行代替。所以,咱们就来看看按键是怎么规划的吧!

  1、单个I/O口的完成办法

  这种办法硬件规划最为简略,软件完成也最为简略,可是其占用I/O口份额较高,假如按键大于4个,则此计划就值得商讨。硬件原理示意图如图1所示:

  图1 单个I/O口完成办法

  软件的完成办法较多,各有各自特色,无论是大师级的,仍是菜鸟级的都能担任。下面版主给咱们介绍这种被誉为“最经典的按键扫描办法”。

  源代码如下:

  unsigned char Trg;

  unsigned char Cont;

  void KeyRead( void )

  {

  unsigned char ReadData = PINB^0xff; // 1

  Trg = ReadData & (ReadData ^ Cont); // 2

  Cont = ReadData; // 3

  }

  Trg(triger) 代表的是触发,Cont(continue)代表的是接连按下。这两个变量均被声明为全局变量,被用做标志符。咱们在运用时,需求以一个守时距离(如20ms)来查询这两个变量,并计数来判别去抖与长按。

  2、矩阵扫描办法(一)

  矩阵扫描的办法,我想咱们在学习嵌入式时,教程一定会介绍的。因而这儿版主也就不再多说了。硬件规划如图2所示:

  图2 矩阵扫描办法(一)

  软件规划上,一个行扫描,一个列检测。根本在所有的教程里都有这个软件示例。这儿,版主不再赘述。

  此办法的缺陷是中规中矩。

  3、矩阵扫描办法(二)

  看完讲义的教程后,下面的办法或许会给咱们耳目一新的感觉。硬件规划如图3所示:

  图3 讲义规划升级版

  软件规划也是适当简略的,假定键盘队伍IO口标号分别为H1/H2/H3和V1/V2/V3,扫键流程一般如下:Step1、H1/H2/H3和V1/V2/V3都设置为输入;Step2、读H1/H2/H3和V1/V2/V3状况,假如Hx和Vy读到的状况均为0,则以为Hx与Vy穿插方位的键按下。

  从上面流程能够看出程序代码要简略不少,既能削减扫键的代码量,又能加速扫键处理的时刻,站在软件的视点看此办法要较讲义的办法先进的多。

  此办法的缺陷是:形似这样三个触点的按键不太好找。

  4、矩阵扫描办法(三)

  当现实情况适当杂乱时,仅有有限个IO口,可是仍然需求很多按键输入时,咱们就必须要开动脑筋了。正如下图4所示的硬件电路。

  图4 新式按键扫描矩阵规划

  3个IO口扫出9个键!咱们再剖析一下剖析通得过才干真实运用。假定扫键流程:先扫对地的3个键,再扫描上面2排按键。先扫对地3个键,判别没有按键,接着对逐个对IO口进行扫键。但当对某一IO口扫键时,假如有对地的键按下,这时有可能会误判按键,由于对地键比其他键有更高的呼应优先级。例如:扫IO1,IO1 输出“0”,刚好此刻S4按下,IO2 检测到有按键,那就不能判别是S4仍是S9。咱们能够在程序上防止这种按键误判:若IO2 检测到有按键,那下一步就去判别是否有对地键按下,假如没有,那就能够正确地判别是S4了。

  这种办法的缺陷是这个电路规划现已被申请专利了,所以小伙伴们~~这个电路规划千万不要在工作中运用哟~~~

  5、专用按键扫描芯片完成办法

  这个版主并不想多说了,咱们最最常用的101键盘便是归于此类的完成办法。当然,关于嵌入式运用的小型按键也有小型的按键扫描芯片。这儿版主引荐给咱们的是周建功的按键扫描专用芯片zlg7920。这个芯片是经过I2C办法通讯,不再占用体系的IO引脚,完成也十分办法,参考资料百度也是十分多的。这儿版主就不多说了,广告现已打了不少了,嘿嘿~~

  总结:在版主的实践工作中,主要以引脚办法来完成按键,再多的按键引荐仍是用专用芯片来做吧~~

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/116119.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部