单片机红绿灯程序完整版可编辑修改word版.docx
《单片机红绿灯程序完整版可编辑修改word版.docx》由会员分享,可在线阅读,更多相关《单片机红绿灯程序完整版可编辑修改word版.docx(6页珍藏版)》请在冰豆网上搜索。
单片机红绿灯程序完整版可编辑修改word版
交
通灯设计
交通灯
设计方案:
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秒倒计时结束
程序如下:
ORG0000HLJMPLOOP
ORG000BH;定时器0中断,实现交通应急事件
LJMPWZD0
ORG0013H;外部中断1,实现交通应急事件LJMPWZD1
ORG0030HLOOP:
MOVR3,#5MOVR4,#5MOVR2,#20
MOVSP,#70HMOVIE,#85H
MOV
TMOD,#01H
;置T0为工作方式1
MOV
TH0,#3CH
;置T0定时初值50ms
MOV
CLR
TF0
TL0,#0B0H
SETBTR0;启动定时器T0
SETBP1.1;东---红灯亮,北---绿灯亮SETBP1.2
CLRP1.0SETBP1.3SETBP1.4CLRP1.5
ACALLDEL30S
ACALLYELLOW1;北---绿灯转黄灯,东---红灯亮ACALLDEL3S;延时后北---黄灯灭
SETBP1.0;东:
红灯灭,绿灯亮,北:
黄灯灭,红灯亮。
SETBP1.1
CLRP1.3
CLRP1.2SETBP1.4SETBP1.5
ACALLDEL55S;北---红灯不变,东---绿灯转黄灯
ACALLYELLOW2ACALLDEL3SSJMPLOOP
YELLOW1:
;北---绿灯转黄灯,东---红灯不变
SETBP1.0SETBP1.2CLRP1.1SETBP1.3CLRP1.5SETBP1.4RET
YELLOW2:
;东---绿灯转黄灯,北---红灯不变
SETBP1.0SETBP1.1CLRP1.2SETBP1.3SETBP1.5CLRP1.4
RET
WZD0:
;实现南北路交通应急事件
CLRP1.0;(南北路保持畅通,东西路停止通行)SETBP1.1
SETBP1.2SETBP1.3SETBP1.4CLRP1.5
JNBP3.2,WZD0RETI
WZD1:
;实现东西路交通应急事件
CLRP1.3;(东西路保持畅通,南北路停止通行)CLRP1.2
SETBP1.1SETBP1.0SETBP1.4SETBP1.5
JNBP3.3,WZD1RETI
DEL30S:
;红绿灯延时
DEL25S:
JNBTF0,DEL25S;查询50ms到否CLRTF0
MOVTH0,#3CH;恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR2,DEL25S;判断1s到否?
未到继续状态1MOVR2,#20;置50ms计数初值
DJNZR4,DEL25S;状态1维持25s
DEL5S:
;取数延时
MOVR2,#6
DEL5:
MOVA,R2
ACALLST;取数
MOVP0,A;实现数码管显示
ACALLDEL1S;每隔1S减1DJNZR2,DEL5
RET
DEL3S:
MOVR2,#4H
DEL3:
MOVA,R2
ACALLST;取数
MOVP2,A
MOVP0,A;数码管显示
ACALLDEL1SDJNZR2,DEL3RET
DEL55S:
ACALLDEL20S
MOVR2,#6;倒计时5S
DEL55:
ACALLDEL1SMOVA,R2
ACALLST
MOVP2,A;数码管显示
DJNZR2,DEL55RET
DEL1S:
;1S延时子程序
MOVR5,#0BH
ST1:
MOVR6,#0DAH
ST2:
MOVR7,#0CFHDJNZR7,$DJNZR6,ST2DJNZR5,ST1
RET
DEL20S:
;20S延时子程序
MOVR5,#0BH;#0DCH
ST3:
MOVR6,#0DAH
ST4:
MOVR7,#0CFHDJNZR7,$DJNZR6,ST4DJNZR5,ST3
RET
ST:
;取数
MOVDPTR,#TABMOVCA,@A+DPTR
RET
TAB:
DB0FFH,0FFH,0F9H,0A4H,0B0H,99H,92H
End