首页

单片机交通灯控制器的汇编程序设计

单片机交通灯控制器的设计

一. 设计任务

在一十字路口设置交通灯,并用单片机对其进行合理的控制。

时间 方向 控制要求

白天 东西 绿灯 黄灯 红灯

南北 红灯 绿灯 黄灯

夜晚 东西 黄灯

南北 黄灯

二. 总体设计方案

现在流行的一种设计为两主干线相交的十字路。本设计采用一主干道(南北方向),一从干道(东西方向)的路口,即主干道的通行时间为从干道的2倍。在正常情况下,两干道的交通灯按图1进行转换,并以倒计数的方式将剩余时间显示在每个干道对应的两位LED上;另发挥部分为当出现紧急情况时,路口的交通灯全为红灯,紧急情况解除时,恢复到原来的状态。其具体状态如图1。 状态 持续时间/S 南北方向 东西方向 控制码

绿 黄 红 绿 黄 红

1 40 亮 灭 灭 灭 灭 亮 01111110B

2 5 灭 亮 灭 灭 灭 亮 10111110B

3 20 灭 灭 亮 亮 灭 灭 11001111B

4 5 灭 灭 亮 灭 亮 灭 11011101B

5 按紧急键 灭 灭 亮 灭 灭 亮 11011110B

6 按夜晚键 灭 亮 灭 灭 亮 灭 01111100B

7 按恢复键 恢复 恢复 恢复 恢复 恢复 恢复 恢复原来

其系统框图如图2。

三.硬件电路的设计

1. 单片机系统

单片机系统采用atmel公司的AT89C51芯片,晶振选用6MHZ,电源电压采用5V。其总体系统电路图见图3。

2. 信号灯与按钮电路的设计

信号灯采用发光二极管组成,分红黄绿三种颜色。该系统用于控制信号灯的输出线路有六条,按钮输出线有三条,应用AT89C51的P2.7,P3口来实现上述连接。3个按钮一端通过上拉电阻连接到电源,并输入单片机,另一端接地,这样未按下时,输入是高电平,反之,为低电平。采用软件消抖。

3. LED显示电路

用LED显示器共有4位,需8位输出口用于位选输出,分别选用AT89C51的P1,P2口,驱动电路采用芯片7407驱动器。

四.软件设计

本系统的软件包括主程序,显示程序和定时器溢出中断程序三部分。

1. 主程序:设置堆栈,定时器初始化,中断系统初始化,显示缓冲区赋初值,设置状态标志,状态切换。主程序流程图见图4。

2. 中断服务程序

其功能主要包括:不同状态下的时间计时,状态的循环切换,更新显示等,其流程图见图5。

现将内部数据存储器分配如下:

(1) 60H~7FH:堆栈;

(2) 5CH~5FH:显示缓冲区;

(3) 5BH:定时溢出次数计数;

(4) 5AH:秒计数单元;

(5) 20H:状态标志单元;

(6) 其他:数据缓冲区。

定义状态标志位:

(1) 00H:状态1标志,为“1”时表明当前运行于状态1;

(2) 01H:状态2标志,为“1”时表明当前运行于状态2;

(3) 02H:状态3标志,为“1”时表明当前运行于状态3;

(4) 03H:状态4标志,为“1”时表明当前运行于状态4;

具体程序如下:

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP T01NT

MAIN:MOV SP,#5FH

MOV TMOD,#01H

MOV TL0,#0B0H

MOV TH0,#3CH

SETB 00H

CLR 01H

CLR 02H

CLR 03H

MOV 5BH,#0

MOV 5AH,#40

MOV 5CH,#4

MOV 5DH,#0

MOV 5EH,#4

MOV 5FH,#0

SETB TR0

MOV IE,#82H

M1:ACALL DIR

JNB P3.2,M2

JINB P3.3 ,M3

SJMP M1

M2:ACALL DIR

ACALL DIR

ACALL DIR

ACALL DIR

JB P3.2,M1

MOV P3,#0DEH M21:ACALL DIR JNB P3.2,M21

SJMP M1

M3:ACALL DIR ACALL DIR

ACALL DIR

ACALL DIR

JB P3.3,M1

JB 00H,M31

MOV P3,#7EH

SJMP M34

M31:JB 01H,M32 MOV P3,#0BEH SJMP M34

M32:JB 02H,M33 MOV P3,#0CFH SJMP M34

M33:MOV P3,#0DDH M34:SETB TR0 M35:ACALL DIR JNB P3.3,M21

SJMP M1

T01NT:PUSH ACC PUSH PSW

MOV PSW,#08H MOV TL0,#0B0H MOV TH0,#3CH INC 5BH

MOV A,5BH

CJNE A,#10,T0ED MOV 5BH,#0

DEC 5AH

MOV A,5AH

MOV B,#10

DIV AB

MOV 5CH,A

MOV 5DH,B

MOV 5EH,A

MOV 5FH,B

MOV A,5AH

JNZ T0ED

JNB 00H,T01

SETB 01H

MOV P3,#0BEH MOV 5CH,#0

MOV 5DH,#5

MOV 5EH,#0

MOV 5FH,#5

MOV 5AH,#5

SJMP T0ED

T01:JNB 01H,T02 CLR 01H

SETB 02H

MOV P3,#0CFH MOV 5CH,#2

MOV 5DH,#0

MOV 5EH,#2

MOV 5FH,#0

MOV 5AH,#20

SJMP T0ED

T02:JNB 02H,T03 CLR 02H

SETB 03H

MOV P3,#0DDH MOV 5CH,#0

MOV 5DH ,#5

MOV 5EH,#0

MOV 5FH,#5

MOV 5AH,#5

SJMP T0EDH

T03:CLR 03H

SETB 00H

MOV P3,#7EH

MOV 5CH,#4

MOV 5DH,#0

MOV 5EH,#4

MOV 5FH,#0

MOV 5AH,#40

T0ED:POP PSW POP ACC

RETI

显示子程序:

DIR:MOV R5,#4

MOV R2,#01H

MOV R0,#5CH

DIR1:MOV A,@R0 ADD A#

MOVC A,@A+PC MOV P1,A

MOV P2,R2

INC R0

MOV A,R2

RL A

MOV R2,A

ACALL DL

DJNZ R5,DIR1

RET

DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,67H END