基于Multisim的交通灯仿真设计

warning: 这篇文章距离上次修改已过817天,其中的内容可能已经有所变动。

设计要求

  设计并实现一个简单的十字路口交通灯控制电路。具体要求:以4个红色指示灯、4个绿色指示灯和4个黄色指示灯模拟路口东西南北4个方向的红绿黄交通灯。控制这些灯,使它们安下列规律亮灭。

  1. 东西方向绿灯亮,南北方向红灯亮。东西方向通车,时间20秒;
  2. 东西方向黄灯闪烁,南北方向红灯亮,时间5秒。
  3. 东西方向红灯亮,南北方向绿灯亮。南北方向通车,时间20秒;
  4. 东西方向红灯亮,南北方向黄灯闪烁,时间5秒。
  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%
输出如下图:

info:在后续仿真中,由仿真步长原因,将以50Hz、100Hz脉冲波演示

2.状态编码器

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


输出波形如图:
左侧保持信号为1,右侧保持信号为0左侧保持信号为1,右侧保持信号为0

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

电路图如下:

输出第1位,当且仅当状态为00时输出1输出第1位,当且仅当状态为00时输出1

输出第2位,当且仅当状态为01时输出1输出第2位,当且仅当状态为01时输出1

输出第3位,当且仅当状态为10时输出1输出第3位,当且仅当状态为10时输出1

输出第4位,当且仅当状态为11时输出1输出第4位,当且仅当状态为11时输出1

输出第5位,当且仅当状态为00或10时输出1输出第5位,当且仅当状态为00或10时输出1

3.1状态译码器及LED显示驱动电路

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

当输入为高电平时,LED点亮当输入为高电平时,LED点亮

总电路:

4.倒计时器

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

3进制倒计时器3进制倒计时器

info:由于74LS190为异步置数,为使倒计时到0,须在输出为1001时置3

仿真效果如图:
输出为0010-0001-0000-0010……输出为0010-0001-0000-0010……

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

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

左侧 十进制倒计时,右侧二进制倒计时左侧 十进制倒计时,右侧二进制倒计时

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

三、总电路

脉冲产生器脉冲产生器

状态编码器状态编码器

状态译码器及显示驱动电路状态译码器及显示驱动电路

倒计时器倒计时器

四、仿真结果

东西绿灯亮 南北红灯亮 持续30s东西绿灯亮 南北红灯亮 持续30s

西黄灯闪烁 南北红灯亮 持续2s西黄灯闪烁 南北红灯亮 持续2s

东西红灯亮 南北绿灯亮 持续30s东西红灯亮 南北绿灯亮 持续30s

东西红灯亮 南北黄灯闪烁 持续2s东西红灯亮 南北黄灯闪烁 持续2s

五、总结

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

添加新评论