基于8051单片机的交通指示灯控制设计

要求:
1.东西路口:左转,直行,右转各三个(红黄绿),人行道(红绿)两个,
共11个交通指示灯,应东,西方向灯一致,所以把灯放在东路口。

南北路口:左转,直行,右转各三个(红黄绿),人行道(红绿)两个,
共11个交通指示灯,应南,北方向灯一致,所以把灯放在北路口。

2.总共22个交通指示灯。

3.左转道:A 直行道:B 右转道:C 人行道:P

4.南北为主干道:绿灯时间20s,东西为次干道:绿灯时间15s,黄灯亮:3s

5.启动后,南北B,P绿灯,A,C红灯/东西ABCP全红(20s)--南北B,P黄灯,A,C红灯/东西B,P黄灯,A,C红灯(3s)--南北ABCP全红/东西B,P绿灯,A,C红灯(15s)--南北A,C黄灯,B,P红灯/东西B,P黄灯,A,C红灯(3s)--南北A,C绿灯,B,P红灯/东西ABCP全红(20s)--南北A,C黄灯,B,P红灯/东西A,C黄灯,B,P红灯(3s)--南北ABCP全红/东西A,C绿灯,B,P红灯(15s)--南北B,P黄灯,A,C红灯/东西A,C黄灯,B,P红灯(3s)--重复启动后的状态。

6.有详细的流程图,完整电路图,51单片机编程序(详细解释),电路所需元件

E-mail:[email protected],这是我的邮箱,哪位朋友愿意帮帮我,要求有点多,很急,谢谢了!

交通信号灯模拟控制系统设计程序流程图

开始

8051初使化

四个路口红灯亮

东西红灯亮,南北绿灯亮,延时

东西红灯亮,南北黄灯闪烁,延时

东西绿灯亮,南北红灯亮,延时

东西黄灯闪烁,南北红灯亮,延时

交通信号灯模拟控制系统主程序
ORG 0000H
SJMP A3

ORG 0030H

A3: MOV SP,#60H ;设栈指针初值
MOV A, #24H
MOV P1, A
SETB P3.2
CLR P3.3
CLR P3.4
SETB P3.5 ;全部红灯亮

MOV R4,#00H ;显示0秒
MOV R7,#00H ;显示0秒
MOV R2,#03H
LCALL XI ;调用子程序
A2 : MOV A,#0CH
MOV P1,A
SETB P3.2
SETB P3.3
CLR P3.4
CLR P3.5 ;东西红灯,南北绿灯
MOV R4,#14H ; 显示20秒
LOOP2 : MOV R2,#03H
LCALL XI
DJNZ R4,LOOP2 ;判断20秒显示时间到否

MOV R2,#03H
LCALL XI
LOOP8: MOV R2,#03H ;南北黄灯闪3次
LCALL XI
MOV R4,#05H ;设南北黄灯亮长显示5秒
SETB P3.2
CLR P3.3
A1: MOV A,#14H
MOV P1 ,A
SETB P3.4
CLR P3.5 ;东西红灯,南北黄灯
MOV R2,#01H ;定时
LCALL DELAY ;调用延时子程序
MOV A ,#04H
MOV P1 ,A
CLR P3.4
CLR P3.5 ;东西红灯,南北不亮即意思要南北黄灯闪烁
MOV R2 ,#01H ;定时
LCALL DELAY
DJNZ R4,LOOP8 ;判断南北黄灯闪烁,显示5秒到否?

MOV A, #61H
MOV P1,A
CLR P3.2
CLR P3.3
CLR P3.4
SETB P3.5 ;东西绿灯,南北红灯
MOV R4,#14H ;显示20秒
LOOP3:
MOV R2,#03H
LCALL XI
DJNZ R4,LOOP3 ;判断20秒显示时间到否

MOV R7,#05H ;设东西黄灯亮长显示5秒
SETB P3.5
A0: MOV A,#0A2H
MOV P1,A
CLR P3.2
CLR P3.3
CLR P3.4 ;东西黄灯,南北红灯
MOV R2,#01H ;定时
LCALL DELAY
MOV A,#20H ;
MOV P1,A
CLR P3.2
CLR P3.3
CLR P3.4 ;南北红灯,东西不亮即意思要东西黄灯闪烁
MOV R2,#01H ;定时
LCALL DELAY
DJNZ R7,A0 ;判断东西黄灯闪烁,显示5秒到否?
LJMP A2 ;循环回状态1,即东西红灯,南北黄灯

DELAY: PUSH 2
PUSH 1
PUSH 0 ;进栈
DELAY1: MOV 1,#00H
DELAY2:MOV 0,#0B2H
DJNZ 0,$ ;判断是否运行完0B2H
DJNZ 1,DELAY2
DJNZ 2,DELAY1
POP 0
POP 1
POP 2 ;出栈
DJNZ R2 ,DELAY ; 判断R2是否运行完
RET ;返回主程序
XI: MOV A,R4
MOV B,#10
DIV AB
MOV R6,A
MOV DPTR,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH
H55S: DJNZ R7,H55S
MOV A,R6
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH
H55S1: DJNZ R7,H55S1
LCALL DELAY
RET
TAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-24
交通信号灯模拟控制系统设计程序流程图nbsp;开始nbsp;↓nbsp;8051初使化nbsp;↓nbsp;四个路口红灯亮nbsp;↓nbsp;东西红灯亮,南北绿灯亮,延时nbsp;↓nbsp;东西红灯亮,南北黄灯闪烁,延时nbsp;↓nbsp;东西绿灯亮,南北红灯亮,延时nbsp;↓nbsp;东西黄灯闪烁,南北红灯亮,延时nbsp;交通信号灯模拟控制系统主程序nbsp;ORGnbsp;0000Hnbsp;SJMPnbsp;A3nbsp;ORGnbsp;0030Hnbsp;A3:nbsp;MOVnbsp;SP,#60Hnbsp;;设栈指针初值nbsp;MOVnbsp;A,nbsp;#24Hnbsp;MOVnbsp;P1,nbsp;Anbsp;SETBnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;SETBnbsp;P3.5nbsp;;全部红灯亮nbsp;MOVnbsp;R4,#00Hnbsp;;显示0秒nbsp;MOVnbsp;R7,#00Hnbsp;;显示0秒nbsp;MOVnbsp;R2,#03Hnbsp;LCALLnbsp;XInbsp;;调用子程序nbsp;A2nbsp;:nbsp;MOVnbsp;A,#0CHnbsp;MOVnbsp;P1,Anbsp;SETBnbsp;P3.2nbsp;SETBnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;CLRnbsp;P3.5nbsp;;东西红灯,南北绿灯nbsp;MOVnbsp;R4,#14Hnbsp;;nbsp;显示20秒nbsp;LOOP2nbsp;:nbsp;MOVnbsp;R2,#03Hnbsp;LCALLnbsp;XInbsp;DJNZnbsp;R4,LOOP2nbsp;;判断20秒显示时间到否nbsp;MOVnbsp;R2,#03Hnbsp;LCALLnbsp;XInbsp;LOOP8:nbsp;MOVnbsp;R2,#03Hnbsp;;南北黄灯闪3次nbsp;LCALLnbsp;XInbsp;MOVnbsp;R4,#05Hnbsp;;设南北黄灯亮长显示5秒nbsp;SETBnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;A1:nbsp;MOVnbsp;A,#14Hnbsp;MOVnbsp;P1nbsp;,Anbsp;SETBnbsp;P3.4nbsp;CLRnbsp;P3.5nbsp;;东西红灯,南北黄灯nbsp;MOVnbsp;R2,#01Hnbsp;;定时nbsp;LCALLnbsp;DELAYnbsp;;调用延时子程序nbsp;MOVnbsp;Anbsp;,#04Hnbsp;MOVnbsp;P1nbsp;,Anbsp;CLRnbsp;P3.4nbsp;CLRnbsp;P3.5nbsp;;东西红灯,南北不亮即意思要南北黄灯闪烁nbsp;MOVnbsp;R2nbsp;,#01Hnbsp;;定时nbsp;LCALLnbsp;DELAYnbsp;DJNZnbsp;R4,LOOP8nbsp;;判断南北黄灯闪烁,显示5秒到否?nbsp;MOVnbsp;A,nbsp;#61Hnbsp;MOVnbsp;P1,Anbsp;CLRnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;SETBnbsp;P3.5nbsp;;东西绿灯,南北红灯nbsp;MOVnbsp;R4,#14Hnbsp;;显示20秒nbsp;LOOP3:nbsp;MOVnbsp;R2,#03Hnbsp;LCALLnbsp;XInbsp;DJNZnbsp;R4,LOOP3nbsp;;判断20秒显示时间到否nbsp;MOVnbsp;R7,#05Hnbsp;;设东西黄灯亮长显示5秒nbsp;SETBnbsp;P3.5nbsp;A0:nbsp;MOVnbsp;A,#0A2Hnbsp;MOVnbsp;P1,Anbsp;CLRnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;;东西黄灯,南北红灯nbsp;MOVnbsp;R2,#01Hnbsp;;定时nbsp;LCALLnbsp;DELAYnbsp;MOVnbsp;A,#20Hnbsp;;nbsp;MOVnbsp;P1,Anbsp;CLRnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;;南北红灯,东西不亮即意思要东西黄灯闪烁nbsp;MOVnbsp;R2,#01Hnbsp;;定时nbsp;LCALLnbsp;DELAYnbsp;DJNZnbsp;R7,A0nbsp;;判断东西黄灯闪烁,显示5秒到否?nbsp;LJMPnbsp;A2nbsp;;循环回状态1,即东西红灯,南北黄灯nbsp;DELAY:nbsp;PUSHnbsp;2nbsp;PUSHnbsp;1nbsp;PUSHnbsp;0nbsp;;进栈nbsp;DELAY1:nbsp;MOVnbsp;1,#00Hnbsp;DELAY2:MOVnbsp;0,#0B2Hnbsp;DJNZnbsp;0,$nbsp;;判断是否运行完0B2Hnbsp;DJNZnbsp;1,DELAY2nbsp;DJNZnbsp;2,DELAY1nbsp;POPnbsp;0nbsp;POPnbsp;1nbsp;POPnbsp;2nbsp;;出栈nbsp;DJNZnbsp;R2nbsp;,DELAYnbsp;;nbsp;判断R2是否运行完nbsp;RETnbsp;;返回主程序nbsp;XI:nbsp;MOVnbsp;A,R4nbsp;MOVnbsp;B,#10nbsp;DIVnbsp;ABnbsp;MOVnbsp;R6,Anbsp;MOVnbsp;DPTR,#TABnbsp;MOVnbsp;A,Bnbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;SBUF,Anbsp;MOVnbsp;R7,#0FHnbsp;H55S:nbsp;DJNZnbsp;R7,H55Snbsp;MOVnbsp;A,R6nbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;SBUF,Anbsp;MOVnbsp;R7,#0FHnbsp;H55S1:nbsp;DJNZnbsp;R7,H55S1nbsp;LCALLnbsp;DELAYnbsp;RETnbsp;TAB:DBnbsp;0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0hnbsp;DBnbsp;0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8ehnbsp;END
相似回答