交通信号灯模拟控制器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通信号灯模拟控制器

讲授要点

一、课题内容

编写一程序实现城市“十字”路口正常情况下以及特殊情况和紧急情况下交通信号灯的模拟控制。

1、在十字路口东西南北各设置红、黄、绿三种信号灯,如图1所示。正常情况下,东西、南北方向轮流放行。当东西方向(A线)放行、南北方向(B线)禁行时,东西方向(A线)绿灯亮25秒,然后黄灯亮5秒,南北方向(B线)红灯亮30秒;当南北方向(B线)放行、东西方向(A 线)禁行时,南北方向(B线)绿灯亮25秒,然后黄灯亮5秒,东西方向(A线)红灯亮30秒。如此循环,实现交通灯定时控制。

2、有急救车优先通过功能。当有急救车到达时,路口的信号灯全部变红灯,以便急救车通过,急救车的通行时间为10秒,急救车过后,交通灯恢复先前状态。

3、交通灯在红、绿灯交替点亮中,用两个数码管显示点亮的灯还能持续的时间。

图1 交通灯布置示意图

二、编程指导

1、电路图

交通灯控制电路的核心元件采用单片机芯片AT89C51,其内部带有4KB的ROM,无须扩展存储器。

信号灯的控制由单片机的P1.0~P1.5控制,6只信号灯以共阴极方式连接,当P1口输出为高电平时,信号灯点亮,为实现上述控制要求,P1口共输出四种控制码,如表1所示。

表1:交通灯信号控制码

2、控制程序

(1)流程图

软件包括主程序、延时、显示子程序、中断服务程序,各程序流程图如图2所示。

主程序流程图

显示子程序流程图

中断服务程序

紧急情况

图2 程序流程图

三、参考程序

主程序:

ORG 2000H

MAIN : MOV DPTR ,#7F00H

MOV A ,#0BH ;PA 、PC 口均为输出

MOVX @DPTR ,A MAIN : SETB EA ;开中断

SETB EX0

MOV 50H,#1FH ;设置时间显示初值

MOV P1,#0CH ;A道放行,B道禁行

MOV R7,#19H ;延时秒数

MAIN1:LCALL DISP ;调1秒延时、及显示子程序

DJNZ R7,MAIN1

MOV P1,#0AH ;A道警告,B道禁行

MOV R7,#05H ;延时秒数

MAIN2:LCALL DISP

DJNZ R7,MAIN2

MOV 50H,#1FH ;设置时间显示初值

MOV P1,#21H ;A道禁行,B道放行

MOV R7,#19H ;延时秒数

MAIN3:LCALL DISP

DJNZ R7,MAIN3

MOV P1,#11H ;A道禁行,B道警告

MOV R7,#05H ;延时秒数

MAIN4:LCALL DISP

DJNZ R7,MAIN4

AJMP MAIN ;循环

延时、显示子程序:

ORG 2000H

DISP:MOV R6,#01H ;设置显示位寄存器初值(右边一位MOV TMOD,#01H ;定时器T0设置为定时方式的模式1

MOV R5,#0AH ;定时器操作循环10次

DEL1:MOV TH0,#3CH ;定时器100ms计数器的初始值

MOV TL0,#B0H

SETB TR0 ;启动定时器

DEL2:DEC 50H ;显示秒数减1

MOV A,50H

MOV B,#0AH

DIV B ;拆分秒数

ADD A,#2BH

MOVC A,@A+PC ;查表个位数的字形码

MOV R1,A ;个位数字形码送R1

MOV A,B

ADD A,#25H

MOVC A,@A+PC ;查表十位数的字形码

MOV R2,A ;十位数字形码送R2

MOV A,R6 ;位控码

MOV DRTP,#7F03H

MOVX @DPTR,A

MOV A,R1 ;送个位数显示

MOV DPTR,#7F01H

MOVX @DPTR,A

LCALL DELAY ;延时1ms

MOV A,R6

RL A ;位控左移

MOV R6,A

MOV DPTR,#7F03H

MOVX @DPTR,A

MOV A,R2 ;送十位数显示

MOV DPTR,#7F01H

MOVX @DPTR,A

LCALL DELAY ;延时1ms

JNB TF0,$ ;检测100ms定时是否到

CLR TF0

DJNZ R5,DEL1 ;100ms循环控制

RET ;返回

TABLE: DB C0H,F9H,A4H,B0H,

99H

DB 92H,82H,F8H,80H,

90H

DELAY:MOV R7,#02H ;延时1ms子程序

DEL3:MOV R6,#0F9H

DEL4:DJNZ R6,DEL2

DJNZ R7,DEL1

RET

END

中断服务程序:

ORG 0003H ;外部中断0入口地址

LJMP INTER0

ORG 2100H

INTER0:PUSH 50H ;保护现场

PUSH P1

MOV P1,#00H ;两车道禁止

MOV R7,#0AH ;延时10秒

INT0:LCALL DISP ;调显示

DJNZ R7,INT0

POP P1 ;恢复现场

POP 50H

RETI ;中断返回

相关文档
最新文档