交通灯控制器的课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计课题:交通灯控制器的设计一、设计目的:学习QuartusII的使用方法,熟悉可编程逻辑器件的使用。通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。在现代化的大城市中,十字交叉路口2越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。二、设计任务:1.满足如下时序要求:南北方向红灯亮时,东西方向绿灯亮,反之亦然。2.每一方向的红(绿)黄灯共维持30秒。3.当某一方向绿灯亮时,置显示器为30秒,然后以每秒减1计数方式工作,直至减到数为3秒时,红绿灯熄灭,黄灯开始间隙闪耀3秒,减到为0,红绿灯交换,一次工作循环结束,进入下一步另一方向的工作循环。4.红绿黄灯均采用发光二极管。5.设计由晶振电路产生1Hz标准秒信号的单元电路。6.要求对整体电路进行仿真,观察并记录下仿真波形。三、设计原理:交通灯有四个状态:3G1Y1R1G2Y2R2S1.亮灭灭灭灭亮S2.灭闪灭灭灭亮S3.灭灭亮亮灭灭S4.灭灭亮灭闪灭然后重复状态S1.分频器分频器实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数器和扫描显示电路。该分频器将时钟信号分频成1HZ和4HZ的时钟信号。控制器控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。此外,当检测到为夜间模式时,手动控制点亮黄灯的二极管。计数器这里需要的计数器的计数范围为30-0。计到0后,下一个时钟沿回复到30,开始下一轮计数。此外,当检测到夜间模式时,计数器暂停计数,而系统复位信号使计数器异步清零。四、电路设计41、分频单元电路设计2、30减计数单元电路设计3、红黄绿灯控制单元电路设计4、译码显示单元电路设计设计流程五、实验程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjiaotongisport(clk,clr:instd_logic;clk1,clk2,clk3:bufferstd_logic;---分频信号分频30减计数灯控制电路译码L显示20MHZ5pout:outstd_logic_vector(6downto1);---东西南北的红绿黄灯状态表示C1:outstd_logic_vector(3downto0);---BCD码高四位表示C0:outstd_logic_vector(3downto0));---BCD码低四位表示endjiaotong;architectureoneofjiaotongissignalg1,y1,r1,g2,y2,r2:STD_LOGIC;---1表示东西方向,2表示南北方向,g,y,r分别表示绿灯,黄灯,红灯signaldiv:integerrange0to20000000;---分频1signaldivn:integerrange0to4000000;---分频2,用于控制黄灯闪烁typestis(s1,s2,s3,s4);---分别表示红绿黄灯的四种组合状态signalstate:st;beginC:process(clk)beginifclk'eventandclk='1'then---对20HZ进行分频,1HZif(div19999999)thendiv=div+1;clk1='0';elsediv=0;clk1='1';endif;if(divn2499999)then---用于黄灯闪烁6divn=divn+1;clk2='0';elsedivn=0;clk2='1';endif;endif;endprocess;process(clk1)isvariablet:integer:=31;---初始赋值beginifclr='1'then---夜间时为黄灯闪烁,且为手动控制pout(6)='0';pout(5)=clk2and'1';pout(4)='0';pout(3)='0';pout(2)=clk2and'1';pout(1)='0';elseif(clk1'eventandclk1='1')thent:=t-1;casestateis---四种组合状态转换whens1=G1='1';Y1='0';R1='0';G2='0';Y2='0';R2='1';if(t=3)thenstate=s2;elsestate=s1;endif;whens2=G1='0';Y1='1';R1='0';G2='0';Y2='0';R2='1';7if(t=0)thenstate=s3;t:=30;elsestate=s2;endif;whens3=G1='0';Y1='0';R1='1';G2='1';Y2='0';R2='0';if(t=3)thenstate=s4;elsestate=s3;endif;whens4=G1='0';Y1='0';R1='1';G2='0';Y2='1';R2='0';if(t=0)thenstate=s1;t:=30;elsestate=s4;endif;whenothers=NULL;endcase;casetis---十进制数与BCD码一一对应赋值,输出时便于七段显示译码器显示when0=C1=0000;C0=0000;when1=C1=0000;C0=0001;when2=C1=0000;C0=0010;when3=C1=0000;C0=0011;8when4=C1=0000;C0=0100;when5=C1=0000;C0=0101;when6=C1=0000;C0=0110;when7=C1=0000;C0=0111;when8=C1=0000;C0=1000;when9=C1=0000;C0=1001;when10=C1=0001;C0=0000;when11=C1=0001;C0=0001;when12=C1=0001;C0=0010;when13=C1=0001;C0=0011;when14=C1=0001;C0=0100;when15=C1=0001;C0=0101;when16=C1=0001;C0=0110;when17=C1=0001;C0=0111;when18=C1=0001;C0=1000;when19=C1=0001;C0=1001;when20=C1=0010;C0=0000;when21=C1=0010;C0=0001;when22=C1=0010;C0=0010;when23=C1=0010;C0=0011;when24=C1=0010;C0=0100;when25=C1=0010;C0=0101;9when26=C1=0010;C0=0110;when27=C1=0010;C0=0111;when28=C1=0010;C0=1000;when29=C1=0010;C0=1001;when30=C1=0011;C0=0000;whenothers=NULL;endcase;endif;pout(6)=G1;pout(5)=clk2andY1;pout(4)=R1;---东西南北六盏灯对应pout(3)=G2;pout(2)=clk2andY2;pout(1)=R2;endif;endprocess;endone;六、测试方法与测试结果1、测试仪器:QUARTUSⅡ2、测试方法:FPGA下载验证与仿真验证3、测试结果:满足设计要求以20HZ为基准仿真:仿真结果:C1:显示30减计数的个位C0:显示30减计数的十位10POUT(6):东西方向绿灯控制端POUT(5):东西方向黄灯控制端POUT(4):东西方向红灯控制端POUT(3):南北方向绿灯控制端POUT(2):南北方向黄灯控制端POUT(1):南北方向红灯控制端白天11夜间黄灯闪烁(手动控制)12设计满足了1.30秒倒数显示2.两个方向灯的交替3.黄灯在最后3秒闪烁七、讨论该电路基本上满足了设计要求,电路简单,实现容易,节省器件。在设计过程中发现的问题以及需改进的地方在下面予以讨论:1.刚开始设置时黄灯在一个周期内闪烁五次导致连接硬件时黄灯不能正常工作,因为占空比太大,可以将其改正,使其在一个周期内闪烁十次。2.黄灯在夜间亮即可,不需要闪烁,闪烁会造成对器件的耗损程度加大,该项设置可通过在CASE语句中对其赋值来实现。3.手动控制可将减计数设为可控减计数器,红黄绿灯可在13CASE语句的赋值中实现控制。另外,手动控制在实际使用的过程中并不方便,可以在控制信号一端设置一个控制器使其能够达到自动控制的目的。

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功