单片机交通灯控制程序修改

来源:百度知道 编辑:UC知道 时间:2024/05/12 15:45:23
ORG 0000H
LJMP MAIN
ORG 0030H

MAIN: MOV P2,#00H ;数码管全部显示00
MOV P1,#00H ;信号灯全亮
LCALL DELAY
MOV P2,#0FFH
MOV P1,#0FFH
LCALL DELAY
JB P3.5,MAIN ;启动开关
START: LCALL ZHT0 ;状态0,东西绿灯,南北红灯
LCALL ZHT1 ;状态1,东西黄灯,南北红灯
LCALL ZHT2 ;状态2,东西红灯,南北绿灯
LCALL ZHT3 ;状态3,东西红灯,南北黄灯
AJMP START
**************运行状态子程序**************
ZHT0: MOV P1,#0F3H ;状态0子程序东西亮绿灯25s
MOV R4,#25 ;从25s倒计时至0
MOV R3,#05
LCALL DIR
RET
ZHT1: MOV P1,#0F5H ;状态1子程序东西亮黄灯5s
MOV R4,#5 ;从5s倒计时至0
MOV R3,#25
LCALL DIR
RET
ZHT2: MOV P1,#0DEH ;状态2子程序东西亮红灯25s
MOV R4,#25 ;从30s倒计时至5s
MOV R3,#00H
LCALL DIR
RET
ZHT3: MOV P1,#0EEH ;状态3子程序东西亮红灯5s
MOV R4,#5 ;从5s倒计时至0
MOV R3,#25
LCALL DIR
RET
**************查表显示子程序**************
DIR: MOV A,R3
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R3

只需改动查表显示子程序。

**************查表显示子程序**************
DIR: MOV A,R3
MOV DPTR,#TABLE
MOVC A,@A+DPTR

mov b, a
mov dptr, #qi_duan
anl a, #0fh ;分离出个位
movc a, @a+dptr ;查七段码表
mov p4, a ;显示个位
mov a, b
swap a
anl a, #0fh ;分离出十位
movc a, @a+dptr ;查七段码表
mov p0, a ;显示

; MOV P2,A ;这句不要了

LCALL DELAY
INC R3
DJNZ R4,DIR
RET

qi_duan: db ......七段码表,要根据你的接线方法自行编写。