数码管显示器,通过控制八个显示灯管来控制输出,通过高低电平,使输入二进制,输出十六进制。
实验原理
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段译码器真值表
输入码 | 输出码 | 代表数据 |
---|---|---|
0000 | 0111111 | 0 |
0001 | 000110 | 1 |
0010 | 1011011 | 2 |
0011 | 1001111 | 3 |
0100 | 1100110 | 4 |
0101 | 1101101 | 5 |
0110 | 1111101 | 6 |
0111 | 0000111 | 7 |
1000 | 1111111 | 8 |
1001 | 1101111 | 9 |
1010 | 1110111 | A |
1011 | 1111100 | B |
1100 | 0111001 | C |
1101 | 1011110 | D |
1110 | 1111001 | E |
1111 | 1110001 | F |
实物照片 | ||
代码 |
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 ;