当前位置:首页 > 基于单片机AT89S51的交通灯控制系统设计
泰山学院本科毕业设计
附 录
附录一 源程序
H_RED BIT P2.1 ;定义IO端口 H_GREEN BIT P2.2 H_YELLOW BIT P2.3 L_RED BIT P2.4 L_GREEN BIT P2.5 L_YELLOW BIT P2.6
;主程序,选择设置红绿灯时间模式或自动调整模式
ORG 0000H LJMP MAIN
ORG 0003H ;中断入口 LJMP INT0 ORG 0030H
MAIN: MOV R3, #20 ;用于嵌套50ms软件方法计时1s
MOV R0, #20 ;预设值红绿灯时间 MOV R1, #20 CLR EX0
K1: MOV C, P3.7 ;等待检测何种模式按键按下
ANL C, P3.2 JB C, K1
JNB P3.7, F ;F键按下为自动模式,进入扫描
28
泰山学院本科毕业设计
K2: JNB P3.2, S ;S键按下并等待计数次数
SJMP K2
F: LCALL DELAY
MOV R0, #30 MOV R1, #30 SETB 00H SETB EA SETB EX1 SJMP START
S: LCALL DELAY
CJNZ R0, #40, V1 MOV R0, #20
V1: INC R0
JNB P0.1, $
JNB P3.6, J SJMP K2
J: LCALL DELAY
CJNZ R1, #40, V2 MOV R1, #20
V2: INC R1
JNB P3.6, $
JNB P3.7, START JNB P3.6, J
MOV P2, #0DDH ;J键按下并等待计数次数 ;设置完毕为设定时间模式,进入扫描
29
;预设信号灯状态,时间和车向泰山学院本科毕业设计
MOV R4, R0 SETB 01H SETB EX0
;程序开始,进行每50ms扫描 START: MOV TMOD, #01H
置
D1: CJNZ A, BDH,D2
D2: CJNZ A, #EDH,D3
MOV TH0, #3CH MOV TL0, #0B0H CLR TF0
SETB TR0 DJNZ R3, Y MOV R3, #20
DJNZ R4, Y MOV A, P2 CJNZ A, #0DDH,D1 MOV P2, #BDH MOV R4, #5
MOV P2, #EDH MOV R4, R1 CLR 01H
MOV P2, #E7H MOV R4, #5
;开始50ms计时 1s是否计时完毕 30
;;本状态是否结束,并进行下一状态设
泰山学院本科毕业设计
JNB 00H, D3 LCALL DATA
D3: CJNZ A, #E7H,Y
Y: MOV A, R4 LEDMAP: DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H
WAIT: JNB TF0, WAIT INT1: JNB 01H, U U: INC R6
MOV R2, #DDH MOV R4, R0 SETB 01H
;LED倒计时显示
MOV B, #10 DIV A, B
MOB DPTR, #LEDMAP MOVC A, @A+DPTR MOV P1, A MOV A, B MOVC A, @A+DPTR MOV P0, A
JNB 00H, WAIT ;判断是否要计数车流量 JB P3.3, WAIT ;判断是否有车经过
;50ms一次扫描完毕
SJMP START
;判断车向
INC R5
RETI
31
共分享92篇相关文档