十六进制7段数码显示译码器设计

696 阅读2分钟

数码管显示器,通过控制八个显示灯管来控制输出,通过高低电平,使输入二进制,输出十六进制。

实验原理

7段显示译码器是纯组合电路。通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码器,然而数字系统中的数据处理和运算都是二进制的,所以输出表达都是十进制的,所以输出表达都是十六进制的,为了满足十六进制数的译码显示,最方便的方法就是利用Verilog译码程序在FPGA/CPLD来实现。所以首先要设计一段程序(参考以下的真值表1).设输入的4位码为A[3:0],输出控制7段共阴数码管的7位数码管的7位数据为LED7S的7位分别接图的共阴数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数码管的7个段g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。这里没有考虑或者 表示小数点的发光管,如果要考虑,需要增加段h,然后将LED7S改为8位输出。

7段译码器真值表

输入码输出码代表数据
000001111110
00010001101
001010110112
001110011113
010011001104
010111011015
011011111016
011100001117
100011111118
100111011119
10101110111A
10111111100B
11000111001C
11011011110D
11101111001E
11111110001F
实物照片
代码
LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LEDCL7 IS

    PORT(A:IN STD_LOGIC.VECTOR(3 DOWNTO 0);

        L:OUT STD_LOGIC.VECTOR(6 DOWNTO 0));

END LEDCL7;

ARCHITECTURE ONE OF LEDCL7 IS

BEGIN

    PROCESS(A)

    BEGIN

        CASE A IS

            WHEN "0000"=>L<="01111111";

            WHEN "0001"=>L<="0000110";

            WHEN "0010"=>L<="1011011";

            WHEN "0011"=>L<="1001111";

            WHEN "0100"=>L<="1100110";

            WHEN "0101"=>L<="1101101";

            WHEN "0110"=>L<="1111101";

            WHEN "0111"=>L<="0000111";

            WHEN "1000"=>L<="1111111";

            WHEN "1001"=>L<="1101111";

            WHEN OTHERS=>NULL;

        END CASE;

        END PROCESS;

END ;