当前位置: 首页 > 技术资料 > 用10进位显示8位数的七段显示器的方法

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

QooIC.com 新闻出处:电子市场 | 发布时间:2011/5/13 14:56:57

  七段显示器在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了,其它位数同理。