单片机交通灯控制器的设计一. 设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制。时间 方向 控制要求白天 东西 绿灯 黄灯 红灯 南北 红灯 绿灯 黄灯夜晚 东西 黄灯 南北 黄灯二. 总体设计方案现在流行的一种设计为两主干线相交的十字路。本设计采用一主干道(南北方向),一从干道(东西方向)的路口,即主干道的通行时间为从干道的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 CLR TR0 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 CLR 00H 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