按键是比较常用的也是比较简单的人机交互操作,按键实际上是一个非自锁的轻触开关,按下时触点会闭合,松开是触点断开。电路或者单片机通过检测按键之后的高低电平变化,来检测按键是否按下,通过程序的控制,就可以实现不同功能的选择与设置。

独立按键的特点和适用场合

独立按键最大的特点是一个按键占用一个端口,这样的好处是不会因为其他按键或线路出现问题而影响当前按键的功能,缺点就是当按键比较多时,占用的端口比较多。所以这种按键的连接方式一般用在按键较少或者控制芯片的端口空闲较多时,以及对部分功能的稳定性或者操作的优先性有要求的场合。

单片机独立按键的工作原理

上图是常用的按键检测硬件连接原理图。四个按键K1-K4通过上拉电阻后输入到控制芯片的端口,在按键未被按下时,由于上拉电阻的存在使端口检测为高电平,按键按下时,对应的端口会变为低电平,控制芯片的程序通过循环检测端口的高低电平变化就可以检测哪个按键被按下了。

按键的防抖消除

按键被按下时,在内部的触点接触的一瞬间,它的状态是不稳定的,会在通断之间高速转变,这样被控制器检测之后就会形成多次的触发。为了避免按键抖动所带来的误动作,要进行按键消抖动。

单片机独立按键的工作原理

按键的消抖一般从硬件及软件两方面着手。硬件消抖一般会在按键两端并联电容,通过电容的充放电作用将按键按下时的高频振荡吸收掉。单纯的硬件消抖是不够的,虽然这能够消除大部分的抖动信号,在软件设计上仍然需要对抖动进行去除。

单片机独立按键的工作原理

软件消抖的程序控制思路比较简单,一般是通过延时。当检测到按键被按下时,不会立即触发对应功能的控制,而是经过短暂的延时后,再去判断当前端口的电平信号,如果仍然检测到为按键按下时的电平,才会认为当前按键被按下。延时的这段时间,正好是按键抖动发生的时间,再次检测时,按键已经稳定按下了。

单片机独立按键的工作原理

另外还有一种在软件上消除抖动和防止误触发的控制,一般是把按键松开作为判断按键的标志,而不是按下时。

其他类型的按键检测方式

独立按键由于每个按键都要单独使用端口,在按键较多时是比较浪费资源的,如果需要把按键单独引出,也是需要很多引线的。所以独立按键一般只应用在数量比较少的控制电路中,对于按键较多的电路,很少采用这种按键连接方式。

矩阵按键

矩阵按键类似于驱动LED等控制电路的点阵连接,它是将布线设置成行列交叉形式,按键连接在行列交叉点上。这样的按键链接并不需要每个按键对应一条线,每一行或列的连线是被多个按键共用的,这样能够节省很多的端口。

单片机独立按键的工作原理

矩阵按键的数量为行列线的乘积,比如上图中4根行线4根列线,最多能够检测16个按键,通过二极管等其他辅助元件,也可以实现更多按键的检测。矩阵按键的检测在程序设计时也是比较简单的,可以分时使列线输出高电平,通过检测返回数据中的电平信号就可以知道当前列中哪个按键被按下了。

这种按键的连接方式能够节省很多端口资源,也是被很多电器所采用的。但是这种方式所使用的端口还不是太少,对于需要引出键盘的电路,仍然需要很多根连线。

AD按键AD按键也叫做模拟按键,它是通过电阻阵列对基准电压进行分压,按键按下时短接部分电阻产生电压值的变化,通过检测电压来判断按键被按下的。

单片机独立按键的工作原理

如上图中的AD按键检测电路,5V的基准电压通过多个电阻的分压,产生不同的分压点,每个点连接一个轻触按键。按键被按下时,产生的电压变化通过控制器的AD端口采集,通过判断当前检测到的电压,来判断对应按下的按键。

这种按键方式最大的优点就是节省端口,理论上无论使用多少数量的按键都只需要一个端口,但是它也有一定的缺点。一个是对电压采样的精度要求,尤其是按键较多,电压比较接近时;第二个缺点是,按键使用时间长时,内部触点会发生氧化,按键的电阻就会增大,或者在按下时发生变化,这样就会使输出的电压发生改变,检测到的按键就会产生误判断。

所以使用AD按键时,通常会采用不均等阻值的电阻,使输出的电压相差较多而避免误判断,另外就是当按键长时间使用氧化时,需要整体更换。