单片机的按键触发设计原理图解析
在学习单片机的时候想必大家都接触过按键,按键是一个人机交互的接口设备,在刚开始接触的时候最简单也是最直接的办法就是将按键直接接到一个I/O口上,然后检测I/O上的电平变化,假设按键另一端接在GND上,则一旦检测到低电平就认为是按键触发了(此处假设已经进行了去抖,软件去抖也好,硬件去抖也好),乍一看,no problem!而且还是very good!其实这对于初学者而言确实是入门的不二选择,但对大佬而言就是错误的设计思想。
问题出在去检测I/O口这个过程,CPU必须每隔一段时间检测,一般用定时器去实现,间隔时间太长了达不到实时的性能,时间太短了有浪费CPU资源,因为在很多场合按键处于触发的时间段时相当少的,比如学校的自动圈存机,一般情况下时没人用的,那就意味着CPU每间隔时间去查看I/O是非常不合理的,只有当按键按下采取查看,这才是最合理的方式。
这样就必须引入外部中断的设计方案,一个按键的设计原理图如下:
如果有两个甚至多个按键,那如何弄了,很简单,使用或门来解决这个问题。电路图如下:
单片机常用电路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驱动芯片的电路,每种芯片有各自特点,这里就不多说了。
相关问答
32 单片机按键 控制开关是什么 原理 ?32单片机按键控制开关工作原理是按键是比较常用的也是比较简单的人机交互操作,按键实际上是一个非自锁的轻触开关,按下时触点会闭合,松开是触点断开。电路或...
单片机按键 功能实现 原理 ?单片机按键功能的实现原理是通过将按键连接到单片机的某个引脚,在程序中进行相应的输入输出操作。当按键按下时,引脚会被拉低,单片机便会对该引脚的电平状态进...
单片机 开关电源 原理 ?单片机开关电源是一种基于电磁感应原理的高效率电源,通过改变感应电动势实现电源输出电压的调节和稳定。它主要由交流输入端、整流电路、滤波电路、开关电路、...
单片机 矩阵 按键原理 ?矩阵式结构的键盘列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电...
单片机 的 按键 开关抖动的产生原因,抖动的特点和如何消除抖动 ...判定打开,软件解决可以降低成本,但是有时候硬件劣化超出延时的范围会造成故障。硬件解决:专用的去抖芯片或者自己组装一个双稳态消抖电路,...开关...
单片机按键 去抖啥意思?单片机按键去抖,就是单片机的按键在正常操作中在按压过程时不能一下完全接通,就是按压抖动,单片机在接收这种信息时会判断错误,所有要去掉这种抖动因...
单片机 开关元器件名称?1.电阻固定电阻:RES半导体电阻:RESSEMT电位计;POT变电阻;RVAR可调电阻;res12.电容定值无极性电容;CAP定值有极性电容;CAP半导体电容:CAPSEMI可调...
51 单片机按键 切换的三种状态?分别是短按、长按和组合按。短按是指按下按键,接触时间非常短,一般在几十毫秒到一百多毫秒之间;长按则是按下按键,接触时间比较长,一般在几百毫秒到一秒钟之...
如何用 单片机 控制开关?就是可以控制开关“打开和闭合”的电路啊通过这些开关的打开或者闭合,可以实现许多控制功能,举个最简单的例子,水箱的进水和出水,各有一个开关,通过传感器...
单片机 用一个IO口采集多个 按键 信号,如何实现?在设计中如果用到IO口不够用,我们肯定第一时间想到的就是通过电阻分压,根据按下不同按键,来让不同阻值的电阻接到分压电路中,然后ADC模块做电压数据读取分析...