建材秒知道
登录
建材号 > 设计 > 正文

交通灯控制电路设计

深情的期待
动人的钢笔
2022-12-29 11:22:01

交通灯控制电路设计

最佳答案
伶俐的烤鸡
个性的早晨
2026-04-28 07:28:03

1.

任务与要求

设计一个十字路口的红、绿、黄三色信号交通灯控制电路,具体要求如下:

1)用红、绿、黄三色发光二极管作信号灯。主干道为东西向,有红、绿、黄三个灯;支干道为南北向,也有红、绿、黄三个灯。红灯亮禁止通行;绿灯亮允许通行;黄灯亮则给行驶中的车辆有时间停靠到禁行线之外。

2)由于主干道车辆较多而支干道车辆较少,所以主干道绿灯时间较长。当主干道允许通行亮绿灯时,支干道亮红灯。而支干道允许通行亮绿灯时,主干道亮红灯,两者交替重复。主干道每次放行50s,支干道每次放行30s。

在每次由亮绿灯变成亮红灯的转换过程中间,需要亮5s的黄灯作为过渡,以使行驶中的车辆有时间停靠到禁行线以外。

3)能实现正常的、即时显示功能,用实验箱上的4个七段数码管作为到计时显示器,分别显示东西、南北方向的红灯、绿灯、黄灯时间。

4)能实现特殊状态的功能显示,设S为特殊状态的传感器信号,当S=1时,进入特殊状态。当S=0时,退出特殊状态。按S后,能实现特殊状态功能:

(1)

显示器闪烁;

(2)

计数器停止计数并保持在原来的数据;

(3)

东西、南北路口均显示红灯状态;

(4)

特殊状态结束后,能继续对时间进行计数。

5)能实现控制器总清零功能

按下R后,系统实现总清零,计数器由初始状态开始计数,对应状态的指示灯亮。

2.根据设计任务与要求,画出设计总电路图,写出设计报告

最新回答
畅快的萝莉
包容的时光
2026-04-28 07:28:03

要求:

1、设计一个十字路口的交通灯控制电路,要求东西方向车道和南北方向车道两条交叉道路上的车辆交替运行,每次通行时间都设为45秒。时间可设置修改。

2、在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;

3、黄灯亮时,要求每秒闪亮一次。

4、东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用倒计时的方法)。

5、同步设置人行横道红、绿灯指示。

请采纳答案,支持我一下。

孝顺的小蚂蚁
含糊的牛排
2026-04-28 07:28:03
先用门电路构成一个 1/5Hz的CP时基振汤器。

CP输入到74ls161构成模5计数器,即输出(D,C,B,A)=0000,0001,0010,0011,0111後经门电路组合置数从0000再开始重数。

74161的三个输出ABC输入到74138对应输入端,而对应的顺序输出为Y0',Y1',Y2',Y3',Y4',Yo'Y1'并上接红LED,Y2'接黄LED,Y3'Y4'接绿LED。

忧郁的白昼
激昂的大炮
2026-04-28 07:28:03
用MULTSIM10软件,74ls163等芯片应用制作信号灯定时控制系统的电路图

要求:

1.主干道通行60秒,支干道通行40秒,交替通行。

2.每次绿灯换红灯前,黄灯先亮10秒用以等待十字路口内滞留车通过。

3.主支干道通行时间和黄灯的时间均由同一计数器按减计数方式计数(零状态为无效态)

4.在减计数器回零瞬间完成十字路口通行状态的转换(换灯)。

5.要有四个方向的时间显示,即红灯时间要等于绿灯和黄灯时间和。

计数器的状态由显示器件库中的带译码七段数码管显示,红、黄、绿三色信号灯由显示器件库中的指示灯模拟

(如果时间设置不同也没事)

谢谢!请发我邮箱sqqlicky@qq.com

要求:1、设计硬件电路(用发光二极管代替交通灯)

2、运行时绿灯、黄灯、红灯、绿灯……交替明灭

红、绿灯亮持续时间60秒,黄灯两持续时间5秒,并且黄灯与红绿灯亮重叠(即:红灯亮55秒后,黄灯亮,此时红黄都亮,持续5秒,红、黄灯灭,绿灯亮;绿灯亮55秒后,黄灯亮,此时绿黄都亮,持续5秒,绿、黄灯灭,红灯亮)

3、硬件设计说明设计方案,软件设计给出设计思想、源程序及主要部分的注释

可以带上原理图吗?

笑点低的诺言
传统的小懒虫
2026-04-28 07:28:03
一 设计过程

(一)设计题目和方案确定

1.设计题目:交通灯信号控制器的设计

2.设计要求:1.设交通灯信号控制器用于主干道与支干道公路的交叉路口,要求是优先保证主干道的畅通。因此,平时处于"主干道绿灯,支道红灯"状态,只有在支道有车辆要穿行主干道时,才将交通灯切向"主干道红灯,支道绿灯",一旦支道无车辆通过路口,交通灯又回到"主干道绿灯,支道红灯"状态。

2.主干道和支干道自动循环。主干道和支道每次通行的时间为30s,而在两个状态交换过程出现的"主黄,支红"和"主红,支黄"状态,持续时间都为4s。

3. 手动设置主干道和支道每次通行的时间分别为为30s、40s、50s;

3 设计思路:

(1)传感器状态为主干路传感器支干路传感器,当支路无车时,即传感器开关状态为00 01状态时,总保持主干道绿灯支干道红灯状态;

(2)当主路总无车而支路总有车时,即传感器开关为01状态时 ,总保持主红支绿;

(3)当主干路支干路都有车时,即传感器为11状态时,主路支路轮流切换通行。

当主路绿灯30s切黄灯4s后,主路变红灯,支路变绿灯;当支路绿灯30s切黄灯4s后,主路变绿灯,支路变红灯。此两种状态为“主黄,支红”,“主红,支黄”两种状态。

(二)设计项目输入编译和仿真

1 设计交通控制器的VHDL文本程序:

library ieee

use ieee.std_logic_1164.all

use ieee.std_logic_arith.all

use ieee.std_logic_unsigned.all

entity jtdkz is

port(clk,sens_m,sens_f:in std_logic

m,l,n:in std_logic

rm,ym,gm,rf,yf,gf:out std_logic)

end jtdkz

architecture arc of jtdkz is

type state_type is (a,b,c,d)

signal state:state_type

signal k:std_logic_vector(2 downto 0)

begin

k<=m&l&n

cnt:process(clk,state)

variable g,s:integer range 0 to 49

variable nclr,en:bit

begin

if k<="001" then g:=29

elsif k<="010" then g:=39

elsif k<="100" then g:=49

else g:=0

end if

if(clk'event and clk='1') then

if nclr='0' then s:=0

elsif en='0' then s:=s

else s:=s+1

end if

case state is

when a=>rm<='0'ym<='0'gm<='1'

rf<='1'yf<='0'gf<='0'

if(sens_f and sens_m)='1' then

if s=g then

state<=bnclr:='0'en:='0'

else

state<=anclr:='1'en:='1'

end if

elsif(sens_f and (not sens_m))='1' then

state<=bnclr:='0'en:='0'

else

state<=anclr:='1'en:='1'

end if

when b=>rm<='0'ym<='1'gm<='0'

rf<='1'yf<='0'gf<='0'

if s=3 then

state<=cnclr:='0'en:='0'

else

state<=bnclr:='1'en:='1'

end if

when c=>rm<='1'ym<='0'gm<='0'

rf<='0'yf<='0'gf<='1'

if(sens_f and sens_m)='1' then

if s=g then

state<=dnclr:='0'en:='0'

else

state<=cnclr:='1'en:='1'

end if

elsif sens_f='0' then

state<=dnclr:='0'en:='0'

else

state<=cnclr:='1'en:='1'

end if

when d=>rm<='1'ym<='0'gm<='0'

rf<='0'yf<='1'gf<='0'

if s=3 then

state<=anclr:='0'en:='1'

else

state<=dnclr:='1'en:='1'

end if

end case

end if

end process cnt

end arc

2 程序说明:

rm ym gm分别表示主干道红黄绿灯,rf yf gf分别表示支道红黄绿灯;

sens_m sens_f分别表示主干道支干道传感器。有车时为1,无车时为0。

m l n表示手动控制开关,当001时表示30s控制时间,当010时表示40s控制时间,

当100时表示50s控制时间。

3 将模块进行编译,具体如下:

(1)器件的选择:选择FLEX10K10LC84-3器件。

(2)锁定引脚。

(3)编译。

4.新建一个gdf文件,形成顶层文件,如图所示:

4功能仿真:创建仿真通道文件;

编辑仿真通道文件;

设计项目的仿真。

新建一个scf文件,生成仿真图,如图所示:

(三) 器件编程下载与硬件验证

1. 器件编译:

将ByteBlaster电缆的一端与计算机的并行口相连

选择菜单命令MAX+PLUSⅡ/Programmer,打开编译窗口。如下图所示∶

选择菜单命令Options/Hardware Setup,在Hardware Type栏选择ByteBlaster(MV);在

栏选择使用并行口(LPT1)选择OK按钮,回到器件编译窗口。如下图所示∶Parallel Port中

舒服的曲奇
虚幻的豆芽
2026-04-28 07:28:03
一 实验目的

1. 了解交通灯的亮灭规律。

2. 了解交通灯控制器的工作原理。

3. 熟悉VHDL语言编程,了解实际设计中的优化方案。

二 硬件需求

1.EDA/SOPC实验箱一台。

三 实验原理

交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车子如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。

要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。

在实验中使用8个七段码管中的任意两个数码管显示时间。东西路和南北路的通车时间均设定为20s。数码管的时间总是显示为19、18、17……2、1、0、19、18……。在显示时间小于3秒的时候,通车方向的黄灯闪烁。

四 实验内容

本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。系统时钟选择时钟模块的1KHz时钟,黄灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次,在显示时间小于3秒的时候,通车方向的黄灯以2Hz的频率闪烁。系统中用S1按键进行复位。

五 实验步骤

完成交通灯控制器的实验步骤如下:

1.首先打开Quartus II软件,新建一个工程,并新建一个VHDL File。

2.按照自己的想法,编写VHDL程序.

3.对自己编写的VHDL程序进行编译并仿真。

4.仿真无误后,根据附录一的引脚对照表,对实验中用到时钟、七段码显示及交通灯模块的LED对应的FPGA引脚进行管脚绑定,然后再重新编译一次。

5.用下载电缆通过JTAG接口将对应的sof文件下载到FPGA中。

6.观察交通灯控制器的工作是否满足实验要求。

注意:此实验需管脚复用

-----------------------------------------------------------------------------------

library ieee

use ieee.std_logic_1164.all

use ieee.std_logic_arith.all

use ieee.std_logic_unsigned.all

--------------------------------------------------------------------

entity exp18 is

port( Clk : in std_logic --时钟输入

Rst : in std_logic --复位输入

R1,R2 : out std_logic --红灯输出

Y1,Y2 : out std_logic --黄灯输出

G1,G2 : out std_logic --绿灯输出

Display : out std_logic_vector(7 downto 0) --七段码管显示输出

SEG_SEL : buffer std_logic_vector(2 downto 0) --七段码管扫描驱动

)

end exp18

--------------------------------------------------------------------

architecture behave of exp18 is

signal Disp_Temp : integer range 0 to 15

signal Disp_Decode : std_logic_vector(7 downto 0)

signal SEC1,SEC10: integer range 0 to 9

signal Direction : integer range 0 to 15

signal Clk_Count1: std_logic_vector(9 downto 0) --产生0.5Hz时钟的分频计数器

signal Clk1Hz: std_logic

signal Dir_Flag : std_logic --方向标志

begin

process(Clk)

begin

if(Clk'event and Clk='1') then

if(Clk_Count1<1000) then

Clk_Count1<=Clk_Count1+1

else

Clk_Count1<="0000000001"

end if

end if

end process

Clk1Hz<=Clk_Count1(9)

process(Clk1Hz,Rst)

begin

if(Rst='0') then

SEC1<=0

SEC10<=2

Dir_Flag<='0'

elsif(Clk1Hz'event and Clk1Hz='1') then

if(SEC1=0) then

SEC1<=9

if(SEC10=0) then

SEC10<=1

else

SEC10<=SEC10-1

end if

else

SEC1<=SEC1-1

end if

if(SEC1=0 and SEC10=0) then

Dir_Flag<=not Dir_Flag

end if

end if

end process

process(Clk1Hz,Rst)

begin

if(Rst='0') then

R1<='1'

G1<='0'

R2<='1'

G2<='0'

else --正常运行

if(SEC10>0 or SEC1>3) then

if(Dir_Flag='0') then --横向通行

R1<='0'

G1<='1'

R2<='1'

G2<='0'

else

R1<='1'

G1<='0'

R2<='0'

G2<='1'

end if

else

if(Dir_Flag='0') then --横向通行

R1<='0'

G1<='0'

R2<='1'

G2<='0'

else

R1<='1'

G1<='0'

R2<='0'

G2<='0'

end if

end if

end if

end process

process(Clk1Hz)

begin

if(SEC10>0 or SEC1>3) then

Y1<='0'

Y2<='0'

elsif(Dir_Flag='0') then

Y1<=Clk1Hz

Y2<='0'

else

Y1<='0'

Y2<=Clk1Hz

end if

end process

process(Dir_Flag)

begin

if(Dir_Flag='0') then --横向

Direction<=10

else--纵向

Direction<=11

end if

end process

process(SEG_SEL)

begin

case (SEG_SEL+1) is

when "000"=>Disp_Temp<=Direction

when "001"=>Disp_Temp<=Direction

when "010"=>Disp_Temp<=SEC10

when "011"=>Disp_Temp<=SEC1

when "100"=>Disp_Temp<=Direction

when "101"=>Disp_Temp<=Direction

when "110"=>Disp_Temp<=SEC10

when "111"=>Disp_Temp<=SEC1

end case

end process

process(Clk)

begin

if(Clk'event and Clk='1') then--扫描累加

SEG_SEL<=SEG_SEL+1

Display<=Disp_Decode

end if

end process

process(Disp_Temp) --显示转换

begin

case Disp_Temp is

when 0=>Disp_Decode<="00111111" --'0'

when 1=>Disp_Decode<="00000110" --'1'

when 2=>Disp_Decode<="01011011" --'2'

when 3=>Disp_Decode<="01001111" --'3'

when 4=>Disp_Decode<="01100110" --'4'

when 5=>Disp_Decode<="01101101" --'5'

when 6=>Disp_Decode<="01111101" --'6'

when 7=>Disp_Decode<="00000111" --'7'

when 8=>Disp_Decode<="01111111" --'8'

when 9=>Disp_Decode<="01101111" --'9'

when 10=>Disp_Decode<="01001000" --'='

when 11=>Disp_Decode<="00010100" --'||'

when others=>Disp_Decode<="00000000" --全灭

end case

end process

end behave

迷人的紫菜
无奈的眼睛
2026-04-28 07:28:03
红绿灯是有相位的。一个十字路口的两个方向的直行和左转都完成后所用的时间和过程称之为相位。

相位是根据各个路口的车流量经过计算后来定的。所以每个路口的相位不一样.

开始先是测算流量,测算一个时间段内各个方向的各种交通流量(行人、非机动车、机动车)的流量以及最高峰流量。然后根据交通流量的规律来计算它们运行所需要的时间,然后才确定每个路口红灯和绿灯的时间,进而确定相位。

转向灯是机动车的一个零部件,跟红绿灯是没有关系的。转向灯的作用只是为了表示自己车辆即将运行的方向,以便周围的车采取相应的措施。比如你要左转的时候,要提前30米左右打转向,然后别的车看见会注意刹车或慢行,对你转弯有好处,当你转过弯的方向回正的时候,转向灯会自己恢复到原位。

参考我的回答。http://zhidao.baidu.com/question/37405994.html