单片机红绿灯程序完整版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通灯设计
交通灯
设计方案:
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
3
延时25
5
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