七段数码管的动态扫描显示实验.docx

上传人:b****2 文档编号:2320788 上传时间:2023-05-03 格式:DOCX 页数:9 大小:206.62KB
下载 相关 举报
七段数码管的动态扫描显示实验.docx_第1页
第1页 / 共9页
七段数码管的动态扫描显示实验.docx_第2页
第2页 / 共9页
七段数码管的动态扫描显示实验.docx_第3页
第3页 / 共9页
七段数码管的动态扫描显示实验.docx_第4页
第4页 / 共9页
七段数码管的动态扫描显示实验.docx_第5页
第5页 / 共9页
七段数码管的动态扫描显示实验.docx_第6页
第6页 / 共9页
七段数码管的动态扫描显示实验.docx_第7页
第7页 / 共9页
七段数码管的动态扫描显示实验.docx_第8页
第8页 / 共9页
七段数码管的动态扫描显示实验.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

七段数码管的动态扫描显示实验.docx

《七段数码管的动态扫描显示实验.docx》由会员分享,可在线阅读,更多相关《七段数码管的动态扫描显示实验.docx(9页珍藏版)》请在冰点文库上搜索。

七段数码管的动态扫描显示实验.docx

七段数码管的动态扫描显示实验

七段数码管的动态扫描显示实验

一、实验名称:

七段数码管的动态扫描显示实验

二、实验目的:

(1)进一步熟悉QuartusII软件进行FPGA设计的流程

(2)掌握利用宏功能模块进行常用的计数器,译码器的设计

(3)学习和了解动态扫描数码管的工作原理的程序设计方法

三、实验原理:

实验板上常用4位联体的共阳极7段数码管,其接口电路是把所有数码管的8个笔划段a-h同名端连在一起,而每一个数码管由一个独立的公共极COM端控制。

当向数码管发送字形码时,所有数码管都接收到相同的字形码时,但究竟是那个数码管亮,取决于COM端,这一端是由I/O控制的,所以就可以自行决定何时显示哪一位。

动态扫描即采用分时方法,轮流控制各个LED轮流点亮。

在轮流点亮扫描过程中,每一位显示器的点亮时间是极为短暂的,但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上每个显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

四、实验要求:

实现显示0000-9999的十进制计数器。

五、实验步骤

1.建立工程

建立名为leddisplay的工程,并建立顶层图。

2.设计技术时钟

设计一分频器,对50MHz分频输出到计数器,让计数器以较慢速度递增。

打开File..New,新建一个.v文件。

输入以下程序:

moduleint_div(clk,div_out);

inputclk;

outputregdiv_out;

reg[31:

0]clk_div;

parameterCLK_FREQ='D50_000_000;//系统时钟50MHz

parameterDCLK_FREQ='D10;//输出频率10/2Hz

always@(posedgeclk)

begin

if(clk_div<(CLK_FREQ/DCLK_FREQ))

clk_div<=clk_div+1;

else

begin

clk_div<=0;

div_out<=~div_out;

end

end

endmodule

输入完成后,将该文件设为顶层实体,该命令在Project->Setastop-levelEntity。

分析该设计文件:

执行工具栏处的“StartAnalysis&Synthesis命令按钮,开始分析综合,此步骤在这里用于检查设计错误。

分析成功后要生成一个分频器的元件符号,执行File->CreateSymbolfilesforcurrentfile,开始建立该文件的元件符号。

3.数码管扫描显示程序设计

modulesegmain(clk,reset_n,datain,seg_data,seg_com);

inputclk;

inputreset_n;

input[31:

0]datain;

output[7:

0]seg_data;

output[7:

0]seg_com;

reg[7:

0]seg_com;

reg[7:

0]seg_data;

reg[3:

0]bcd_led;

reg[36:

0]count;

integertemp;

always@(posedgeclk)

begin

if(!

reset_n)count<=0;

else

begin

count<=count+1;

temp=datain;

end

end

always@(count[14:

12]ordatain)

begin

case(count[14:

12])

3'b000:

begin

temp=temp%10;

bcd_led=temp[3:

0];

seg_com=8'b11111110;

end

3'b001:

begin

temp=temp%100/10;

bcd_led=temp[3:

0];

seg_com=8'b11111101;

end

3'b010:

begin

temp=temp%1000/100;

bcd_led=temp[3:

0];

seg_com=8'b11111011;

end

3'b011:

begin

temp=temp%10000/1000;

bcd_led=temp[3:

0];

seg_com=8'b11110111;

end

3'b100:

begin

temp=temp%100000/10000;

bcd_led=temp[3:

0];

seg_com=8'b11101111;

end

3'b101:

begin

temp=temp%1000000/100000;

bcd_led=temp[3:

0];

seg_com=8'b11011111;

end

3'b110:

begin

temp=temp%10000000/1000000;

bcd_led=temp[3:

0];

seg_com=8'b10111111;

end

3'b111:

begin

temp=temp%100000000/10000000;

bcd_led=temp[3:

0];

seg_com=8'b01111111;

end

endcase

end

always@(seg_comorbcd_led)

begin

case(bcd_led)

4'h0:

seg_data=8'hc0;

4'h1:

seg_data=8'hf9;

4'h2:

seg_data=8'ha4;

4'h3:

seg_data=8'hb0;

4'h4:

seg_data=8'h99;

4'h5:

seg_data=8'h92;

4'h6:

seg_data=8'h82;

4'h7:

seg_data=8'hf8;

4'h8:

seg_data=8'h80;

4'h9:

seg_data=8'h90;

4'ha:

seg_data=8'h88;

4'hb:

seg_data=8'h83;

4'hc:

seg_data=8'hc6;

4'hd:

seg_data=8'ha1;

4'he:

seg_data=8'h86;

4'hf:

seg_data=8'h8e;

default:

seg_data=8'hc0;

endcase

end

endmodule

输入完成后,将其设为顶层实体,检验后生成元件符号。

4.调用宏功能模块设计计数器

双击顶层图空白处,弹出symbol对话框,展开Libraries,找到lpm_counter.

按步骤一步步生成4位BCD码的计数器。

5.设计完整的顶层

返回顶层原理图,并注意重新将顶层原理图设为顶层实体。

双击顶层图空白的地方,弹出symbol对话框,展开Libraries栏的Project库,可看到上述步骤建立的一些元件符号。

按OK,在图纸上空白地方点击即可输入相应的元件,添加其它元件,完成下图连接:

6.设置芯片和管脚。

参照以下tclscript文件配置芯片管脚,并运行该tcl脚本。

#Setup.tcl

set_global_assignment-nameRESERVE_ALL_UNUSED_PINS"ASINPUTTRI-STATED"

set_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFF

set_location_assignmentPIN_149-toclk

set_location_assignmentPIN_90-toreset

#led

set_location_assignmentPIN_148-to78ledcom[0]

set_location_assignmentPIN_147-to78ledcom[1]

set_location_assignmentPIN_160-to78ledcom[2]

set_location_assignmentPIN_159-to78ledcom[3]

set_location_assignmentPIN_162-to78ledcom[4]

set_location_assignmentPIN_161-to78ledcom[5]

set_location_assignmentPIN_166-to78ledcom[6]

set_location_assignmentPIN_164-to78ledcom[7]

set_location_assignmentPIN_145-to78leddata[0]

set_location_assignmentPIN_143-to78leddata[1]

set_location_assignmentPIN_137-to78leddata[2]

set_location_assignmentPIN_139-to78leddata[3]

set_location_assignmentPIN_144-to78leddata[4]

set_location_assignmentPIN_146-to78leddata[5]

set_location_assignmentPIN_135-to78leddata[6]

set_location_assignmentPIN_142-to78leddata[7]

7.编译

执行菜单命令Project->Setastop-levelEntity,将顶层图设为当前顶层实体,然后编译。

8.下载

1)下载设置:

使用下载线下载配置文件到FPGA。

2)下载完毕后可看到实验现象:

数码管实现显示0000-9999的十进制计数器。

六、实验小结

(1)这是我们这学期近代电子学实验的第一次实验报告,在前几次的实验中,已经熟悉了QuartusII设计软件的基本功能、原理图输入和HDL输入方法、功能仿真、综合、配置与编程的设计过程,尤其是针对QuartusII的使用初步花了几节课的时间,毕竟这个软件对于我们来说是很陌生的。

(2)在前面的实验中,学习QuartusII的基础实验中,课本上和课件上的介绍是很详细的,每一个操作步骤都是有截图的,所以跟着步骤一步一步的,只要小心谨慎,是不会出现错误的。

(3)这次的实验是对前几次的实验的整合,在LED的按键控制的基础上进行的实验,在我做实验的工程中,查找错误是最麻烦的琐碎的,往往错误源于很小的失误,比如忘记建立顶层图、调用宏功能模块设计计数器时选错选项等等。

这些错误看似微不足道,但是检查起来异常麻烦,所以我们在做实验的时候一定要小心谨慎,切记三心二意。

(4)通过这一次的实验练习,希望为以后打下坚实的基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2