单片机的管脚输入需要有明确的信号,也就是要么高电平,要么低电平。通常我们认为,你的输入脚如果和vcc相接,那肯定是高电平;和gnd相接,那肯定是低电平。然而还有一种状态你可能忽视了,就是管脚悬空的时候。
管脚悬空的时候,由于电路中的电磁感应,可以在管脚上随机地感应出时高时低的电平,这就使得在单片机看来,你在随机地输入1或0。这显然也不是你所需要了。你所需要的是明确的高或低电平。对芯片输入管脚, 若在系统板上悬空(未与任何输出脚或驱动相接)是比较危险的.因为此时很有可能输入管脚内部电容电荷累积使之达到中间电平(比如1.5V), 而使得输入缓冲器的PMOS管和NMOS管同时导通, 这样一来就在电源和地之间形成直接通路, 产生较大的漏电流, 时间一长就可能损坏芯片. 并且因为处于中间电平会导致内部电路对其逻辑(0或1)判断混乱.
故需要外加电阻,如果这个电阻的一端连在了vcc上,那这个电阻就是所谓的上拉电阻,它可以帮助管脚肯定处于高电平。如果这个电阻的一端连在了gnd上,那这个电阻就是所谓的下拉电阻,上拉电阻和下拉电阻的目的是帮助电路消灭因为感应电压带来的随机高低电平。
上拉电阻和下拉电阻的作用
上拉电阻和下拉电阻的其中一个作用是防止输入端悬空,使其有确定的状态,减弱外部电流对芯片产生的干扰。
上拉就是将不确定的信号通过一个电阻提升为高电平,一般来说上拉电阻越小,驱动能力越强,但功耗也越大,同时也需要考虑下级电路对驱动能力的要求,上拉电阻选择的合适才能向下级电路提供足够的电流。另外就是数字电路对高低电平都有一个合适的门槛(零电平门槛)。
上拉电阻是用来解决总线驱动能力不足时提供电流的,一般说法是拉电流;下拉电阻是用来吸收电流的,也就是所谓的灌电流。一般来说灌电流比拉电流要大,也就是灌电流驱动能力强一些
上拉电阻的作用:
1.当用TTL电路驱动CMOS电路时,如果TTL电路的输出高电平低于CMOS电路的最低高电平(一般是3~5V),这是就需要在TTL的输出端接上上拉电阻,以提高输出高电平的值。
2.OC门电路必须加上拉电阻才可以使用。
3.为增大输出引脚的输出能力,有的引脚上也会使用上拉电阻。
4.在CMOS芯片上,为了防止静电造成损坏,有的管脚不能悬空,一般接上拉电阻产生降低输出阻抗,提供泄荷通路;
5.芯片管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限,增强干扰能力;
6.提高总线的抗电磁抗干扰能力,管脚悬空易受外界的电磁干扰。
上拉电阻阻值的选择原则:
1)从节约功耗及芯片的灌电流能力考虑应足够大:电阻大,电流小;
2)从确保足够的驱动电流考虑应足够小:电阻小,电流大;
3)对高速电路,过大的上拉电阻可能边沿变平缓。
综合考虑这三点,通常在1K到10K之间考虑。