交通灯控制器课程设计_第1页
交通灯控制器课程设计_第2页
交通灯控制器课程设计_第3页
交通灯控制器课程设计_第4页
交通灯控制器课程设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一 课题介绍1.1概述1.2课题要求二 设计原理与分析2.1.1红黄绿灯之间状态变换2.1.2计时设置2.1.3紧急情况2.2 总体框图2.3 分块设计三 、原理图4、 程序代码4.1M分频器4.2数码管译码器4.3 交通灯控制器4.4 计时器5、 仿真结果及实验分析六、总结一、课题介绍 1.1概述在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序地通行。其中,红灯(R)亮,表示该条道路禁止通行;黄灯(Y)亮,表示停车;绿灯(G)亮,表示可以通行。倒计时显示器是用来显示允许通行和禁止通行地时间。交通灯控制器就是用来自动控制十字路口的交通灯和计时器,指挥各种车辆和

2、行人安全通行。1.2课题要求设计一个十字交叉路口的交通灯控制器,具体要求如下:(1) 每条道路设一组信号灯,每组信号灯由红、黄、绿3盏灯组成,绿灯表示允许通行,红灯表示禁止通行,黄灯表示该车道上已过停车线德车辆继续通行,未过停车线的车辆停止通行。(2) 设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。(3) 当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。二、设计原理与分析2.1交通

3、灯用以指挥车辆和行人有序地通行,在功能上要实现红黄绿灯之间状态变换、计时设置和紧急情况三大功能。2.1.1红黄绿灯之间状态变换对于十字路口两个方向上的交通灯,要保证一条道路通行另一条禁止,同时还要考虑黄灯到红灯的变换,因此一共有四个状态,即南北红东西绿、南北红东西黄、南北绿东西红、南北黄东西红。 2.1.2计时设置根据要求,绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。2.1.3紧急情况当各条路上任意一条上出现特殊情况时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。2.2 总体框图 2.2.1模块示意图 图12.3 分块设计要实现交通灯的控制需要5个功能模块,分别为4M分频器,数

4、码管译码器,交通灯控制器以及计时器。 2.3.1 4M分频器由于引脚选用4M时钟,而计时单位为秒,需要对时钟信号进行4M分频处理,编译后生成4M分频器如下图:图2 4M分频器 2.3.2数码管译码器输出时间为16进制数,要在数码管上显示需设计数码管译码器对其进行译码,编译后生成数码管译码器如下图:图3 数码管译码器 2.3.3 交通灯控制器为完成四个状态之间的循环,需交通灯控制器通过时钟信号的变化来完成状态循环的功能,编译后生成交通灯控制器如下图:图4 交通灯控制器 2.3.4 计时器计时器不仅要完成倒计时功能,还要随状态的变化而改变其倒计时时间,编译后生成计时器如下图:图5 计时器3、 原理

5、图、代码书写 1、交通灯控制的原理图各个模块代码书写4.1M分频器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; - 运算符重载ENTITY cnt4M IS PORT ( ena,clr,d_ctr,clk : IN STD_LOGIC ; q : OUT STD_LOGIC_VECTOR( 3 DOWNTO 0 ); co:out std_logic ) ; END ENTITY cnt4M; ARCHITECTURE bhv OF cnt4M ISSIGNAL q1 : STD_L

6、OGIC_VECTOR(3 DOWNTO 0 ); BEGIN q <= q1 ; PROCESS (clk,clr,ena,d_ctr) BEGIN IF clr='0' THEN q1<= (others =>'0'); ELSIF clk'EVENT AND clk = '1' THEN IF ena='1' THEN IF d_ctr='1' THEN IF q1 = "1111" THEN q1 <= (others =>'0');

7、 ELSE q1<=q1+'1' END IF; ELSIF q1= "0000" THEN q1<=(others =>'1'); ELSE q1<=q1-'1' END IF; END IF ; END IF; END PROCESS ; PROCESS(q1) BEGIN IF q1= "1111" THEN co<='1' ELSE co<='0' END IF;END PROCESS;END ARCHITECTURE bhv;4.

8、2数码管译码器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity exp4 isport(clk : in std_logic;A,B:in std_logic_vector(7 downto 0);ledag:out std_logic_vector(6 downto 0);sel:out std_logic_vector(7 downto 0);end;architecture bh of exp4 issignal del:

9、std_logic_vector(1 downto 0);signal key:std_logic_vector(3 downto 0);beginprocess(clk)variable dount:std_logic_vector(1 downto 0);beginif clk'event and clk='1'thendount:=dount+1;end if;del<=dount;end process;process(key)begincase key iswhen "0000"=>ledag<="1111110

10、"when "0001"=>ledag<="0110000"when "0010"=>ledag<="1101101"when "0011"=>ledag<="1111001"when "0100"=>ledag<="0110011"when "0101"=>ledag<="1011011"when "0110&quo

11、t;=>ledag<="1011111"when "0111"=>ledag<="1110000"when "1000"=>ledag<="1111111"when "1001"=>ledag<="1111011"when others=>null;end case;end process;process(del)begincase del iswhen "11"=>sel&l

12、t;="10000000"key<=A(7 downto 4);when "10"=>sel<="01000000"key<=A(3 downto 0);when "00"=>sel<="00010000"key<=b(3 downto 0);end case;end process;end bh;4.3 交通灯控制器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED

13、.ALL;ENTITY jtd ISPORT(clk,emg:IN STD_LOGIC;-输入 时钟,复位,状态 COUNT1,COUNT2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-计时器 MG,MY,MR,CG,CY,CR:OUT STD_LOGIC);-输出信号,控制各种灯END jtd;ARCHITECTURE behav OF jtd IS TYPE jtdSTATE IS(mrcg,mrcy,mgcr,mycr); SIGNAL STATE:jtdSTATE;BEGIN PROCESS(STATE,clk,emg)-RESET, S BEGIN - IF R

14、ESET='1' THEN STATE<=mgcr;MG<='1'CR<='1'MY<='0'MR<='0'CG<='0'CY<='0' -ELS IF clk'EVENT AND clk='1' then IF emg='1' THEN MY<='0'CR<='1'MG<='0'MR<='1'CG<='

15、;0'CY<='0' END IF; IF emg='0' THEN CASE STATE IS WHEN mrcg=>IF COUNT1="00000110" AND COUNT2="00000001"THEN STATE<=mrcy;MY<='0'CR<='0'MG<='0'MR<='1'CG<='0'CY<='1' ELSE STATE<=mrcg;MG&

16、lt;='0'CR<='0'MY<='0'MR<='1'CG<='1'CY<='0' END IF; WHEN mrcy=>IF COUNT1="00000001" AND COUNT2="00000001"THEN STATE<=mgcr;MR<='0'CG<='0'MG<='1'MY<='0'CR<='1'

17、CY<='0' ELSE STATE<=mrcy;MY<='0'CR<='0'MG<='0'MR<='1'CG<='0'CY<='1' END IF; WHEN mgcr=>IF COUNT2="00000110" AND COUNT1="00000001"THEN STATE<=mycr;MR<='0'CY<='0'MY<='

18、1'MG<='0'CR<='1'CG<='0' ELSE STATE<=mgcr;MR<='0'CG<='0'MG<='1'MY<='0'CR<='1'CY<='0' END IF; WHEN mycr=>IF COUNT1="00000001" AND COUNT2="00000001"THEN STATE<=mrcg;MG<

19、='0'CR<='0'MR<='1'MY<='0'CY<='0'CG<='1' ELSE STATE<=mycr;MR<='0'CY<='0'MY<='1'MG<='0'CR<='1'CG<='0' END IF; END CASE; END IF; END IF; END PROCESS; END behav;4.4 计时器LIBR

20、ARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JISHU IS PORT(clk,RESET,emg:IN STD_LOGIC; tim1,tim2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END JISHU;ARCHITECTURE behav OF JISHU IS TYPE RGY IS(mrcg,mrcy,mgcr,mycr); SIGNAL STATE:RGY;BEGIN PROCESS(clk,RESET,emg)-,RESET VARIABLE a1

21、:STD_LOGIC:='0' VARIABLE a2:STD_LOGIC:='0' VARIABLE a3:STD_LOGIC:='0' VARIABLE a4:STD_LOGIC:='0' VARIABLE b:STD_LOGIC:='0' VARIABLE timmh:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE timml:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE timch:STD_LOGIC_VECTOR(3 DOWNTO 0); VA

22、RIABLE timcl:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE mth,mtl,cth,ctl:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF clk'EVENT AND clk='1' THEN IF RESET='1' THEN STATE<=mrcg;a1:='1' END IF; IF RESET='0' AND emg='1' THEN IF b='0' THEN b:='1'mth:=&qu

23、ot;0000"mtl:="0000"cth:="0000"ctl:="0000" else b:='0'mth:=timmh;mtl:=timml;cth:=timch;ctl:=timcl; END IF; END IF; IF emg='0' THEN mth:=timmh;mtl:=timml;cth:=timch;ctl:=timcl; CASE STATE IS WHEN mrcg => -IF S='1' AND b='1' THEN STA

24、TE<=mycr;a:='0'th:="0000"tl:="0100"b:='0' -ELSIF S='0' AND b='1' THEN STATE<=mgcr;a:='1'th:="0000"tl:="0001" -ELSE IF a1='1' THEN mth:="0010"mtl:="0101"cth:="0010"ctl:="00

25、00"a1:='0'timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; -25秒,20秒 else IF NOT(cth="0000" AND ctl="0010") then IF mtl="0000" then mtl:="1001"mth:=mth-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; else mtl:=mtl-1;timmh:=mth; timml:=mtl; timch:=

26、cth; timcl:=ctl; END IF; -IF NOT(cth="0000" AND ctl="0010") then IF ctl="0000" then ctl:="1001"cth:=cth-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; else ctl:=ctl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; END IF; ELSE mth:="0000"mtl:=&qu

27、ot;0110"cth:="0000"ctl:="0001"STATE<=mrcy;a2:='1'timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; -6.1 END IF; END IF; -END IF; WHEN mrcy => IF a2='1' THEN cth:="0000"ctl:="0101"mth:="0000"mtl:="0101"a2:='0'

28、;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; -5秒 else IF NOT(cth="0000" AND ctl="0010" ) then ctl:=ctl-1;mtl:=mtl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; ELSE cth:="0000"ctl:="0001"mth:="0000"mtl:="0001"a3:='1'STATE<

29、;=mgcr;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; END IF; END IF; WHEN mgcr =>-IF S='1' THEN IF a3='1' THEN mth:="0010"mtl:="0000"cth:="0010"ctl:="0101"a3:='0'timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; -20秒 else IF NOT(mth=

30、"0000" AND mtl="0010") then IF mtl="0000" then mtl:="1001"mth:=mth-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; else mtl:=mtl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; END IF; -IF NOT(cth="0000" AND ctl="0010") then IF ctl=&quo

31、t;0000" then ctl:="1001"cth:=cth-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; else ctl:=ctl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; END IF; ELSE cth:="0000"ctl:="0110"mth:="0000"mtl:="0001"STATE<=mycr;a4:='1'timmh:=mth;

32、 timml:=mtl; timch:=cth; timcl:=ctl; -6.1 END IF; END IF; -ELSE a:='0'STATE<=mrcy;th:="0000"tl:="0100" -END IF; WHEN mycr =>IF a4='1' THEN mth:="0000"mtl:="0101"cth:="0000"ctl:="0101"a4:='0'timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; -4秒 else IF NOT(cth="0000" AND ctl="0010") then ctl:=ctl-1;mtl:=mtl-1;timmh:=mth; timml:=mtl; timch:=cth; timcl:=ctl; ELSE cth:="0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论