怎样用at89c51的两个端口 同时控制一组led

2024-11-28 12:07:02
推荐回答(3个)
回答1:

两个端口可以同时作为输出用,但不能同时驱动过多大负载,AT89C51的输出电流较小最大输出15mA,通过计算可知一个(一段)LED大约为20mA左右,当11个或8个同时点亮一段时就是20*11=220mA或20*8=160mA,可想而知这么大的电流对于15mA来说都不是一个级别,对于接P0口8个显示正常而接P2口的3个很暗,可能是P0口的上拉电阻有点小了,一般来说P0口是漏极开路的,即置1时成高阻状态,此时流过LED的电流是通过上拉电阻提供的,而置0时,端口内的场效应管将LED的电位拉低,几乎将LED短路,此时大部分的电源电压将加到上拉电阻上,由分压公式可知,当上拉电阻过小时,LED两端的电压会较大,所以比较亮,而P2口是内置上拉电阻的,这个电阻较大,所以LED分压较小,所以较暗,若驱动LED等负载时可采用两种方法:一种是用并行IC,另一种是用串行IC,并行的有74LS245N、74LS244N等,串行的有74HC595、74LS164等。本人建议用并行的74LS245N,因为他简单,2片即可,而且程序也不用变,但要注意E,DIR两个引脚的接法,详见74LS245N的PDF手册。

回答2:

当然可以了,你P0口给出点亮的代码,下一条你再写个P2口点亮灯的代码,这样看过去两个口的灯就是同时亮了。
比如:MOV P0,#00H
MOV P2,#00H

回答3:

这两个端口可以同时作为输出用!