這個很簡單,可以一個一個點亮然後延時就可以了,還可以用for循環移位也是可以的。方法很多,資料也很多。加油吧
2. 51單片機用匯編語言實現八個LED的全亮全滅
;以89c51單片機為例,假定用P1控制LED:
IO_LED EQU P1;
led_0 BIT P1.0;
led_1 BIT P1.1;
led_2 BIT P1.2;
led_3 BIT P1.3;
led_4 BIT P1.4;
led_5 BIT P1.5;
led_6 BIT P1.6;
led_7 BIT P1.7;
;定義開關LED的數據,假定LED正極一端接電源,另一端通過限流電阻接I/O埠:
DATA_CloseLED EQU 11111111B;
DATA_OpenLED EQU 00000000B;
ORG 0000H
AJMP MAIN
ORG 0030H
;-----------------------
;延時0.5秒程序(註:此延時函數摘自STC-ISP)
DELAY500MS: ;@12.000MHz
PUSH 30H
PUSH 31H
PUSH 32H
MOV 30H,#4
MOV 31H,#205
MOV 32H,#180
NEXT:
DJNZ 32H,NEXT
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 32H
POP 31H
POP 30H
RET
;-----------------------
;下面是主程序
MAIN:
MOV IO_LED,#DATA_CloseLED;同時關閉8個LED
LCALL DELAY500MS;延時0.5秒
MOV IO_LED,#DATA_OpenLED;同時打開8個LED
LCALL DELAY500MS;延時0.5秒
LJMP MAIN;循環
END;
上面程序演示了8個LED間隔0.5秒同時亮和滅的變化。
3. 51單片機3個LED燈同時來亮滅閃爍
如果只是人眼睛開到的同時亮滅,是沒問題的,用3條連續賦值語句。
如果要做到絕對的同時控制,是不可能的,因為有一個在另一組埠,IO寄存器不同,至少要2條賦值語句。就會有時間差,也就是賦值語句之間的時間差。
4. 單片機流水燈全亮,我亦有同樣問題在看見最佳回答後仍不知如何解決,附網上搜索的最佳回答於問題補充中
單片機默認復位後或者上電後的所有引腳輸出都為高電平,這是為了方便讀取數據。所以,你的單片機在上電之後就是全亮,因為你的LED燈是正極接在了單片機的輸出口上了,LED的負級接的地。這樣晶元上電後,燈就全亮了。有可能你的晶元沒有設置上電復位電路,就是說程序並沒有在晶元上電之後就運行。所以就停在燈全亮這里了。單片機有上復位引腳,有的是上電後高電平脈沖復位,有的是低電平脈沖復,你用的時候要看一下對應型號的晶元手冊上是怎麼表示的。復位引腳的引腳名上有一個橫線說明是低電平復位,沒有橫線說明是高電平復位。電上復位就是加一個電容和阻組成,上電時的這個高電平或者低電平的脈沖時間的要求(一般是12個機器周期),讓晶元復位。這個時候單片機才完成開始硬體時鍾和寄存器初始化同步,接下來才能正常運行程序。
還有一種情況就是你用的是P0口,沒有接上拉電阻,P0口只有低電平沒有高電平。
5. 涓轟粈涔堟垜 鐨勫崟鐗囨満鎺ヤ笂鐢墊簮涓庣嚎LED鐏鍏ㄤ寒浜嗭紵
鍗曠墖鏈虹殑IO鍙i粯璁よ緭鍑虹殑楂樼數騫籌紝濡傛灉LED鐨勮礋鏋佹帴鏄鐢墊簮璐熸瀬錛屾f瀬鎺ョ殑鏄鍗曠墖鏈哄氨浼氱偣浜銆