智能交通灯系统的仿真图:
单片机控制程序(汇编语言)如下:
- ORG 0000H
- LJMP START
- ORG 0003H
- LJMP INT0
- ORG 000BH
- LJMP T0
- a ORG 0013H
- LJMP INT1
- ORG 001BH
- START: MOV SP, #60H
- MOV 40H, #5 ;在南北红灯缓存区南北红灯时间
- MOV 41H, #3 ;在南北绿灯缓存区南北绿灯时间
- MOV 42H, #4 ;在东西红灯缓存区东西红灯时间
- MOV 43H, #4 ;在东西绿灯缓存区东西绿灯时间
- MOV 27H,#0FFH ;标示位
- MOV 30H,#05H
- MOV 31H,#00H
- MOV TMOD, #01H ;定时器初始化
- MOV TH0, #3CH
- MOV TL0, #0AFH
- MOV 60H, #20
- CLR 4EH
- CLR 4FH
- SETB EA
- SETB EX1
- SETB EX0
- SETB ET0
- SETB TR0
- DISPLAY1:MOV P1, #0CCH ;显示南北红灯与东西绿灯时间
- MOV R3, 40H
- MOV R4, 43H
- LOOP1: MOV A, R3
- MOV B, #0AH
- DIV AB
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P2,#0F0H
- MOV P0,A
- LCALL DELAY
- MOV A, B
- MOVC A,@A+DPTR
- MOV P2,#0F1H
- MOV P0,A
- LCALL DELAY
- MOV A, R4
- MOV B, #0AH
- DIV AB
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P2,#0F6H
- MOV P0,A
- LCALL DELAY
- MOV A, B
- MOVC A,@A+DPTR
- MOV P2,#0F7H
- MOV P0,A
- LCALL DELAY
- JNB TR0,SETIN1
- JB P2.6,WAY1 ;判断两通道是否都有车
- LCALL DELAY
- JB P2.6,OUT1
- JNB P2.7,OUT1
- LJMP DISPLAY2
- WAY1: JB P2.7,OUT1
- LCALL DELAY
- JB P2.7,OUT1
- LJMP DISPLAY1
- OUT1: JMP E1
- SETIN1: LJMP SETT
- E1: JNB 4FH,LOOP1
- CLR 4FH
- DEC R3
- DEC R4
- CJNE R4,#0FFH,LOOP1
- MOV P1, #0CAH ;东西绿灯灭黄灯亮
- LOOP2: MOV A, R3
- MOV B, #0AH
- DIV AB
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P2,#0F4H
- MOV P0,A
- LCALL DELAY
- MOV P2,#0F0H
- MOV P0,A
- LCALL DELAY
- MOV P2, #0F6H
- MOV P0, A
- LCALL DELAY
- MOV A, B
- MOVC A,@A+DPTR
- MOV P2,#0F5H
- MOV P0,A
- LCALL DELAY
- MOV P2,#0F1H
- MOV P0,A
- LCALL DELAY
- MOV P2, #0F7H
- MOV P0, A
- LCALL DELAY
- JNB TR0,SETIN2
- JB P2.6,WAY2 ;判断两通道是否都有车
- LCALL DELAY
- JB P2.6,OUT2
- JNB P2.7,OUT2
- LJMP DISPLAY2
- WAY2: JB P2.7,OUT2
- LCALL DELAY
- JB P2.7,OUT2
- LJMP DISPLAY1
- OUT2: JMP E2
- SETIN2:LJMP SETT
- E2: JNB 4FH,LOOP2
- CLR 4FH
- DEC R3
- CJNE R3,#0FFH,LOOP2
- DISPLAY2: MOV P1, #0E1H ;南北红灯时间到,南北绿灯亮,东西红灯亮
- MOV R3, 41H ;显示南北绿灯,东西红灯时间
- MOV R4, 42H
- LOOP3: MOV A, R3
- MOV B, #0AH
- DIV AB
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P2,#0F2H
- MOV P0,A
- LCALL DELAY
- MOV A, B
- MOVC A,@A+DPTR
- MOV P2,#0F3H
- MOV P0,A
- LCALL DELAY
- MOV A, R4
- MOV B, #0AH
- DIV AB
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P2,#0F4H
- MOV P0,A
- LCALL DELAY
- MOV A, B
- MOVC A,@A+DPTR
- MOV P2,#0F5H
- MOV P0,A
- LCALL DELAY
- JNB TR0 ,SETIN3
- JB P2.6,WAY3 ;判断两通道是否都有车
- LCALL DELAY
- JB P2.6,OUT3
- JNB P2.7,OUT3
- LJMP DISPLAY2
- WAY3: JB P2.7,OUT3
- LCALL DELAY
- JB P2.7,OUT3
- LJMP DISPLAY1
- OUT3: JMP E3
- SETIN3: LJMP SETT
- E3 : JNB 4FH,LOOP3
- CLR 4FH
- DEC R3
- DEC R4
- CJNE R3,#0FFH,LOOP3
- MOV P1, #0D1H
- LOOP4: MOV A, R4 ;显示东西红灯,南北黄灯时间
- MOV B, #0AH
- DIV AB
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P2,#0F0H
- MOV P0,A
- LCALL DELAY
- MOV P2,#0F4H
- MOV P0,A
- LCALL DELAY
- MOV P2, #0F2H
- MOV P0, A
- LCALL DELAY
- MOV A, B
- MOVC A,@A+DPTR
- MOV P2,#0F1H
- MOV P0,A
- LCALL DELAY
- MOV P2,#0F5H
- MOV P0,A
- LCALL DELAY
- MOV P2, #0F3H
- MOV P0, A
- LCALL DELAY
- JNB TR0,SETIN4
- JB P2.6,WAY4 ;判断两通道是否都有车
- LCALL DELAY
- JB P2.6,OUT4
- JNB P2.7,OUT4
- LJMP DISPLAY2
- WAY4: JB P2.7,OUT4
- LCALL DELAY
- JB P2.7,OUT4
- LJMP DISPLAY1
- OUT4: JMP E4
- SETIN4: LJMP SETT
- E4: JNB 4FH,LOOP4
- CLR 4FH
- DEC R4
- CJNE R4,#0FFH,LOOP4
- SETOUT : LJMP DISPLAY1
- SETT: JB TR0,SETOUT
- ACALL DISP
- JB P3.0,M1
- M1: MOV C,P3.0 ;按键消振
- JC M2
- M2: LCALL DELAY
- MOV C,P3.0
- JC ML10
- STOP1: MOV C,P3.0
- JNC STOP1
- LCALL DELAY
- MOV C,P3.0
- JNC STOP1
- MOV R6,27H
- CJNE R6,#00H,RRRR
- MOV R5,43H
- INC R5
- MOV 43H,R5 ;;;加一
- MOV R5,40H
- INC R5
- MOV 40H,R5
- CJNE R5, #99,DSS
- MOV 40H,#0
- MOV 43H,#0
- LJMP DSS
- RRRR: MOV R5,41H
- INC R5
- MOV 41H ,R5
- MOV R5,42H
- INC R5
- MOV 42H,R5
- CJNE R5,#99,DSS
- MOV 42H,#0
- MOV 41H,#0
- DSS: MOV A,R5
- MOV B,#0AH
- DIV AB
- MOV 31H,A
- MOV 30H,B
- ACALL DISP
- ML10: JB P3.1,M3
- M3: MOV C,P3.1 ;按键消振
- JC M4
- M4: LCALL DELAY
- MOV C,P3.1
- JC SETT
- STOP2: MOV C,P3.1
- JNC STOP2
- LCALL DELAY
- MOV C,P3.1
- JNC STOP2
- MOV R6,27H
- CJNE R6,#00H,RRRR1
- MOV R5,43H
- DEC R5
- MOV 43H,R5
- MOV R5,40H
- DEC R5
- MOV 40H,R5
- CJNE R5,#0FFH,DSSS;;;;;;;;减一
- MOV 40H,#99
- MOV 43H,#98
- MOV R5,40H
- LJMP DSSS
- RRRR1: MOV R5,41H
- DEC R5
- MOV 41H ,R5
- MOV R5,42H
- DEC R5
- MOV 42H,R5
- CJNE R5,#0FFH,DSSS
- MOV 42H,#99
- MOV 41H,#98
- MOV R5,42H
- DSSS: MOV A,R5
- MOV B,#0AH
- DIV AB
- MOV 31H,A
- MOV 30H,B
- ACALL DISP
- LJMP SETT
- ;;;;;;;;;;;;定时器中断;;;;;;;;;;;;
- T0: PUSH ACC
- PUSH B
- PUSH PSW
- MOV TH0,#3CH
- MOV TL0,#0AFH
- DJNZ 60H,OVER
- MOV 60H,#20
- SETB 4FH
- OVER: POP PSW
- POP B
- POP ACC
- RETI
- ;;;;;;;;;;;;;;;显示模块2 ;;;;;;;;;;;;;;;;;
- DISP:
- MOV DPTR,#DSEG1
- MOV A,30H
- MOVC A,@A+DPTR
- MOV P2,#0EFH
- MOV P0,A
- LCALL DL1
- MOV DPTR ,#DSEG1
- MOV A,31H
- MOVC A,@A+DPTR
- MOV P2,#0DFH
- MOV P0,A
- LCALL DL1
- RET
- ;;;;;;;;;;;;;;;DELAY
- DL1: MOV R7,#05H
- DL: MOV R6,#0FFH
- DL6: DJNZ R6,$
- DJNZ R7,DL
- RET
- DSEG1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
- ;;;;;;;;;;;;;INT1中断修改;;;;;;;;;;
- INT1:
- PUSH ACC
- PUSH B
- PUSH PSW
- MOV P1,#0CH
- SETB P1.0
- CLR P1.1
- CLR P1.2
- SETB P1.4; 紧急情况,东西(B道)方向,南北(A道)方向都是红灯亮,其余灯灭
- CLR P1.5
- CLR P1.6
- TAB3: MOV P0,#0FFH
- MOV P2,#0
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
ac05d11fb430f757a805bcfa632209f4.rar
(26.7 KB, 下载次数: 76)
|