当前位置:首页 > 基于EDA技术设计交通灯系统
大连海洋大学毕设论文(设计) 第4章 系统设计
signal cnt6b:std_logic_vector(5 downto 0); begin
process(clk, en45a,en45b) is begin
if(clk'event and clk='1') then
if en45a='1'or en45b='1' then cnt6b<=cnt6b+1;--控制输出数据 else cnt6b<=\;
(3)60s定时单元控制两路红灯的显示时间,从DOUT60端口输出到显示控制模块的AIN60 端口,60s定时单元模块生成器件如图4.6所示,EN60A、EN60B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。60s定时单元的主要程序段如下:
entity cnt60s is
port (clk,en60a,en60b:in std_logic; --输入的标准时钟和使能信号 dout60:out std_logic_vector(7 downto 0));--输出8位二进制数 end entity cnt60s;
architecture art of cnt60s is
signal cnt6b:std_logic_vector(5 downto 0); begin
process(clk, en60a,en60b) is begin
if(clk'event and clk='1') then
if en60a='1'or en60b='1' then cnt6b<=cnt6b+1; --使能信号控制 else cnt6b<=\
图4.6 60s定时单元模块生成器件
(4)10s定时单元控制两路左拐灯的显示时间,从DOUT10端口输出到显示控制模块的AIN10 端口,10s定时单元模块生成器件如图4.7所示,EN10A、EN10B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。10s定时单元的主要程序段如下:
19
大连海洋大学毕设论文(设计) 第4章 系统设计
图4.7 10s定时单元模块生成器件
entity cnt10s is
port (clk,en10a,en10b:in std_logic; --输入的标准时钟和使能信号
dout10:out std_logic_vector(7 downto 0)); --输出8位二进制数 end entity cnt10s;
architecture art of cnt10s is signal cnt4b:std_logic_vector(3 downto 0); begin
process(clk, en10a,en10b) is
begin
if(clk'event and clk='1') then
if en10a='1'or en10b='1' then cnt4b<=cnt4b+1;--使能信号的控制
else cnt4b<=\
(5)5s定时单元控制两路黄灯的显示时间,从DOUT5端口输出到显示控制模块的AIN5 端口,5s定时单元模块生成器件如图4.8所示,EN5A、EN5B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。5s定时单元的主要程序段如下:
图4.8 5s定时单元模块生成器件
entity cnt5s is
port (clk,en5a,en5b:in std_logic; --输入的标准时钟和使能信号
dout5:out std_logic_vector(7 downto 0)); --输出的8位二进制数 end entity cnt5s;
architecture art of cnt5s is
signal cnt3b:std_logic_vector(2 downto 0);
20
大连海洋大学毕设论文(设计) 第4章 系统设计
begin
process(clk, en5a,en5b) is begin
if(clk'event and clk='1') then
if en5a='1'or en5b='1' then cnt3b<=cnt3b+1;--使能信号的控制 else cnt3b<=\
(6)倒计时控制电路
通过日常生活中的观察,我发现在一些交通路口已经开始使用倒计时显示器,它们的作用就是用来提示车辆行人目前还有多长时间信号灯会发生变化,这样车辆行人就可以提前判断是否有足够的时间通过路口,进而就可以避免很多意外事故的发生。例如:南北方向绿灯,车辆处于正常行驶中,东西方向红灯,车辆处于等待中,若南北方向行驶的车辆看到倒计时显示器上可以通行的时间很短,可能就会放慢速度等待下一次通行,这样在东西方向绿灯时,车辆就能够正常行驶,不会为等待南北方向强行的车辆而耽误更多的时间。如此循环下去,道路就会畅通无阻了。考虑到有些路口的交通拥堵现象较为严重,车辆会在道路上排成很长的一队,这样排在较远距离的司机就很难看清楚倒计时显示器上变化的数字,有可能会影响到车辆之间的正常行驶。因此,如果采用发光二极管作为倒计时的显示装置就会使司机和行人一目了然,同样也能够起到很好的提示作用。所以,hld3倒计时控制电路[23](见图4.9)最主要的功能就是负责接收hld2电路输出的值,然后将其转换成BCD码,并利用发光二极管显示出来,让车辆行人能够清楚地知道再过多久信号灯就会发生变化。
clk:由外部信号发生器提供1kHz的时钟信号; reset:系统内部自复位信号;
ena_1hz:接收由时钟发生电路提供的1Hz的脉冲信号; recount:重新计数的使能控制信号; load:负责接收计数器所需要的计数数值。 系统输出信号:
led:负责将计数数值转换成BCD码,并利用发光二极管显示倒计时状态;
next_state:当计数器计时完毕后,负责产生一个脉冲信号,作为下一个状态的触发信号。
21
大连海洋大学毕设论文(设计) 第4章 系统设计
图4.9倒计时控制电路
(7)译码显示
显示译码电路生成器件如图4.10所示,将用于显示BCD码数据进行译码,将显示控制输出的四位二进制数送入译码器后显示到共阴数码管上。程序如下:
图4.10 译码电路生成器件
entity ymq is
port(ain4:in std_logic_vector(3 downto 0); --输入四位BCD码 dout7:out std_logic_vector(6 downto 0)); --输出7位二进制数 end entity ymq;
when \dout7<=\数码管显示0 when \dout7<=\数码管显示1 when \dout7<=\数码管显示2 when \dout7<=\数码管显示3 when \dout7<=\数码管显示4 when \dout7<=\数码管显示5 when \dout7<=\数码管显示6 when \dout7<=\数码管显示7 when \dout7<=\数码管显示8 when \dout7<=\数码管显示9
22
共分享92篇相关文档