16x16点阵显示实验报告_第1页
16x16点阵显示实验报告_第2页
16x16点阵显示实验报告_第3页
16x16点阵显示实验报告_第4页
16x16点阵显示实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上16*16点阵显示实验报告1、 实验目的(1)学习点阵显示字符的基本原理。(2)掌握用数控分频控制速度,实现点阵扫描的基本方式。(3)会使用Quartus II软件中的Verilog HDL语言实现点真的行列循环显示。二、实验设备与器件 Quartus II 软件、EP2C8Q208C8实验箱3、 实验方案设计1. 实验可实现的功能可通过编写Verilog HDL语言,实现点阵的行列交替扫描。先是行扫描,扫描间隔为1s,16行都扫描完之后开始列扫描,扫描间隔仍然为1s,16列扫描完之后,行继续扫描,依次循环。2. 点阵基本知识16*16扫描LED点阵只要其对应的X、Y

2、轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。LED点阵每个点都有一个红色的发光二极管。点阵内的二极管间的连接都是行共阳,列共阴。本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。3. 系统工作原理本系统用了两个模块,其中dianzhen.v是顶层文件,而hangsaomiao.v和liesaomiao.v是两个子模块,总体的系统功能框图如图3.3.1所示。图3.3.1 系统功能图示通过流程图可以看到,体统是先将

3、试验箱的50MHz时钟信号分频为1s,因为要实现16*16的点阵扫描,所以用一个16s的计时器计时,每经过16s行扫描与列扫描的状态转换一次,通过点阵显示出来。4. 模块化程序设计(1)点阵显示顶层程序设计module dianzhen (clk50mhz,row,sel0,sel1,sel2,sel3,line);input clk50mhz; /实验箱提供50MHz 时钟信号output sel0,sel1,sel2,sel3; /设置引脚选通点阵output reg 15:0 row; /行output reg 3:0 line; /列wire 15:0 row1,row2;wire 3

4、:0 line1,line2;reg 24:0 cnt=0; /1Hz计数子reg 4:0 cnt1=0; /16s计数子 assign sel0=1'b0;assign sel1=1'b1;assign sel2=1'b0;assign sel3=1'b0;always(posedge clk50mhz) beginif(cnt>=25'd)begincnt<=25'b0; /1Hz计时器cnt1<=cnt1+1; /16s计时器endelsecnt<=cnt+1;endhangsaomiao u1(.clk50mhz(

5、clk50mhz),.row(row1),.line(line1);liesaomiao u2(.clk50mhz(clk50mhz),.row(row2),.line(line2);always(*)if(cnt1<=5'd15)beginrow<=row1; /行扫描line<=line1;endelsebeginrow<=row2; /列扫描line<=line2;endendmodule(2) 行扫描模块hangsaomiao.v程序设计 module hangsaomiao(clk50mhz,line,row);input clk50mhz; /

6、实验箱输入50MHz时钟信号output reg 15:0 row; /列output reg 3:0 line; /行reg 24:0 cnt1,cnt2; /计数子reg clkrow,clkline; /行脉冲、列脉冲always(posedge clk50mhz) beginif(cnt1>=25'd)begincnt1<=25'b0;clkrow=clkrow; /1s列脉冲endelsecnt1<=cnt1+1;endalways(posedge clk50mhz) beginif(cnt2>=25'd500)begincnt2<

7、;=25'b0;clkline=clkline; /50KHz行脉冲endelsecnt2<=cnt2+1;endalways(posedge clkline)begincase(line)4'd0:line<=4'd1; /高速行扫描4'd1:line<=4'd2;4'd2:line<=4'd3;4'd3:line<=4'd4;4'd4:line<=4'd5;4'd5:line<=4'd6;4'd6:line<=4'd7;4&

8、#39;d7:line<=4'd8;4'd8:line<=4'd9;4'd9:line<=4'd10;4'd10:line<=4'd11;4'd11:line<=4'd12;4'd12:line<=4'd13;4'd13:line<=4'd14;4'd14:line<=4'd15;4'd15:line<=4'd0;default:line<=4'd0;endcaseendalways(pose

9、dge clkrow) /时间间隔为1s的列扫描begincase(row)16'b00001: row<=16'b00010;16'b00010: row<=16'b00100;16'b00100: row<=16'b01000;16'b01000: row<=16'b10000;16'b10000: row<=16'b00000;16'b00000: row<=16'b00000;16'b00000: row<=16'b00000;16&

10、#39;b00000: row<=16'b00000;16'b00000: row<=16'b00000;16'b00000: row<=16'b00000;16'b00000: row<=16'b00000;16'b00000: row<=16'b00000;16'b00000: row<=16'b00000;16'b00000: row<=16'b00000;16'b00000: row<=16'b00000;16'

11、b00000: row<=16'b00001;default: row<=16'b00001;endcaseendendmodule(3) 列扫描模块liesaomiao.v程序设计module liesaomiao(clk50mhz,row,line);input clk50mhz; /实验箱输入50MHz时钟信号output reg 15:0 row; /行output reg 3:0 line; /列reg 24:0 cnt; /计数子reg clk; always(posedge clk50mhz) beginif(cnt>=25'd)begi

12、ncnt<=25'b0;clk=clk; /1sendelsecnt<=cnt+1;end always (posedge clk) /列扫描begincase(line) 4'h0:begin row=16'b11111;line<=4'h1; end4'h1:begin row=16'b11111;line<=4'h2; end4'h2:begin row=16'b11111;line<=4'h3; end4'h3:begin row=16'b11111;line&

13、lt;=4'h4; end4'h4:begin row=16'b11111;line<=4'h5; end4'h5:begin row=16'b11111;line<=4'h6; end4'h6:begin row=16'b11111;line<=4'h7; end4'h7:begin row=16'b11111;line<=4'h8; end4'h8:begin row=16'b11111;line<=4'h9; end4'h9

14、:begin row=16'b11111;line<=4'ha; end4'ha:begin row=16'b11111;line<=4'hb; end4'hb:begin row=16'b11111;line<=4'hc; end4'hc:begin row=16'b11111;line<=4'hd; end4'hd:begin row=16'b11111;line<=4'he; end4'he:begin row=16'b11111;

15、line<=4'hf; end4'hf:begin row=16'b11111;line<=4'h0; enddefault:line<=4'h0;endcaseendendmodule5.下载电路及引脚分配设计 设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2、sel3四个使能端选通点阵,EP2C8Q208C8就会工作在给点阵下命令的状态,并用line和row分别作为点阵的行、列选通端,最终使得点阵正常工作,如图3.5.1所示。图3.5.1 输入输出端口电路输入、输出引脚分配设计如图3.5.2所示。图3

16、.5.2 引脚分配4、 实验仿真及结论1. 模块仿真(1) 列扫描仿真波形 列扫描仿真波形如图4.1.1所示。图4.1.1 列扫描仿真波形通过波形可以看到,仿真用1s的时钟信号触发,以列为单位的二极管以1s为时间间隔一次被选中,而以行为单位的二极管始终被选通。例如,列信号选通第一列时,所有行的二极管都是亮的,综合以上两个条件,得到的最终结果就是第一列的二极管都是亮的。(2) 行扫描仿真波形行扫描仿真波形如图4.1.2所示。图4.1.2 行扫描仿真波形通过波形看到,行信号随着列扫描脉冲从第1行到第16行依次循环选通,而列信号则随着列脉冲从第1列到第16列依次循环选通。程序中设置的行脉冲周期为20

17、µs,而列脉冲周期为1s,则被选通行的二极管全亮,并随着列信号的循环而移动。2. 实验结论本次设计实验实现了16*16点阵行和列的依次循环扫描,行、列内部扫描的时间间隔均为1s,行列之间的循环周期为16s。先开始行扫描,行扫描完成后列再开始扫描,依次循环显示在点阵上。仿真结果与实验现象均说明了,程序设计的功能和时序基本无误,整个系统功能已实现,实验目的基本达到。5、 实验总结与体会1.实验总结总体来说这次试验还是比较顺利的,我在上实验课时弄明白了点阵的工作原理,所以当时就把点阵列扫描的功能实现了。课后我又写出行扫描的程序,不过在实验箱上下载运行时发现了一些问题。现在我主要说一下遇到的问题以解决的方案。我把原程序下载到实验箱之后,看到的现象是一列二极管与一个二极管交替移动。我首先在顶层将列扫描屏蔽,只让行扫描运行,看到的现象是一个点沿着斜线循环移动,初步判定是行扫描的脉冲频率不够高,将其由50Hz改为50KHz之后再次下载就可以看到连续的线了。将行扫描屏蔽,单独下载列扫描,正视列扫描没有问题。再联合下载发现现象是行

温馨提示

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

评论

0/150

提交评论