资源描述
交
通
灯
设
计
交通灯
设计方案:
1:实现东西路----南北路红绿灯的交通指示。
2:东西路灯变化----红绿黄
南北路灯变化----绿黄红
3:红灯延时时间---25S
绿灯延时时间---20S
黄灯延时时间—3S
4: 数码管显示:
红灯---前20S不显示,只在最后5S开始倒计时显示。
绿灯---前15S不显示,只在最后5S开始倒计时显示。
黄灯---3S倒计时显示(若东西路为黄灯,南北路为红灯,那么南北绿的数码管也显示3S)。
5:交通应急事件处理:
利用中断分别实现东西路---南北路的交通应急事件处理。
6:延时程序的使用:
用循环延时和定时器计时的方法。
注:P1.0---北路绿灯,P1.1--北路黄灯,P1.2---北路红灯。P1.3--东路绿灯,P1.4---东路黄灯,P1.5----东路红灯。
【交通灯流程图】
开始
南北路绿灯亮,红,黄灯灭
东西路红灯亮,绿,黄灯灭
延时20秒
南北路绿灯数码管开始倒计时5秒
其他灯不变
5秒倒计时结束
南北路绿灯灭,黄灯亮且数码管开始倒计时3秒
东西路红灯——数码管开始倒计时3秒
3秒倒计时结束
东西路绿灯亮,黄灯,红灯灭
南北路红灯亮,黄灯,绿灯灭
延时25秒
东西路数码管开始倒计时5秒
其他灯不变
5秒倒计时结束
东西路绿灯灭,黄灯亮且数码管开始倒计时3秒
南北路红灯——数码管开始倒计时3秒
3秒倒计时结束
程序如下:
ORG 0000H
LJMP LOOP
ORG 000BH ;定时器0中断,实现交通应急事件
LJMP WZD0
ORG 0013H ;外部中断1,实现交通应急事件
LJMP WZD1
ORG 0030H
LOOP:
MOV R3,#5
MOV R4,#5
MOV R2,#20
MOV SP,#70H
MOV IE,#85H
MOV TMOD,#01H ;置T0为工作方式1
MOV TH0,#3CH ;置T0定时初值50ms
MOV TL0,#0B0H
CLR TF0
SETB TR0 ;启动定时器T0
SETB P1.1 ;东---红灯亮,北---绿灯亮
SETB P1.2
CLR P1.0
SETB P1.3
SETB P1.4
CLR P1.5
ACALL DEL30S
ACALL YELLOW1 ;北---绿灯转黄灯,东---红灯亮
ACALL DEL3S ;延时后北---黄灯灭
SETB P1.0 ;东:红灯灭,绿灯亮,北:黄灯灭,红灯亮。
SETB P1.1
CLR P1.3
CLR P1.2
SETB P1.4
SETB P1.5
ACALL DEL55S ;北---红灯不变,东---绿灯转黄灯
ACALL YELLOW2
ACALL DEL3S
SJMP LOOP
YELLOW1: ;北---绿灯转黄灯,东---红灯不变
SETB P1.0
SETB P1.2
CLR P1.1
SETB P1.3
CLR P1.5
SETB P1.4
RET
YELLOW2: ;东---绿灯转黄灯,北---红灯不变
SETB P1.0
SETB P1.1
CLR P1.2
SETB P1.3
SETB P1.5
CLR P1.4
RET
WZD0: ;实现南北路交通应急事件
CLR P1.0 ; (南北路保持畅通,东西路停止通行)
SETB P1.1
SETB P1.2
SETB P1.3
SETB P1.4
CLR P1.5
JNB P3.2,WZD0
RETI
WZD1: ;实现东西路交通应急事件
CLR P1.3 ; (东西路保持畅通,南北路停止通行)
CLR P1.2
SETB P1.1
SETB P1.0
SETB P1.4
SETB P1.5
JNB P3.3,WZD1
RETI
DEL30S: ;红绿灯延时
DEL25S:JNB TF0,DEL25S ;查询50ms到否
CLR TF0
MOV TH0,#3CH ;恢复T0定时初值50ms
MOV TL0,#0B0H
DJNZ R2,DEL25S ;判断1s到否?未到继续状态1
MOV R2,#20 ;置50ms计数初值
DJNZ R4,DEL25S ;状态1维持25s
DEL5S: ;取数延时
MOV R2,#6
DEL5:
MOV A,R2
ACALL ST ;取数
MOV P0,A ;实现数码管显示
ACALL DEL1S ;每隔1S减1
DJNZ R2,DEL5
RET
DEL3S:
MOV R2,#4H
DEL3:
MOV A,R2
ACALL ST ;取数
MOV P2,A
MOV P0,A ;数码管显示
ACALL DEL1S
DJNZ R2,DEL3
RET
DEL55S:
ACALL DEL20S
MOV R2,#6 ;倒计时5S
DEL55:
ACALL DEL1S
MOV A,R2
ACALL ST
MOV P2,A ;数码管显示
DJNZ R2,DEL55
RET
DEL1S: ;1S延时子程序
MOV R5,#0BH
ST1:
MOV R6,#0DAH
ST2:
MOV R7,#0CFH
DJNZ R7,$
DJNZ R6,ST2
DJNZ R5,ST1
RET
DEL20S: ;20S延时子程序
MOV R5,#0BH;#0DCH
ST3:
MOV R6,#0DAH
ST4:
MOV R7,#0CFH
DJNZ R7,$
DJNZ R6,ST4
DJNZ R5,ST3
RET
ST: ;取数
MOV DPTR,#TAB
MOVC A,@A+DPTR
RET
TAB:DB 0FFH,0FFH,0F9H,0A4H,0B0H,99H,92H
End
展开阅读全文