- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统及应用
----------数码动态显示模块设计
班级: 物联网1122
姓名: 龚春景
学号: 1132106232
实验目的
进一步熟悉Quartus11的软件作用及运用;
了解数码管动态显示电路的基本功能机作用
实验要求
查找四位动态显示数码管资料,掌握其显示工作的原理;
实时显示4位十进制数码管,采用实验板上的4位开关分四次输入,输入时要通过LED发光二极管显示输入次序;
设计中时钟输入采用验证电路板上的50MHz作为基准;
程序设计尽可能考虑模块化、参数化设计思想,并遵循基本的格式规范,适当添加注释及文档说明;
采用模块化设计方式,底层模块必须进行功能仿真;
编写设计总结报告。
设计思路
要实现把二进制转换成十进制,送给数码管显示,需要三个步骤实现:
(一)、编写一个二进制转换成十进制的程序并将程序例化;
(二)、编写一个数码管的译码程序来实现数码管显示并将程序例化;
(三)、整合前两步程序例化后的模块,用第一步来处理二进制到十进制的转换,用第二步来实现数码管高低4位的显示。
实验步骤
(一)、二进制转换成十进制
1.打开Quartus新建工程BtoD .qpf,新建Verilog HDL File,命名为BtoD .v,编写verilog程序并编译
2.新建仿真文件BtoD .vwf
3.功能仿真结果
4.把verilog程序实例化
点击Create Symbol Files For Current File将程序实现的原理图打包成元件留着后面调用,名为BtoD.bsf。
(二)、数码管的译码
1.关闭上一个工程BtoD.qpf,新建工程decode4_7.qpf,新建Verilog HDL File并命名为decode4_7.v,编写verilog程序并编译
2.新建仿真文件decode4_7.vwf
3.功能仿真结果
4.把verilog程序实例化
点击Create Symbol Files For Current File将程序实现的原理图打包成元件留着后面调用,名为decode4_7.bsf。
(三)、整合二进制转十进制和数码管译码两个子程序实现整个电路功能
1.关闭上一个工程decode4_7.qpf,新建工程BtoD_decode4_7_0.qpf,并新建Block Diagram/Schematic File名为BtoD_decode4_7_0.v
2.把前两个工程里生成的BtoD.bsf,BtoD.v,decode4_7.bsf和decode4_7.v四个文件复制到新工程文件夹BtoD_decode4_7下
3.将BtoD.v和decode4_7.v两个文件添加到工程,并把BtoD_decode4_7_0.bdf文件设为工程顶层文件
4.电路绘制原理图,连线并编译
5.新建仿真文件BtoD_decode4_7_0.vwf
6.功能仿真结果
7.实验仿真电路图:
8.实验仿真结果:
五、实验心得
扫描显示是通过把画面划分成很多很多帧来实现的。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。刷新频率越快,由于人眼的视觉停留,就会得到想要的结果。??
这就像是拍摄电影一样,在拍摄武打动作时,实际中两人的动作是很慢的,但播放时,人为的把速度放快,才得到了我们日常生活中喜欢的那种快动作效果。
通过本次的实验设计,掌握了动态数码管显示的基本原理,了解了动态数码管在Quartua II软件中如何实现动态数码扫描的控制,采用verilog语言进行设计,何从分发挥了其在数字系统设计中的优越性,描述要实现的逻辑关系而不是具体电路连接结构,大大简化了设计过程,使设计者从纷繁的器件选型和电路连接中解脱出来,把主要精力放在描述器件实现的逻辑功能上,因此,在Quartus II软件中,verilog语言比原理图的方法更适合做大型设计项目。
附录1.二进制转十进制程序module BtoD(y,en,a) ;
output [7:0] y ;
input en ;
input [3:0] a;
reg[7:0] y ;
always @ (en or a)
if(!en)
y = 8b1111_1111;
else
begin
if(a9)
y=a+6;
else
y=a;
end
endmodule
2.数码管译码程序
module decode4_7(decodeout,a);
output[6:0] decodeout;
input[3:0] a;
reg[6:0] decodeout;
always @(a)
begin
case(a)
文档评论(0)