十字路口交通灯控制器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
倒计时时间显示模块黄灯闪烁的VHDL程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use work.bintoBCD.all; begin process(clk,reset) begin if reset='1' then cnt<=(others=>'0'); entity jtd2 is elsif clk'event and clk='1' port (clk,reset: in std_logic; then if cnt=114 then r1,r2,y1,y2,l1,l2,g1,g2:out std_logic; cnt<=(others=>'0'); disp11,disp22:out std_logic_vector(7 downto 0)); else end entity jtd2; cnt<=cnt+1; architecture behav of jtd2 is end if; signal cnt:std_logic_vector(6 downto 0); end if; signal disp1,disp2:std_logic_vector(6 downto 0); end process;
结束语
本次实验我们受益良多,在写和更改程序 的过程中,我们对VHDL语言有了更深一步 的了解,并且在与组员探讨的过程中,加 深了对十字路口交通灯的状态转换的了解, 明白了绿红、黄红、左红、黄黄、红绿、 红黄、红左、黄黄8个状态之间的循环往复, 也加深了团队之间的友谊 .
本次交通灯控制器的实现
题目要求回顾:设计一个简单十字路口交通灯控 制器。该控制器控制东西南北两道的红、黄、绿 三色灯,指挥交通和行人安全通行,本次实验只 要求做出倒计时时间显示模块的VHDL程序,和黄 灯闪烁。 复杂十字路口交通灯控制器要比简单交通灯控制 器增加一些功能,如倒计时时间显示,左转弯 (左拐)、指示灯闪烁及特殊紧急情况的处理等。 下面以下面的十字路口交通灯系统为例,来说明 上述功能的实现:
process(cnt,clk) variable cnt1: integer range 0 to 127; begin cnt1:=conv_integer(cnt); case cnt1 is when 0 to 39=>r1<='0';g1<='1';y1<='0';l1<='0'; r2<='1';g2<='0';y2<='0';l2<='0'; disp1<=45-cnt;disp2<=65-cnt; when 40 to 44=>r1<='0';g1<=clk;y1<='0';l1<='0'; r2<='1';g2<='0';y2<='0';l2<='0'; disp1<=45-cnt;disp2<=65-cnt; when 45 to 49=>r1<='0';g1<='0';y1<=clk;l1<='0'; r2<='1';g2<='0';y2<='0';l2<='0'; disp1<=50-cnt;disp2<=65-cnt;
when 50 to 64=>r1<='0';g1<='0';y1<='0';l1<='1'; r2<='1';g2<='0';y2<='0';l2<='0'; disp1<=65-cnt;disp2<=65-cnt; when 65 to 69=>r1<='0';g1<='0';y1<=clk;l1<='0'; r2<='0';g2<='0';y2<=clk;l2<='0'; disp1<=70-cnt;disp2<=70-cnt; when 70 to 84=>r1<='1';g1<='0';y1<='0';l1<='0'; r2<='0';g2<='1';y2<='0';l2<='0'; disp1<=110-cnt;disp2<=90-cnt;
2、倒计时时间的显示 根据上述关系得到的disp1和disp2 是十六进制数, 在送到数码管显示之前,先要将它们转换成二位 BCD码表示。为此,需要定义一个转换函数 Bin_to_BCD,用来实现从7位二进制数2位 BCD 码的转换。利用自定义程序包调用到主程序上就 可使用。
交通灯控制器主程序
when 85 to 89=>r1<='1';g1<='0';y1<='0';l1<='0'; r2<='0';g2<=clk;y2<='0';l2<='0'; disp1<=110-cnt;disp2<=90-cnt; when 90 to 94=>r1<='1';g1<='0';y1<='0';l1<='0'; r2<='0';g2<='0';y2<=clk;l2<='0'; disp1<=110-cnt;disp2<=95-cnt; when 95 to 109=>r1<='1';g1<='0';y1<='0';l1<='0'; r2<='0';g2<='0';y2<='0';l2<='1'; disp1<=110-cnt;disp2<=110-cnt; when 110 to 114=>r1<='0';g1<='0';y1<=clk;l1<='0'; r2<='0';g2<='0';y2<=clk;l2<='0'; disp1<=115-cnt;disp2<=115-cnt; when others=>null; end case;
一个周期划分成以下8种状态:

S0:cnt=0-44:甲道通行,乙道禁止; S1:cnt=45-49:甲道停车,乙道禁止; S2:cnt=50-64;甲道左拐,乙道禁止; S3:cnt=65-69;甲道停车,乙道禁止; S4:cnt=70-89;甲道禁止,乙道通行; S5:cnt=90-94;甲道禁止,乙道停车; S6:cnt=95-109;甲道禁止,乙道左拐; S7:cnt=110-114;甲道禁止,乙道停车;

基本要求: (1)东西方向(甲道)循环为绿灯 45s, 黄灯 5s,左 拐灯 15s,黄灯 5s,红灯 40s,黄灯 5s (2)南北方向(乙道)循环为红灯 65s,黄灯 5s, 绿灯 20s,黄灯 5s,左拐灯 15s,黄灯 5s (3)在数码管上倒计时间显示各道剩余时间;发挥 部分: (4)增加指示灯闪烁(绿灯最后 5s和黄灯显示时间) 及特殊紧急情况的处理; (5)增加根据不同方向车流量的大小调节各灯显示 时间长度的功能;
交通灯设计
摘要
本系统采用EDA实验箱设计交通灯控制器,模拟 实现了红、绿、黄灯指挥交通的功能。它直接采 用240C8芯片开发,用VHDL语言编程和 QUARTUSⅡ 7.2设计。交通灯控制器设计,系统 的阐述了用240C8芯片实现数字电路的设计过程, 展示了240C8芯片的强大功能和非凡特性。本交通 灯控制器适用东西和南北方向的车流量大致相同 的路口,同时用数码管指示当前状态(红、绿、 黄、左拐灯)的剩余时间。另有一个紧急状态, 当特殊情况发生时,两个方向都禁止通行,指示 红灯,紧急状态解除后,重新计时并指示时间。
东西方向
南北方向
S(0) S(1) S(2) S(3) S(4) S(5 S(6) S(7)S(8) S(9) S S (10) (11)
绿 黄 灯 灯 45s 5s 左 黄 拐 灯 灯 5s 15s 红 黄 灯 灯 40s 5s 红 黄 灯 灯 65s 5s 绿 黄 灯 灯 20s 5s 左 黄 拐 灯 灯 5s 15s

间显示:disp1=110-cnt; 乙道时间显示:disp2=90-cnt; S5:cnt=90-94;甲道时间显示:disp1=110-cnt; 乙道时间显示:disp2=95-cnt; S6:cnt=95-109;甲道时间显示:disp1=110-cnt; 乙道时间显示:disp2=110-cnt; S7:cnt=110-114;甲道时间显示:disp1=115-cnt; 乙道时间显示:disp2=115-cnt;
交通灯工作原理
根据交通灯控制器的功能与要求,将其总体 电路分为状态控制信号灯显示,数码管倒 计时显示模块。外部两路脉冲振荡器的频 率选为1 kHz和1 Hz的信号,1khz信号用于 显示模块的扫描,1 Hz信号用做倒计时模块 的计数脉冲。
较易交通灯控制器的实现
为了让大家更易理解,我 们先来看看十字路口简单 控制器显示。右图为两交 通灯的运行状态,东西、 南北方向的不同状态组合 (红绿、红黄、绿红、黄 红四个状态) 。但我们可 以简单地将其看成两个 (东西、南北)减1的计数 器,通过监测两个方向的 计数值,可以检测红黄绿 灯组合的跳变。(此图不包 括左拐灯)。
3 软件仿真
本实验仿真应用的是QUARTUSⅡ 7.2软件 的内部仿真程序,在仿真过程中高电平置1, 有效状态也为高电平1,若红绿黄灯置1时则 证明其工作处于亮的状态。在东西南北方 向的数码管显示的数字是由BCD码转换的, 如00000000则显示是00,00011001显示为19。
仿真图
仿真时各输入端的端口对应表
一、倒计时时间显示模块的处理

1、各路口倒计时时间的计算 在各个阶段,各路口倒计时时间显示值与当前计 数值存在一定的关系: S0:cnt=0-44:甲道时间显示:disp1=45-cnt; 乙道时间显示:disp2=65-cnt; S1:cnt=45-49:甲道时间显示:disp1=50-cnt; 乙道时间显示:disp2=65-cnt; S2:cnt=50-64;甲道时间显示:disp1=65-cnt; 乙道时间显示:disp2=65-cnt; S3:cnt=65-69;甲道时间显示:disp1=70-cnt; 乙道时间显示:disp2=70-cnt;
相关文档
最新文档