速求单片机交通信号灯模拟控制系统
解决时间 2021-05-01 03:51
- 提问者网友:最美的风景
- 2021-04-30 03:42
用8051单片机设计一交通信号灯模拟控制系统,晶振采用12MHz。具体要求如下:
(1)正常情况下A、B道(A、B道交叉组成十字路口,A是主道,B是支道)轮流放行,A道放行1分钟(其中5秒用于警告),B道放行30秒(其中5秒用于警告)。
(2)一道有车而另一道无车(用按键开关K1、K2模拟)时,使有车车道放行。
(3)有紧急车辆通过(用按键开关K0模拟)时,A、B道均为红灯。
解:根据题意,整体设计思路如下:
(1)正常情况下运行主程序,采用0.5秒延时子程序的反复调用来实现各种定时时间;
(2)一道有车而另一道无车时,采用外部中断1方式进入与其相应的中断服务程序,并设置该中断为低优先级中断;
(3)有紧急车辆通过时,采用外部中断0方式进入与其相应的中断服务程序,并设置该中断为高优先级中断,实现中断嵌套。
分别以按键K1、K2模拟A、B道的车辆检测信号,当K1、K2为高电平(不按按键)时,表示有车;K1、K2为低电平(按下按键)时,表示无车。K1、K2相同时属正常情况,K1、K2不相同时属一道有车另一道无车的情况,因此产生外部中断1中断
的条件应是:
.
可用74LS266(如无74LS266,可用74LS86与74LS04组合)来实现。另外,还需将K1、K2信号接入单片机,以便单片机查询有车车道,可将其分别接至单片机的P3.0口和P3.1口。
以按键K0模拟紧急车辆通过开关,当K0为高电平时属正常情况,当K0为低电平时,属紧急车辆通过的情况,直接将K0信号接至脚即可实现外部中断0中断。
硬件图如下:
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-04-30 05:04
下面的程序我按你的要求写了“|几天几夜”了,在keil wave软件可以完美仿真!看不懂可以问我啊!不过要请我去总统大酒店吃饭,去东圃桑拿,还有去深圳世界之窗,还有欢乐谷......
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP I0
ORG 0013H
AJMP I1
ORG 0030H
MAIN: SETB PX0
MOV TCON,#00H
MOV TMOD,#10H
MOV IE,#85H
SP1: MOV P1,#0F3H
MOV R2,#96
RP1: LCALL DELAY
DJNZ R2,RP1
MOV R2,#6
JGA: CPL P1.2
LCALL DELAY
DJNZ R2,JGA
MOV P1,#0F5H
MOV R2,#4
RP12: LCALL DELAY
DJNZ R2,RP12
SP2: MOV P1,#0DEH
MOV R2,#50
RP21: LCALL DELAY
DJNZ R2,RP21
MOV R2,#6
RP22: CPL P1.5
LCALL DELAY
DJNZ R2,RP22
MOV R2,#4
MOV P1,#0EEH
JGB: LCALL DELAY
DJNZ R2,JGB
AJMP SP1
I0: PUSH 02H
PUSH P1
PUSH TH1
PUSH TL1
MOV P1,0F6H
MOV R4,#20
JH: LCALL DELAY
DJNZ R4,JH
POP TL1
POP TH1
POP P1
POP 02H
RETI
I1: CLR EA
PUSH 02H
PUSH P1
PUSH TH1
PUSH TL1
SETB EA
JNB P3.0,BD
MOV P1,#0F3H
MOV R5,#10
JAB: LCALL DELAY
DJNZ R5,JAB
BD: JNB P3.1,TC
MOV P1,#0EDH
MOV R5,#10
JBA: LCALL DELAY
DJNZ R5,JBA
TC: CLR EA
POP TL1
POP TH1
POP P1
POP 03H
SETB EA
RETI
DELAY: MOV R3,#10
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
D1: JNB TF1,$
CLR TF1
MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ R3,D1
RET
END
全部回答
- 1楼网友:痴妹与他
- 2021-04-30 06:10
NAME T3 ;I/O口扩展实验一
PORT EQU 0CFA0H ;片选地址CS0
CSEG AT 0000H
LJMP START
CSEG AT 4100H
START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭
ACALL DISP ;调用273显示单元(以下雷同)
ACALL DE3S ;延时3秒
LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮
ACALL DISP
ACALL DE10S ;延时10秒
MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮
ACALL DISP
MOV R2,#05H ;R2中的值为黄灯闪烁次数
TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮
ACALL DISP
ACALL DE02S ;延时0.2秒
MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮
ACALL DISP
ACALL DE02S ;延时0.2秒
DJNZ R2,TTT ;返回TTT,使东西路口;黄灯闪烁五次
MOV A,#11H ;两个红灯亮,黄灯、绿灯灭
ACALL DISP
ACALL DE02S ;延时0.2秒
MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮
ACALL DISP
ACALL DE10S ;延时10秒
MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭
ACALL DISP
MOV R2,#05H ;黄灯闪烁五次
GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮
ACALL DISP
ACALL DE02S ;延时0.2秒
MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭
ACALL DISP
ACALL DE02S ;延时0.2秒
DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次
MOV A,#03H ;两个红灯亮,黄灯、绿灯灭
ACALL DISP
ACALL DE02S ;延时0.2秒
JMP LLL ;转LLL循环
DE10S: MOV R5,#100 ;延时10秒
JMP DE1
DE3S: MOV R5,#30 ;延时3秒
JMP DE1
DE02S: MOV R5,#02 ;延时0.2秒
DE1: MOV R6,#200
DE2: MOV R7,#126
DE3: DJNZ R7,DE3
DJNZ R6,DE2
DJNZ R5,DE1
RET
DISP: MOV DPTR,#PORT ;273显示单元
CPL A
MOVX @DPTR,A
RET
END
我这人懒的很 剩余的你自己改一下吧
我要举报
大家都在看
推荐资讯