交通灯控制逻辑电路设计

  这是一个数电实验,交通灯,如果使用FPGA或者单片机来完成的话,会简单很多,这里采用的是使用常规的计数器,触发器,门电路等基本器件搭建,扩展部分可以完成总通行时间在100s内任意设置,红、黄、绿灯亮的时间长短之和在100s内任意设置,其实想要超过100s只需要扩展相应的计数器,以及门电路即可,限制功能的往往是资源;

一、选题背景

1.1、应用背景

  为了确保十字路口的车辆顺利、畅通地通过,往往都采用自动控制的交通信号灯来进行指挥。其中红灯(R)亮表示该条道路禁止通行;黄灯(Y)亮表示停车;绿灯(G)亮表示允许通行。

1.2、设计任务和要求

1.2.1、 要求东西方向的红、黄、绿灯和南北方向的红、黄、绿灯按照上面的工作时序进行工作,黄灯亮时应为闪烁状态;
  (1)南北和东西车辆交替进行,各通行时间24秒
  (2)每次绿灯变红灯时,黄灯先闪烁4秒,才可以变换运行方向 。
  (3)十字路口要有数字显示作为时间提示,以倒计时按照时序要求进行显示;具体为:当某方向绿灯亮时,置显示器为某值,然后以每秒减1计数方式工作,直至减到数为“0”,十字路口红、绿等交换,一次工作循环结束,而进入下一步某方向的工作循环。
  (4)可以手动调整和自动控制,夜间为黄灯闪耀状态。
1.2.2、 在完成上述任务后,可以对电路进行电路改进或扩展。(选作:通行时间和黄灯闪亮时间可以在0-99秒内任意设定)。

二、方案论证(设计理念)

图1 交通灯控制系统原理框图

  交通灯控制系统的原理框图如上图所示。主要由秒脉冲发生器、计数器模块、译码显示模块、状态转换模块、译码模块等部分组成。秒脉冲发生器是该系统中计数器模块、状态转换的标准时钟信号源,计数器模块主要为状态转换模块提供两个转换信号,译码显示模块将计数器的计数状态译码并通过数码管进行显示,状态转换模块是系统的主要部分,由它控制红绿灯四个状态之间的转换,译码模块将状态转换模块所处状态进行译码,并驱动红绿灯进行状态显示;
   TL:表示东西方向或南北方向绿灯亮的时间间隔为20秒,定时时间到,TL=1,否则,TL=0。
   TR:表示东西方向或南北方向红灯亮的时间间隔为24秒。定时时间到,TR=1,否则,TR=0。
两方向车道的交通灯的运行状态共有4种,如下图所示:

图2 交通灯时序工作流程图

  交通灯以上4种工作状态的转换是由状态转换模块进行控制的。设四种状态编码为00、01、11、10,并分别用S0、S1、S2、S3表示,则状态转换模块工作状态及其功能如下表所示:

表1 状态转换模块及功能表

状态转换模块状态 信号灯状态 车道运行状态
S0(00) 南北绿灯亮,东西红灯亮 南北车道通行,东西车道禁止通行
S1(01) 南北黄灯亮,东西红灯亮 南北车道停车,东西车道禁止通行
S2(11) 南北红灯亮,东西绿灯亮 南北车道禁止通行,东西车道通行
S3(10) 南北红灯亮,东西黄灯亮 南北车道禁止通行,东西车道停车

  译码模块将状态转换模块当前状态进行译码,驱动相应车道的红、黄、绿灯;为简便起见,把灯的代号和灯的驱动信号合二为一,并作如下规定:

AG=1:南北绿灯亮; AY=1:南北黄灯亮; AR=1:南北红灯亮; BG=1:东西绿灯亮; BY=1:东西黄灯亮; BR=1:东西红灯亮;

  由此得到交通灯状态转换模块的ASM图,如图下所示。设状态转换模块的初始状态为S0,当S0的持续时间小于20秒时,TL=0,其状态保持不变。只有当S0的持续时间等于20秒时,TL=1,跳转到S1,此时当S1持续时间小于4秒时,TR=0,其状态保持不变,只有当持续时间等于4秒,TR=1时,状态跳转到S2,持续20秒之后满足条件又转换到S3;持续4秒后跳转到S0;

图3 交通灯状态转换模块的ASM图

三、过程论述

  为了方便后面叙述,先把总体基本电路图放出来;

图4 交通灯基本电路总体布局

3.1秒脉冲发生器

  秒脉冲发生器由555定时器构成的多谐振荡器产生,振荡频率为f=1.43(R1+2∗R2)C=1.43∗106(1000+2∗1000)∗470)=1.014HZf=\frac{1.43}{(R_1+2*R_2)C} =\frac{1.43*10^6}{(1000+2*1000)*470)} =1.014HZf=(R1​+2∗R2​)C1.43​=(1000+2∗1000)∗470)1.43∗106​=1.014HZ

图5 秒脉冲发生器

3.2 计数器模块及译码显示模块

  因这译码显示模块依赖计数器模块较大,故将两个模块合并在一起叙述,模块如下图计数器模块及译码显示模块所示:

图6 计数器模块及译码显示模块

3.2.1计数器的构成

  由两片74LS192构成24进制异步计数器,74LS192为异步置数计数器,要求采用倒计时计数,所以预置数设置为24,用低位74LS192芯片的借位端BO驱动高位 74LS192的减计数时钟端DOWN,完成芯片之间的级联。当两片74LS192芯片的借位端BO都有效时,对两片74LS192芯片进行置数,即LOAD′=(BO0∗BO1)′=((BO0′)′∗(BO1′)′)′LOAD'=(BO_0*BO_1)'=((BO_0')'*(BO_1')')'LOAD′=(BO0​∗BO1​)′=((BO0′​)′∗(BO1′​)′)′,减计数端DOWN接秒脉冲模块输出信号,加计数端UP接高电平,置零端CLR置零;

3.2.1控制信号TL、TR的引出

  引出TL和TR信号,按照题意应该在计数器倒计时到4(从24开始的倒计时,故此时为20秒)时引出TL信号,计数器倒计时到0(24秒)时引出TR信号,但是由图3总电路图知,红、黄、绿信号灯模块与计数器模块之间有两级D触发器模块,故红、黄、绿信号灯模块比计数器模块输出信号延后两个时钟周期,为了让计数器计数到4(20秒)或者0(24秒)时,相应的红、黄、绿信号灯实现状态转换,就需要把产生TL信号和TR信号的时间提前两个时钟周期,故图中在计数器计数到6(18秒)时引出TL信号,计数到2(22秒)时引出TR信号;

3.2.3 D触发器消除尖峰信号(竞争冒险)

  此处加一级D触发器是为了消除前面组合逻辑电路因竞争冒险产生的尖峰信号对后面状态转换所引起的干扰;例如由于产生TL信号的与非门之前电路的差异,时间延迟也不同;Q0经过一级反相器和一级与门,而Q1经过一级与门,Q2没有经过门电路;当计数器低位74LS192芯片输出信号由1000变为0111时,Q2与Q1必然先变为高电平,而此时Q0还处于低电平,出现0110使TL产生尖峰脉冲,而这个脉冲是错误的,因为此时计数器计数状态处于8到7之间,并没有计数到6,所以我们要避免这种类似的错误;故加一级触发器去消除这个尖峰,由于边沿触发器只有在时钟边沿时才有效,即使前面组合电路产生尖峰信号,这个尖峰信号由于组合电路存在时间延迟,必然晚于时钟边沿到达,早于下一个时钟边沿到达(因为此电路时钟周期为1秒,而一级门电路的延迟时间在纳秒到微秒级别),此时触发器输出不受输入信号的影响,达到消除尖峰信号的目的;

3.2.4译码显示模块

  译码显示模块功能是将计数器的计数状态进行显示,由两片74LS48显示译码器,两个共阴极七段数码管,14个限流电阻组成;译码器输入端与计数器输出端对应连接即可,本设计不使用译码器的控制端,故均接高电平;

3.3状态转换模块

  状态转换模块是交通管理的核心,它能够按照交通管理规则控制信号灯工作状态的转换。从ASM图可以列出状态转换模块的状态转换表,如下表所示。选用两个D触发器作为时序寄存器产生4种状态,状态转换模块状态转换的条件为TL和TR,当状态转换模块处于Q1nQ0n= 00状态时,如果TL= 0,则状态转换模块保持在00状态;如果TL=1,则状态转换模块的状态转换到Q1n+1Q0n+1= 01状态。这两种情况与条件TR无关,所以用无关项"X"表示。其余情况依次类推。

表2 状态转换表

现态 现态 状态转换条件 状态转换条件 次态 次态
Q1n Q0n TL TR Q1n+1 Q0n+1
0 0 0 X 0 0
0 0 1 X 0 1
0 1 X 0 0 1
0 1 X 1 1 1
1 1 0 X 1 1
1 1 1 X 1 0
1 0 X 0 1 0
1 0 X 1 0 0

  根据上表可以推出状态方程,其方法是:将Q1n+1、Q0n+1为1的项所对应的输人和状态转换条件变量相与,其中"1"用原变量表示,"0"用反变量表示,然后将各与项相或,即可得到下面的方程:


  根据以上方程,选用数据选择器74LS153 来实现每个D触发器的输入函数,将触发器的现态值加到74LS153 的数据选择输入端作为控制信号。即可实现状态转换模块的功能。状态转换模块原理图如下图所示。由一片双四选一数据选择器74LS153和两个D触发器74LS74组成状态转换模块。触发器记录4种状态,数据选择器与触发器配合实现4种状态的相互交换。电路逻辑图如下:

图7 D触发器连接示意图

  其原理为:两个D触发器的置零以及置一端无效,故CLR和IPR均接高电平。时钟信号端CLK接秒脉冲发生器的输出端,数据选择器的输出端分别接D触发器的输入端,Y1接输出为信号的触发器的输入端,Y2接输出为的触发器的输入端。因为


  所以数据选择器的地址端B接Q1n,地址端A接Q0n。输出为Y1的D触发器的数据端C0接地,C1接TR,C2接TR反,C3接高电平VCC。输出为Y2的D触发器的数据端C0接TL,C1接高电平VCC,C2接地,C3接TL反。数据选择器的使能端均有效,故1G,2G接低。如上图所示:74LS74两个D触发器作为时序寄存器产生4种状态。选用数据选择器74LS153来实现每个D触发器的输入函数,将触发器的的现态值加到74LS153的数据选择端作为控制信号,即可实现状态转换模块的功能。

3.4译码模块

3.4.1状态译码

  译码器的主要任务是将控制器的输出Q1、Q0 的4种工作状态,翻译成南北、东西车道上红、黄、绿三种信号灯的工作状态。状态转换模块的状态编码与信号灯控制信号之间的关系如下表所示。

表3 触发器输出译码表

现态 现态 南北绿灯 南北黄灯 南北红灯 东西绿灯 东西黄灯 东西红灯
Q1n Q0n AG AY AR BG BY BR
0 0 1 0 0 0 0 1
0 1 0 1 0 0 0 1
1 1 0 0 1 1 0 0
1 0 0 0 1 0 1 0

  根据上表可以得到各路信号灯的控制信号表达式如下:
南北方向车道绿灯:

南北方向车道黄灯:

南北方向车道红灯:

东西方向车道绿灯:

南北方向车道黄灯:

南北方向车道红灯:

  将(Q1n反)和(Q0n反)通过与门连接在南北方向的绿灯上,Q1n和(Q0n反)通过与门连接在南北方向的黄灯上,Q0n直接连接在南北方向的红灯上,Q1n和Q0n通过与门连接在东西方向的绿灯上,(Q1n反)和(Q0n反)通过与门连接在东西方向的黄灯上,(Q0n反)直接连接在东西方向的红灯上;即可完成对状态的译码;译码模块如下图所示。

图7 译码模块

3.4.2 黄灯闪烁

  自动控制黄灯闪烁:单刀双掷开关S1向上闭合连接时钟信号时,通过时钟信号的高低电平和

  相与得到南北方向黄灯的闪烁状态,通过时钟信号的高低电平和

相与得到东西方向黄灯的闪烁状态;
  黄灯不闪烁:只需要将S1向下闭合,S2断开即可;如下图所示:

图8 通过开关S1、S2控制黄灯闪烁

3.5整个交通灯布局图

图9 交通灯布局图

四、扩展功能

要求:通行时间和黄灯闪亮时间可以在0-99秒内任意设定;

4.1红灯亮的时间设计

  通行时间即绿灯时间和黄灯闪亮时间可以调节,说明红灯的时间可以调节,可以利用已知的绿灯以及黄灯的时间推出红灯亮的时间;红灯亮的时间等于绿灯亮的时间加上黄灯闪亮的时间;在计数器的置数端用开关控制输入,即可对红灯亮的时间长短进行调节,如果红灯亮的时间为60秒,则从左到右开关的状态应为关、开、开、关,关、关、关、关。如下图所示;

图10 计数器开关输入设置红灯亮的时间

4.2黄灯闪亮时间以及绿灯亮的时间设计

  红灯亮的时间(黄灯亮的时间加绿灯亮的时间)已经由上图装置设定,要分别设置绿灯和黄灯亮的时间,只需要一个点把红灯亮的时间分成两段时间就行了,因为TR信号都是在计数器计数到2时产生的,所以控制绿灯以及黄灯亮的时间只需要控制TL信号即可,要想让TL能够在0到99之间变化,就必须通过八个非门对计数器输出的八个信号进行取反,通过单刀双掷开关对计数器八位输出的原变量和反变量进行选择,之后八个信号每两个通过一个与门,即需要四个与门,最后再将这四个与门用一个四输入的与非门连接,在通过反相器后,输出便是TL;如下图所示。例如绿灯亮50秒,黄灯闪亮10秒,由图11设置红灯亮60秒,计数器从60秒开始倒计时,那么当倒计时到10秒时,黄灯就应该开始闪亮,似乎TL就设置为10(50秒)时有效,但是由于后面两级触发器的延时,此处设置应为12(48秒);延迟两秒后,数码管显示10时,黄灯才能正常闪烁;假设此处单刀双掷开关向上掷为开,向下为关;那么设置TL在12时有效时,从上至下开关状态为关、关、关、开,关、关、开、关,便可以实现绿灯亮50秒,数码管显示10时,黄灯开始闪亮,直到数码管示数0;

图11 通过控制TL有效控制绿灯、黄灯时间

4.3整个交通灯控制系统的布局

图12 设计全局图

五、结果分析

  基本电路默认把通行时间设为24秒,南北方向车道方向绿灯亮,东西方向车道的红灯亮。数码管从预置的24秒,以每秒减1,减到数码管示数为4时,南北方向的绿灯转换为黄灯,其余灯都不变。数码管示数减到0后时南北方向的黄灯转换为红灯;东西方向的红灯转换为绿灯。如此循环下去。并且在数码管示数由8变为7的时候,TL反相器后的指示灯会闪亮一下,说明组合电路产生的尖峰脉冲确实存在,而第一级触发器后面TL的指示灯并不会闪亮,这也说明D触发器能够消除前面组合电路产生的尖峰脉冲对后面电路的影响;
  扩展电路将红灯亮的时间设置为74;上图从左到右开关状态依次设置为关、开、开、开,关、开、关、关完成74的设置,绿灯亮51秒,黄灯亮23秒,则TL有效信号为25,所以上图的开关从上至下依次设置为上、上、下、上,上、下、上、下;开始仿真后;数码管从预置的74秒,以每秒减1,减数码管示数为23时,南北方向的绿灯转换为黄灯,其余灯都不变。数码管示数减到0后时南北方向的黄灯转换为红灯;东西方向的红灯转换为绿灯。如此循环下去。

六、参考文献

阎石,王红.数字电子技术基础.5版.北京:清华大学出版社,2005.

七、验证源文件

关注公众号数字站回复 “交通灯multisim ” 获取工程源文件。

交通灯控制逻辑电路设计相关推荐

  1. 红绿灯交通灯控制逻辑电路设计

    <电子技术基础课程设计>--交通灯控制逻辑电路设计 最近无聊整理一下以前的笔记之类的,发现以前的课设,简陋粗糙,还是记录下吧. 此设计有具体接线说明 实验箱大概如下图 课设任务及要求 1. ...

  2. 基于Verilog的十字路口交通灯控制电路设计

    基于Verilog的十字路口交通灯控制电路设计 一.设计要求 二.设计方案 三.电路原理图 四.代码实现 1. Verilog代码: 2. Testbench代码 五.仿真结果 一.设计要求 设计并实 ...

  3. 单片机怎么通过按键控制计时器的开始和停止_学习电路仿真:基于proteus电路仿真软件的交通灯控制电路设计...

    电路仿真软件是当代重要软件之一,缺乏电路仿真软件,模拟运行环境将无法搭建.对于电路仿真软件,虽然市面上类别众多,但知名电路仿真软件为proteus.本文对于电路仿真软件的介绍,为基于proteus的交 ...

  4. 计算机原理实验红绿灯转换,微机原理实验交通灯控制实验.doc

    . . 课 程 设 计 课程设计名称: 交通灯控制实验 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2014.12.22---2015.1.2 微机原理 专 ...

  5. c语言交通灯控制设计和原理图,十字路口交通灯控制设计(附电路图及源代码).doc...

    十字路口交通灯控制设计(附电路图及源代码) <计算机控制技术> 课程设计报告 课题名称 交通灯控制设计 专 业 班 级 学生姓名 学 号 指导教师 201*年 6 月 8日 目录 TOC ...

  6. 简易交通灯控制系统设计c语言,基于单片机交通灯控制系统设计毕业设计.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 基于单片机交通灯控制系统设计毕业设计.doc30页 本 ...

  7. 基于机器视觉的交通灯控制系统设计

    基于机器视觉的交通灯控制系统设计 摘 要 Abstract 引言 1 课题背景 1.1概述 1.2传统交通路口信号灯 1.3基于机器视觉的交通灯控制智能系统 1.3.1国内研究现状 1.3.2国外研究 ...

  8. 交叉路口红绿灯控制程序linux,PLC十字路口的交通灯控制编程实例!

    原标题:PLC十字路口的交通灯控制编程实例! 1. 控制要求 十字路口交通灯的运行如下图所示.当起动开关接通时,信号灯系统开始工作,且先南北红灯亮,东西绿灯亮.当起动开关断开时,所有的信号灯全部熄灭. ...

  9. 8255控制交通灯实验 c语言 main,交通灯控制实验

    交通灯控制实验 一)实验目的 通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用和中断的使用. 二)交通灯变化规律 十字路口交通灯的变化规律要求 1) 北路口的绿灯.东西路口的 ...

  10. 交通灯控制系统c语言编程,基于单片机的交通灯控制系统设计(本科)毕业论文设计.doc...

    基于单片机的交通灯控制系统设计 摘 要 当你路过一个十字路口时,你是否注意到各个方向车辆和行人有有条不紊的通过十字路口.这样井然有序的情境靠什么来实现的呢?靠的是交通灯控制系统.在论文中我使用单片机S ...

最新文章

  1. LDAP 轻量级目录访问协议 介绍
  2. ASP.NET中实现页面间的参数传递 QueryString\Application\Session\Cookie
  3. 编写一个爬虫类库——(一)想法
  4. 【已解决】cannot resolve file db.properties‘
  5. HDOJ 1247 HDU 1247 Hat’s Words ACM 1247 IN HDU
  6. 【编撰】linux IPC 001 - 概述
  7. mysql 5.5多实例部署
  8. HDU 4273 Rescue(三维凸包重心)
  9. python pycharm anaconda需要都下载吗_Anaconda下载与安装、PyCharm下载与安装
  10. 六安技师学院计算机网络技术,安徽六安技师学院2021年招生简章
  11. python pyqt5 股票分时_Python使用PyQtGraph绘制股票行情K线图
  12. nuvoton uboo2013引导流程 1 - 配置
  13. yaml-cpp保存标定文件-Node/Emitter
  14. SQL经典语句大全及应用示例汇总
  15. Ubuntu20.04+GTX1060+显卡驱动+CUDA11.8+cuDNN8.5.0
  16. 实际开发中常用的SQL
  17. OpenOCD failed tor read memory at $addr 错误
  18. Qt中使用DirectX
  19. 人生感悟:欲望适度则为利,欲望过度则为害,高级java开发工程师简历
  20. BBEdit 12.6.1 FIXED 特别版 Mac 强大的文本和HTML编辑器及汉化工具

热门文章

  1. 收益管理系统(PROS)缘何在中国水土不服?
  2. uni-app 简易商城制作
  3. python自回归模型_21向量自回归模型
  4. mysql 分组求和_MySQL 分组最值、分组均值、分组求和
  5. 多人对战中国象棋文档
  6. 人脸数据库收集——深度学习
  7. Hive实现笛卡尔积
  8. 电脑版idm下载器好不好用?
  9. Typora下载连接及使用教学
  10. 混动汽车HEV混合驱动的MPC控制