产品概述

基于单片机的按键 详解单片机的按键检测与控制

小编 2024-10-06 产品概述 23 0

详解单片机的按键检测与控制

按键在单片机控制系统中起到人机交互的作用,通过按键可以输入数据、命令和各种参数,按键侧键测处理是单片机系统设计和开发中一个重要的内容,关系到整个系统的交互性能和稳定性。按键处理形式在单片机系统中有两种形式:直接按键和矩阵编码键盘,下面分别对这两种按键检测电路的特点及编程思路和方法进行分析和介绍。

按键抖动问题产生的原因及解决方法

按键的抖动问题是指按键的触点在闭合和断开瞬间由于接触情况不稳定,从而导致电压信号的抖动现象(由按键的机械特性造成,不可避免)。图8-1所示为一次按键的抖动过程,在按键的前沿和后沿都会有5~10ms的抖动。

图8-1 按键抖动示意图

对于时钟是微秒级的单片机而言,键盘的抖动有可能造成单片机对一次按键的多次处理。为了提高系统的稳定性,我们必须采用有效的方式消除抖动。

去除抖动可以采用硬件方式和软件方式。硬件方式一般是在按键与单片机的输入通道上安装硬件去抖电路(如RS触发器)。软件方式的实现方法是:当查询到电路中有按键按下时,先不进行处理,而是先执行10~20ms的延时程序,延时程序结束后,再次查询按键状态,若此时按键仍为按下状态,则视为按键被按下。

按键检测电路及应用

1. 独立式按键

独立式键盘相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他按键的工作状态,CPU可直接读取该I/O线的高/低电平状态。这种按键硬件、软件结构简单,判键速度快,使用方便,但占用I/O口线较多,适用于按键数量较少的系统中。

独立连接式键盘连接如图8-2所示。当没有键被按下时,所有的数据输入线均为高电平;当任意一个按键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键被按下。

图8-2 独立式键盘接口设计

【例8-1】 利用单片机的P1.0~P1.34个I/O口检测4个按键的触发信息,以实现不同功能的控制。

硬件电路参见图8-2所示,C51参考程序如下:

2. 矩阵式按键

在单片机系统中,当按键数量较多时,为了减少IO口的使用,通常将按键排列成矩阵型式。例如下例中的16个按键,被排列成了如图8-3所示的4X4矩阵方式。该矩阵式键盘由4根行线和4根列线组成,每个行线和列线的交叉点是一个按键。

【例8-2】 将矩阵式键盘的按键值通过数码管显示出来。

电路连接如图8-3所示(电源和震荡电路未标出)。

图8-3 矩阵式键盘按键显示电路图

如何判断被按下的键值呢?

分析如下:

根据下面的电路图,如果已知P1.0端口被置为低电平“0”,那么当按键K0被按下时,可以肯定P1.4端口的电平也变为了低电平“0”。基于这个原理,总结矩阵键盘识别按键的步骤如下:

a)首先判断是否有按键被按下

本例中矩阵键盘中P1端口低4位连接的是列线,高4位连接的是行线。将全部行线置为低电平“0”,全部列线置为高电平“1”。然后检测列线的状态。只要有一根列线的电平为低,则表示有按键被按下。否则没有按键按下。

b)按键消抖

当判断到有按键被按下后,还要进行消抖处理,以确认真正有按键被按下。

c)按键识别

当确认有键被按下后,采用逐行扫描的方法来确定是哪一个按键被按下。先扫描第一行,即将第一行输出低电平“0”,然后读取列值,那一列出现低电平“0”,则说明该列与第一行交叉处的按键被按下。如果读入的列值全部为"1",说明与第一行连接的按键均没有被按下。那么接下来开始扫描第二行,以此类推。直到完成全部行线的扫描。

C51程序如下:

矩阵式键盘与I/O接口应用

【例8-3】 四位数字密码锁

四位数字密码锁功能:通过键盘输入密码,当输入密码与内置密码相同时,继电器动作,表示密码锁解开。为了简化功能,该密码锁只使用12个键(即4x3键盘),其中S1~S9为1~9数字键,S10为0数字键,S11为“*”键作为确认键使用,而S12为“#”键作为复位键,键盘接口电路如图8-4所示,键值布局如表8-1所示。

图8-4 行列式键盘电路连接图

表8-1 键盘布局表

单片机上电时,数码管显示“0000”,此时输入数字,数码管将显示按键值,数字逐个向左递增,四次输入完毕,四个数码管显示输入的数,此时按“*”号按键将启动比较,若输入数字与内设密码相同,继电器动作。如不同,则系统复位等待重新输入密码。当按“#”号键,系统复位,数码管显示“0000”。

在上面键扫描程序基础上增加的源程序如下:

单片机常用电路3-按键检测、LED驱动电路

在单片机入门学习中,最简单、最常见的两种入门元器件大概就是按键和LED了,围绕按键和LED可以基本上把单片机的功能学很多,例如按键可以用来学习单片机的端口输入功能、端口外部中断功能、定时/计数器的计数功能等等;而LED可以用来学习单片机的端口输出功能,定时/计数器的定时功能、PWM功能,位操作功能,电压比较器功能,以及单片机多种操作控制、流程指示等功能。

现在我们就来简单了解一下按键检测和LED驱动电路。

1、按键检测电路

图1是按键检测电路。该电路图包含两种电路:

图1 按键检测电路

一种是连接按键的单片机端口在按键未按下时,处于低电平状态,当按键按下后,单片机端口变为高电平,也就是说,当单片机端口检测到端口电平由低电平变为高电平后,可以判断为按键按下。

另一种是连接按键的单片机端口在按键未按下时,处于高电平状态,当按键按下后,单片机端口变为低电平,也就是说,当单片机端口检测到端口电平由高电平变为低电平后,可以判断为按键按下。

这种按键检测电路的缺点是没有防抖动功能,所以要实现消抖功能,必须通过单片机软件编程实现。

另外,电路中的电阻的作用是为了保护端口,避免电源直接连到单片机端口导致的烧毁端口情况发生。

2、带消抖功能的按键检测电路

图2是带消抖功能的按键检测电路,同样的,带消抖功能的按键检测电路也分为按键平时处于高电平还是低电平两种。我们以按键未按下时处于高电平,按下后处于低电平为例来了解一下电路原理。

图2 硬件消抖电路

当按键断开时,电源电压通过电阻对电容充电,电容上的电压与电源电压相等,当按键按下时,由于按键内阻很小,电容通过按键迅速放电,按键两端电压迅速降到接近0V,单片机输入端为低电平,在按键按下时,由于抖动导致按键会短时断开,电源电压经电阻对电容充电,由于电阻的阻值较大,短时间内电容充电量很少,所以电容两端电压基本不变,单片机输入端的电平也基本保持不变,从而保证了按键抖动时仍可以使单片机输入端保持稳定的低电平信号。

这种硬件消抖电路需要根据实际情况选择R和C的值,具体请参考我在头条里的文章《基于proteus的51单片机开发实例(7)--按键的检测》。

3、简单的LED驱动电路

图3是一种简单的LED驱动电路。这两个电路一个是LED发光时,电流经过LED流到单片机端口,俗称“灌电流”驱动LED,另一种是LED发光时,电流经过单片机端口流到地,俗称“拉电流”驱动LED。

图3 LED驱动电路

这种电路的缺点是:单片机的驱动能力有限,一般单片机端口驱动电流能力在10mA以下,并且单片机总的驱动电流一般不超过100mA。所以当单片机电路中电路模块较多时,可能会导致驱动能力不足,因此这种方式只适合在学习和实验时,不适合用在单片机产品中。

4、通用LED驱动电路

图4,图5是常用的LED驱动电路。在这两个电路中,单片机端口实际上相当于开关的功能,当单片机输出高(或者低)电平时,LED点亮(或者熄灭);当单片机输出低(或者高)电平时,LED熄灭(或者点亮),驱动LED发光所需的电流由三极管提供,单片机端口只负责控制三极管的导通或者截止就可以了。

图4 LED驱动电路1

图5 LED驱动电路2

5、LED驱动芯片

现在有很多专用的LED驱动芯片,可以直接驱动多路LED,至于LED驱动芯片的电路,每种芯片有各自特点,这里就不多说了。

相关问答

单片机的按键 怎么外接-ZOL问答

一般单片机的外接按键有三种接法:1、每个I/O端口接一个按键:按键接另一端通常是接地,I/O口通常还应该接一个上拉电阻,有些单片机的I/O口可以配置成内部上拉...

单片机的按键 开启和复位电路图-ZOL问答

单片机的复位有上电复位和按钮手动复位两种。如图(a)所示为上电复位电路,图(b)所示为上电按键复位电路。上电复位是利用电容充电来实现的,即上电瞬间RST端的电...

单片机 怎么设置一个 按键 开关?

要设置一个按键开关,首先需要选择一个合适的单片机引脚作为输入引脚。然后,将按键连接到该引脚和地线之间。接下来,在单片机的程序中,需要配置该引脚为输入...

单片机按键 功能实现原理?

单片机按键功能的实现原理是通过将按键连接到单片机的某个引脚,在程序中进行相应的输入输出操作。当按键按下时,引脚会被拉低,单片机便会对该引脚的电平状态进...

51 单片机按键 切换的三种状态?

分别是短按、长按和组合按。短按是指按下按键,接触时间非常短,一般在几十毫秒到一百多毫秒之间;长按则是按下按键,接触时间比较长,一般在几百毫秒到一秒钟之...

单片机 汇编语言 按键 控制流水灯,两个开关k1,k2。实现功能按下k1,流水灯左移动,按下k2,流水灯右移动?

假设P0.0接k1,P0.1接k2,k1或k2闭合时,P0.0或P0.1为低电平0,断开时为高电平1;P2口的8位接8个发光二极管的阳极,发光二极管的阴极通过下拉电阻接地,要点亮相...

5 51 单片机 矩阵 按键 如何使用来控制步进电机?

泻药不加译码器或者锁存器的话,可以用12个引脚+4个三极管(当然还有必要的电阻)实现,如果你的单片机有大电流io口的话,4个三极管也可以省了,12个引脚可以...

单片机 如何设置k1 按键 ?

要设置单片机的K1按键,首先需要确定K1按键的引脚连接。然后,在单片机的程序中配置相应的引脚为输入模式。接下来,可以使用中断或轮询的方式检测K1按键的状态...

单片机按键 排列成矩阵形式的主要目的是?

按键排列成矩阵形式的主要目的是提高输入输出的效率和可靠性。矩阵按键可以让多个按键共享同一个引脚,从而减少单片机的引脚数量,降低成本。此外,矩阵按键还可...

51 单片机按键 线怎么连?

一般单片机的外接按键有三种接法:1、每个I/O端口接一个按键:按键接另一端通常是接地,I/O口通常还应该接一个上拉电阻,有些单片机的I/O口可以配置成内部上拉...

猜你喜欢