本人從初中就對電子,無線電產生了濃厚的興趣,至今已有10年的時間了。我對模擬電子技術和數字電子技術還算比較熟悉吧,實踐上也不算賴。但對單片機我才是剛剛學,是一個單片機初學者。對單片機還比較陌生。學了一段時間的單片機,給我的感覺就是它太強大了!太好玩了!太有意思了!它可以用最簡單的硬件電路,依靠程序來實現復雜的控制。流水燈就是一個很好的例子。下面我就給大家介紹一下我做的具有30種花樣的流水燈,和大家一起分享。
本花樣流水燈,主要是由AT89S51單片機及8個不同顏色的發光二極管組成。共有30種花樣。運用“MOV A,#data,RL,RR,INC,DEC”指令編出各種花樣的數據碼,并將這些數據碼送入端口(P0口)顯示。廣泛的應用于商場,飯店,超市,KTV,廣場等地方。
匯編源程序如下:
ORG 0000H
MOV P0,#0FFH
START:MOV R0,#8
MOV A,#0FEH
LOOP1:MOV P0,A
ACALL DELAY
RL A
DJNZ R0,LOOP1
MOV R1,#8
MOV A,#7FH
LOOP2:MOV P0,A
ACALL DELAY
RR A
DJNZ R1,LOOP2
MOV R2,#4
LOOP3:MOV P0,#55H
ACALL DELAY
MOV P0,#0AAH
ACALL DELAY
DJNZ R2,LOOP3
MOV R3,#3
LOOP4:MOV P0,#7EH
ACALL DELAY
MOV P0,#0BDH
ACALL DELAY
MOV P0,#0DBH
ACALL DELAY
MOV P0,#0E7H
ACALL DELAY
MOV P0,#0DBH
ACALL DELAY
MOV P0,#0BDH
ACALL DELAY
MOV P0,#7EH
DJNZ R3,LOOP4
MOV R3,#3
LOOP5:MOV P0,#0E7H
ACALL DELAY
MOV P0,#0DBH
ACALL DELAY
MOV P0,#0BDH
ACALL DELAY
MOV P0,#7EH
ACALL DELAY
MOV P0,#0BDH
ACALL DELAY
MOV P0,#0DBH
ACALL DELAY
MOV P0,#0E7H
ACALL DELAY
DJNZ R3,LOOP5
MOV R4,#3
LOOP6:MOV P0,#00H
ACALL DELAY
MOV P0,#18H
ACALL DELAY
MOV P0,#3CH
ACALL DELAY
MOV P0,#7EH
ACALL DELAY
MOV P0,#0FFH
ACALL DELAY
DJNZ R4,LOOP6
MOV R4,#3
LOOP7:MOV P0,#00H
ACALL DELAY
MOV P0,#81H
ACALL DELAY
MOV P0,#0C3H
ACALL DELAY
MOV P0,#0E7H
ACALL DELAY
MOV P0,#0FFH
ACALL DELAY
DJNZ R4,LOOP7
MOV R4,#3
LOOP8:MOV P0,#0EFH
ACALL DELAY
MOV P0,#0CFH
ACALL DELAY
MOV P0,#8FH
ACALL DELAY
MOV P0,#0FH
ACALL DELAY
MOV P0,#0F7H
ACALL DELAY
MOV P0,#0F3H
ACALL DELAY
MOV P0,#0F1H
ACALL DELAY
MOV P0,#0F0H
ACALL DELAY
DJNZ R4,LOOP8
MOV R4,#4
MOV A,#0EFH
LOOP9:MOV P0,A
ACALL DELAY
RL A
DJNZ R4,LOOP9
MOV R4,#4
MOV A,#0F7H
LOOP10:MOV P0,A
ACALL DELAY
RR A
DJNZ R4,LOOP10
MOV R5,#9H
MOV A,#00H
MOV P0,A
LOOP11:INC A
MOV P0,A
RL A
ACALL DELAY
DJNZ R5,LOOP11
MOV R5,#9
MOV A,#00H
MOV P0,A
LOOP12:INC A
RR A
MOV P0,A
ACALL DELAY
DJNZ R5,LOOP12
MOV R5,#9
MOV A,#00H
MOV P0,A
LOOP13:DEC A
MOV P0,A
RL A
ACALL DELAY
DJNZ R5,LOOP13
MOV R5,#9
MOV A,#00H
MOV P0,A
LOOP14:DEC A
RR A
MOV P0,A
ACALL DELAY
DJNZ R5,LOOP14
MOV R5,#4
MOV A,#00H
LOOP15:MOV P0,A
ACALL DELAY
MOV P0,#0FFH
ACALL DELAY
DJNZ R5,LOOP15
MOV P0,#00H
MOV R0,#8
MOV A,#01H
LOOP16:MOV P0,A
ACALL DELAY
RL A
DJNZ R0,LOOP16
MOV R1,#8
MOV A,#80H
LOOP17:MOV P0,A
ACALL DELAY
RR A
DJNZ R1,LOOP17
MOV R2,#4
LOOP18:MOV P0,#0AAH
ACALL DELAY
MOV P0,#55H
ACALL DELAY
DJNZ R2,LOOP18
MOV R3,#3
LOOP19:MOV P0,#81H
ACALL DELAY
MOV P0,#42H
ACALL DELAY
MOV P0,#24H
ACALL DELAY
MOV P0,#18H
ACALL DELAY
MOV P0,#24H
ACALL DELAY
MOV P0,#42H
ACALL DELAY
MOV P0,#81H
DJNZ R3,LOOP19
MOV R3,#3
LOOP20:MOV P0,#18H
ACALL DELAY
MOV P0,#24H
ACALL DELAY
MOV P0,#42H
ACALL DELAY
MOV P0,#81H
ACALL DELAY
MOV P0,#42H
ACALL DELAY
MOV P0,#24H
ACALL DELAY
MOV P0,#18H
ACALL DELAY
DJNZ R3,LOOP20
MOV R4,#3
LOOP21:MOV P0,#0FFH
ACALL DELAY
MOV P0,#0E7H
ACALL DELAY
MOV P0,#0C3H
ACALL DELAY
MOV P0,#81H
ACALL DELAY
MOV P0,#00H
ACALL DELAY
DJNZ R4,LOOP21
MOV R4,#3
LOOP22:MOV P0,#0FFH
ACALL DELAY
MOV P0,#7EH
ACALL DELAY
MOV P0,#3CH
ACALL DELAY
MOV P0,#18H
ACALL DELAY
MOV P0,#00H
ACALL DELAY
DJNZ R4,LOOP22
MOV R4,#3
LOOP23:MOV P0,#10H
ACALL DELAY
MOV P0,#30H
ACALL DELAY
MOV P0,#70H
ACALL DELAY
MOV P0,#0F0H
ACALL DELAY
MOV P0,#08H
ACALL DELAY
MOV P0,#0CH
ACALL DELAY
MOV P0,#0EH
ACALL DELAY
MOV P0,#0FH
ACALL DELAY
DJNZ R4,LOOP23
MOV R4,#4
MOV A,#10H
LOOP24:MOV P0,A
ACALL DELAY
RL A
DJNZ R4,LOOP24
MOV R4,#4
MOV A,#08H
LOOP25:MOV P0,A
ACALL DELAY
RR A
DJNZ R4,LOOP25
MOV R5,#9H
MOV A,#00H
MOV P0,A
LOOP26:INC A
MOV P0,A
RL A
ACALL DELAY
DJNZ R5,LOOP26
MOV R5,#9
MOV A,#0FFH
MOV P0,A
LOOP27:INC A
RR A
MOV P0,A
ACALL DELAY
DJNZ R5,LOOP27
MOV R5,#9
MOV A,#0FFH
MOV P0,A
LOOP28:DEC A
MOV P0,A
RL A
ACALL DELAY
DJNZ R5,LOOP28
MOV R5,#9
MOV A,#0FFH
MOV P0,A
LOOP29:DEC A
RR A
MOV P0,A
ACALL DELAY
DJNZ R5,LOOP29
MOV R5,#4
MOV A,#0FFH
LOOP30:MOV P0,A
ACALL DELAY
MOV P0,#00H
ACALL DELAY
DJNZ R5,LOOP30
LJMP START
DELAY:MOV R7,#00H
L1:MOV R6,#00H
L2:DJNZ R6,L2
DJNZ R7,L1
RET
END
注:晶振12MHZ
本程序已通過實踐驗證!!!


|