本十字路口交通燈主要是由AT89C2051單片機(jī)和若干不同顏色的發(fā)光二極管組成。通過對(duì)AT89C2051單片機(jī)的編程,按照交通信號(hào)燈的要求編譯出相應(yīng)的數(shù)據(jù)碼,并運(yùn)用“MOV A,#data”指令以及DELAY(延時(shí)子程序),將數(shù)據(jù)碼送入端口(P1口)顯示,并作相應(yīng)的延時(shí),使其成為一個(gè)交通信號(hào)燈。根據(jù)實(shí)際需要,延時(shí)時(shí)間的長(zhǎng)短可由程序來控制。
這是一個(gè)最簡(jiǎn)單的交通燈了,只是完成了交通燈的最基本的功能,沒有數(shù)碼顯示,沒有強(qiáng)制通行或強(qiáng)制停止(即單片機(jī)的中斷)功能。以后有時(shí)間我會(huì)把它給完善的。程序很簡(jiǎn)單,相信大家一看就懂,很酷似一個(gè)流水燈的程序吧!其實(shí)有些控制并不要把它想象的太復(fù)雜,只要搞清楚它到底是怎樣的一個(gè)控制過程,控制的本質(zhì)是什么,理清思路,看清本質(zhì)。
匯編源程序如下:
ORG 0000H
LOOP:MOV P1,#7EH
ACALL DELAY1
MOV P1,#0FFH
ACALL DELAY2
MOV P1,#7EH
ACALL DELAY2
MOV P1,#0FFH
ACALL DELAY2
MOV P1,#7EH
ACALL DELAY2
MOV P1,#0FFH
ACALL DELAY2
MOV P1,#7EH
ACALL DELAY2
MOV P1,#0BDH
ACALL DELAY3
MOV P1,#0DBH
ACALL DELAY1
MOV P1,#0FFH
ACALL DELAY2
MOV P1,#0DBH
ACALL DELAY2
MOV P1,#0FFH
ACALL DELAY2
MOV P1,#0DBH
ACALL DELAY2
MOV P1,#0FFH
ACALL DELAY2
MOV P1,#0DBH
ACALL DELAY2
MOV P1,#0BDH
ACALL DELAY3
MOV P1,#0FFH
SJMP LOOP
DELAY1:MOV R0,#160
L1:MOV R1,#250
L2:MOV R2,#250
DJNZ R2,$
DJNZ R1,L2
DJNZ R0,L1
RET
DELAY2:MOV R3,#25
L3:MOV R4,#100
L4:MOV R5,#100
DJNZ R5,$
DJNZ R4,L4
DJNZ R3,L3
RET
DELAY3:MOV R6,#100
L5:MOV R7,#100
L6:MOV 10H,#100
DJNZ 10H,$
DJNZ R7,L6
DJNZ R6,L5
RET
END
注:晶振12MHZ。控制的順序是這樣的:先是:東西綠燈和南北紅燈同時(shí)亮20S。然后 :東西綠燈和南北紅燈同時(shí)閃爍3次,閃爍3次后, 東西黃燈和南北黃燈同時(shí)亮3S。最后:東西紅燈和南北綠燈同時(shí)亮20S,東西紅燈和南北綠燈同時(shí)閃爍3次,閃爍3次后, 東西黃燈和南北黃燈同時(shí)亮3S 。就這樣無限循環(huán)下去。
本程序已通過實(shí)踐驗(yàn)證!!!