单片机常用电路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驱动芯片的电路,每种芯片有各自特点,这里就不多说了。
有继电器引发对单片机驱动能力的思考!
最近,我在用单片机制作一个简易的门禁开锁系统,用到的器件和电子模块有STM32单片机、矩阵键盘、光耦隔离继电器(12V单路)、电磁锁、RFID-RD522射频模块和指纹模块。在测试继电器的时候,发现12v的继电器触发端口的高低电平和数字电子的高低电平不是统一区分的。该继电器的高电平需要4.5v才能触发,但我使用的SM32单片机的IO口只能输出3.3v的高电平。为了测试该模块的好坏,就用了一块51单片机,这就引出了今天的话题。
在测试过程中,发现51单片机原本应该输出高电平的管脚在接了继电器模块后,电压直接被拉低到了3v。看到这个现象,就猜测造成此现象的原因应该是IO口驱动能力不足造成的。取下继电器模块,用万用表测了一下继电器的阻抗,400欧姆左右,相对来说,明显就是一个大负载。
这里介绍2个概念:拉电流和灌电流。
拉电流:IO口输出端向外界提供电流。相当于外界将电流从IO口拉向自己。
灌电流:IO口输出端从外界吸收电流。相当于外界将电流注入IO口。
单片机的数据手册上标明了每个端口的驱动能力,51单片机的端口最大的灌电流才6mA。6mA什么概念?6mA的驱动电流要使负载达到5v电压需要多大的负载?根据欧姆定律,至少需要接近1K的电阻。而上述继电器的阻值才400欧姆左右,当然输出达不到5v。
IO口驱动能力理解
以51单片机的P1口为例,我们看一下它的内部结构
当晶体管导通时,P1端口输出0(低电平)。当晶体管截止时,P1口输出1(高电平)。当P1端口接负载RL时,晶体管截止时,就相当于内部上拉电阻和负载RL串联。此时RL两端真的能够输出高电平吗?
答案是不一定的!根据电阻分压。Vout = VCC/(1+R/RL)只有分母接近1的时候,输出才是高电平VCC。能够输出高电平的条件是:RL >> R 。而R是IO口内部固定的,是某一个值。我们可以得出串联电路中电流(驱动电流)的表达式,从表达式中,我们可以看出,负载小(电阻R大)的时候,需要的驱动电流就小,负载大(电阻R小)的时候,需要的驱动电流就大。
提高单片机的IO驱动能力
1、用低电平+非门的组合驱动。单片机输出低电平的时候的驱动能力要高于输出高电平时候的驱动能力,单片机输出0,经过非门就变成了1。
2、外部加三极管驱动电路。但需要注意的是,驱动一些电感性元器件的时候,一定要在电感性元器件两端加一个二极管来泄流(泄流二极管)。三极管导通的时候,电感性器件上肯定会有电流存在。当三极管截止时,由于电感电流不能突变,所以如果不加二极管续流,电感上的电流会直接加在三极管上,很有可能损坏三极管。
相关问答
单片机驱动能力 如何提高?最好是电路图。89c52芯片的?单片机是弱电控制中心单片机只是一个控制中心,IO的驱动能力是很弱的,只能用于信号处理或者信号控制,最多是驱动一个LED作为指示灯。驱动负载需要加入三极管、...
买 单片机 给 驱动 吗?答买单片机不需要给驱动的因为大多数的单片机IO一般都有几十毫安的灌电流驱动能力是单片机自身带的,硬件模块也是不需要驱动的,如果是外围硬件模块,那么是否需...
继电器为什么不可以直接用 单片机驱动 ?你的电路接法是否错误呢?查看一下,单片机从理论上讲是不能直接驱动继电器的,不管你的接法如何,直接连接可能会烧坏单片机I/O口,你的原因可能是已经把I/O口烧...
单片机的 P0口具有 驱动 4个lsttl负载的 能力 是什么意思?怎样是 驱动 ?lsttl是指低功耗高速门电路,这些门电路都一个功耗指标,如2mW/每个门,即是说P0口每个I0都可以接上4个这样的门电路作为负载,如果超过了,那么P0口的功率不足,...
为什么有些mos管要用三极管 驱动 , 单片机 IO不能直接 驱动 吗?根据提问者的意思,为什么经常看到在使用单片机I/O口驱动MOS管时,不是使用单片机I/O口直接驱动,而是经过一级三极管,使用三极管驱动MOS管。三极管和MOS管控制...
51 单片机 各端口的 驱动 能为多少?8951系列单片机驱动能力很弱,9013,9014,9018这些常见的三极管都驱动不了,可以采用灌电流的形式来驱动,但是不能超过15mA8951系列单片机驱动能力很弱,9013,901...
【一个工作电压为5V的 单片机 ,想 驱动 并联了50颗led,接在P0口,...[最佳回答]按照一个LED工作电流5mA计算,50个就是250mA,超出了绝大多数单片机IO口的输出能力(我还没见过能输出这个电流的单片机呢),因此必须使用晶体管、继电...
自己做 单片机 音乐盒,开始用蜂鸣器,声音很小。后用lm386 驱动 ...后用lm386驱动扬声器声音还是很小,求解。讨论回答(5)最好上原理图单片机的IO驱动能力将对来说较弱,驱动蜂鸣器需要加三极管放大输出。单片机好像不能直接接...
单片机 如何 驱动 数码管?驱动数码管:静态显示,动态扫描两种方式。设置全局变量a,把a拆成个位十位以参数形式传给数码管显示函数。按键:方法1:主函数中查询K1、K2是否被按下(注...
单片机 可以5v供电吗?答单片机可以5v供电的因为5V来自于TTL电平,5为True,0即为False,之后用了压降更低的PN节,3v和5v一般出现在信号电路或者单片机等vcc供电大多数芯片都是5V的TTL...