① 單片機 發光二極體循環點亮的程序
程序:
ORG
0000H
LJMP
MAIN
ORG
4000H
MAIN:MOV
R5,#04H
LOOP:MOV
R1,#00H
MOV
A,#0FEH
L1:MOV
P1,A
LCALL
DELAY
RL
A
INC
R1
CJNE
R1,07H,L1
MOV
R2,#00H
MOV
A,#01H
L2:MOV
P1,A
LCALL
DELAY
RR
A
INC
R2
CJNE
R2,07H,L2
DJNE
R5,LOOP
DELAY:MOV
R6,#02H
D1:MOV
R7,#0FFH
D2:DJNZ
R7,D2
DJNE
R6,D1
RET
END
電路:
連接燈的陰極至P1口上即可,復位和震盪電路不需要我說了吧
說明一下,延時時間不準確,不過基本接近1ms的
t=(256*2+1)*2+1+2=1028
如果想做到精確延時的話建議在DELAY中使用NOP指令調理,自己試一下吧
最好是用Keil模擬一下確定延時時間。
很久沒有匯編了,仔細檢查一下,估計有Bug也不一定。
② 單片機上怎麼接發光二極體
這主要看你是想要高電平時亮還是低電平時亮,如果是埠高電平時亮時,可以通過一個1K的電阻將發光管接到GND就可以了。如果是輸出低電平時亮的話,就需要接在電源和埠之間。
可以直接焊接,可能要注意一下靜電防護!
請參考!
③ 單片機上怎麼接發光二極體
用導線,一端接5V電源,接一個1K電阻,再接到到LED的正極,LED的負極接到單片機的管腳。
這樣就可以通過程序控制LED
的亮與不亮了。
中間需要用烙鐵焊接,用錫絲,松香。
④ 各位單片機達人幫個忙 用匯編語言做一個 發光二極體循環點亮的程序 要求 使八隻發光二極體做循環點亮一次
發光二極體循環點亮
八隻發光二極體左循環點亮一次、然後右循環點亮一次。
循環。
模擬試驗成功。
⑤ 用51單片機控制八個發光二極體
// 51單片機控制八個發光二極體 左右循環。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char TAB[]= {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff}; // 改變這里 LED 各種花樣
uchar t,i;
void main()
{
TMOD=0x10;
TH1=(65535-50000)/256; // 50ms一次
TL1=(65535-50000)%256;
EA=1;
ET1=1;//開定時器1中斷
TR1=1;//啟動定時器1
t=0;
i=0;
while(1)
{
}
}
void timer1() interrupt 3
{
TH1=(65535-50000)/256; // 50ms一次
TL1=(65535-50000)%256;
t++;
if(t==20)
{
t=0;
P2=TAB[i];
i++;
if(i==18) { i=0;}
}
}
⑥ 用c語言編寫單片機流水燈程序,(8個發光二極體從左至右循環點亮)
#include<reg51.h>
voiddelay(void)
{
unsignedinti,j;
for(i=0;i<200;i++)
for(j=0;j<1000;j++)
;
}
voidmain(void)
{
while(1)
{
P3=0xfe;//第一個燈亮
delay();//延時
P3=0xfd;//第二個燈亮
delay();
P3=0xfb;//第三個燈亮
delay();
P3=0xf7;//第四個燈亮
delay();
P3=0xef;//第五個燈亮
delay();
P3=0xdf;//第六個燈亮
delay();
P3=0xbf;//第七個燈亮
delay();
P3=0x7f;//第八個燈亮
delay();
}
}
(6)單片機發光管視頻教程擴展閱讀
單片機C語言16種方式流水燈
voidmain()
{
while(1)
{
P1=0xfe;//點亮第一個發光管
Delay(5000);
P1=0xfd;//點亮第二個發光管
Delay(5000);
P1=0xfb;
Delay(5000);
P1=0xf7;
Delay(5000);
P1=0xef;
Delay(5000);
P1=0xdf;
Delay(5000);
P1=0xbf;
Delay(5000);
P1=0x7f;//點亮第八個發光管
}
}