打印

用10进位显示8位数的七段显示器的方法

[复制链接]
2279|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小云001|  楼主 | 2011-5-15 20:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
七段显示器在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了,其它位数同理。

相关帖子

沙发
davines| | 2011-5-15 21:31 | 只看该作者
哇哦,受教受教。

使用特权

评论回复
板凳
0中国芯0| | 2011-5-15 23:21 | 只看该作者
很好

使用特权

评论回复
地板
dianzirobot| | 2011-5-15 23:32 | 只看该作者
学习

使用特权

评论回复
5
AutoESL| | 2011-5-16 09:03 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:在工作中寻找快乐,然后快乐的工作着

0

主题

576

帖子

2

粉丝