如何以10进位显示8位数的七段显示器?

2011-05-11 06:16:36来源: 互联网 关键字:显示器  Verilog

    七段显示器在DE2可当成Verilog的控制台,做为16进位的输出结果。

介绍
    使用环境:Quartus II 7.2 SP3 + DE2 (旋风II EP2C35F627C6)

    简单的使用开关当成2进位输入,并用8位数的七段显示器显示10进位的结果。

switch_seg10.v/Verilog


1/*
2 (c) OOMusou 2008年
3
4文件名    : switch_seg10.v
5编译器    : Quartus II 7.2 SP3
6描述: 演示如何使用8位7段显示小数
7发行     : 07/20/2008 1.0
8 *
9模块switch_seg10 (
输入的10 [17 :0] SW,
输出的11 [6 :0] HEX0,
输出的12 [6 :0] HEX1,
输出的13 [6 :0] HEX2,
输出的14 [6 :0] HEX3,
输出的15 [6 :0] HEX4,
输出的16 [6 :0] HEX5,
输出的17 [6 :0] HEX6,
输出的18 [6 :0] HEX7
19);
20
21 seg7_lut_8 u0 (
22 .i_dig (SW),
23 .o_seg0 (HEX0),
24 .o_seg1 (HEX1),
25 .o_seg2 (HEX2),
26 .o_seg3 (HEX3),
27 .o_seg4 (HEX4),
28 .o_seg5 (HEX5),
29 .o_seg6 (HEX6),
30 .o_seg7 (HEX7)
31);
32
33 endmodule

    这是顶面模块,负责建立例化seg7_lut8。

switch_lut.v/Verilog
1/*
2 (c) OOMusou 2008年
3
4文件名    : switch_lut.v
5编译器    : Quartus II 7.2 SP3
6描述: 演示如何使用8位7段显示小数
7发行     : 07/20/2008 1.0
8 *
9模块seg7_lut (
输入的10      [3 :0] i_dig,
11输出的reg [6 :0] o_seg
12);
13
14 always@ (i_dig)开始
15案件(i_dig)
16     4 ' h1 : o_seg = 7 ' b111_1001;  // ---t----
17     4 ' h2 : o_seg = 7 ' b010_0100;  // |      |
18     4 ' h3 : o_seg = 7 ' b011_0000;  // Lt    rt
19     4 ' h4 : o_seg = 7 ' b001_1001;  // |      |
20     4 ' h5 : o_seg = 7 ' b001_0010;  // ---m----
21     4 ' h6 : o_seg = 7 ' b000_0010;  // |      |
22     4 ' h7 : o_seg = 7 ' b111_1000;  // lb    铷
23     4 ' h8 : o_seg = 7 ' b000_0000;  // |      |
24     4 ' h9 : o_seg = 7 ' b001_1000;  // ---b----
25     4 ' ha : o_seg = 7 ' b000_1000;
26     4 ' hb : o_seg = 7 ' b000_0011;
27     4 ' hc : o_seg = 7 ' b100_0110;
28     4 ' hd : o_seg = 7 ' b010_0001;
29     4 '他: o_seg = 7 ' b000_0110;
30     4 ' hf : o_seg = 7 ' b000_1110;
31     4 ' h0 : o_seg = 7 ' b100_0000;
32 endcase
33末端
34
35 endmodule
36
 

这是一个七段显示器的查寻表。

switch_lut_8.v

1/*
2 (c) OOMusou 2008年
3
4文件名    : switch_lut_8.v
5编译器    : Quartus II 7.2 SP3
6描述: 演示如何使用8位7段显示小数
7发行     : 07/20/2008 1.0
8 *
9模块seg7_lut_8 (
输出的10 [6 :0] o_seg0,
输出的11 [6 :0] o_seg1,
输出的12 [6 :0] o_seg2,
输出的13 [6 :0] o_seg3,
输出的14 [6 :0] o_seg4,
输出的15 [6 :0] o_seg5,
输出的16 [6 :0] o_seg6,
输出的17 [6 :0] o_seg7,
输入的18 [31 :0] i_dig
19);
20
21 seg7_lut u0 (
22 .i_dig (i_dig%10),
23 .o_seg (o_seg0),
24);
25
26 seg7_lut u1 (
27 .i_dig ((i_dig或10)%10),
28 .o_seg (o_seg1)
29);
30
31 seg7_lut u2 (
32 .i_dig ((i_dig/100) %10),
33 .o_seg (o_seg2)
34);
35
36 seg7_lut u3 (
37 .i_dig ((i_dig/1000) %10),
38 .o_seg (o_seg3)
39);
40
41 seg7_lut u4 (
42 .i_dig ((i_dig/10000) %10),
43 .o_seg (o_seg4)
44);
45
46 seg7_lut u5 (
47 .i_dig ((i_dig/100000) %10),
48 .o_seg (o_seg5)
49);
50
51 seg7_lut u6 (
52 .i_dig ((i_dig/1000000) %10),
53 .o_seg (o_seg6)
54);
55
56 seg7_lut u7 (
57 .i_dig ((i_dig/10000000) %10),
58 .o_seg (o_seg7)
59);
60
61 endmodule

    与(原创)如何以2进位显示8位数的七段显示器? (SOC) (Verilog) (DE2)与(原创)如何以16进位显示8位数的七段显示器? (SOC) (Verilog) (DE2)
    相比较,关键的差异就在switch_lut_8.v。由于开关输入的是2进位,显示2进位就是将每个位送进一个七段显示器,显示16进位就是每4bit送进一个七段显示器,但10进位怎么办呢?

    如开关输入的是10进位的378,若要取的十位的7,将378/10 = 37,再将37% 10 = 7,这样就能取出10位的7了,其它位数同理。

关键字:显示器  Verilog

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0511/article_2114.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于FPGA数据流控制动态可重构的实现
下一篇:用DSP实现抖动(Jitter)测量的方法

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
显示器
Verilog

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved