文档库 最新最全的文档下载
当前位置:文档库 › verilog语言的FPGA变速花样流水灯设计

verilog语言的FPGA变速花样流水灯设计

verilog语言的FPGA变速花样流水灯设计
verilog语言的FPGA变速花样流水灯设计

基于XILINX--XSE500E型FPGA

的变速流水灯以及花样流水灯的verilog语言设计

摘要

临近大四毕业,诸多工科院校电子电科通信等专业会选择用FPGA项目作为课程设计的课题,笔者同样经历了这个过程,收获颇多,在此将设计成果在此分享,以帮助大家更好掌握FPGA设计。

FPGA种类繁多,时效性非常好,设计过程中十分注重实时性,在时间点控制上非常优秀。此次设计采用XILINX的XSE500E型芯片的开发板,芯片采用FG320型接口,速度级别-4。板载时钟50MHz,如需其他时钟周期,可采用IP核中的clocking,其中的 DCM可以实现变频,引入DCM,输入频率50MHz,输出频率填入需要的频率即可,之后进行实例化。此外,可以借助计数器进行延时减速,此次设计采用了计数器延时方法。

本次列举了四种流水灯相关设计:普通流水灯(向左和向右滚动),自动反复式流水灯(到最右端自动向左滚动,到左端自动向右滚动),花样流水灯,变速流水灯。

谢谢大家的支持!

正文

一,普通流水灯

1,建模思想

普通流水灯,可以向右滚动,到最右端返回最左端,也可以向左滚动,到最左端返回最右端。

普通流水灯模块涉及的端口有:clk,它是时钟输入,一般就是板载时钟,这里是50MHz,具体参照开发板说明。还有复位输入rst,高电平有效。此外就是led端口,这个端口有8根管脚,共8位,连接8个led灯。

采用verilog语言,端口定义格式如下:

module led(

input clk,

input rst,

output reg[7:0] led //此行定义说明led端口既是驱动管脚的,又是寄存器

);

采用过程建模,这里不采用行为建模和功能建模,因为这个过程就是一个大循环,规律性极强。由于板载时钟50MHz,如果每个时钟周期都要滚动流水灯,那么速度是惊人的,人眼根本无法分辨。所以采用计数器延时,当计数达到约4千万时候,驱动系统进行动作,可以判断,也可以进行流水灯动作。

普通流水灯,需要判断流水灯是否到了尽头,如果到了尽头,需要回归起点。

每次上电之后,需要按一下复位,才能进行流水灯循环。

Rst的作用就是初始化,首先为led赋予一个初始状态,可以让一个灯循环,也可以让几个灯一起亮,一起循环。几个灯亮,关键在于rst初始化。

2,全部代码如下:这里列举右滚动流水灯

module led( //这行定义了模块名字为led

input clk,

input rst,

output reg[7:0] led

);

reg [25:0] count; //延时计数器,这里是25位计数器,为32M。

always @(posedge clk) //每个时钟上升沿进行下面动作

if(rst)

led <= 8'b10000000; //复位初始化,只有一个灯亮着,这里做一个灯的流水灯,如always @(posedge clk) 果做两个灯,就是11000000

If(reg[25] == 1) //计数满32M之后再进行下面动作,延时。

begin

If (led == 8’b00000001) //当滚动到尽头,回到左侧起始端

led <= 8’b10000000;

else

led <= {led[0],led[7:1]} //右移,用并置符实现

end

endmodule

左滚动可以很容易得出,在此不做详细解释,读者自行分析。

module led( //这行定义了模块名字为led

input clk,

input rst,

output reg[7:0] led

);

reg [25:0] count; //延时计数器,这里是25位计数器,为32M。

always @(posedge clk) //每个时钟上升沿进行下面动作

if(rst)

led <= 8'b00000001; //复位初始化,只有一个灯亮着,这里做一个灯的流水灯,如always @(posedge clk) 果做两个灯,就是00000011

If(reg[25] == 1) //计数满32M之后再进行下面动作,延时。

begin

If (led == 8’b10000000) //当滚动到尽头,回到左侧起始端

led <= 8’b00000001;

else

led <= {led[6:0],led[7]} //左移,用并置符实现

end

endmodule

二,自循环流水灯

此代码引用自课堂实验的代码,非本人原创,在此分析一下。大家可以自行理解。每次上电,按一下rst复位键,流水灯出现一个或者几个灯亮起来,接下来按住run,则流水灯从左向右滚动,滚到最右,自动向左滚,滚到左侧,再向右滚动,周而复始。

1,建模思想

该模块一共有四个端口,led是驱动流水灯的8个管脚的端口,clk是板载50MHz时钟,rst是复位信号输入,run是控制流水灯开始滚动的信号。

该模块采用计数器延时,通过flag寄存器控制流动方向,flag为1时候左滚动,flag为0,向右滚动。滚动到位自行判断。

2,代码分析

module Led(clk,reset,run,led);

input clk,reset,run;

output reg[7:0] led;

reg [22:0] count;

reg [7:0] mled;

reg flag;

always@(posedge clk)

if(count[22] == 1)

count <= 0;

else

count <= count+1;

always@(posedge clk )

begin

if(count [22] == 1)

if(reset)

begin

led <= 8'b0000_0001; //这里我们只让一个灯亮着,如果两个灯就是00000011

flag <= 1; //初始化默认向左滚动

end

else if(run ) //按下run之后才会滚动

if(flag) //左滚动状态

begin

led <= {led[6:0],led[7]}; //左移

if(led == 8'b0111_0000) //移到左端,之后要向右滚动

flag <= 0; //控制向右滚动

else ; //使用空的else语句是为了避免产生锁存器

end

else //flag==0即右滚状态

begin

led <= {led[0],led[7:1]}; //右移

if(led == 8'b0000_1110) //右移到尽头,要控制左移

flag <= 1; //控制左移

else ;

end

else

led <= led; //不按run的时候,led保持原来的状态,不动。

end

endmodule

三,花样流水灯

1,建模思想

笔者逻辑思维有限,并非专职码农,写出的代码,只能保证可以实现效果,至于执行效率,你懂的。

不过,可读性肯定没问题,一看便懂。

Verilog采用了c语言的风格,要说C语言什么最难,数组?指针?结构体?链表?

NO!

是if .....else if.....else ......分支判断,尤其是嵌套,if嵌套可以把码农瞬间搞疯。

C语言的if下面要跟着{},括号里面的是一个整体,这还容易判断,可是verilog呢?连个括号都没有,根本无法判断谁跟谁是站在一起的。

所以,根据程序是个大循环的思想,我采用过程建模,同时依靠行为建模,判断每个时间点该做点什么,确定每个点的行为,组成时间循环。

没错,case语句此时此刻就显得和蔼可亲了。所以呢,我们采用case语句判断,依次判断。

下面分析一下代码:

注意case下面那些赋值语句中,0和1的位置,哪里是1,哪个灯就是亮的。module led(

input clk,

output reg [5:0] led

);

reg [24:0] count;

reg [5:0] mod;

always @(posedge clk)

if(count[24] == 0)

count <= 0;

else

count <= count + 1;

always @(posedge clk)

if(count[24] == 0)

if( mod[5] == 1 ) //每次计数满了再行动,用来延时,另外,这里有个5位计数

mod <= 0; 器,说明这个循环一共有32个状态,每个状态由你做主

else

mod <= mod + 1;

always @(posedge clk)

begin

case (mod)

5'h00: led <= 8'b11000000;

5'h01: led <= 8'b01100000;

5'h02: led <= 8'b00110000;

5'h03: led <= 8'b00011000;

5'h04: led <= 8'b00001100;

5'h05: led <= 8'b00000110;

5'h06: led <= 8'b00000011;

5'h07: led <= 8'b00001100;

5'h08: led <= 8'b00110000;

5'h09: led <= 8'b01100000;

5'h0a: led <= 8'b11000000;

5'h0b: led <= 8'b00110000;

5'h0c: led <= 8'b00001100;

5'h0d: led <= 8'b00011000;

5'h0e: led <= 8'b00011000;

5'h0f: led <= 8'b00001100;

5'h10: led <= 8'b00001100;

5'h11: led <= 8'b00000110;

5'h12: led <= 8'b00000110;

5'h13: led <= 8'b00000011;

5'h14: led <= 8'b00000110;

5'h15: led <= 8'b00001100;

5'h16: led <= 8'b00011000;

5'h17: led <= 8'b00110000;

5'h18: led <= 8'b01100000;

5'h19: led <= 8'b11000000;

5'h1a: led <= 8'b01010000;

5'h1b: led <= 8'b01001000;

5'h1c: led <= 8'b01000100;

5'h1d: led <= 8'b01000010;

5'h1e: led <= 8'b10000001;

5'h1f: led <= 8'b01000010;

default: led <= 5'h11;

endcase

end

endmodule

再唠叨两句,这个段子虽然长,但是原理是万能的,32个状态位,因为mod寄存器有6位,如果mod寄存器只有4位,那么就只有8种状态。可以修改mod位数,来决定多少个装态,每个状态赋值不同,产生的花样也不同。

花样如何,你做主!

四,变速流水灯

1,建模思想

变速流水灯,技术含量那个高啊,折磨我足足好几天,最后无奈了,采取了列举法。我最怕什么if else了,没办法,笨是无法挽救的。

其实变速,你懂得,为什么快,因为每秒滚动一位,为什么慢,经过十几秒才滚动一次。每秒滚动一次,那么每个状态只停留一秒,十几秒滚动一位,那么一个状态要停留十几秒,所以,根据每个状态停留的时间不同,发生变速。

我们这里列举了越来越慢的方法,注意case语句后面的各赋值句。每个状态停留时间越长,那么速度就越慢。

2,源代码

odule led(

input clk,

output reg [7:0] led

);

reg [24:0] count;

reg [7:0] mod;

always @(posedge clk)

if(count[24] == 1)

count <= 0;

else

count <= count + 1;

always @(posedge clk)

if(count[24] == 1)

if( mod[7] == 1 )

mod <= 0;

else

mod <= mod + 1;

always @(posedge clk)

begin

case (mod)

8'h00: led <= 8'b11000000; 我们这里有128个状态,且只从左向右滚动。可

8'h01: led <= 8'b01100000; 以自己修改后面的1和0的位置得到很多花样

8'h02: led <= 8'b00110000;

8'h03: led <= 8'b00011000;

8'h04: led <= 8'b00001100;

8'h05: led <= 8'b00000110;

8'h06: led <= 8'b00000011;

8'h07: led <= 8'b11000000;

8'h08: led <= 8'b11000000;

8'h09: led <= 8'b01100000;

8'h0a: led <= 8'b01100000;

8'h0b: led <= 8'b00110000;

8'h0c: led <= 8'b00110000;

8'h0d: led <= 8'b00011000;

8'h0e: led <= 8'b00011000;

8'h0f: led <= 8'b00001100;

8'h10: led <= 8'b00001100;

8'h11: led <= 8'b00000110;

8'h12: led <= 8'b00000110;

8'h13: led <= 8'b00000011;

8'h14: led <= 8'b00000011;

8'h15: led <= 8'b11000000;

8'h16: led <= 8'b11000000;

8'h17: led <= 8'b11000000;

8'h18: led <= 8'b11000000;

8'h19: led <= 8'b01100000;

8'h1a: led <= 8'b01100000;

8'h1b: led <= 8'b01100000;

8'h1d: led <= 8'b00110000; 8'h1e: led <= 8'b00110000; 8'h1f: led <= 8'b00110000; 8'h20: led <= 8'b00110000; 8'h21: led <= 8'b00011000; 8'h22: led <= 8'b00011000; 8'h23: led <= 8'b00011000; 8'h24: led <= 8'b00011000; 8'h25: led <= 8'b00001100; 8'h26: led <= 8'b00001100; 8'h27: led <= 8'b00001100; 8'h28: led <= 8'b00001100; 8'h29: led <= 8'b00000110; 8'h2a: led <= 8'b00000110; 8'h2b: led <= 8'b00000110; 8'h2c: led <= 8'b00000110; 8'h2d: led <= 8'b00000011; 8'h2e: led <= 8'b00000011; 8'h2f: led <= 8'b00000011; 8'h30: led <= 8'b00000011; 8'h31: led <= 8'b11000000; 8'h32: led <= 8'b11000000; 8'h33: led <= 8'b11000000; 8'h34: led <= 8'b11000000; 8'h35: led <= 8'b11000000; 8'h36: led <= 8'b11000000; 8'h37: led <= 8'b01100000; 8'h38: led <= 8'b01100000; 8'h39: led <= 8'b01100000; 8'h3a: led <= 8'b01100000; 8'h3b: led <= 8'b01100000; 8'h3c: led <= 8'b01100000; 8'h3d: led <= 8'b00110000; 8'h3e: led <= 8'b00110000; 8'h3f: led <= 8'b00110000; 8'h40: led <= 8'b00110000; 8'h41: led <= 8'b00110000; 8'h42: led <= 8'b00110000; 8'h43: led <= 8'b00011000; 8'h44: led <= 8'b00011000; 8'h45: led <= 8'b00011000; 8'h46: led <= 8'b00011000; 8'h47: led <= 8'b00011000;

8'h49: led <= 8'b00001100; 8'h4a: led <= 8'b00001100; 8'h4b: led <= 8'b00001100; 8'h4c: led <= 8'b00001100; 8'h4d: led <= 8'b00001100; 8'h4e: led <= 8'b00001100; 8'h4f: led <= 8'b00000110; 8'h50: led <= 8'b00000110; 8'h51: led <= 8'b00000110; 8'h52: led <= 8'b00000110; 8'h53: led <= 8'b00000110; 8'h54: led <= 8'b00000110; 8'h55: led <= 8'b00000011; 8'h56: led <= 8'b00000011; 8'h57: led <= 8'b00000011; 8'h58: led <= 8'b00000011; 8'h59: led <= 8'b00000011; 8'h5a: led <= 8'b00000011; 8'h5b: led <= 8'b11000000; 8'h5c: led <= 8'b11000000; 8'h5d: led <= 8'b11000000; 8'h5e: led <= 8'b11000000; 8'h5f: led <= 8'b11000000; 8'h60: led <= 8'b11000000; 8'h61: led <= 8'b11000000; 8'h62: led <= 8'b11000000; 8'h63: led <= 8'b01100000; 8'h64: led <= 8'b01100000; 8'h65: led <= 8'b01100000; 8'h66: led <= 8'b01100000; 8'h67: led <= 8'b01100000; 8'h68: led <= 8'b01100000; 8'h69: led <= 8'b01100000; 8'h6a: led <= 8'b01100000; 8'h6b: led <= 8'b00110000; 8'h6c: led <= 8'b00110000; 8'h6d: led <= 8'b00110000; 8'h6e: led <= 8'b00110000; 8'h6f: led <= 8'b00110000; 8'h70: led <= 8'b00110000; 8'h71: led <= 8'b00110000; 8'h72: led <= 8'b00110000; 8'h73: led <= 8'b00011000;

8'h75: led <= 8'b00011000;

8'h76: led <= 8'b00011000;

8'h77: led <= 8'b00011000;

8'h78: led <= 8'b00011000;

8'h79: led <= 8'b00011000;

8'h7a: led <= 8'b00011000;

8'h7b: led <= 8'b00001100;

8'h7c: led <= 8'b00001100;

8'h7d: led <= 8'b00001100;

8'h7e: led <= 8'b00001100;

8'h7f: led <= 8'b00001100;

8'h80: led <= 8'b00001100;

default: led <= 8'h00;

endcase

end

endmodule

基于VerilogHDL的通行时间可变的交通灯控制器

通行时间可变的交通灯控制器设计 module tr1(ng,clk,reset,resets,emergency,lighta,lightb,seg,select); input ng,clk,reset,emergency,resets; output[6:0]seg;//显示用的 output[3:0] lighta,lightb;//a是主干道,b是支干道 output [3:0] select;//选择那一个管子进行显示 reg clk1,clk2;//clk1要5HZ clk2要几千HZ reg [3:0] select; reg tim1,tim2;//这是看你的等有没有变过颜色的控制信号 reg [1:0] cont; reg[2:0]state1,state2,ste;两个控制颜色变化状态的信号。 reg[3:0]lighta,lightb;//a是主干道,b是支干道 reg[3:0]num;//译码器是根据这个东西来译码的 reg [35:0] fout; reg[6:0]seg;//显示 reg[7:0] numa,numb; reg[7:0] red1,red2,green1,green2,yellow1,yellow2,left1,left2; always @(ng ) if(!ng) begin //设置计数初值 green1 <=8'b00110000;//30S red1 <=8'b01010001;//51S yellow1<=8'b00000011;//3S left1 <=8'b00010101; //15S green2 <=8'b00110000;//30S

花样流水灯实验报告

黄淮学院信息工程学院 单片机原理及应用课程设计性实验报告

五、硬件电路设计 根据设计任务,首先进行系统硬件的设计。其硬件原理图由LED显示电路和单片机最小系统组成,如图所示,其中包括时钟电路采用部时钟方式,复位电路采用上电自动复位。由于单片机的I/O口的高电平驱动能力只有微安级,而灌电流可以达到3毫安以上,因此采用低电平驱动。P1、P2、P3分别控制8个led灯。 六、软件程序设计 1、软件设计思路 如果通过上图所示电路图完成实验要求,通过数组,分别同时控P0、P1、P2分别控制8个led灯,从而协调控制24个灯实现花样流水灯效果。 开始 编写数组 主循环 逐个点亮 24灯同时闪烁 逐个熄灭

P3=table1[i]; delayms(500); } shan();//全部闪烁 for(i=0;i<8;i++)//逐个熄灭{ P3=table2[i]; delayms(500); } for(i=0;i<8;i++) { P1=table3[i]; delayms(500); } for(i=0;i<8;i++) { P0=table2[i]; delayms(500); } } } void delayms (uintt) { uint x,y; for(x=t; x>0;x--) for(y=50;y>0;y--); } 七、软硬件仿真调试分析 1、仿真调试结果

图片 1 逐个点亮图片 2 24灯闪烁 图片 3 逐个熄灭 2、性能测试及结果分析 通过仿真结果发现通过上述系统可以实现实验要求,24个灯逐个点亮,24个灯全亮后,24个灯一起闪烁,闪烁5次后,然后24个灯逐个熄灭。由此证明系统满足实验要求。 八、项目总结 在本次花样流水灯试验中,使用循环程序、数组语句实现了实验要求,设计过程中遇到了很多的问题,但经过努力,最终设计出了合理的解决方案。通过此次实验,对多个led灯的控制能力进一步得到提升。 九、项目设计报告成绩 实验报告成绩: 指导教师签字: 年月日

EDA课程设计---流水灯设计

EDA课程设计流水灯设计

目录 一、摘要··3 二、流水灯设计目的··4 三、流水灯设计流程··4 四、流水灯设计程序··5 五、流水灯设计管脚分配··7 六、功能仿真图··8 七、原理图波形图··9 八、设计注意事项··10

九、课程设计总结··11 十、参考文献··12 十一、评分表··13 一、摘要 随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、

自动控制及计算机应用等领域的重要性突出。随着技术市场与人才市场对EDA 的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。因此学好EDA技术对我们有很大的益处。EDA是指以计算机为工具,在EDA软件平台上,根据设计社描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。 流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。 课程设计主要的目的是通过某一电路的综合设计,了解一般电路综合设计过程、设计要求、应完成的工作内容和具体的设计方法、通过设计也有助于复习、巩固以往的学习内容、达到灵活应用的目的。在设计完成后,还要将设计的电路进行安装、调试以加强学生的动手能力。在此过程中培养从事设计工作的整体观念。 课程设计应强调以能力培养为主,在独立完成设计及制作任务同时注意多方面能力的培养与提高,主要包括以下方面: ·独立工作能力和创造力。 ·综合运用专业及基础知识,解决实际工程技术问题的能力。 ·查阅图书资料、产品手册和各种工具书的能力。 ·写技术报告和编制技术资料的能力。 ·实际动手能力。

单片机流水灯课程设计

单片机流水灯课程 设计

基于AT89C51单片机的流水灯 1 引言 1.1 课题简介 单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 当前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:在智能仪器仪表上的应用,例如精密的测量设备;在工业控制中的应用,用单片机能够构成形式多样的控制系统、数据采集系统,例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算

机联网构成二级控制系统等;在家用电器中的应用可从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。单片机在医用设备领域中的应用,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等;在各种大型电器中的模块化应用,如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。 本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O引脚。系统以采用MCS-51系列单片机Intel8051为中心器件来设计LED流水灯系统,实现8个LED霓虹灯的左、右循环显示,并实现循环的速度可调。 1.2 设计目的 (1) 学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。 (2) 掌握汇编语言程序设计方法。 (3) 培养实践技能,提高分析和解决实际问题的能力。 1.3 设计任务及要求 (1) 彩灯用8个发光二极管代替。 (2) 电路具有控制彩灯点亮右移、左移、全亮及全灭等功能。

交通灯设计 verilog

数电课程设计 学生姓名: 专业:电子信息工程 指导教师: 完成日期: 2016-6-30

摘要 Verilog HDL作为一种规范的硬件描述语言,被广泛应用于电路的设计中。它的设计描述可被不同的工具所支持,可用不同器件来实现。利用Verilog HDL语言自顶向下的设计方法设计交通灯控制系统,使其实现道路交通的正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Quartus5.0完成综合、仿真。此程序通过下载到FPGA芯片后,可应用于实际的交通灯控制系统中。 关键词:Verilog HDL;硬件描述语言;状态;FPGA Abstract As a common language for the description of hardware, Verilog HDL is widely applied in circuit designing. The design description can be supportted by differenttools and implemented by different devices.In this paper, the process of design ing traffic light controller system by the Verilog HDL topdown design method is presented, which has made the road traffic work well, the design of t his system has shown the readability, portability and easily understanding of Verilog HDL as a hard description language Circuit synthesis and simulation are pe rformed by Quartus5.0. The program can be used in the truly traffic light controller system by downloading to the FPGA chip Keywords:Verilog HDL; hardware description language; state; FPGA

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接

图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致 (8) 参考文献 (8) 1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路 的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目 的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述

2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题 这次课程设计是通过STC89C52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。 3 系统分析 3.1 STC 89C52单片机引脚图及引脚功能介绍 本次设计的目的在于加深STC89C52单片机的理解,首先来简单认识一下,它的引脚如图3-1所示: 图3.1 STC89C52

流水灯课程设计(免费)..

数字电子技术课程设计报告 (彩灯控制器) 专 专业:电子信息工程 班级:7B1211 学号:123025 姓名:白旭飞 年月:2014-6-28

一、设计要求 1. 以8或10个指示灯作为显示器件,能自动的从左到右、从右到左自动的依次被点亮,如此周而复始,不断循环。 2.打开电源时控制器可自动清零,每个指示灯被点亮的时间相同约为0.5S~2S 范围内。 3.用计算机画出设计电路图,进行仿真分析验证其正确性。 4.写设计说明书一份(画总原理框图以及说明主要工作原理,单元电路的设计和元器件的选择,画出完整的电路图和元器件明细表,收获、体会及建议) 二、设计的作用,目的 1.作用 利用控制电路可使彩灯(例如霓虹灯)按一定的规律不断的改变状态,不仅可获得良好的观赏效果,且可以省电(与彩灯全亮相比)。 2.目的 用NE555芯片,74LS151芯片,74LS163芯片,74LS194,以及一些逻辑门芯片完成彩灯控制器。 三、设计的具体实现 1.系统概述 接通电源时,555占空比可调振荡器产生1s单位的脉冲,脉冲送到下一个模块74LS151计数器,目的实现模5计数器,达到每五秒生成一个脉冲输向下一个芯片74LS194移位寄存器以及计数器74LS163。进而彩灯在脉冲的作用下依次点亮,并实现循环,完成实验要求。 2.总体思路 先用555定时器用来生成1s标准单位cp脉冲,把脉冲给计数器74LS151,通过74LS151形成模5加法计数器,再将74LS151输出信号供给74LS194移位寄 存器输入端,Q 0,Q 1, Q 2 和Q 3 接彩灯然后连接几个逻辑门,把74LS194接成环形 计数器。就能实现基本电路要求。 3.方案设计 总体电路共分三大块。第一块实现时钟信号的产生;第二块实现灯亮灭情况的演示;第三块实现灯亮灭的控制及节拍控制。

verilog课程设计—交通灯

课程论文 论文题目基于DE2的交通灯设计完成时间 课程名称Verilog语言设计 任课老师 专业 年级

1.交通信号控制器设计要求与思路 1.1设计背景 FPGA是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其种类很多,内部结构也不同,但共同的特点是体积小、使用方便。本文介绍了用VerilogHDL语言设计交通灯控制器的方法,并在QuartusII系统对FPGA芯片进行编译下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积非常小。本文通过EDA设计,利用VerilogHDL语言模拟仿真交通灯控制电路。 1.2设计要求 根据交通灯控制器要实现的功能,考虑用两个并行执行的always语句来分别控制A方向和B方向的3盏灯。这两个always语句使用同一个时钟信号,以进行同步,也就是说,两个进程的敏感信号是同一个。每个always语句控制一个方向的3种灯按如下顺序点亮,并往复循环:绿灯----黄灯----红灯,每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置数法设计,这样只需改变预置数据,就能改变计数器的模,因此每个方向只要一个计数器进行预置数就可以。为便于显示灯亮的时间,计数器的输出均采用BCD码,显示由4个数码管来完成,A方向和B方向各用两个数码管。设定A方向红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s,B方向的红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s。假如要改变这些时间,只需要改变计数器的预置数即可。 1.3设计思路 两个方向各种灯亮的时间能够进行设置和修改,此外,假设B方向是主干道,车流量大,因此B方向通行的时间应该比A方向长。交通灯控制器的状态转换表见下表。表中,1表示灯亮,0表示灯不亮。A方向和B方向的红黄绿分别用R1、Y1、G1、R2、Y2、G2来表示。

微机原理课程设计流水灯控制系统.doc

微机原理课程设计 流水灯控制系统 姓名 :XX 学院:物理电气信息学院 班级: 2010 电子 姓名 :12010245

流水灯控制系统 一、设计内容: 本课程设计选用8086 对 8255A的 A口控制来实现模拟流水灯功能的 实现。编写相关程序,通过proteus仿真软件来实现我名字“安亮” 两个字的闪烁,“安”字接 8255 的 A 口的 P0,“亮”字接 A 口的 P1。先让“安”字和“亮”字同时点亮,再让两个字同时暗,接着让“安”字点亮,再让“亮”字点亮,然后让“安”字和“亮”字同时亮暗闪 烁八次,再跳到开始,以此循环。 二、设计目的: 1、了解流水灯的基本工作原理 2、熟悉 8255A 并行接口的各种工作方式和应用 3、利用 8255A 接口,LED 发光二极管,设计一个流水灯模拟系统,让我的名字“安亮”两个字按一定规律点亮。 三、实验原理 在 8086 系统中,采用 16 位数据总线,进行数据传输时,CPU

总是将低 8 位数据线上的数据送往偶地址端口,而过高8位数据线上 的数据送往奇地址端口反过来,从偶地址端口取得的数据总是通过低 8 位数据线传送到CPU,从奇地址端口取得的数据总是通过高8 位数据线送到 CPU。在 8086 系统中,将 8255A的 A1端和地址总线的 A29255A 在对 CPU并且,相连, A1 端和地址总线的 A0 的 8255A 而将相连, 的端口进行访问时,将地址总线的 A0 位总是设置为 0。本课程设计通 过对 8255A 的 A 口控制来实现模拟流水灯功能的实现。“安”接 A 口 的 P0,“亮”接 A口的 P1,实现两个字按一定规律的一个闪烁。 8255 的内部结构 255A 内部结构由以下四部分组成:数据端口A、B、C;A组控制和 B 组控制;读 / 写控制逻辑电路;数据总线缓冲器。 端口 A:包括一个 8 位的数据输出锁存 / 缓冲器和一个 8 位的数据 输入锁存器,可作为数据输入或输出端口,并工作于三种方式中的任何一种。

花样流水灯课程设计.

课程论文 花样流水灯的设计 课程单片机技术及系统设计 学生姓名 学号 所在学院 所在班级 任课教师 提交时间2014年5月 25日至2014年5月30日

目录 一.前言 1.1 设计概述................................................................................ (2) 1.2设计主要功能 (2) 二.设计过程 2.1原理图中所使用的元器件功能 (3) 2.2程序在功能实现过程中的作用 (5) 三体会 3.1课程设计体会 (5) 四. 文献 4.1参考文献 (6) 五. 附录 5.1流水灯电路图 (7) 5.2流水灯程序 (7)

摘要:当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。 关键词:单片机控制系统流水灯 一.前言 1.1设计概述 整个系统工作由软件程序控制运行,根据需要,可以上电后系统经过初始化,进入用户设定模式状态。于AT89C51单片机的彩灯控制方案,实现对LED灯的控制。本方案以AT89C52单片机作为主控核心,与驱动等模块组成核心主控制模块。在主控模块上设有晶振电路和8个LED灯,根据需要编写若干种亮灯模式,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号 1.2设计主要功能 通过发光二极管显示不同的花样,并且可以通过按键来控制流水灯的速度通过学习单片机工作原理和各种工作方式及各管脚的功能,想通过P3 口的俩管脚P3.2和P3.3第二功能,即外部中断来使CPU 响应,达到控制流水灯的目的

交通灯设计-verilog.

. 基于Verilog语言交通灯设计报告 院系:工学院自动化系 年级:14级 班级:10班 姓名:周博 学号:14032291

这学期我学习了EDA技术及其创新实践这门课程,通过自己学习的内容和自己查找的一些资料用Verilog语言编写交通灯的程序,并且完成了仿真。Verilog HDL是工业和学术界的硬件设计者所使用的两种主要的HDL之一,另一种是VHDL。现在它们都已成为IEEE标准。两者各有特点,但Verilog HDL拥有更悠久的历史、更广泛的设计群体,资源也远比VHDL丰富,且非常容易学习掌握。一、设计背景和意义 交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。 二、设计任务 (1)设计一个交通红绿灯。要求分主干道和支干道,每条道上安装红(主:red1,支:red2)绿(主:green1,支:green2)黄(主:yellow1,支:yellow2)三种颜色灯,由四种状态自动循环构成; (2)在交通灯处在不同的状态时,设计一个计时器以倒计时方式显示计时,主干道上绿灯亮30S,支干道上绿灯亮20S。每个干道上,在绿灯转为红灯时,要

求黄灯先亮5S。 在完成基本要求的基础上,可进一步增加功能、提高性能,如绿灯亮的时间可调。 三、设计方案 1.工作原理: 城市十字交叉路口红绿灯控制系统主要负责控制主干道走向和从干道走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计: S0:当主干道走向的绿灯亮时,从干道走向的红灯亮,并保持30s S1:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5s S2:当主干道走向的红灯亮时,从干道走向的绿灯亮,并保持20s S3:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5s 在S3结束后又回到(1)状态,并周期重复进行。 状态图如下: 30秒 5秒5秒

电子课程设计—电子流水灯设计报告

《电子技术》 课程设计报告 设计题目:电子流水灯电路设计与制作

电子流水灯电路设计与制作报告 一、设计目的 1.能够全面的巩固和应用“电子技术”课程中所学的基础理论和基本方法,并初步掌握小型数字系统设计的基本方法。 2.能够合理、灵活地应用各种标准集成电路(SSI、MSI、LSI等)器件实现规定的数字系统。 3.培养独立思考、独立准备资料、独立设计规定功能的数字系统能力。 4.培养独立进行实验,包括电路布局、安装、调试和排除故障的能力。 5.培养书写综合设计实验报告的能力。 二、设计任务 用中小规模集成电路设计并制作一个能实现8个彩灯正序或反序按1秒依次点亮的电路: 1.由晶振电路或555电路产生1HZ标准秒脉冲信号,作为电路的CP。 2.可逆的顺序脉冲发生电路。 3.显示驱动电路 4.彩灯。 5.电源。 三、设计方案

2、单元电路设计 ①秒脉冲发生电路 由555电路实现秒脉冲,f=1HZ。 ②可逆的顺序脉冲发生电路 可用74LS1191实现,5号引脚接拨动开关,拨动开关的2个端分别接高电平(接5V电源)和低电平(接地),当开关拨到高电平时,进行减计数,当开关拨到低电平时,进行加计数,这样来实现可逆顺序脉冲发生电路 ③显示驱动电路 可由74ls138实现译码,来控制发光2极管的发光情况 74LS138真值表

R3-R10电阻起到保护发光二极管的作用。 ④电源电路 将12V电压整流成5V。 3、整机电路图

555集成电路各引脚名称:1地GND,2触发,3输出,4复位,5控制电压,6门限(阈值)7放电,8电源电压VCC。 74ls191各引脚名称:1-3并行数据输入端,2-3输出端,6-7输出端,5加减计数方式控制端,11电源,4地GND,14秒脉冲输入端,12计数控制端,13时钟输出端 74ls138各引脚名称:1-3译码地址输入端,7-15译码输出端,16电源,8地GND,4-5选通端(低电平有效),6选通端(高电平有效) 四、主要元器件介绍 1.通用实验底板 2.直流稳压电源(5V) 3.集成电路:555、74LS191、74LS138 4.电容:47uF/16V,0.01uF/16V 5.电阻:10k,1k 6.数显:发光二极管 7.开关:波动开关 五、焊接与调试 1、元器件布局图 2、焊接步骤

花样流水灯设计

单片机课程设计 2014年 6月 15日 课 程 单片机课程设计 题 目 花样流水灯 院 系 电气工程及其自动化系 专业班级 1112班 学生姓名 温亿锋 学生学号 201111631227 指导教师 张瑛

一丶任务 设计一款以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路。 二丶设计要求 通过发光二极管显示不同的花样(至少有六种花样),并且可以通过按键来控制流水灯的速度。 三丶设计方案 本方案主要是通过对基于单片机的多控制、多闪烁方式的LED流水灯循环系统的设计,来达到本设计的要求。其硬件构成框图如下图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED 发光二极管和5V直流电源组成。 单片机流水灯循环控制系统硬件框图 此设计方案中单片机的P1口接5路按键控制电路,实现流水灯花型的切换功能;单片机的P3.7引脚接上一个按钮开关以实现对流水灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的P2口接八路LED发光二极管组成流水灯电路,显示流水灯循环情况。 四丶系统硬件设计 4.1 直流稳压电源电路

对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。电子设备除用电池供电外,还采用市电(交流电网)供电。通过变压、整流、滤波和稳压后,得到稳定的直流电。直流稳压电源是电子设备的重要组成部分。本项目直流稳压电源为+5V。 直流稳压电源的制作一般有3种制作形式,分别是分立元件构成的稳压电源、线性集成稳压电源和开关稳压电源。下图为稳压电源采用的是三端集成稳压器7805构成的正5V直流电源。 三端固定式集成稳压电源电路图 AT89C51单片机的工作电压范围:4.0V---5.5V,所以通常给单片机外接5V 直流电源。此处用3节1.5V的干电池供电。 4.2 单片机最小系统 要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成,单片机最小系统如图所示。 时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz 石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。 复位电路:确定单片机工作的起始状态,完成单片机的启动过程。单片机系统的复位方式有上电自动复位和手动按键复位。本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。

流水灯课程设计

河南理工大学 电子技术课程设计报告 心 形 流 水 灯 姓名:明* 学号:3110080020** 专业班级:电气10-7班 指导老师:李端 所在学院:电气工程与自动化学院、

目录 摘要 (3) 一、设计指标(要求) (4) 二、系统框图 (4) 三、各单元电路设计、参数计算和元器件选择 3.1 脉冲产生电路 (5) 3.2 复位电路 (8) 3.3 分频电路 (8) 3.4 移位控制电路 (10) 3.5 显示部分 (11) 四、电路图及工作原理 (12) 五、元器件清单 (12) 六、实际PCB图或布线 (13) 七、设计总结 7.1 电路的特点和方案的优缺点 (13) 7.2 心得体会 (14) 八、参考文献 (15)

摘要 随着时代的进步,人们审美方式的提高,流水灯在都市生活中扮演着愈加不可或缺的角色。酒店,婚庆,酒吧,KTV,广场,商场,招牌等场所的流星雨灯条、流水瀑布灯、月花灯等,给人以繁星闪耀,流水似瀑的感觉。而彩色LED闹钟,手机外壳的跑马灯的应用点缀了我们的日常生活。 流水灯的控制方法可通过多种方法实现,但相对现代可编程控制器而言,利用移位寄存器实现最为便利。通常用左移寄存器实现灯的单方向移动,通过双向移位寄存器实现灯的双向移动。 此次课程设计,是通过制作四路流水灯来实现18个LED心形灯的控制。 关键词:双向移位寄存器,NE555脉冲电路,LED灯。

一、 设计指标 (1)输出为4路(18个)LED 灯; (2)要求能实现左移右移功能,左右移自动切换; (3)移动速度可调节 (4)每个循环左移和右移的步数和变化规律自定。 二、系统框图

通过Verilog实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理

假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。 北 南 西东 图1. 六个彩色LED 可以表示一组交通信号灯 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0

图3. 交通灯的状态转移图 顶层模块 时钟分频模块状态机跳转模块 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件)

流水灯控制实验报告及程序

实验三流水灯控制实验 姓名专业通信工程学号成绩 一、实验目的 1.掌握Keil C51 软件与protues软件联合仿真调试的方法; 2.掌握如何使用程序与查表等方法实现流水效果; 3.掌握按键去抖原理及处理方法。 二、实验仪器与设备 1. 微机1台 2. Keil C51集成开发环境 3. Proteus仿真软件 三、实验内容 1.用Proteus设计一流水灯控制电路。利用P1口控制8个发光二级管L1—L8。P3.3口接一按 键K1。参考电路如下图所示。其中74LS240为八反响三态缓冲器/线驱动器。 2.用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用KEY表示按键的 次数,则其对应的流水效果如下: ① KEY=0: L1-L8全亮; ② KEY=1: L1-L8先全灭,然后自右向左单管点亮,如此循环; ③ KEY=2: L1-L8先全灭,然后自右向左依次点亮,如此循环; ④ KEY=3: L1-L8先全亮,然后自左向右依次熄灭,如此循环; ⑤ KEY=4: L1-L8先全灭,然后整体闪烁,如此循环; ⑥ KEY=5:自行设计效果。 以上移位及闪烁时间间隔均设置为0.3秒,按动5次按键后,再按键时,流水效果从头开始循环。 四、实验原理 1.按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号 波形如下图所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5~10ms。按键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅做一次处理,必须去除按键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。常用软件方法去抖动,即检测到按键闭合后执行一个5~10ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键释放后,也要给5~10ms的延时,待后延抖动消失后,才能转入该键的处理程序。 2.74LS240:八反相三态缓冲器/线驱动器 引脚排列图:

Proteus花样流水灯课程设计

Proteus花样流水灯课程设计

课程论文 题目:基于51单片机LED流水灯设计 课程名称: 学生姓名: 学生学号: 系别: 专业: 年级: 任课教师: 电气信息工程学院制 1月 基于51单片机的LED流水灯设计

1 单片机AT89C51芯片简介 MCS-51兼容4K字节,可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:。全静态工作:0Hz—24Hz,三级程序存储器锁定。128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源可编程串行通道,低功耗的闲置和掉电模式,片内震荡器和时钟电路。 图1 AT89C51芯片

1.1电源引脚 Vcc(40脚):典型值+5V。 Vss(20脚):接低电平。 1.2外部晶振 XTAL1、XTAL2分别与晶振两端相连接。 1.3输入输出口引脚 P0口:I/O双向口。作输入口时,应先软件置“1”. P0口:是一个8位漏极开路输出型双向I/O端口。作为输出端口时,每位能以吸收电流的方式驱动8 个TTL输入,对端口写1时,又可作高阻抗输入端用。在访问外部程序或数据存储器时,它是时分多路转换的地址(低8位)/数据总线,在访问期间将激活内部的上拉电阻。 1.4控制引脚 RST、ALE/-PROG、-PSEN、-EA/Vpp组成了MSC-51的控制总线。 RST (9脚):复位信号输入端(高电平有效)。ALE/-PROG(30脚):地址锁存信号输出端.第一功能:编程脉冲输入。-PSEN(29脚):外部程序存储器读选通信号。-EA/Vpp(31脚):外部程序存储器使能端。第二功能:编程电压输入端(+21V)。 2硬件电路 2.1晶振电路 单片机晶振的作用是为系统提供基本的时钟信号。一般一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使

流水灯课程设计

基于单片机的流水灯设计 学院: 专业: 指导老师: 姓名: 班级: 学号: 年月日

摘要:当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。 This age is a new technology emerge in endlessly era, in the electronic field especially automation intelligent control field, the traditional schism components or digital logic circuit, is composed of control system with unprecedented speed was replaced by microcontroller intelligent control system. SCM has small, strong function, low cost, etc, it can be said that wide application, intelligent control and automatic control core is the microcontroller. 关键词:LED 单片机控制系统流水灯 目录 1.前言 1.1 设计概述 (2) 1.2 设计主要功能 (2) 2. 硬件组成 2.1 80C51单片计算机的组成原理 (3) 2.组成框图及内部总体结构 (3) 2.寄存器和存储器………………………………………………………

verilog课程设计—交通灯1

课程设计 课程名称__EDA技术综合设计与实践__ 题目名称交通灯控制系统 学生学院信息工程学院 专业班级通信工程08(4) 学号 3108002925 学生姓名高高 指导教师李学易 2011 年12 月26 日

基于FPGA 的交通灯控制器的设计 摘要:Verilog 是广泛应用的硬件描述语言,可以用在硬件设计流程的建模、综合和模拟等多个阶段。随着硬件设计规模的不断扩大,应用硬件描述语言进行描述的CPLD 结构,成为设计专用集成电路和其他集成电路的主流。现代城市在日常运行控制中,越来越多的使用红绿灯对交通进行指挥和管理。而一套完整的交通灯控制系统通常要实现自动控制和手动控制去实现其红绿灯的转换。 基于FPGA 设计的交通灯控制系统电路简单、可靠性好。本设计利用Verilog HDL 语言、采用层次化混合输入方式,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。在QUARTUSⅡ下对系统进行了综合与仿真。仿真结果表明系统可实现十字路口红绿灯及左转弯控制和倒计时显示,并能够自动控制交通灯转变。通过应用Verilog HDL 对交通灯控制器的设计,达到对Verilog HDL 的理解 关键词:FPGA;交通灯自动控制;V erilog HDL;Quartus Ⅱ 1.交通信号控制器设计要求与思路 1.1设计要求 在交通灯系统中(图1),路口1、2、3、4均需要红、黄、绿、左转四盏灯(用RYGL分别表示) ,并且每个路口都需要一个倒数的计时器,假设绿灯每次维持的时间是40 s ,黄灯为5 s ,左转灯10s,红灯60s,黄灯亮时以一定的频率闪动。交通灯系统大多是自动控制来指挥交通的,但有时需要由交警手动控制红绿灯,所以要求设 计的该交通信号系统需要具有该功能。 实现设计目标如下: (1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿交通信号灯,通过电路对十字路口的两组交通灯的状态实现自动循环控制; (2)实现东西车道和南北车道上的车辆交替运行,绿灯每次维持的时间是40 s ,黄灯为5 s ,左转灯10s,红灯60s; (3)要求黄灯亮5 秒后,红灯才能转为绿灯,黄灯亮时以一定的频率闪动; (4)东西车道和南北车道每次通行的时间不同且可调; 图1 交通灯系统示意图

电子科技大学 数字逻辑课程设计——流水灯的实现

数字逻辑课程设计 ——流水灯的设计 1问题概述: 设计一个可以循环移动的流水灯,灯总数为8盏,具体要求如下: 1、5亮,其余灭,右移三次后全灭 4、8亮,其余灭,左移三次后全灭 4、5亮,其余灭,各向两边移三次后全灭 1、8亮,其余灭,各向中间移三次后全灭 所要求的彩灯电路在某电路板上完成,该电路板能够提供48MHz标准时钟信号,附带有8个共阳的LED管可作为彩灯使用。 2问题分析 本装置可以看作一个具有20个状态的无输入、8个输出的Moore型时钟同步状态机,每一个状态对应依次出现的每一种亮灯情况,用5位状态编码表示。这里构造一个模20的计数器来循环产生这20种状态。同时对于输入的48MHz的标准时钟信号,需要将其转化为1HZ的信号,此处同样用计数器来实现分频功能。8个输出分别控制LED的发光情况。这里使用5-32的译码器实现输出函数的构造。电路框图如下: 这里使用一个5位的状态编码Q4Q3Q2Q1Q0,表示20个状态。8位的输出函数F7F6F5F4F3F2F1F0分别表示由左至右每一个灯的通断情况。由于本题中LED灯采用共阳极连接方式,所以当Fn为低电平时,对应的LED灯发光。 本电路状态图如下:

本电路的转移/输出表如下: 现针对每一部分设计具体电路 3设计方案 3.11/48MHz分频电路 对于48MHz的信号,一秒钟内有4.8*10^7个周期,而所需1Hz信号,每秒只有一个周期。使输入信号每经过2.4*10^7个周期,输出信号翻转一次方向,便可获得所需的1Hz信号。可以构造一个模4.8*10^7的计数器用于计数,并使计数器输出的最高位在一秒之内恰好变化一次,且占空比为50%,故采用7片74x163进行级联。计数范围为:0110100100011100101000000000-1001011011100011010111111111。这样恰好可以保证最高

基于VerilogHDL的交通灯控制器设计

目录 第一章设计原理 (1) 1.1设计要求 (1) 1.2设计思路和原理 (1) 1.3实现方法 (1) 第二章Verilog 程序设计 (2) 2.1整体设计 (2) 2.2 具体设计 (3) 第三章仿真 (7) 3.1 波形仿真 (7) 第四章设计总结 (9) 4.1 总结 (9) 4.2参考资料 (9) 程序清单 (10)

交通灯控制器设计 第一章 设计原理 1.1设计要求 设计一个交通控制器,用LED 显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数 主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s ,支干道每次放行25s 。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s 。能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED 灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。 1.2设计思路和原理 本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续25S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。循环往复的直行这个过程。其过程如下图所示: 0s 30s 25s 主干道方向 支干道方向 图1.交通灯点亮时间控制说明 1.3实现方法 本次采用文本编辑法,即利用Verilog 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

相关文档