360截圖20190531203324702.jpg (188.21 KB, 下載次數(shù): 22)
下載附件
2019-5-31 20:33 上傳
單片機源程序如下:
- SECOND1 EQU 30H ;東西路口計時寄存器
- SECOND2 EQU 31H ;南北路口計時寄存器
- DBUF EQU 40H ;顯示碼緩沖區(qū)1
- TEMP EQU 44H ;顯示碼緩沖區(qū)2
- LED_G1 BIT P2.1 ;東西路口綠燈
- LED_Y1 BIT P2.2 ;東西路口黃燈
- LED_R1 BIT P2.3 ;東西路口紅燈
- LED_G2 BIT P2.4 ;南北路口綠燈
- LED_Y2 BIT P2.5 ;南北路口黃燈
- LED_R2 BIT P2.6 ;南北路口紅燈
- ORG 0000H
- LJMP START
- ORG 0100H
- START: MOV TMOD,#01H ;置T0為工作方式1
- MOV TH0,#3CH ;置T0定時初值50ms
- MOV TL0,#0B0H
- CLR TF0
- SETB TR0 ;啟動T0
- CLR A
- MOV P1,A ;關閉不相關的LED
- ;***************************************************
- LOOP: MOV R2,#20 ;置1s計數(shù)初值,50ms*20=1s
- MOV R3,#20 ;紅燈亮20s
- MOV SECOND1,#25 ;東西路口計時顯示初值25s
- MOV SECOND2,#25 ;南北路口計時顯示初值25s
- LCALL DISPLAY
- LCALL STATE1 ;調用狀態(tài)1
- WAIT1: JNB TF0,WAIT1 ;查詢50ms到否
- CLR TF0
- MOV TH0,#3CH ;恢復T0定時初值50ms
- MOV TL0,#0B0H
- DJNZ R2,WAIT1 ;判斷1s到否?未到繼續(xù)狀態(tài)1
- MOV R2,#20 ;置50ms計數(shù)初值
- DEC SECOND1 ;東西路口顯示時間減1s
- DEC SECOND2 ;南北路口顯示時間減1s
- LCALL DISPLAY
- DJNZ R3,WAIT1 ;狀態(tài)1維持20s
- ;*******************************************
- MOV R2,#5 ;置50ms計數(shù)初值 5*4=20
- MOV R3,#3 ;綠燈閃3s
- MOV R4,#4 ;閃爍間隔200ms
- MOV SECOND1,#5 ;東西路口計時顯示初值5s
- MOV SECOND2,#5 ;南北路口計時顯示初值5s
- LCALL DISPLAY
- WAIT2: LCALL STATE2 ;調用狀態(tài)2
- JNB TF0,WAIT2 ;查詢50ms到否
- CLR TF0
- MOV TH0,#3CH ;恢復T0定時初值50ms
- MOV TL0,#0B0H
- DJNZ R4,WAIT2 ;判斷200ms到否?未到繼續(xù)狀態(tài)2
- CPL LED_G1 ;東西綠燈閃
- MOV R4,#4 ;閃爍間隔200ms
- DJNZ R2,WAIT2 ;判1s到否?未到繼續(xù)狀態(tài)2
- MOV R2,#5 ;置50ms計數(shù)初值
- DEC SECOND1 ;東西路口顯示時間減1s
- DEC SECOND2 ;南北路口顯示時間減1s
- LCALL DISPLAY
- DJNZ R3,WAIT2 ;狀態(tài)2維持3s
- ;****************************************
- MOV R2,#20 ;置50ms計數(shù)初值
- MOV R3,#2 ;黃燈閃2s
- MOV SECOND1,#2 ;東西路口計時顯示初值2s
- MOV SECOND2,#2 ;南北路口計時顯示初值2s
- LCALL DISPLAY
- WAIT3: LCALL STATE3 ;調用狀態(tài)3
- JNB TF0,WAIT3 ;查詢100ms到否
- CLR TF0
- MOV TH0,#3CH ;恢復T0定時初值100ms
- MOV TL0,#0B0H
- DJNZ R2,WAIT3 ;判斷1s到否?未到繼續(xù)狀態(tài)3
- MOV R2,#20 ;置100ms計數(shù)初值
- DEC SECOND1 ;東西路口顯示時間減1s
- DEC SECOND2 ;南北路口顯示時間減1s
- LCALL DISPLAY
- DJNZ R3,WAIT3 ;狀態(tài)3維持2s
- ;*******************************************
- MOV R2,#20 ;置50ms計數(shù)初值
- MOV R3,#20 ;紅燈閃20s
- MOV SECOND1,#25 ;東西路口計時顯示初值25s
- MOV SECOND2,#25 ;南北路口計時顯示初值25s
- LCALL DISPLAY
- WAIT4: LCALL STATE4 ;調用狀態(tài)4
- JNB TF0,WAIT4 ;查詢100ms到否
- CLR TF0
- MOV TH0,#3CH ;恢復T0定時初值100ms
- MOV TL0,#0B0H
- DJNZ R2,WAIT4 ;判斷1s到否?未到繼續(xù)狀態(tài)4
- MOV R2,#20 ;置100ms計數(shù)初值
- DEC SECOND1 ;東西路口顯示時間減1s
- DEC SECOND2 ;南北路口顯示時間減1s
- LCALL DISPLAY
- DJNZ R3,WAIT4 ;狀態(tài)4維持20s
- ;*******************************************
- MOV R2,#5 ;置50ms計數(shù)初值
- MOV R4,#4 ;紅燈閃20ms
- MOV R3,#3 ;綠燈閃3s
- MOV SECOND1,#5 ;東西路口計時顯示初值5s
- MOV SECOND2,#5 ;南北路口計時顯示初值5s
- LCALL DISPLAY
- WAIT5: LCALL STATE5 ;調用狀態(tài)5
- JNB TF0,WAIT5 ;查詢100ms到否
- CLR TF0
- MOV TH0,#3CH ;恢復T0定時初值100ms
- MOV TL0,#0B0H
- DJNZ R4,WAIT5 ;判斷200ms到否?未到繼續(xù)狀態(tài)5
- CPL LED_G2 ;南北綠燈閃
- MOV R4,#4 ;閃爍200ms
- DJNZ R2,WAIT5 ;判斷1s到否?未到繼續(xù)狀態(tài)5
- MOV R2,#5 ;置100ms計數(shù)初值
- DEC SECOND1 ;東西路口顯示時間減1s
- DEC SECOND2 ;南北路口顯示時間減1s
- LCALL DISPLAY
- DJNZ R3,WAIT5 ;狀態(tài)5維持3s
- ;****************************************
- MOV R2,#20 ;置50ms計數(shù)初值
- MOV R3,#2 ;紅燈閃2s
- MOV SECOND1,#2 ;東西路口計時顯示初值2s
- MOV SECOND2,#2 ;南北路口計時顯示初值2s
- LCALL DISPLAY
- WAIT6: LCALL STATE6 ;調用狀態(tài)6
- JNB TF0,WAIT6 ;查詢100ms到否
- CLR TF0
- MOV TH0,#3CH ;恢復T0定時初值100ms
- MOV TL0,#0B0H
- DJNZ R2,WAIT6 ;判斷1s到否?未到繼續(xù)狀態(tài)6
- MOV R2,#20 ;置100ms計數(shù)初值
- DEC SECOND1 ;東西路口顯示時間減1s
- DEC SECOND2 ;南北路口顯示時間減1s
- LCALL DISPLAY
- DJNZ R3,WAIT6 ;狀態(tài)6維持2s
- LJMP LOOP ;大循環(huán)
- ;**********************************************
- STATE1: ;狀態(tài)1
- SETB LED_G1 ;東西路口綠燈亮
- CLR LED_Y1
- CLR LED_R1
- CLR LED_G2
- CLR LED_Y2
- SETB LED_R2 ;南北路口紅燈亮
- RET
- STATE2: ;狀態(tài)2
- CLR LED_Y1
- CLR LED_R1
- CLR LED_G2
- CLR LED_Y2
- SETB LED_R2 ;南北路口紅燈亮
- RET
- STATE3: ;狀態(tài)3
- CLR LED_G1
- CLR LED_R1
- CLR LED_G2
- CLR LED_Y2
- SETB LED_R2 ;南北路口紅燈亮
- SETB LED_Y1 ;東西路口綠燈亮
- RET
- STATE4: ;狀態(tài)4
- CLR LED_G1
- CLR LED_Y1
- SETB LED_R1 ;東西路口紅燈亮
- SETB LED_G2 ;南北路口綠燈亮
- CLR LED_Y2
- CLR LED_R2
- RET
- STATE5: ;狀態(tài)5
- CLR LED_G1
- CLR LED_Y1
- SETB LED_R1 ;東西路口紅燈亮
- CLR LED_Y2
- CLR LED_R2
- RET
- STATE6: ;狀態(tài)6
- CLR LED_G1
- CLR LED_Y1
- SETB LED_R1 ;東西路口紅燈亮
- CLR LED_G2
- CLR LED_R2
- SETB LED_Y2 ;南北路口紅燈亮
- RET
- DISPLAY: ;數(shù)碼顯示
- MOV A,SECOND1 ;東西路口計時寄存器
- MOV B,#10 ;16進制數(shù)拆成兩個10進制數(shù)
- DIV AB
- MOV DBUF+3,A
- MOV A,B
- MOV DBUF+2,A
- MOV A,SECOND2 ;南北路口計時寄存器
- MOV B,#10 ;16進制數(shù)拆成兩個10進制數(shù)
- DIV AB
- MOV DBUF+1,A
- MOV A,B
- MOV DBUF,A
- MOV R0,#DBUF
- MOV R1,#TEMP
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
交通信號.rar
(38.88 KB, 下載次數(shù): 19)
2019-5-31 20:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|