单片机|51单片机I/O口灌电流、拉电流、上拉电阻的联系

一、灌电流、拉电流 我们可以通过编写程序直接控制单片机的I/O口的电平是高还是低,但是却控制不了电流的大小,而电流又涉及到了驱动能力的问题,也就是说能不能带动你所加的负载。
1.1什么是灌电流、拉电流
单片机|51单片机I/O口灌电流、拉电流、上拉电阻的联系
文章图片


如图1:单片机(p1.0口)输出低电平时,将允许外部器件向单片机灌入电流,这个电流称为“灌电流”,外部负载电路称为“灌电流负载”。
单片机|51单片机I/O口灌电流、拉电流、上拉电阻的联系
文章图片


如图2:单片机(p2.0口)输出高电平时,电流由芯片内部产生,从单片机的引脚拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”。
1.2灌电流、拉电流的区别
灌电流:
当编程使P1.0为低电平(也就是P1^0=0)的时候,电流从电源VCC经过限流电阻R1流入单片机。
但是这个电流是有要求的,对于单个引脚允许外部电路,向引脚流入的最大电流为 10 mA;每个 8 位的接口(P1、P2 以及 P3),允许向引脚流入的总电流最大为 15 mA,而 P0 的能力强一些,允许向引脚流入的最大总电流为 26 mA;全部的四个接口所允许的流入电流之和,最大为 71 mA。
拉电流:
当编程使P1.0为高电平(也就是P1^0=1)的时候,电流由芯片内部产生,不超过1毫安,这个电流太小了驱动能力不足,没有人直接这样用。因此若用拉电流的形式的话,需要加个上拉电阻进行改进(在下面介绍)。
二、上拉电阻 2.1首先说一个上拉电阻在拉电流中的应用。
由于这种拉电流的方式产生的电流过小,所以就想到了一个办法,用一个上拉电阻接到VCC上,由VCC来产生电流。而不用单片机引脚来产生电流,这样就解决了电流过小的问题。
单片机|51单片机I/O口灌电流、拉电流、上拉电阻的联系
文章图片

如图二所示:用上拉电阻R2接到电源。
当编程使P1.0引脚置低电平(也就是0)时,电流流向:VCC→上拉电阻R2→单片机P1.0引脚→流入芯片内部,这时你所想驱动的LED被短路,属于灭的状态。但此时有个问题,就是这时产生的电流什么用处没有,白白浪费,增加功耗。
当编程使P1.0引脚置高电平(也就是1)时,电流:VCC→上拉电阻R2→限流电阻R1→LED→GND,相当于你编程将P1.0这条分支电路线给”堵死“,电流只能走右边这条路线回到GND,从而就能点亮LED。
总的来说:推荐实用灌电流方式,是合理的;而拉电流方式会产生很大的无效电流,白白增加功耗。 2.2将不确定的电平信号拉高
上拉电阻在单片机的应用最多的还是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。
如单片机的P0口,只能输出低电平与高阻态,不能输出高电平。
详细的说:若你编程令P1^0=0; 那么P1.0口是低电平。但是若你编程令P1^0=1; 虽然你已经写程序置P1.0口为高电平,但由于P0口的特性,P1.0达不到高电平,是一个不确定的电平信号,这时就需要一个上拉电阻接到VCC上,将不确定的信号变成高电平。


【单片机|51单片机I/O口灌电流、拉电流、上拉电阻的联系】

    推荐阅读