单片机常用电路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驱动芯片的电路,每种芯片有各自特点,这里就不多说了。
提高单片机IO引脚驱动能力的方法
早期的51单片机,驱动能力很低。P1、P2和P3口只能驱动3个LSTTL输入端,P0口可驱动8个。如果想要驱动更多的器件,就要用到“总线驱动芯片”。经常用的就是74LS244(单向)和74LS245(双向)。现在常用的 AT89C51 单片机引脚的输出能力已经大多了,从 PDF 手册文件中可查出:单片机输出低电平的时候,单个的引脚,向引脚灌入的最大电流为 10 mA;一个 8 位的接口(P1、P2 以及 P3),灌入的总电流最大为 15 mA,P0 允许灌入的最大总电流为 26 mA;全部的四个接口所允许的灌电流之和,最大为 71 mA。但是当引脚输出高电平的时候,它们的“拉电流”能力可就差多了,竟然还不到 1 mA。单片机的输出特性和很多常用的LS系列TTL器件的输出特性是相同的,都有灌电流较大的特点。实际上,现在常用的单片机IO引脚驱动能力,就和早期的单片机增加了“总线驱动芯片”的效果基本是相同的。现在的单片机输出低电平的时候,就已经可以直接驱动LED发光了。上述的数值,也并非是不可逾越的破坏性极限数值。当略超过这些数值范围的时候,单片机IO引脚的电压,就会发生变化,造成“高电平不高”、“低电平不低”,这就会缩小外接器件的噪声容限。如果环境再稍有干扰,外接器件就无法正确判定单片机送来的高、低电平,将会胡乱动作。为了合理利用IO引脚的低电平能力强的特点,在外接耗电较大的器件(如LED数码显示器、继电器等)的时候,应该优先选用低电平输出来驱动外部器件。使用IO口输出高电平驱动负载,就是一个错误的选择。下图是一个直接利用单片机IO引脚驱动LED的电路。图中P0口使用低电平驱动方式,只要加上约1K的限流电阻即可,甚至不需要常见的P0口上拉电阻。发光的段,每个引脚灌电流约为3mA,不发光的段,电流为0。即使各个段全都发光,电流也不超过P0所容许的电流,这是一个合理的驱动方式。
图中P3口使用了高电平驱动方式,这就必须加上上拉电阻来帮助IO接口输出电流。电阻也采用了1K,发光的段,LED上的电流约为3mA,不发光的段,电流则为5mA,灌入了单片机的IO引脚。这种电路,给单片机IO引脚带来了很大的电流,一个8位的接口最大有可能被灌入40mA的电流,远远超过了容许的数值。上拉电阻能够增加大量不需要的电流,不仅会造成单片机工作不稳定,还会导致电源效率的严重下降,发热,纹波增大。这说明,高电平输出、加上拉电阻,就是一个不合理的驱动方式。如果只是一个引脚的电流取值稍大一些,还算可以;但是综合考虑一个8位的接口,则每个引脚的电流就不要大于2~3mA。这样来看,上拉电阻最小应该在1.8K~2.5K之间,不宜再小,以免总电流超过接口所容许的电流。在网上看到一篇“51单片机P0口上拉电阻的深入研究”的文章,对上拉电阻的最小选择,写的很低,甚至说可以选200欧姆!呵呵,这会烧毁单片机引脚的。==================================驱动更大电流的负载,可以使用三极管来扩充电流,也可使用集成芯片ULN2003(或ULN2008),另外也可使用专用的驱动器件L298、各种型号的IGBT等等。集成芯片的引脚比较密集,维修检查较困难,更换的时候更是不便。做而论道比较喜欢使用三极管,它的耐压和电流承受能力都远远超过集成芯片,在PCB上布线也很灵活方便。8550(PNP)和8050(NPN):它们是一组可以配对使用的三极管,特点是集电极允许的电流很大,Icm竟然能达到1500mA!而且还不需要使用散热片。它们的集电极反向击穿电压BVceo为25V,Pcm为0.5W。2N5401(PNP)和2N5551(NPN):它们也是一组可以配对使用的三极管,它们的特点是耐压比较高,集电极反向击穿电压BVceo可达160V!它们的最大集电极电流Icm为0.6A,Pcm为0.6W。不同厂家的产品,参数会稍有不同。==================================下面以常见的继电器为负载继续说明驱动方法。继电器线圈的驱动电流往往要有40mA以上,单片机的引脚肯定是不能承受了,必须用三极管来扩充输出能力。+5V的大电流负载,用8550(PNP型)驱动电路可见下图。
P3.7输出低电平的时候,在R1中形成Ib约有2mA,经过8550的放大,Ic足够驱动继电器了。用这个电路,不仅可以驱动继电器,也驱动蜂鸣器、扬声器、多个LED等等,甚至驱动小型的直流电机,也是可以的。一般来说,电机的工作电流要大一些,只要不超过8550可以输出的最大电流是1500mA即可。驱动电机时,图中电阻R1的取值应该再小一些。用这个电路,可以各种大电流负载,但是做而论道为什么单单要用继电器,来说明问题呢?因为在网上,发现很多不适当的继电器驱动电路,这些电路都是一个特点,即使用了射极输出电路结构。射极输出电路要求输入的动态范围要大,而且输出的电压范围永远比输入小0.7V。射极输出电路就不能有效的利用+5V的电源,实际上,加到继电器上的电压,不足+4V,除非是使用4V的继电器,否则这就是不稳定的隐患。做而论道给出的电路是共射极结构,有电压放大能力,所以对输入的要求较低,输出动态范围大。
对于大于+5V的负载,如+12V,上面的电路就不行了。如果只是简单的把电源由+5V改为+12V,那么单片机输出的高、低电平,还是只有0~5V的变化幅度,这对8550射极的+12V来说,都是低电平。8550将不能截止。对于大于+5V的负载,只能使用NPN型的8050三极管来驱动,先以单片机输出高电平来驱动。电路如下:
在上述电路中,上拉电阻R2也会带来无谓的电流,其害处前面已经讨论过。更重要的缺点是:在开机单片机复位后,自然输出的高电平,会使继电器吸合,或者是使电机转动。(使用ULN2003等芯片扩充输出电流的时候,也存在这个问题。)虽然编程的时候,可以先进行接口的初始化,令其马上就输出0。但是每次开机,还是会有瞬间的大电流冲击,这往往是不允许的。改进一下,可以再加上个8550,进行倒相,这就可以让单片机用输出低电平来驱动负载。
上图中倒相用的8550,也可以使用“光耦”器件,这样一来,又增加了电气隔离的功能,这就是最完美的单片机输出驱动电路。电路见下图。
图中的4N25经过实际测量,当LED的电流大于等于4.5mA时,输出端的光电管即可为Q4提供足够的基极电流。所以图中的R3,可以使用810~1K的电阻。上述的各个电路,都是以扩充单片机的输出电流为主题。其实,很多数字IC的输出端,都存在扩充电流输出能力的问题,这里给出的电路,是普遍适用的。这里介绍的8050/8550可以输出1500mA的电流,如果要求更大的输出电流,一种方法更换三极管,另外也可以使用专用大功率驱动器件,如L298,固态继电器,IGBT等等。
相关问答
51单片机驱动 电机原理?工作原理:1.开环步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。2.工作状态非超载时,电机转速、转过的角度取决于脉冲信号的频率和脉冲数...
51单片机 各端口的 驱动 能为多少?8951系列单片机驱动能力很弱,9013,9014,9018这些常见的三极管都驱动不了,可以采用灌电流的形式来驱动,但是不能超过15mA8951系列单片机驱动能力很弱,9013,901...
51单片机驱动 4位共阴数码管,为何加上阻电阻-ZOL问答排阻:因为单片机IO口驱动能力有限,采用上拉排阻可以提高单片机的驱动能力。电阻:限流。因为数码管本质上是发光二极管,限流就是为了避免因电流过大而烧坏数码...
这是为 51单片机驱动 直流电机所做的三极管电流放大驱动电路,请教各位大神,这个电路的详细原理是什么?R3电阻,限制电流用的D10反向稳压管,钳制电压为3.7VQ1,Q2三极管,一个NPN型,一个PNP型IN4007二极管,限制电流反向流动当PORT端加电压时,Q1首先导通,然后Q2导...
51单片机 可以 驱动 16路舵机么?可以。1.51单片机可以驱动多路舵机,包括16路,通过编写程序和使用PWM技术,可以控制舵机的角度和速度,使其按照预定程序运动。2.驱动16路舵机需要一定的计算...
51单片机 可以 驱动 什么LED?51单片机什么样的led都可以驱动,端口要接成上啦,电源正级通过电阻到led在到单片机端口51单片机什么样的led都可以驱动,端口要接成上啦,电源正级通过电阻到led...
89c 51单片机 ,能不能 驱动 大功率一点点的电机啊,因为做实验时,老是做 驱动 led灯的小功率实验~~?单片机只是控制单元,可以通过它控制驱动单元去控制各种功率的电器,单片机只是控制单元,可以通过它控制驱动单元去控制各种功率的电器,
单片机驱动能力 如何提高?最好是电路图。89c52芯片的?单片机是弱电控制中心单片机只是一个控制中心,IO的驱动能力是很弱的,只能用于信号处理或者信号控制,最多是驱动一个LED作为指示灯。驱动负载需要加入三极管、...
51单片机 端口怎样 驱动 继电器?一般是单片机驱动控制电路,控制电路驱动继电器一般是单片机驱动控制电路,控制电路驱动继电器
51单片机 中的直流电机的参数?直流电机是由电磁场和永磁体相互作用而产生的一种理想的转换装置,它是电力传动领域中重要的组成部分。在51单片机中,直流电机的参数通常包括:额定电压、额定电...