51单片机P0口为什么要接上拉电阻?

51单片机P0口为什么要接上拉电阻?
该如何接上拉电阻?
不接上拉电阻会怎样?
求大哥大姐用图解析上列问题,满意再加分。

P0口和其它三个口的内部电路是不同的,如下图

P0口是接在两个三极管D0和D1之间的,而P1-P3口的上部是接一个电阻的。P0口的上面那个三极管D0是在进扩展存储器或扩展总线时使用MOVX指令时才会控制它的导通和截止,在不用此指令时都是截止的。在平常我们使用如:P0_1=0 P0_1=1这些语句时控制的都是下面那个三极管D1。
我们先假设P1口接一个74HC373,来看一看它的等效图


当AT89S51的P1口上接了74HC373后就等于接了一个负载,如上图右边。一般来说这些数字电路的输入阻抗都很大,都在几百K到上兆欧姆,而P1口内的电阻R一般在几十K以内。

如上图,当我们发出指令P1=0时,三极管D导通,见中间的等效图,这时P1点的电位为0。
当发出P1=1的指令后,三极管D截止,见右边等效图,因为Rx的阻值要比R的阻值大得多,因此P1点的电位是接近电源电压的。即高电平

我们再来看看P0口接负载时的图


当P0=0时,等效图是中间的,三极管D1导通,P0点的电位为0。
而当P0=1时,等效图是右边的,三极管D1截止,而上面的三极管D0始终是截止的,这样P0点就等效于悬空了,它处在不稳定状态,P0点又是RX的高阻抗输入点,很容易受到外界和周围电路的干扰从而直接影响到74HC373的输出状态。因此就得加上个电阻。如下图


加上电阻Rc后,电路的状态就和P1口一样了,这个电阻Rc就是上拉电阻

但你如果只是为了让P0口驱动个发光管,那电路可以直接简化成下图那样。S51内部的电流最好不超过15mA,如果发光管的电压为2.2V那电阻就是(5-2.2)÷15=0.18K,也就是180欧姆。

当P0=0时P0点为低电位,发光管亮起,流过D1的电流约为15mA。
当P0=1时,P0点为悬空,但发光管和180欧电阻都是低阻抗元件,P点电位就为高电位,再说也无任何输出影响,因此这样电路是可以的。

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-05

也不会怎样额额,要看你实现什么功能了。

 

如果你要驱动数码管,或者让二极管亮,需要的电流是5~10MA ,但是P0口输出电流不到1个毫安,是无法点亮发光二极管的。酱紫数码管二极管之类的就永远亮不起来了 

上拉电阻接法如上图,如果接上上拉电阻,阻值为1k,然后数码管下端如果是低电平,5-0=5v

5v除以1k=0.5mA,正好可以点亮灯

追问

不懂,你不是说 需要的电流是5~10mA ,为什么0.5mA?

追答

我错闹~~~不好意思,打错了 5v除以1k应该等于0.005安,就是5毫安 。。。

本回答被提问者采纳
第2个回答  推荐于2018-02-19

因为51单片机P0口内部是漏极开路型(作I/O口用时)。

上拉电阻一般用10K,一端接P0口中,一端接VCC,通常都用排阻方便些。

不接上拉电阻的话输出会不正常,比如输出高电平时得不到高电平 

追问

不懂P0口内部是怎样的?漏极开路是啥意思呢?

追答

类似于三极管的集电极开路,就是集电极与电源之间那个电阻没接。
其实原理大概知道就可以,主要是编程和外部电路接线。

本回答被网友采纳
第3个回答  2012-08-05
因为P0口内部没有上拉,其它口有,你对比书本上两都的IO结构图就知道了。
相似回答