1、交 通灯设计 交通灯设计方案:1:实现东西路-南北路红绿灯的交通指示。2:东西路灯变化-红绿黄南北路灯变化-绿黄红3:红灯延时时间-25S绿灯延时时间-20S黄灯延时时间3S4: 数码管显示:红灯-前20S不显示,只在最后5S开始倒计时显示。绿灯-前15S不显示,只在最后5S开始倒计时显示。黄灯-3S倒计时显示(若东西路为黄灯,南北路为红灯,那么南北绿的数码管也显示3S)。5:交通应急事件处理:利用中断分别实现东西路-南北路的交通应急事件处理。6:延时程序的使用:用循环延时和定时器计时的方法。注:P1.0-北路绿灯,P1.1-北路黄灯,P1.2-北路红灯。P1.3-东路绿灯,P1.4-东路黄灯
2、,P1.5-东路红灯。【交通灯流程图】开始南北路绿灯亮,红,黄灯灭东西路红灯亮,绿,黄灯灭延时20秒南北路绿灯数码管开始倒计时5秒其他灯不变5秒倒计时结束南北路绿灯灭,黄灯亮且数码管开始倒计时3秒东西路红灯数码管开始倒计时3秒3秒倒计时结束东西路绿灯亮,黄灯,红灯灭南北路红灯亮,黄灯,绿灯灭延时25秒东西路数码管开始倒计时5秒其他灯不变5秒倒计时结束东西路绿灯灭,黄灯亮且数码管开始倒计时3秒南北路红灯数码管开始倒计时3秒3秒倒计时结束程序如下:ORG 0000HLJMP LOOPORG 000BH;定时器0中断,实现交通应急事件LJMP WZD0ORG 0013H;外部中断1,实现交通应急事件
3、LJMP WZD1ORG 0030HLOOP: MOV R3,#5 MOV R4,#5 MOV R2,#20 MOV SP,#70H MOV IE,#85H MOVTMOD,#01H;置T0为工作方式1 MOVTH0,#3CH;置T0定时初值50ms MOVTL0,#0B0H CLRTF0 SETBTR0;启动定时器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 ;延时后北-黄灯灭 SET
4、B P1.0 ;东:红灯灭,绿灯亮,北:黄灯灭,红灯亮。 SETB P1.1 CLR P1.3 CLR P1.2 SETB P1.4 SETB P1.5 ACALL DEL55S ;北-红灯不变,东-绿灯转黄灯 ACALL YELLOW2 ACALL DEL3S SJMP LOOPYELLOW1: ;北-绿灯转黄灯,东-红灯不变 SETB P1.0 SETB P1.2 CLR P1.1 SETB P1.3 CLR P1.5 SETB P1.4 RETYELLOW2: ;东-绿灯转黄灯,北-红灯不变 SETB P1.0 SETB P1.1 CLR P1.2 SETB P1.3 SETB P1.5
5、 CLR P1.4 RETWZD0: ;实现南北路交通应急事件 CLR P1.0; (南北路保持畅通,东西路停止通行) SETB P1.1 SETB P1.2 SETB P1.3 SETB P1.4 CLR P1.5 JNB P3.2,WZD0 RETIWZD1:;实现东西路交通应急事件 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:JNBTF0,DEL25S;查询50ms到否 CLRTF0 MOVTH0,
6、#3CH;恢复T0定时初值50ms MOVTL0,#0B0H DJNZR2,DEL25S;判断1s到否?未到继续状态1 MOVR2,#20;置50ms计数初值 DJNZR4,DEL25S;状态1维持25sDEL5S: ;取数延时 MOV R2,#6DEL5: MOV A,R2 ACALL ST;取数 MOV P0,A;实现数码管显示 ACALL DEL1S;每隔1S减1 DJNZ R2,DEL5 RETDEL3S: MOV R2,#4HDEL3: MOV A,R2 ACALL ST;取数 MOV P2,A MOV P0,A;数码管显示 ACALL DEL1S DJNZ R2,DEL3 RETD
7、EL55S: ACALL DEL20S MOV R2,#6;倒计时5SDEL55: ACALL DEL1S MOV A,R2ACALL ST MOV P2,A;数码管显示 DJNZ R2,DEL55 RETDEL1S: ;1S延时子程序 MOV R5,#0BHST1: MOV R6,#0DAHST2: MOV R7,#0CFH DJNZ R7,$ DJNZ R6,ST2 DJNZ R5,ST1RETDEL20S:;20S延时子程序 MOV R5,#0BH;#0DCHST3: MOV R6,#0DAHST4: MOV R7,#0CFH DJNZ R7,$ DJNZ R6,ST4 DJNZ R5,ST3RETST:;取数 MOV DPTR,#TAB MOVC A,A+DPTRRETTAB:DB 0FFH,0FFH,0F9H,0A4H,0B0H,99H,92HEnd