首页 接线图文章正文

嵌入式按键设计大全(含电路原理图)

接线图 2023年12月31日 18:24 93 admin

按键——在嵌入式系统应用里,占有非常重要的地位。按键——也是用户交互系统里最重要的一个部分。虽然,目前大行其道的触摸屏,电容屏吞噬了大壁江山,但是按键依然不可替代。于是,我们就来看看按键是如何设计的吧!

1、单个I/O口的实现方式

这种方式硬件设计最为简单,软件实现也最为容易,但是其占用I/O口比例较高,如果按键大于4个,则此方案就值得商榷。硬件原理示意图如图1所示:

嵌入式按键设计大全(含电路原理图)  第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张

图2矩阵扫描方式(一)

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

此方法的缺点是中规中矩。

3、矩阵扫描方式(二)

看完课本的教程后,下面的方法也许会给大家耳目一新的感觉。硬件设计如图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张

图4新型按键扫描矩阵设计

3个IO口扫出9个键!我们再分析一下分析通得过才能真正使用。假设扫键流程:先扫对地的3个键,再扫描上面2排按键。先扫对地3个键,判断没有按键,接着对逐一对IO口进行扫键。但当对某一IO口扫键时,如果有对地的键按下,这时有可能会误判按键,因为对地键比其他键有更高的响应优先级。例如:扫IO1,IO1输出“0”,恰好此时S4按下,IO2检测到有按键,那就不能判断是S4还是S9。我们可以在程序上避免这种按键误判:若IO2检测到有按键,那下一步就去判断是否有对地键按下,如果没有,那就可以正确地判断是S4了。

这种方法的缺点是这个电路设计已经被申请专利了,所以小伙伴们~~这个电路设计千万不要在工作中使用哟~~~

5、专用按键扫描芯片实现方式

这个版主并不想多说了,我们最最常用的101键盘就是属于此类的实现方式。当然,对于嵌入式使用的小型按键也有小型的按键扫描芯片。这里版主推荐给大家的是周立功的按键扫描专用芯片zlg7920。这个芯片是通过I2C方式通讯,不再占用系统的IO引脚,实现也非常方式,参考资料百度也是非常多的。

版权与免责声明

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

标签: 硬件设计 电路原理图 嵌入式开发

发表评论

接线图网Copyright Your WebSite.Some Rights Reserved. 备案号:桂ICP备2022002688号-2 接线图网版权所有 联系作者QQ:360888349