交通灯控制电路设计
1.
任务与要求
设计一个十字路口的红、绿、黄三色信号交通灯控制电路,具体要求如下:
1)用红、绿、黄三色发光二极管作信号灯。主干道为东西向,有红、绿、黄三个灯;支干道为南北向,也有红、绿、黄三个灯。红灯亮禁止通行;绿灯亮允许通行;黄灯亮则给行驶中的车辆有时间停靠到禁行线之外。
2)由于主干道车辆较多而支干道车辆较少,所以主干道绿灯时间较长。当主干道允许通行亮绿灯时,支干道亮红灯。而支干道允许通行亮绿灯时,主干道亮红灯,两者交替重复。主干道每次放行50s,支干道每次放行30s。
在每次由亮绿灯变成亮红灯的转换过程中间,需要亮5s的黄灯作为过渡,以使行驶中的车辆有时间停靠到禁行线以外。
3)能实现正常的、即时显示功能,用实验箱上的4个七段数码管作为到计时显示器,分别显示东西、南北方向的红灯、绿灯、黄灯时间。
4)能实现特殊状态的功能显示,设S为特殊状态的传感器信号,当S=1时,进入特殊状态。当S=0时,退出特殊状态。按S后,能实现特殊状态功能:
(1)
显示器闪烁;
(2)
计数器停止计数并保持在原来的数据;
(3)
东西、南北路口均显示红灯状态;
(4)
特殊状态结束后,能继续对时间进行计数。
5)能实现控制器总清零功能
按下R后,系统实现总清零,计数器由初始状态开始计数,对应状态的指示灯亮。
2.根据设计任务与要求,画出设计总电路图,写出设计报告
要求:
1、设计一个十字路口的交通灯控制电路,要求东西方向车道和南北方向车道两条交叉道路上的车辆交替运行,每次通行时间都设为45秒。时间可设置修改。
2、在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;
3、黄灯亮时,要求每秒闪亮一次。
4、东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用倒计时的方法)。
5、同步设置人行横道红、绿灯指示。
请采纳答案,支持我一下。
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。
要求:
1.主干道通行60秒,支干道通行40秒,交替通行。
2.每次绿灯换红灯前,黄灯先亮10秒用以等待十字路口内滞留车通过。
3.主支干道通行时间和黄灯的时间均由同一计数器按减计数方式计数(零状态为无效态)
4.在减计数器回零瞬间完成十字路口通行状态的转换(换灯)。
5.要有四个方向的时间显示,即红灯时间要等于绿灯和黄灯时间和。
计数器的状态由显示器件库中的带译码七段数码管显示,红、黄、绿三色信号灯由显示器件库中的指示灯模拟
(如果时间设置不同也没事)
谢谢!请发我邮箱sqqlicky@qq.com
要求:1、设计硬件电路(用发光二极管代替交通灯)
2、运行时绿灯、黄灯、红灯、绿灯……交替明灭
红、绿灯亮持续时间60秒,黄灯两持续时间5秒,并且黄灯与红绿灯亮重叠(即:红灯亮55秒后,黄灯亮,此时红黄都亮,持续5秒,红、黄灯灭,绿灯亮;绿灯亮55秒后,黄灯亮,此时绿黄都亮,持续5秒,绿、黄灯灭,红灯亮)
3、硬件设计说明设计方案,软件设计给出设计思想、源程序及主要部分的注释
可以带上原理图吗?
(一)设计题目和方案确定
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中
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
相位是根据各个路口的车流量经过计算后来定的。所以每个路口的相位不一样.
开始先是测算流量,测算一个时间段内各个方向的各种交通流量(行人、非机动车、机动车)的流量以及最高峰流量。然后根据交通流量的规律来计算它们运行所需要的时间,然后才确定每个路口红灯和绿灯的时间,进而确定相位。
转向灯是机动车的一个零部件,跟红绿灯是没有关系的。转向灯的作用只是为了表示自己车辆即将运行的方向,以便周围的车采取相应的措施。比如你要左转的时候,要提前30米左右打转向,然后别的车看见会注意刹车或慢行,对你转弯有好处,当你转过弯的方向回正的时候,转向灯会自己恢复到原位。
参考我的回答。http://zhidao.baidu.com/question/37405994.html