图1是一个十字路口示意图。分别用1、2、3、4表明四个流向的主车道,用A、B、C、P分别表示各主车道的左行车道、直行车道、右行车道以及人行道。用a、b、c、p分别表示左转、直行、右转和人行道的交通信号灯,如图2所示。 
 交通灯闪亮的过程: 
 路口1的车直行时的所有指示灯情况为: 
3a3b2p绿3c红+4a4b4c 3p全红+1c 绿1a1b4p红+2c绿2a2b1p红 
 路口2的车直行时的所有指示灯情况为: 
4a4b3p绿4c红+ 1a1b1c 4p全红+ 2c绿2a2b1p红+3c绿3a3b2p红 
 故路口3的车直行时的所有指示灯情况为: 
1a1b4p绿1c红+ 2a2b2c 1p全红+3c绿 3a3b2p红+4c 绿4a4b3p红 
 故路口4的车直行时的所有指示灯情况为: 
2a2b1p绿2c红+3c3a3b2p全红+4c绿4a4b3p红+1c绿1a1b4p红 

 图1:十字路口交通示意图 

 图2:十字路口通行顺序示意图 

 图3:十字路口交通指示灯示意图 

 图4:交通灯控制系统硬件框图 
3、硬件设计 
 本系统硬件上采用AT89C52单片机和可编程并行接口芯片8155,分别控制图2所示的四个组合。AT89C52单片机具有MCS-51内核,片内有8KB Flash、256字节RAM、6个中断源、1个串行口、最高工作频率可达24MHz,完全可以满足本系统的需要 ;与其他控制方法相比,所用器件可以说是比较简单经济的。硬件框图如下: 
 电路原理图 [PDF] 
 4、软件流程图 

 图5:交通灯控制系统流程图 
5、交通灯控制系统软件 
ORG 0000H 
 LJMP MAIN 
 ORG 0100H 
 MAIN: 
 MOV SP,#60H 
 ; LCALL DIR ;调用日期、时间显示子程序 
LOOP: 
 MOV P1,#0FFH 
 LJMP TEST 
 LCALL ROAD1 ;路口1的车直行时各路口灯亮情况 
LCALL DLY30s ;延时30秒 
MOV P1,#0FFH ;恢复P1口高电平 
LCALL RESET ;恢复8155各口为高电平 
LCALL YELLOW1 ;路口1的车直行-->路口2的车直行黄灯亮情况 
LCALL DLY5s ;延时5秒 
LCALL RESET ;恢复8155各口为高电平 
MOV P1,#0FFH ;恢复P1口 
LCALL ROAD2 ;路口2的车直行时各路口灯亮情况 
LCALL DLY30s ;延时30秒 
LCALL RESET ;恢复8155A 、B口为高电? 
MOV P1,#0FFH ;恢复P1口高电平 
LCALL YELLOW2 ;路口2的车直行-->路口3的车直行黄灯亮情况 
LCALL DLY5s ;延时5秒 
LCALL RESET ;恢复8155A 、B口为高电? 
MOV P1,#0FFH ;恢复P1口高电平 
LCALL ROAD3 ;路口3的车直行时各路口灯亮情况 
LCALL DLY30s ;延时30秒 
LCALL RESET ;恢复8155A 、B口为高电? 
MOV P1,#0FFH ;恢复P1口高电平 
LCALL YELLOW3 ;路口3的车直行-->路口4的车直行黄灯亮情况 
LCALL DLY5s ;延时5秒 
LCALL RESET ;恢复8155各口为高电平 
MOV P1,#0FFH ;恢复P1口高电平 
LJMP TEST 
 LCALL ROAD4 ;路口4的车直行时各路口灯亮情况 
LCALL DLY30s ;延时30秒 
SETB P1.5 ;恢复P1.5高电平 
SETB P1.4 ;恢复P1.4高电平 
MOV DPTR,#0FFFFH ;恢复8155各口为高电平 
LCALL YELLOW4 ;路口4的车直行-->路口1的车直行黄灯亮情况 
LCALL DLY5s ;延时5秒 
SETB P1.6 ;恢复P1.6高电平 
SETB P1.3 ;恢复P1.3高电平 
MOV DPTR,#0FFFFH ;恢复8155各口为高电平 
LJMP LOOP 
 ;路口1的车直行时各路口灯亮情况3a3b2p绿3c红+4a4b4c3p全红+1c绿1a1b4p红+2c绿2a2b1p红 
ROAD1: 
 MOV DPTR,#7F00H ;置8155命令口地址;无关位为1) 
MOV A,#03H ;A口、B口输出,A口、B口为基本输入输出方式 
MOVX @DPTR,A ;写入工作方式控制字 
INC DPTR ;指向A口 
MOV A,#79H ;1a1b4p红1c绿2a2b1p红 
MOVX @DPTR,A 
 INC DPTR ;指向B口 
MOV A,#0E6H ;3a3b2p绿3c红4a4b3p红 
MOVX @DPTR,A 
 MOV P1,#0DEH ;4c红2c绿 
RET 
 6、结语 
 本系统结构简单,操作方便;可现自动控制,具有一定的智能性;对优化城市交通具有一定的意义。 
 本设计将各任务进行细分包装,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。