51 单片机的时候对 P0 口必须加上上拉电阻,否则 P0 就是高阻态,对这个问题可能感到疑惑,为什么是高阻态?加上拉电阻?今天针对这一概念进行简单讲解。


在一个系统中或在一个整体中,我们往往定义了一些参考点,就像我们常常说的海平面,在单片中也是如此,我们无论说是高电平还是低电平都是相对来说的。明确了这一点对这一问题可能容易理解。

 

51 单片机,没有连接上拉电阻的 P0 口相比有上拉电阻的 P1 口在 I/O 口引脚和电源之间相连是通过一对推挽状态的 FET 来实现的,51 具体结构如下图。

 

51 结构图

 

组成推挽结构,从理论上讲是可以通过调配管子的参数轻松实现输出大电流,提高带载能力,两个管子根据通断状态有四种不同的组合,上下管导通相当于把电源短路了,这种情况下在实际电路中绝对不能出现,从逻辑电路上来讲,上管开 - 下管关开时 IO 与 VCC 直接相连,IO 输出低电平 0,这种结构下如果没有外接上拉电阻,输出 0 就是开漏状态(低阻态),因为 I/O 引脚是通过一个管子接地的,并不是使用导线直接连接,而一般的 MOS 在导通状态也会有 mΩ极的导通电阻。

 

排阻

 

到这里就很清楚了,无论是低阻态还是高阻态都是相对来说的,把下管子置于截止状态就可以把 GND 和 I/O 口隔离达到开路的状态,这时候推挽一对管子是截止状态,忽略读取逻辑的话 I/O 口引脚相当于与单片机内部电路开路,考虑到实际 MOS 截止时会有少许漏电流,就称作“高阻态”。

 

由于管子 PN 节带来的结电容的影响,有的资料也会称作“浮空”,通过 I/O 口给电容充电需要一定的时间,那么 IO 引脚处的对地的真实电压和水面浮标随波飘动类似了,电压的大小不仅与外界输入有关还和时间有关,在高频情况下这种现象是不能忽略的。

 

总之一句话高阻态是一个相对概念。在使用的时候我们只要按照要求去做,让我们加上拉我们就加上,都是有一定道理的。