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

2011-05-11 06:16:36来源: 互联网

    七段显示器在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
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
显示器
Verilog

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 

夏宇闻老师专栏

你问我答FPGA设计

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

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