1、交 通 灯 设 计 交通灯 设计方案: 1:实现东西路----南北路红绿灯的交通指示。 2:东西路灯变化----红绿黄 南北路灯变化----绿黄红 3:红灯延时时间---25S 绿灯延时时间---20S 黄灯延时时间—3S 4: 数码管显示: 红灯---前20S不显示,只在最后5S开始倒计时显示。 绿灯---前15S不显示,只在最后5S开始倒计时显示。 黄灯---3S倒计时显示(若东西路为黄灯,南北路为红灯,那么南北绿的数码管也显示3S)。 5:交通应急事件处理: 利用中断分别实现东西路-
2、南北路的交通应急事件处理。 6:延时程序的使用: 用循环延时和定时器计时的方法。 注:P1.0---北路绿灯,P1.1--北路黄灯,P1.2---北路红灯。P1.3--东路绿灯,P1.4---东路黄灯,P1.5----东路红灯。 【交通灯流程图】 开始 南北路绿灯亮,红,黄灯灭 东西路红灯亮,绿,黄灯灭 延时20秒 南北路绿灯数码管开始倒计时5秒 其他灯不变 5秒倒计时结束 南北路绿灯灭,黄灯亮且数码管开始倒计时3秒 东西路红灯——数码管开始倒计时3秒 3秒倒计时结束 东西路绿灯亮,黄灯,红灯灭 南北路红灯亮,黄灯,绿灯灭 延时25秒 东西路数码
3、管开始倒计时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,#85
4、H 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
5、 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
6、 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.
7、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
8、 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
9、 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
10、 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
11、数码管显示 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






