大家好,今天小编关注到一个比较有意思的话题,就是关于矩阵按键电路图怎么看的问题,于是小编就整理了1个相关介绍矩阵按键电路图怎么看的解答,让我们一起看看吧。
能否说明独立式键盘的特点及适用场合,是如何用软件法消除按键的?
按键是比较常用的也是比较简单的人机交互操作,按键实际上是一个非自锁的轻触开关,按下时触点会闭合,松开是触点断开。电路或者单片机通过检测按键之后的高低电平变化,来检测按键是否按下,通过程序的控制,就可以实现不同功能的选择与设置。
独立按键的特点和适用场合
独立按键最大的特点是一个按键占用一个端口,这样的好处是不会因为其他按键或线路出现问题而影响当前按键的功能,缺点就是当按键比较多时,占用的端口比较多。所以这种按键的连接方式一般用在按键较少或者控制芯片的端口空闲较多时,以及对部分功能的稳定性或者操作的优先性有要求的场合。
上图是常用的按键检测硬件连接原理图。四个按键K1-K4通过上拉电阻后输入到控制芯片的端口,在按键未被按下时,由于上拉电阻的存在使端口检测为高电平,按键按下时,对应的端口会变为低电平,控制芯片的程序通过循环检测端口的高低电平变化就可以检测哪个按键被按下了。
按键的防抖消除
按键被按下时,在内部的触点接触的一瞬间,它的状态是不稳定的,会在通断之间高速转变,这样被控制器检测之后就会形成多次的触发。为了避免按键抖动所带来的误动作,要进行按键消抖动。
按键的消抖一般从硬件及软件两方面着手。硬件消抖一般会在按键两端并联电容,通过电容的充放电作用将按键按下时的高频振荡吸收掉。单纯的硬件消抖是不够的,虽然这能够消除大部分的抖动信号,在软件设计上仍然需要对抖动进行去除。
软件消抖的程序控制思路比较简单,一般是通过延时。当检测到按键被按下时,不会立即触发对应功能的控制,而是经过短暂的延时后,再去判断当前端口的电平信号,如果仍然检测到为按键按下时的电平,才会认为当前按键被按下。延时的这段时间,正好是按键抖动发生的时间,再次检测时,按键已经稳定按下了。
另外还有一种在软件上消除抖动和防止误触发的控制,一般是把按键松开作为判断按键的标志,而不是按下时。
其他类型的按键检测方式
独立按键由于每个按键都要单独使用端口,在按键较多时是比较浪费资源的,如果需要把按键单独引出,也是需要很多引线的。所以独立按键一般只应用在数量比较少的控制电路中,对于按键较多的电路,很少采用这种按键连接方式。
矩阵按键
矩阵按键类似于驱动LED等控制电路的点阵连接,它是将布线设置成行列交叉形式,按键连接在行列交叉点上。这样的按键链接并不需要每个按键对应一条线,每一行或列的连线是被多个按键共用的,这样能够节省很多的端口。
矩阵按键的数量为行列线的乘积,比如上图中4根行线4根列线,最多能够检测16个按键,通过二极管等其他辅助元件,也可以实现更多按键的检测。矩阵按键的检测在程序设计时也是比较简单的,可以分时使列线输出高电平,通过检测返回数据中的电平信号就可以知道当前列中哪个按键被按下了。
这种按键的连接方式能够节省很多端口资源,也是被很多电器所采用的。但是这种方式所使用的端口还不是太少,对于需要引出键盘的电路,仍然需要很多根连线。
- AD按键
如上图中的AD按键检测电路,5V的基准电压通过多个电阻的分压,产生不同的分压点,每个点连接一个轻触按键。按键被按下时,产生的电压变化通过控制器的AD端口采集,通过判断当前检测到的电压,来判断对应按下的按键。
这种按键方式最大的优点就是节省端口,理论上无论使用多少数量的按键都只需要一个端口,但是它也有一定的缺点。一个是对电压采样的精度要求,尤其是按键较多,电压比较接近时;第二个缺点是,按键使用时间长时,内部触点会发生氧化,按键的电阻就会增大,或者在按下时发生变化,这样就会使输出的电压发生改变,检测到的按键就会产生误判断。
所以使用AD按键时,通常会采用不均等阻值的电阻,使输出的电压相差较多而避免误判断,另外就是当按键长时间使用氧化时,需要整体更换。
特点
独立键盘的特点是廉价、简单,几乎可以应用在所有需要控制的场景中。
只要按下去会返回的几乎都是独立式键盘,最明显的就是iphone的Home键了,在你按下去之后,它的键盘还会回到最初始的状态,这就是独立式键盘。
除此之外,我们的电脑键盘、遥控键盘这些也是独立键盘。
但是这种键盘不是独立键盘,比如iPhone的静音键,它有两种状态,分别是静音和非静音状态,且不能自己恢复。
电路符号
独立键盘和非独立键盘的电路符号如下:
独立按键的好处是可以反复的施加同一个信号,比如手机的音量键,我们按下去一次,音量增加一点,以此往复。
总之独立按键可以做很多非独立按键不能做的事情。
软件消抖
什么是软件消抖?
我们先看一下独立按键的应用场景
当按键未按下的时候,单片机检测到的是5V电平;
当按键按下时,单片机检测到的是0V;
但是呢,真是的按键按下的时候不是这样的。
我们可以看一下按键在按下的这一瞬间电位的波形。
从波形可以看出,按键并不是按下之后立马变为0V,而是有一个抖动的过程。
如果单片机直接检测,可能会乱动作,这时候应该给单片机加一个延时,比如说在第一次检测到按键按下之后,延时30ms,然后再检测一次,如果此时检测到的还是按下的状态,则说明按键被按下。
至于这个延时是多少,还得具体按键具体分析,如果是做产品要用到软件消抖,一定要拿示波器测试一下抖动的波形,看看抖动的时间到底是多少!
独立式按键和矩阵式按键相对,是指一个按键占用一个GPIO口的情况,主要用在按键数比较少的场合,用作按键输入实现产品的人机交互。比如洗衣机的面板按键、电饭煲的按键等。
按键一般都是通过机械式按键来实现的,根据是否自锁可以分为自锁按键和非自锁按键。自锁按键,导通和断开需要两次按键动作,第一次按下时处于导通/断开状态,松手后保持该状态,第二次按下后实现复位。而非自锁按键,松手后即复位,如果要状态保持,需要持续按压。机械式按键是通过簧片接触和断开实现开关动作的,所以在按下和弹起的时候都会出现抖动的情况。如果不处理抖动就会出现误动作。所以,机械式按键的消抖处理是必须的。如下图所示。
抖动发生在按下和弹起时,一般抖动持续5-10ms,程序在按键检测时,如果不进行滤波则会出现按键多次的误触发。那么消抖程序该如何设计呢?
在学习单片机初期,很多例程都告诉我们采用延时的方法去抖动,思路如下:当检测到按键动作时,先延时10ms,在进行一次按键检测,如果还是检测到按键动作,则再延时10ms,如果还能检测到按键动作则认为按键发生了。这种方法最容易理解,但是非常浪费资源。不建议使用。
在设计产品时,一般使用如下两种方式。第一种方式,定义一个按键计数变量和标志位,当检测到按键时,让按键计数变量自加,判断按键计数器的值如果大于一定值,则标志位置1,否则标志位清零。
第二种方式。采用定时器中断,设置10ms定时变量,当按键发生时启动定时器,10ms后进入中断再次检测按键事件,如果依然检测到按键发生则代表按键有效。
以上消抖方案可以根据实际情况进行优化。
以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式。感谢大家。
到此,以上就是小编对于矩阵按键电路图怎么看的问题就介绍到这了,希望介绍关于矩阵按键电路图怎么看的1点解答对大家有用。