- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)