交通信号灯控制系统_对交通信号灯的控制

2020-02-27 其他范文 下载本文

交通信号灯控制系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“对交通信号灯的控制”。

交通信号控制系统

1.设计任务

设计一个十字路口交通控制系统,要求:(1)东西(用A表示)、南北(用B表示)方向均有绿灯、黄灯、红灯指示,其持续时间分别是30秒、3秒和30秒,交通灯运行的切换示意图如图1-1所示。

(2)系统设有时钟,以倒计时方式显示每一路允许通行的时间。

(3)

当东西或南北两路中任意一路出现特殊情况时,系统可由交警手动控制立即进入特殊运行状态,即红灯全亮,时钟停止记时,东西、南北两路所有车辆停止通行;当特殊运行状态结束后,系统恢复工作,继续正常运行。

2.总体框图

本系统主要由分频计、计数器和控制器等电路组成,总体框图如1-2所示。分频计将晶振送来的信号变为1Hz时钟信号;当紧急制动信号无效时,选择开关将1Hz脉冲信号送至计数器进行倒计时计数,并使控制器同步控制两路红、黄、绿指示灯时序切换;当紧急制动信号有效时,选择开关将紧急制动信号送至计数器使其停止计数,同时控制器控制两路红灯全亮,所有车辆停止运行。

2-1 交通灯总体结构框图模块设计

(1)分频器

设晶振产生的信号为2MHz,要求输出1Hz时钟信号,则分频系数为2M,需要21位计数器。用VHDL设计的2M分频器文本文件如下:

LIBRARY

IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpin2m IS

PORT(clk:IN STD_LOGIC;

reset:IN STD_LOGIC;

--时钟输入

clk_out:out STD_LOGIC);END ENTITY fenpin2m;

ARCHITECTURE one OF fenpin2m IS signal count:integer range 0 to 1999999;

BEGIN

PROCESS(clk)

BEGIN

if reset='1' then

count

clk_out

else

if clk'EVENT and clk='1'THEN

IF count

count

clk_out

ELSif count

count

clk_out

else

count

END IF;

END IF;

END IF;

END PROCESS;END one;

(2)模30倒计时计数器 采用原理图输入法,用两片74168实现。74168为十进制可逆计数器,当U/DN=0时实现9~0减法计数,记到0时TCN=0;当U/DN=1时实现0~9加法计数,计到9时TCN=0;ENTN+ENPN=0时执行计数,否则计数器保持。该电路执行减法计数,当两片计数器计到0时同步置数,因此该计数器的计数范围是29~0,当系统检测到紧急制动信号有效时,CP=0计数器停止计数。

图3-1 模30减法计数器电路图

图3-2 模30减法计数器仿真波形

(3)显示译码器

显示译码器为动态显示,用VHDL文本输入法设计的七子段译码器如下:

图3-3 显示译码器的仿真波形

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

--调用库文件

ENTITY xianshi IS

--实体开始

PORT(CLK:IN STD_LOGIC;

datain1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

datain2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

--扫描时钟信号

SEL:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);--数码管选择信号

q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));--数码管八端输入 end xianshi;

--实体结束 ARCHITECTURE one OF xianshi IS

--结构体开始 begin

PROCESS(CLK)

--进程开始 VARIABLE TMP:STD_LOGIC_vector(1 downto 0);VARIABLE d:STD_LOGIC_VECTOR(3 DOWNTO 0);--中间变量

begin

IF(CLK'EVENT AND CLK='1')THEN

--时钟上升沿有效

IF(TMP=“00”)THEN

TMP:=“01”;

d:=datain2;

CASE d IS

WHEN“0000”=>q

--0

WHEN“0001”=>q

--1

WHEN“0010”=>q

--2

WHEN“0011”=>q

--3 WHEN“0100”=>q

--4 WHEN“0101”=>q

--5 WHEN“0110”=>q

--6

WHEN“0111”=>q

--7

WHEN“1000”=>q

--8

WHEN“1001”=>q

--9

WHEN OTHERS=>q

END CASE;

elsif(tmp=“01”)then

TMP:=“00”;

--如果tmp为“001”即第2个数码管显示b输入

d:=datain1;

CASE d IS

WHEN“0000”=>q

--0

WHEN“0001”=>q

--1

WHEN“0010”=>q

--2

WHEN“0011”=>q

--3

WHEN“0100”=>q

--4

WHEN“0101”=>q

--5

WHEN“0110”=>q

--6

WHEN“0111”=>q

--7

WHEN“1000”=>q

--8

WHEN“1001”=>q

--9

WHEN OTHERS=>q

END CASE;

end if;

end if;sel

--把tmp的值赋予sel

end proce;

--进程结束

end one;

(4)控制器

该模块输入为1Hz时钟,和紧急制动信号PE,输出为两路红、黄、绿指示灯,当紧急制动信号无效(PE=1)时,两路红、黄、绿灯时序切换。当紧急制动信号有效时,选项开关将紧急制动信号送至计数器使其停止计数,同时使控制器控制两路红灯全亮,所有车辆停止通行。用VHDL文本输入法设计的控制器如下;

图3-4控制器的仿真波形

LIBRARY

IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY contr IS

PORT(cp1:IN STD_LOGIC;

pe:IN STD_LOGIC;

chan:IN STD_LOGIC;

ra,ga,ya,rb,gb,yb:out STD_LOGIC);END ENTITY contr;ARCHITECTURE one OF contr IS signal count:integer range 0 to 59;

BEGIN

proce(cp1)

begin

if pe='0'then

count

else

IF(cp1'EVENT AND cp1='1')THEN

if count

count

else

count

end if;

end if;end if;END PROCESS;PROCESS BEGIN

if pe='1'then

if chan='1' then

if count

rb

gb

yb

ra

if count

ga

ya

else

ga

ya

end if;

else

rb

ga

ya

ra

if count

gb

yb

else

gb

yb

end if;

end if;

else

if count

rb

ga

ya

ra

if count

gb

yb

else

gb

yb

end if;

else

rb

gb

yb

ra

if count

ga

ya

else

ga

ya

end if;

end if;

end if;

else

rb

ra

gb

yb

ga

ya

end if;end proce;end one;交通灯原理图

图4-1 交通灯原理图

《交通信号灯控制系统.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
交通信号灯控制系统
点击下载文档
相关专题 对交通信号灯的控制 交通 控制系统 信号灯 对交通信号灯的控制 交通 控制系统 信号灯
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文