eda课程设计交通灯控制-资料.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
eda课程设计交通灯控制-资料.doc

中南林业科技大学 EDA课程设计论文 课程名称:交通灯设计 班级:2011电子科学与技术1班 姓名:陈 先 俊 学号 一.设计内容 设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 基本要求: 1、红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号,实验电路用逻辑开关代替。 2、主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 3、主、支干道均有车时,两者交替允许通行,主干道每次放行秒,支干道每次放行秒,设立秒、2秒计时、显示电路,选择1HZ时钟脉冲作为系统时钟。 4、在每次由绿灯亮到红灯亮的转换过程中,要亮秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立秒计时、显示电路。 交通灯是城市交通中不可缺少的重要工具,是城市交通秩序的重要保障。本实例就是实现一个常见的十字路通灯功能。读者通过学习这个交通灯控制器,可以实现一个更加完整的交通灯。例如实现实时配置各种灯的时间,手动控制各个灯的状态等。一个十字路口的交通一般分为两个方向,每个方向具有红灯、绿灯和黄灯3种,另外每个方向还具有左转灯,因此每个方向具有4个灯。这个交通灯还为每一个灯的状态设计了倒计时数码管显示功能。可以为每一个灯的状态设置一个初始值,灯状态改变后,开始按照这个初始值倒计时。倒计时归零后,灯的状态将会改变至下一个状态。 值得注意的是,交通灯两个方向的灯的状态是相关的。也就是说,每个方向的灯的状态影响着另外一个方向的灯的状态,这样才能够协调两个方向的车流。如果每个方向的灯是独立变化的,那么交通灯就没有了意义。交通灯控制器原理框图如下图所示,包括置数模块、计数模块、主控制器模块和译码器模块。置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。其中,核心部分是主控制模块。 三、设计程序 源程序 module WMT_traffic(CLK,EN,LAMPA,LAMPB,LAMPC,LAMPD,duan,wei); input CLK,EN; output [1:0] LAMPA,LAMPB,LAMPC,LAMPD; output reg [7:0] duan; output reg [7:0] wei; reg [7:0] led0,led1,led2,led3,led4,led5,led6,led7; reg [2:0] select; reg [7:0] numa,numb,numc,numd; reg tempa,tempb,tempc,tempd; reg [2:0] state1,state2,state3,state4; reg [7:0] s_nred,s_nyellow,s_ngreen; //各个状态寄存器 reg [7:0] w_ered1,w_ered2,w_eyellow,w_egreen; reg [7:0] ls_nred1,ls_nred2,ls_nyellow,ls_ngreen; reg [7:0] lw_ered,lw_eyellow,lw_egreen; reg [1:0] LAMPA,LAMPB,LAMPC,LAMPD; //控制led灯寄存器 reg[25:0] count; //1HZ计数 reg[25:0] count2; //扫描时钟计数 wire clk1hz; assign clk1hz = count[25]; //1HZ时钟信号 reg clk_scan; always @(posedge CLK) //1HZ时钟进程 if(count == 26d50_000_000) count = 26d0; else count = count + 1b1; always @(EN) begin //对各个状态赋值 if(!EN) begin s_nred =8d71; s_nyellow =8d3; s_ngreen =8d83; w_ered1

文档评论(0)

四娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档