51单片机上拉电阻引脚的驱动能力分析:
单片机的引脚,可以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。
但是,程序控制不了单片机的输出电流。单片机的输出电流,很大程度上是取决于引脚上的外接器件。
单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为灌电流,外部电路称为灌电流负载;
单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为拉电流,外部电路称为拉电流负载。
这些电流一般是多少?最大限度是多少?这就是常见的单片机输出驱动能力的问题。
早期的51系列单片机的带负载能力,是很小的,仅仅用能带动多少个TTL输入端来说明的。
p1、p2和p3口,每个引脚可以都带动3个TTL输入端,只有p0口的能力强,它可以带动8个!
分析一下TTL的输入特性,就可以发现,51单片机基本上就没有什么驱动能力。
它的引脚,甚至不能带动当时的LED进行正常发光。
记得是在AT89C51单片机流行起来之后,做而论道才发现:单片机引脚的能力大为增强,可以直接带动LED发光了。
看看下图,图中的D1、D2就可以不经其它驱动器件,直接由单片机的引脚控制发光显示。
虽然引脚已经可以直接驱动LED发光,但是且慢,先别太高兴,还是看看AT89C51单片机引脚的输出能力吧。
从AT89C51单片机的pDF手册文件中可以看到,稳态输出时,灌电流的上限为:
MaximumIOLperportpin:10mA;
MaximumIOLper8-bitport:port0:26mA,ports1,2,3:15mA;
MaximumtotalIforalloutputpins:71mA.
这里是说:
每个单个的引脚,输出低电平的时候,允许外部电路,向引脚灌入的最大电流为10mA;
每个8位的接口(p1、p2以及p3),允许向引脚灌入的总电流最大为15mA,而p0的能力强一些,允许向引脚灌入的最大总电流为26mA;
全部的四个接口所允许的灌电流之和,最大为71mA。
而当这些引脚输出高电平的时候,单片机的拉电流能力呢?可以说是太差了,竟然不到1mA。
结论就是:单片机输出低电平的时候,驱动能力尚可,而输出高电平的时候,就没有输出电流的能力。
这个结论是依照手册中给出的数据做出来的。
51单片机的这些特性,是源于引脚的内部结构,引脚内部结构图这里就不画了,很多书中都有。
在芯片的内部,引脚和地之间,有个三极管,所以引脚具有下拉的能力,输出低电平的时候,允许灌入10mA的电流;而引脚和正电源之间,有个几百K的内部上拉电阻,所以,引脚在高电平的时候,能够输出的拉电流很小。特别是p0口,其内部根本就没有上拉电阻,所以p0口根本就没有高电平输出电流的能力。
再看看上面的电路图:
图中的D1,是接在正电源和引脚之间的,这就属于灌电流负载,D1在单片机输出低电平的时候发光。这个发光的电流,可以用电阻控制在10mA之内。
图中的D2,是接在引脚和地之间的,这属于拉电流负载,D2应该在单片机输出高电平的时候发光。但是单片机此时几乎没有输出能力,必须采用外接上拉电阻的方法来提供D2所需的电流。
哦,明白了,外接电路如果是拉电流负载,要求单片机输出高电平时发挥作用,那就必须用上拉电阻来协助,产生负载所需的电流。
下面做而论道就专门说说上拉电阻存在的问题。
从上面的图中可以看到,D2发光,是由上拉电阻R2提供的电流,D2导通发光的电压约为2V,那么发光的电流就是:(5-2)/1K,约为3mA。
而当单片机输出低电平(0V),D2不发光的时候,R2这个上拉电阻闲着了吗?没有!它两端的电压,比LED发光的时候还高,现在是5V了,其中的电流,是5mA!
注意到了吗?LED不发光的时候,上拉电阻给出了更大的电流!并且,这个大于正常发光的电流,全部灌入单片机的引脚了!
如果在一个8位的接口,安装了8个1K的上拉电阻,当单片机都输出低电平的时候,就有40mA的电流灌入这个8位的接口!
如果四个8位接口,都加上1K的上拉电阻,最大有可能出现32&TImes;5=160mA的电流,都流入到单片机中!
这个数值已经超过了单片机手册上给出的上限。如果此时单片机工作不稳定,就是理所当然的了。
而且这些电流,都是在负载处于无效的状态下出现的,它们都是完全没有用处的电流,只是产生发热、耗电大、电池消耗快。。.等后果。
呵呵,特别是现在,都在提倡节能减排,低碳。。.。
那么,把上拉电阻加大些,可以吗?
回答是:不行的,因为需要它为拉电流负载提供电流。对于LED,如果加大电阻,将使电流过小,发光暗淡,就失去发光二极管的作用了。
对于D1,是灌电流负载,单片机输出低电平的时候,R1、D1通路上会有灌电流;输出高电平的时候,那就什么电流都没有,此时就不产生额外的耗电。
综上所述,灌电流负载,是合理的;而拉电流负载和上拉电阻会产生很大的无效电流,这种电路不合理。
有些网友对上拉电阻情有独钟,有用没用的,都想在引脚上安装个上拉电阻,甚至还能说出些理由:稳定性啦、速度啦。。.。
其实,上拉电阻和拉电流负载电路,是会对单片机系统造成不良后果的。
做而论道看过很多关于单片机引脚以及上拉电阻方面的书籍、参考资料,基本上它们对于使用上拉电阻的弊病都没有进行仔细的讨论。
在此,做而论道郑重向大家提出建议:设计单片机的负载电路,应该采用灌电流负载的电路形式,以避免无谓的电流消耗。
上拉电阻,仅仅是在p0口才考虑加不加的问题:当用p0口做为输入口的时候,需要加上、当用p0口输出高电平驱动MOS型负载的时候,也需要加上,其它的时候,p0口也不用加入上拉电阻。
在其它接口(p1、p2和p3),都不应该加上拉电阻,特别是输出低电平有效的时候,外接器件就有上拉的作用。
数字万用表怎样判断电阻的好坏:
使用数字式万用表测电阻,所测阻值更为准确。将黑表笔插入COM插座,红表笔插入VΩ插座。
万用表的挡位开关转至相应的电阻挡,打开万用表电源开关(电源开关调至ON位置),再将两表笔跨接在被测电阻的两个引脚上,万用表的显示屏即可显示出被测电阻的阻值。数字式万用表测量固定电阻示意图如图156所示。
图156数字式万用表测量固定电阻
注意:数字式万用表测电阻通常无须调零,可直接测量。
如果电阻值超过所选挡位值,则万用表显示屏的左端会显示1,这时应将开关转至较高挡位。
当测量电阻值超过1mΩ以上时,显示的读数需几秒钟才会稳定,这是使用数字式万用表测量时出现的正常现象,这种现象在测高电阻值时经常出现。
当输入端开路时,万用表则显示过载情形。另外,测量在线电阻时,需要首先确认被测电路所有电源已关断及所有电容都已完全放电时才可继续进行。