交通灯设计交通灯设计方案:1:实现东西路----南北路红绿灯的交通指示。2:东西路灯变化----红绿黄南北路灯变化----绿黄红3:红灯延时时间---25S绿灯延时时间---20S黄灯延时时间—3S4:数码管显示:红灯---前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秒倒计时结束程序如下:ORG0000HLJMPLOOPORG000BH;定时器0中断,实现交通应急事件LJMPWZD0ORG0013H;外部中断1,实现交通应急事件LJMPWZD1ORG0030HLOOP:MOVR3,#5MOVR4,#5MOVR2,#20MOVSP,#70HMOVIE,#85HMOVTMOD,#01H;置T0为工作方式1MOVTH0,#3CH;置T0定时初值50msMOVTL0,#0B0HCLRTF0SETBTR0;启动定时器T0SETBP1.1;东---红灯亮,北---绿灯亮SETBP1.2CLRP1.0SETBP1.3SETBP1.4CLRP1.5ACALLDEL30SACALLYELLOW1;北---绿灯转黄灯,东---红灯亮ACALLDEL3S;延时后北---黄灯灭SETBP1.0;东:红灯灭,绿灯亮,北:黄灯灭,红灯亮。SETBP1.1CLRP1.3CLRP1.2SETBP1.4SETBP1.5ACALLDEL55S;北---红灯不变,东---绿灯转黄灯ACALLYELLOW2ACALLDEL3SSJMPLOOPYELLOW1:;北---绿灯转黄灯,东---红灯不变SETBP1.0SETBP1.2CLRP1.1SETBP1.3CLRP1.5SETBP1.4RETYELLOW2:;东---绿灯转黄灯,北---红灯不变SETBP1.0SETBP1.1CLRP1.2SETBP1.3SETBP1.5CLRP1.4RETWZD0:;实现南北路交通应急事件CLRP1.0;(南北路保持畅通,东西路停止通行)SETBP1.1SETBP1.2SETBP1.3SETBP1.4CLRP1.5JNBP3.2,WZD0RETIWZD1:;实现东西路交通应急事件CLRP1.3;(东西路保持畅通,南北路停止通行)CLRP1.2SETBP1.1SETBP1.0SETBP1.4SETBP1.5JNBP3.3,WZD1RETIDEL30S:;红绿灯延时DEL25S:JNBTF0,DEL25S;查询50ms到否CLRTF0MOVTH0,#3CH;恢复T0定时初值50msMOVTL0,#0B0HDJNZR2,DEL25S;判断1s到否?未到继续状态1MOVR2,#20;置50ms计数初值DJNZR4,DEL25S;状态1维持25sDEL5S:;取数延时MOVR2,#6DEL5:MOVA,R2ACALLST;取数MOVP0,A;实现数码管显示ACALLDEL1S;每隔1S减1DJNZR2,DEL5RETDEL3S:MOVR2,#4HDEL3:MOVA,R2ACALLST;取数MOVP2,AMOVP0,A;数码管显示ACALLDEL1SDJNZR2,DEL3RETDEL55S:ACALLDEL20SMOVR2,#6;倒计时5SDEL55:ACALLDEL1SMOVA,R2ACALLSTMOVP2,A;数码管显示DJNZR2,DEL55RETDEL1S:;1S延时子程序MOVR5,#0BHST1:MOVR6,#0DAHST2:MOVR7,#0CFHDJNZR7,$DJNZR6,ST2DJNZR5,ST1RETDEL20S:;20S延时子程序MOVR5,#0BH;#0DCHST3:MOVR6,#0DAHST4:MOVR7,#0CFHDJNZR7,$DJNZR6,ST4DJNZR5,ST3RETST:;取数MOVDPTR,#TABMOVCA,@A+DPTRRETTAB:DB0FFH,0FFH,0F9H,0A4H,0B0H,99H,92HEnd