本設計以AT89C51單片機為主控模塊,主要由按鈕開關,數碼管,發光二極管組成,利用匯編語言編寫程序來模擬對十字路口的交通管理,南北方向亮綠燈10s,然后黃燈亮5次,這個過程東西方向紅燈亮15s,之后東西方向亮綠燈10s,然后亮黃燈5s,這個過程南北方向亮紅燈15s。各路燈用LED模擬顯示,同時用七段數碼管顯示兩路的倒計時時間。利用鍵盤可修改燈亮時間PC機設置燈亮時間,利用PC與單片機串口通信實現。為防止出現緊急情況(如119,110通過時),該系統還設置了中斷,將東西南北方向全是紅燈。
1.png (33.04 KB, 下載次數: 49)
下載附件
2021-8-13 22:10 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (46.68 KB, 下載次數: 72)
下載附件
2021-8-13 22:31 上傳
單片機源程序如下:
- ORG 0000H
- LJMP MAIN
- ORG 0003H
- LJMP ZHD1
- ORG 000BH
- LJMP ZHD2
- ORG 0013H
- LJMP ZHD3
- ORG 1000H;主程序
- MAIN:
- MOV TMOD,#01H;設工作方式
- MOV TL0,#0F0H;設初值,單片機晶振12M,定時10ms
- MOV TH0,#0D8H
- SETB EA;開放總中斷
- SETB ET0;開放T0中斷
- SETB TR0;啟動T0定時
- SETB EX0;開放外中斷0
- SETB EX1;開放外中斷1
- SETB IT0;設外中斷0為邊沿觸發
- CLR IT1;設外中斷1為低電平有效
- SETB PT0
- CYCLE:
- MOV R3,#30;
- MOV R0,#10;AB方向綠燈顯示時間
- MOV R1,#30;CD方向紅燈顯示時間
- MOV R4,#15;
- MOV R2,#25;為延時1秒而用;CD紅燈AB綠燈
- LOOP1:
- SETB P3.4
- MOV P1,#01H
- SETB P1.5;點亮綠燈
- SETB P1.2;點亮紅燈
- LCALL DISPLAY;調用顯示程序
- DJNZ R2,LOOP1
- MOV R2,#25
- DEC R4
- DEC R1
- DEC R3
- DJNZ R0,LOOP1
- AJMP LOOP2
- LOOP2:
- SETB P3.4
- MOV P1,#01H
- SETB P1.6;點亮黃燈
- SETB P1.2;點亮紅燈
- LCALL DISPLAY;調用顯示程序
- DJNZ R2,LOOP2
- MOV R2,#25
- DEC R1
- DEC R3
- DJNZ R4,LOOP2
- AJMP CYCLE1
- CYCLE1:
- MOV R0,#10;
- MOV R4,#15;
- LOOP3:
- SETB P3.4
- MOV P1,#01H
- SETB P1.7;點亮紅燈
- SETB P1.4;點亮綠燈
- LCALL DISPLAY;調用顯示程序
- DJNZ R2,LOOP3
- MOV R2,#25
- DEC R4
- DEC R1
- DEC R3
- DJNZ R0,LOOP3
- LOOP4:
- MOV P1,#01H
- SETB P1.7;點亮紅燈
- ;SETB P1.3;點亮黃燈
- LLJ1: LCALL DISPLAY;調用顯示程序
- DJNZ R2,LLJ1
- SETB P2.7;點亮紅燈
- MOV R2,#25
- DEC R0
- DEC R4
- DEC R3
- DJNZ R1,LOOP4
- LJMP CYCLE;鍵盤中斷程序
- ZHD1: LCALL DISPLAY
- JB P3.6,Q2
- INC R1
- INC R0
- CJNE R1,#99,TIAO2
- MOV R1,#00H
- TIAO2 :CJNE R0,#99,TIAO3
- MOV R0,#00H
- TIAO3:
- LCALL DISPLAY
- LCALL DISPLAY
- LCALL DISPLAY
- LCALL DISPLAY
- LCALL DISPLAY
- LCALL DISPLAY
- JNB P1.0,Z2
- Q2 :JB P3.7,WAIT1
- DEC R1
- DEC R0
- CJNE R1,#00H,TIAO
- MOV R1,#99
- TIAO :CJNE R0,#00H,TIAO1
- MOV R0,#99
- TIAO1:
- LCALL DISPLAY
- LCALL DISPLAY
- LCALL DISPLAY
- LCALL DISPLAY
- LCALL DISPLAY
- LCALL DISPLAY
- WAIT1 :JNB P1.0,Z2
- WAIT :LJMP ZHD1
- Z2: RETI;時間中斷程序
- ZHD2: MOV TL0,#0F0H;重先賦值
- MOV TH0,#0D8H
- CLR P3.4
- RETI;應急通道中斷程序
- ZHD3:MOV P1,#85H
- MOV P0,#30H
- MOV P2,#30H
- JNB P3.3,ZHD3
- RETI;數顯顯示
- DISPLAY:
- MOV A,R3;AB方向時間的顯示
- MOV B,#10
- DIV AB;把要顯示的數的十位存放在A中,個位存放在B中
- ADD A,#10H;位選通十位
- MOV P0,A;
- TI0: JNB P3.4,TT
- SJMP TI0
- TT: SETB P3.4
- MOV A,B
- ADD A,#20H;位選通個位
- MOV P0,A;顯示個位數字
- TI1: JNB P3.4,TT1
- SJMP TI1
- TT1: SETB P3.4;CD方向的顯示
- MOV A,R1;CD方向時間的顯示
- MOV B,#10
- DIV AB
- ADD A,#10H;位選通十位
- MOV P2,A;顯示十位數字
- TI2: JNB P3.4,TT2
- SJMP TI2
- TT2: SETB P3.4
- MOV A,B
- ADD A,#20H;位選通個位
- MOV P2,A;顯示個位數字
- TI3: JNB P3.4,TT3
- SJMP TI3
- TT3: SETB P3.4
- RET
- END
復制代碼
所有資料51hei附件下載:
工程及仿真.7z
(71.31 KB, 下載次數: 120)
2021-8-13 22:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|