P0为什么要上拉电阻原因有: 1。 P0口片内无上拉电阻 2。 P0为I/O口工作状态时,上方FET被关断,从而输出脚浮空,因此P0用于输出线时为开漏输出。 3。 由于片内无上拉电阻,上方FET又被关断,P0输出1时无法拉升端口电平。 |
zl2168 发表于 2017-11-26 19:18 感觉到了,现在就是想回头来把不太理解的都搞明白,之前都是编个程序就完事了,电路为什么这么设计不太了解 |
angmall 发表于 2017-11-26 18:27 图中不是接了排阻上方外部5v电源吗,与接地P2口难道 不能行成压差吗,P0口悬空的时候 |
先学理论,打基础,否则,问题多多,事倍功半。 |
但是如果没有这个上拉电阻的话,P0口置1时,处于悬空状态,电流怎么来的? |
angmall 发表于 2017-11-26 08:57 可不可以这样理解,P0口置1时处于悬空状态,电流直接由外部5V电源经过图上交叉的节点和数码管流向接地的P2口,P0口置0时接地,电流不会经过数码管直接流量P0内部的地。 但是如果没有这个上拉电阻的话,P0口置1时,没有电阻的电流同样是由外部电源经过中间节点流向数码管吗 |
P0口没有内部上拉电阻,相当于开漏输出,只有接地与不接地两种状态。用于驱动LED等负载可以不加上拉电阻,相当于在LED负极串联开关。但是要驱动芯片之类时,无法输出1,必须加上拉。 |
传统的51单片机P0口的电流驱动能力较弱。如果用来驱动数码管(多段的LED),建议增加外部的驱动器:用51单片机的P0口驱动外部驱动器,再由外部驱动器驱动数码管。这时P0口可以不用上拉电阻。 (外部驱动器可以是三极管或集成电路) |
楼主看一下单片机的内部结构吧! 你看了片子内部结构就知道除了P0口外 其他3口都接了上拉电阻 所以 一旦P0口要用作I\O口使用 就必须接上拉电阻 对于共阴极数码管,需要高电平才能驱动 P0为什么要上拉电阻原因有: 1。 P0口片内无上拉电阻 2。 P0为I/O口工作状态时,上方FET被关断,从而输出脚浮空,因此P0用于输出线时为开漏输出。 3。 由于片内无上拉电阻,上方FET又被关断,P0输出1时无法拉升端口电平。 4、上拉电阻是用来解决总线驱动能力不足时提供电流的。一般说法是拉电流, 驱动能力与功耗的平衡。以上拉电阻为例,一般地说,上拉电阻越小,驱动能力越强,但功耗越大,设计是应注意两者之间的均衡。 不过,加1K上拉后,电流并不是5V/1K=5mA。因为led一般会有2V左右的压降,这样1K电阻两端只有3V左右的电压,流过的电流只有3mA左右! |
单片机是5V供电的话,IO口的电压就是0V或5V。当IO口为0V时,数码管电流不是5毫安,计算方法为供电电压(5V)-IO口电压(0V)-数码管电压(0.7v),再除以1K |