交通灯控制器的课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通灯控制器的课程设计

课程设计

课题:交通灯控制器的设

一、设计目的:

学习QuartusII的使用方法,熟悉可编程逻辑器

件的使用。通过制作来了解交通灯控制系统,交

通灯控制系统主要是实现城市十字交叉路口红绿

灯的控制。在现代化的大城市中, 十字交叉路口

越来越多,在每个交叉路口都需要使用红绿灯进

行交通指挥和管理,红、黄、绿灯的转换要有一个

准确的时间间隔和转换顺序,这就需要有一个安

全、自动的系统对红、黄、绿灯的转换进行管理,

本系统就是基于此目的而开发的。

二、设计任务:

1.满足如下时序要求:

南北方向红灯亮时,东西方向绿灯亮,反之亦

然。

2.每一方向的红(绿)黄灯共维持30秒。

3.当某一方向绿灯亮时,置显示器为30秒,然

后以每秒减1计数方式工作,直至减到数为3

秒时,红绿灯熄灭,黄灯开始间隙闪耀3秒,

减到为0,红绿灯交换,一次工作循环结束,

进入下一步另一方向的工作循环。

4.红绿黄灯均采用发光二极管。

5.设计由晶振电路产生1Hz标准秒信号的单元电

路。

6.要求对整体电路进行仿真,观察并记录下仿真

波形。

三、设计原理:

●交通灯有四个状态:

G1 Y1 R1 G2 Y2 R2 S1. 亮灭灭灭灭亮

S2. 灭闪灭灭灭亮

S3. 灭灭亮亮灭灭

S4. 灭灭亮灭闪灭然后重复状态S1.

●分频器

分频器实现的是将高频时钟信号转换成底频的时钟

信号,用于触发控制器、计数器和扫描显示电路。

该分频器将时钟信号分频成1HZ和4HZ的时钟信

号。

●控制器

控制器的作用是根据计数器的计数值控制发光二极

管的亮、灭,以及输出倒计时数值给七段数码管的

分位译码电路。此外,当检测到为夜间模式时,手

动控制点亮黄灯的二极管。

●计数器

这里需要的计数器的计数范围为30-0。计到0后,

下一个时钟沿回复到30,开始下一轮计数。此外,

当检测到夜间模式时,计数器暂停计数,而系统复

位信号使计数器异步清零。

四、电路设计

1、分频单元电路设计

2、30减计数单元电路设计

3、红黄绿灯控制单元电路设计

4、译码显示单元电路设计

●设计流程

分频

30

数灯

L

20

五、实验程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity jiaotong is

port(clk,clr:in std_logic;

clk1,clk2,clk3:buffer std_logic; ---分频信号

pout:out std_logic_vector(6 downto 1);---东西南北的红绿黄灯状态表示

C1:out std_logic_vector(3 downto 0);---BCD码高四位表示

C0:out std_logic_vector(3 downto 0));---BCD码低四位表示

end jiaotong;

architecture one of jiaotong is

signal g1,y1,r1,g2,y2,r2:STD_LOGIC;---1表示东西方向,2表示南北方向,g,y,r分别表示绿灯,黄灯,红灯

signal div:integer range 0 to 20000000; ---分频1

signal divn:integer range 0 to 4000000; ---分频2,用于控制黄灯闪烁

type st is(s1,s2,s3,s4);---分别表示红绿黄灯的四种组合状态

signal state:st;

begin

C:process(clk)

begin

if clk'event and clk='1' then---对20HZ进行分频,1HZ if(div<19999999)then

div<=div+1;

clk1<='0';

else div<=0; clk1<='1';

end if;

if(divn<2499999)then ---用于黄灯闪烁

divn<=divn+1;

clk2<='0';

else divn<=0; clk2<='1';

end if;

end if;

end process;

process (clk1) is

variable t:integer :=31; ---初始赋值

begin

if clr='1' then ---夜间时为黄灯闪烁,且为手动控制pout(6)<='0'; pout(5)<=clk2 and '1'; pout(4)<='0';

pout(3)<='0'; pout(2)<=clk2 and '1'; pout(1)<='0';

else if(clk1'event and clk1='1') then

相关文档
最新文档