设计一个十字路口的交通灯控制器,控制主、次两条交叉道路上的车辆通行,具体要求如下:
通过自动控制交通灯,对主次干道地车辆进行分流,防止交叉路口发生交通事故,确保交叉路口的车辆有序地、安全地通行。
如果使用FPGA或者单片机来完成的话,会简单很多,但这是电子电路的课程设计,则需要通过优化设计电路构建交通灯自动控制电路,需采用的是使用常规的计数器,触发器,门电路等基本器件搭建。其主要由秒脉冲发生器、计数器模块、译码显示模块、状态转换模块、译码模块等部分组成。秒脉冲发生器是该系统中计数器模块、状态转换的标准时钟信号源,计数器模块主要为状态转换模块提供两个转换信号,译码显示模块将计数器的计数状态译码并通过数码管进行显示,状态转换模块是系统的主要部分,由它控制红绿灯四个状态之间的转换,译码模块将状态转换模块所处状态进行译码,并驱动红绿灯进行状态显示。
交通灯控制系统的原理框图如图1所示。主要由秒脉冲发生器、计数器模块、译码显示模块、状态转换模块、译码模块、逻辑门电路、信号灯等部分组成。
图1 交通灯控制系统原理图
秒脉冲发生器是该系统中计数器模块、状态转换的标准时钟信号源,计数器模块主要为状态转换模块提供两个转换信号。译码显示模块将计数器的计数状态译码并通过数码管进行显示,状态转换模块是系统的主要部分,由它控制红绿灯四个状态之间的转换,逻辑门电路将状态转换模块所处状态进行运算,并驱动红绿灯进行状态显示。
设计方案一:
本设计为交通灯系统。首先考虑设计秒脉冲发生器,通过计算公式对555定时器和一些分立元件组合设计,使其产生 1Hz的方波信号,作为后面电路的稳定时钟触发信号,其次是计时器的设计,使用两片74LS74N级联组成双D触发器作为系统的主控制电路是整个系统的切换状态的核心,控制信号灯的工作状态,使用74LS153D数据选择器可预置的定时数值,最后是译码输出数码管,通过逻辑门选择使用 LED灯显示。
设计方案二:
同样也是555定时器和一些分立元件组合设计作为秒脉冲发生器,使其产生 1Hz的方波信号,作为后面电路的时钟触发信号其次是计时器的设计,使用两片74LS192级联组成十六进制的计数器;系统的主控制电路是整个系统的核心,控制信号灯的工作状态,使用74LS153D数据选择器和74LS161D四位二进制可预置的同步加法计数器(作为状态转换)以及逻辑门电路(与、或、非)组成主控电路:最后是译码输出,选择使用 LED灯显示。
方案的比较:
通过以上方案的比较,方案一更适合。方案一其结构简单,设计方便,同时实验条件下可以满足要求,且元器件构成简单。方案二则逻辑门电路设计构成较为繁琐,此方案虽然可以稳定进行交通灯显示。我们选择方案一做为实现方案。
秒脉冲发生器由555定时器构成的多谐振荡器产生,振荡频率为:
当T=1s时,R1=4.7KΩ、C1=10uF,取一个固定电阻4.7KΩ与一个100KΩ的电位器作为R2。通过电位器调节电阻,使脉冲周期为1s。秒脉冲信号发生器如图2所示。
图2 秒脉冲信号发生器
状态转换器是交通管理的核心,它能够按照交通管理规则控制信号灯工作状态的转换。本项目中我们采用两片74LS74双D触发器作为状态转换,如图3所示。
图3 状态转换器
状态转换模块状态转换的条件为CLK,当状态转换模块处于QBnQAn= 00状态时,如果CLK= 0,则状态转换模块保持在00状态;如果CLK=1,则状态转换模块的状态转换到QBn+QAn+1= 01状态。其余情况依次类推。状态转换表如表2所示。
表2 状态转换表
现态 |
转换条件 |
次态 |
||
QBn |
QAn |
CLK |
QBn+1 |
QAn+1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
根据上面状态转换器所提供的状态,作为数据选择器74LS153,用数据选择器74LS153来作为计数器74LS192的控制信号。电路逻辑图如图4所示:
图4 控制器
控制器的作用就是产生数据作为计数器的预置数,并循环输出。本次我们所需要的定时状态循环为:30-5-20-5。由于我们要控制两个计数器,所以要选用74LS153数据选择器产生数据。74LS153数据选择器功能表如表3所示。
表3 74LS153功能表
输入 |
输出 |
||
`G |
B |
A |
Y |
1 |
× |
× |
0 |
0 |
0 |
0 |
C0 |
0 |
0 |
1 |
C1 |
0 |
1 |
0 |
C2 |
0 |
1 |
1 |
C3 |
本项目中使能端1G=2G=0,设置为多开关输出;A、B为公有的地址输入端,即状态转换器的输出接到此处,用于产生数据输出。高位的74LS153 数据端口1C0 1C1 1C2 1C3分别设置为1000,2C0 2C1 2C2 2C3分别设置为1010,数据输出Y分别为11,00,01,00,提供十位计数器的输入;低位的74LS153 数据端口1C0 1C1 1C2 1C3分别设置为0101,2C0 2C1 2C2 2C3分别设置为0101,数据输出Y分别为00,11,00,11,提供个位计数器的输入。
另外,要想改变此处定时时间,就应该更改74LS153的预置输入电平,因此在原理图处加入自锁开关电路接74LS153预置输入电平口。
由两片74LS192构成十进制异步计数器,74LS192为异步置数计数器,要求采用倒计时计数,电路逻辑图如图5所示。
图5 计数器
74LS192数据选择器功能表如表4所示。
表4 74LS192功能表
输入 |
输出 |
||||||||||
CLR |
LOAD |
UP |
DOWN |
D |
C |
B |
A |
QD |
QC |
QB |
QA |
1 |
× |
× |
× |
× |
× |
× |
× |
0 |
0 |
0 |
0 |
0 |
0 |
× |
× |
D |
C |
B |
A |
D |
C |
B |
A |
0 |
1 |
- |
1 |
× |
× |
× |
× |
加计数 |
|||
0 |
1 |
1 |
- |
× |
× |
× |
× |
减计数 |
本项目只需要用减计数的功能,所以置零端CLR接低电平,低位74LS192芯片的DOWN通过555定时输出的脉冲信号作为驱动,用低位74LS192芯片的借位端BO驱动高位74LS192的减计数时钟端DOWN,完成芯片之间的级联。当两片74LS192芯片的借位端BO都有效时,对两片74LS192芯片进行置数,即LOAD=BO0*BO1,减计数端DOWN接秒脉冲模块输出信号,加计数端UP接高电平。
数码管显示模块由两个74LS47和两个共阳极数码管组成,用于显示十位数和个位数。电路逻辑图如图6所示。
图6 显示模块
74LS47译码器功能表如表5所示。
表5 74LS47功能表
数码 |
输入 |
输出 |
||||||||||||
LT |
RBI |
D |
C |
B |
A |
BI/RBO |
OA |
OB |
OC |
OD |
OE |
OF |
OG |
|
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
3 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
4 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
5 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
6 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
7 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
8 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
9 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
通过计数器的QAQBQCQD输出端与译码器ABCD输入端相连,再将译码器的QAQBQCQDQEQFQG的输出端与数码管ABCDEFG输入端连接,显示出时间。
交通灯为绿、黄、红三种颜色,主次干道各一组。为了实现灯状态的有序转换,我们设计了逻辑门电路配合状态转换器及555定时器来控制灯的状态。电路逻辑图如图7所示。
图7 交通灯电路
利用状态转换器输出QBQA在00 →01 →10 →11的循环,分别代表主次干道红绿灯的状态。利用555定时器的输出脉冲,给红灯闪烁提供时钟信号。表6为状态转换器对应的灯的状态。
表6交通灯状态表
QBQA |
R1G1Y1 |
R2G2Y2 |
主干道 |
次干道 |
时间(s) |
00 |
010 |
100 |
绿灯亮 |
红灯亮 |
30s |
01 |
001 |
100 |
黄灯亮 |
红灯闪 |
5s |
10 |
100 |
010 |
红灯亮 |
绿灯亮 |
20s |
11 |
100 |
001 |
红灯闪 |
黄灯亮 |
5s |
由此可以得出它们的逻辑表达式:
G1R2=(A’+B)’
Y1R2=(A’B)
R1G2=AB
R1Y2=(A+B)’
由于黄灯亮时,原红灯要以1HZ的频率闪烁,故当Y1=1时即主干道的黄灯亮起时,次干道的红灯应该闪烁,此时它的逻辑表达式应为R2 = 秒脉冲*Y1 + G1。同理可知,R1 = 秒脉冲*Y2 + G2。总原理电路图如图8所示。
图8 总原理电路图
本次仿真用的软件地Multisim14.0,主干道绿灯亮,次干道红灯亮,持续30s,如图9所示:
图9 仿真效果1
主干道黄灯亮,次干道红灯闪,持续5s,如图10所示:
图10 仿真效果2
主干道红灯亮,次干道绿灯亮,持续20s,如图11所示:
图11 仿真效果3
主干道红灯闪,次干道黄灯亮,持续5s,如图12所示:
图12 仿真效果4
原件清单如表7所示:
表7 元器件清单
序号 |
器件名称 |
数量 |
备注 |
1 |
计数器74LS192 |
2 |
U2,U3 |
2 |
译码器74LS47 |
2 |
U4,U5 |
3 |
选择器74LS153 |
3 |
U6,U7,U8,U9 |
5 |
计数器74LS161 |
1 |
U10 |
6 |
或门74LS32 |
1 |
U13 |
7 |
与门74LS08 |
1 |
U12 |
8 |
非门74LS04 |
1 |
U11 |
9 |
555定时器 |
1 |
U1 |
10 |
LED |
12 |
D1~D12 |
11 |
数码管 |
2 |
LED1,LED2 |
12 |
自锁开关 |
16 |
S1~S16 |
13 |
电阻、电容 |
若干 |
- |
14 |
自锁开关 |
1 |
SW |
15 |
USB插孔 |
1 |
USB1 |
16 |
排针,排母 |
若干 |
- |
555时钟电路的调试:将R1、R2、R3、C按照原理图与555连接,利用示波器测量555的3脚并且观察输出周期为1s的方波波形。
计数器的调试:计数器由两个同步十进制可逆计数器74LS192组成,根据74LS192的原理,将两片级联成100进制的减法计数器。由于四种红绿灯的状态对应着不同的时间,故计数器需要通过在不同的情况下实现不同的置数,而不同的置数数据由数据选择器和Q1决定。可以测量74LS135双四选一数据选择器的输出Y2、Y1的状态在Y1Y2在10—00—01—00循环,和74LS161的Q2Q1在00—01—10—11循环。
修改定时时间的调试:通过自锁开关的按下以及松开,观察定时时间时候按照8421码进行改变。
转动电位器能够改变555定时器输出频率,当接+5V直流电源,电路进入主、次干道循环工作状态即主次干道灯显示时间如表8所示。改变自锁开关状态能够实现主路支路的时间。
表8 状态转换
主干道 |
次干道 |
时间(s) |
红灯闪 |
黄灯亮 |
5s |
绿灯亮 |
红灯亮 |
30s |
黄灯亮 |
红灯闪 |
5s |
红灯亮 |
绿灯亮 |
20s |