求发光二极管常亮电路

红色发光二极管正向电压降为2V~2.5V不等,按最高电压2.5V计算;
红色发光二极管的工作电流为20mA~50mA不等,其实10mA已经很亮了,保险起见,选择15mA;
因为电源电压只有5V,发光二极管串联方式 , 因为二极管压降的不一致性,电阻不好选择,所以用两个二极管并联方式,并分别用两个电阻限流降压 。
由I=U/R得R=U/I≈167Ω,选择标称值为180Ω的电阻即可 。
电阻功率选择0.25W足够了 。
你 好!很高兴能为你回答!如有疑问可以联系!如图所示:在P1.0、P1.1端口上各接一个发光二极管L1、L2,使L1、L2在不停地一亮一灭,一亮一灭的时间间隔为0.2秒 。
如图所示的石英晶体为12MHz,因此,1个机器周期为1微秒
机器周期
微秒
MOV
R6,#20
2个机器周期
 2
D1:
MOV
R7,#248
【求发光二极管常亮电路】
2个机器周期
 2 2+2×248=498 20×
DJNZ
R7,$
2个机器周期
 2×248
498
DJNZ
R6,D1
2个机器周期 2×20=40 10002
因此,上面的延时程序时间为10.002ms 。
由以上可知,当R6=10、R7=248时,延时5ms , R6=20、R7=248时,延时10ms,以此为基本的计时单位 。如本实验要求0.2秒=200ms,10ms×R5=200ms , 则R5=20,延时子程序如下:
DELAY:
MOV
R5,#20
D1:
MOV
R6,#20
D2:
MOV
R7,#248
DJNZ
R7,$
DJNZ
R6,D2
DJNZ
R5,D1
RET
(2).
输出控制
如图所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时 , 发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平 。P1.1同理;
5.
程序框图
如图4.1.2所示
图4.1.2
6.
汇编源程序
ORG
0
START:
CLR
P1.0SETB
P1.1
LCALL
DELAY
SETB
P1.0CLR
P1.1
LCALL
DELAY
LJMP
START
DELAY:
MOV
R5,#20
;延时子程序,延时0.2秒
D1:
MOV
R6,#20
D2:
MOV
R7,#248
DJNZ
R7,$
DJNZ
R6,D2
DJNZ
R5,D1
RET
END
7.
C语言源程序
#include
<AT89X51.H>
sbit
L1=P1^0;sbit
L2=p1^1;
void
delay02s(void)
//延时0.2秒子程序
{
unsigned
char
i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void
main(void)
{
while(1)
{
L1=0;L2=1;
delay02s();
L1=1;L2=0;
delay02s();
}
}