基于Multisim的交通灯仿真设计
设计要求
设计并实现一个简单的十字路口交通灯控制电路。具体要求:以4个红色指示灯、4个绿色指示灯和4个黄色指示灯模拟路口东西南北4个方向的红绿黄交通灯。控制这些灯,使它们安下列规律亮灭。
- 东西方向绿灯亮,南北方向红灯亮。东西方向通车,时间20秒;
- 东西方向黄灯闪烁,南北方向红灯亮,时间5秒。
- 东西方向红灯亮,南北方向绿灯亮。南北方向通车,时间20秒;
- 东西方向红灯亮,南北方向黄灯闪烁,时间5秒。
- 返回1,继续运行。
一、方案分析
就题目分析,交通灯在四个状态之间循环转换,故可以采用序列产生器、同步时钟状态机及译码器设计主要标准;利用555定时器产生秒脉冲时钟信号,利用2位2进制计数器产生四个一循环的序列,利用逻辑电路产生控制东西灯、南北灯、持续时间、是否闪烁的编码信号,利用倒计时器确定持续时间,利用倍频器产生闪烁脉冲,利用状态译码器解读编码信号,传递给LED显示驱动电路,从而达到设计要求。
二、模块组成
1.脉冲产生器
利用前几个实验所学到的555脉冲产生知识,可以轻松产生一个2Hz脉冲时钟信号(CLK_2用于黄灯闪烁),再利用D触发器二分频,产生秒脉冲信号(CLK_1)。

采用如图所示的555振荡产生电路,在6和7脚之间添加一个二极管,当$R_1=R_2$时理想输出脉冲占空比为50%。
$$T=2 \times 0.7 \times R_1 \times C_1=0.5s$$
当$C_1=10μF$时,求得$R_1 \approx 35.7K \Omega$,通过微调$R_3$可使占空比接近50%
输出如下图:

2.状态编码器
利用两个D触发器实现简单的2位2进制计数器,输出为00-01-10-11-00……,分别代表交通灯四个循环状态。该模块有两个输入,分别为时钟信号和保持信号。当保持信号低有效时,保持输出的编码,用以控制灯亮时间。

输出波形如图:

但这四个编码是远远不够的,为控制交通灯的的颜色,至少需要3个状态,故采用2位编码(00红灯亮、01黄灯亮、10绿灯亮),两个不同的方向则需要4位编码(前两位东西向,后两位南北向);控制灯亮的时长及黄灯闪烁只需一位编码(1表示30秒,黄灯不闪烁,0表示2秒,黄灯闪烁);共需要5位编码。如下表:

电路图如下:






3.1状态译码器及LED显示驱动电路
要使交通灯按照要求显示,则需对状态编码进行译码。在上述状态编码中,前两位负责东西向三种状态,中两位负责南北向的三种状态,采用一片74LS139双二四译码器,可以满足需求。由于输出为低电平有效需反相。其中对于黄灯,需额外添加一个控制器闪烁的时钟。
LED显示驱动利用三极管的工作在饱和区的特性用作开关电路。如下图:

总电路:

4.倒计时器
74LS190本身为10进制8421BCD加减计数器。利用置数功能,可以实现2和3进制的倒计时(从而实现2秒、30秒的倒计时)。

仿真效果如图:

由于逻辑电路的关系,出现了冒险,约35ns

为实现倒计时30s和2s的功能需要增加倒计时的模式选择功能。我们利用状态编码器的最后一位T;当T=1时,两个计数器分别对2和9倒计时,当T=0时,左侧不使能(显示0),右侧对1倒计时。这里展示具有10进制和2进制倒计时模式的倒计时器电路(3进制控制使能即可):


在倒计时过程后,我们需要输出一个信号使状态编码器保持,结束后需输出一个信号进入下一状态。这里我们利用74LS190的借位输出ROC,当两个计数器的ROC均为低电平时,倒计时结束,使输出KEEP为高电平结束序列保持状态,进入下一状态。倒计时的显示采用74LS47 8421BCD七段码译码器和共阳极七段数码管。总电路如下:

三、总电路




四、仿真结果




五、总结
本次的交通灯设计,涵盖了555定时器产生脉冲波形,状态编码、译码,倒计时器设计,LED显示驱动电路,是对本课程学习情况的综合性考察。本人在设计的过程中也遇到了很多困难,常常出现仿真崩溃,最终是勉强完成了设计任务,但有时仍会出现bug,后续仍需改善。最后感谢陈瑜老师的教导,祝老师与助教身体安康。