51单片机关于上拉电阻问题

我知道上拉电阻是为了提高输出电流,但是下面的图右边的水银开关和画面切换那个开关,有必要用到上拉电阻吗?没有上拉电阻应该也是照常正常工作,是不是加了上拉电阻后响应速度会快些??还有好像外接多大的上拉电阻不是算出来的,可能很难算,那么有没有办法算要多大的外接上拉电阻呢,难道真的只能试试才知道??

51单片机的P0口在输出1(高电平)时其实是高阻态,也就是输出电阻无穷大,相当于断开。高阻态显然不能向外提供电流,所以加一个上拉电阻从Vcc取电流,此时单片不给LED提供电流,全部电流由Vcc提供。由于P0口输出1时是高阻态,IO口的电位不会被钳位(你可以把它理解成LED与IO没有连接)。P0口输出0时,Vcc通过上拉电阻往单片机灌电流,在电阻上有5V的压降,与输出的逻辑电平0没有矛盾。

51单片机除P0外的其他IO口一般不需要接上拉电阻,但一定要在IO口和LED间接一个几百欧到1k左右的限流电阻,在LED导通时,由于有电流流经电阻,电阻上有压降,LED导通后压降一般在1.6V到3V不等(不会是0.7V),加上电阻上的压降,IO口上电压就可以达到5V,这与单片机输出的高电平没有矛盾。(事实上限流电阻的大小就是这么确定的,LED电流一般是几mA)

如果是其它单片机,如AVR或者PIC,IO口的结构可能不同,具体电路也就不同。但不管什么单片机,一般是不用IO直接驱动功率器件的,而是另外加一个驱动芯片,由单片机提供逻辑电平(几乎没有电流),驱动芯片提供功率(较大电流)。

总的来说,你图上画的用于51单片机的P0口是没有问题的。如果接的是51单片机的其他IO口,没有限流电阻是不合理的,一定要在这种情况下分析你提的问题的话,LED导通后的电流是由Vcc通过外接的上拉电阻和这个端口内部的上拉电阻并联提供的,此时端口的电位被钳位在低电平,但单片机输出是往锁存器里写0或1的逻辑,因为写1指令使内部锁存器始终为高,所以认为单片机输出高电平。但如果执行一条读指令,判断的是引脚的状态,因为被led嵌位那就是输入为低了,那么读到的就是0。也就是说,输出为高,输入为低。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-18
按说不用上拉电阻都可以的 因为AT89S52单片机的话就是P0口是集电极开路输出...其他三口内部都有上拉电阻.......这里是用来作为中断源的 .....所以还是做好接一个上拉电阻......这里根本就没有要驱动的东西 所以上拉电阻一般选择10K或者100K都可以 的
第2个回答  2010-10-18
一楼说的不错,上拉电阻值可以是4.7k 10k,,不能太小弄个几Ω,
第3个回答  推荐于2016-12-01
这里的上拉电阻和电源VCC相连,其作用是为了提高抗干扰的能力,保证在
开关没有被按下时,P3.0的输入电平维持在高电平。
如果开关被按下,那么P3.0就是低电平了,这样就不会出现误判断。

如果P3.0不接上拉电阻,P3.0引脚有可能受到干扰,而出现瞬间的低电平,
这样就会发生误判断了。

Thanks本回答被提问者采纳
第4个回答  2020-04-02
“单片机P口接了上拉电阻靠高电平来点亮LED”,是指在P口接一个上拉电阻到Vcc,同时接LED正极,LED负极接地吗?如果是这样,不妥。上拉电阻在此没有用,不需要,有害。
P口输出低电平时,将LED“短路”,不亮。同时,有一个“灌电流”自Vcc经上拉电阻进入P口,做的是无用功。
P口输出高电平时,应该接近Vcc。LED的正向电压一般2~3V。由于是直接接了LED的正极,又没有限流电阻,本该会有很大的电流,但是P口的负载能力有限,输出的高电平被拉低了,所以没有出现过大的电流。但是,对P口和LED都是不利的。这时的上拉电阻只是起到帮助P口为LED供电的作用。但是,上拉电阻一般数值较大,作用甚微。
“这时有电流流进P口么?”---没有,相反是“流出”,称为“拉电流”。
一般I/O口的低电平负载能力都高于高电平负载能力,所以应尽量使用P口低电平时点亮LED。这样的电路接法是:P口接LED负极,LED正极经限流电阻接Vcc.
如果感觉LED点亮和所处理的事件有效似乎相反的话,程序中在写端口时取反就行了,这在MCU中是易如反掌的事。
为了让MCU“轻松”地工作,最好是不要用足它的负载能力,也就是外接驱动三极管等。同时也解决了反相的问题。
实践中有由于MCU负载过重而导致逻辑紊乱的实例。