Anda di halaman 1dari 6

Visualizador de siete segmentos

Un visualizador de siete segmentos se compone de siete diodos emisores de luz (LEDs)


dispuestos en un patrn como se muestra en la figura 1, y algunos incluyen un octavo LED
para el punto decimal. Existen dos tipos de visualizadores de acuerdo a su conexin
elctrica: nodo comn y ctodo comn. Desde el punto de vista de programacin (o del
diseo de sistemas digitales), es necesario saber el tipo de visualizador para las condiciones
de activacin:

En nodo comn, un 0 se utiliza para encendido y un 1 para apagado (lgica


negativa).

Caso contrario, ctodo comn utiliza un uno para encender los LEDs y un cero para
apagarlos (lgica positiva).

Figura 1: Visualizador de siete segmentos.

Caracteres
Al tener 7 LEDs se pueden generar un total de 128 combinaciones, aunque no todas ellas
conforman caracteres. En esta entrada se hace uso de la tabla de smbolos utilizada por
(Palacios, Remiro, y Lpez, 2008) y se codifican los siguientes caracteres: 10 digitos (del 0
al 9), 26 letras (A a la Z), y los caracteres _, -, y .. Para representar estos 37 smbolos se
necesitan 6 bits (cinco bits pueden representar hasta 32 valores solamente). A este proceso
de asignar un nmero a cada carcter se le conoce como codificacin. Finalmente, para
mostrar el digito en un visualizador de siete segmentos es necesario decodificar el valor

numrico segn el patrn de LEDs indicado. Esta decodificacin se realiza asumiendo que
el visualizador es de nodo comn (cero activa, uno apaga).
En resumen, inicialmente se tiene un carcter al cual se le asigna un valor numrico
(codificacin) para tratar con el digitalmente, posteriormente se transforma al patrn de
LEDs correspondiente (decodificacin).

Descripcin de hardware
La descripcin de hardware se encarga de determinar cuales LEDs estarn encendidos en
base al valor de entrada de seis bits para cada uno de los 37 smbolos distintos y un caso
para cubrir cualquier otro valor posible. El orden de los bits se muestra en la tabla 1.
Tabla 1: Bit correspondiente a cada segmento.
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
dp
g
f
e
d

Bit 2
c

Bit 1
b

Bit 0
a

El listado 1, desarrollado en el IDE Xilinx ISE 13.4, muestra los 37 caracteres y su


decodificacin a siete segmentos correspondiente.
Listado 1: Decodificador de seis bits a siete segmentos.

1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7

---------------------------------------------------------------------------------- Compaa:
Estado Finito
-- Ingeniero:
Carlos Ramos
--- Fecha de creacin:
2012/07/29 12:56:33
-- Nombre del mdulo:
siete_segmentos - Behavioral
-- Descripcin:
-Decodificador de seis bits a siete segmentos. Se incluyen los
nmeros del 0
-al 9, las letras de la A a la Z, y otros signos de puntuacin
utilizados.
--- Revisin:
-Revisin 0.01 - Archivo creado.
--------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity siete_segmentos is
PORT (
entrada: IN STD_LOGIC_VECTOR(5 downto 0);
salida : OUT STD_LOGIC_VECTOR(7 downto 0)
);
end siete_segmentos;

1 architecture Behavioral of siete_segmentos is


8 beginvisualizador: process (entrada) begin
1
case entrada is
9
when "000000" => salida <= x"C0"; -- 0
when "000001" => salida <= x"F9"; -- 1
2
when "000010" => salida <= x"A4"; -- 2
0
when "000011" => salida <= x"B0"; -- 3
2
when "000100" => salida <= x"99"; -- 4
1
when "000101" => salida <= x"92"; -- 5
2
when "000110" => salida <= x"82"; -- 6
when "000111" => salida <= x"F8"; -- 7
2
when "001000" => salida <= x"80"; -- 8
2
when "001001" => salida <= x"98"; -- 9
3
when "001010" => salida <= x"88"; -- A
2
when "001011" => salida <= x"83"; -- B
when "001100" => salida <= x"C6"; -- C
4
when "001101" => salida <= x"A1"; -- D
2
when "001110" => salida <= x"86"; -- E
5
when "001111" => salida <= x"8E"; -- F
2
when "010000" => salida <= x"90"; -- G
6
when "010001" => salida <= x"89"; -- H
when "010010" => salida <= x"E6"; -- I
2
when "010011" => salida <= x"E1"; -- J
7
when "010100" => salida <= x"85"; -- K
2
when "010101" => salida <= x"C7"; -- L
8
when "010110" => salida <= x"C8"; -- M
2
when "010111" => salida <= x"AB"; -- N
when "011000" => salida <= x"C0"; -- O
9
when "011001" => salida <= x"8C"; -- P
3
when "011010" => salida <= x"98"; -- Q
0
when "011011" => salida <= x"AF"; -- R
3
when "011100" => salida <= x"92"; -- S
when "011101" => salida <= x"87"; -- T
1
when "011110" => salida <= x"E3"; -- U
3
when "011111" => salida <= x"C1"; -- V
2
when "100000" => salida <= x"E2"; -- W
3
when "100001" => salida <= x"8F"; -- X
3
when "100010" => salida <= x"91"; -- Y
when "100011" => salida <= x"B6"; -- Z
3
when "100100" => salida <= x"BF"; -- 4
when "100101" => salida <= x"F7"; -- _
3
when "100110" => salida <= x"7F"; -- .
5
when others => salida <= x"FF"; -- Nada
3
end case;
6
end process;
3 end Behavioral;
7
3
8
3
9
4
0
4

1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4

6
5
6
6
6
7
6
8
6
9
7
0
7
1
7
2

Implementacin del circuito


El archivo de implementacin simplemente determina a cual pin ser enviada la seal de
salida, como se muestra en el listado 2. El resultado se muestra en la figura 2.
Listado 2: Archivo de implementacin.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Entrada de datos. ###################


NET "entrada<5>" LOC = "F3";
NET "entrada<4>" LOC = "G3";
NET "entrada<3>" LOC = "B4";
NET "entrada<2>" LOC = "K3";
NET "entrada<1>" LOC = "L3";
NET "entrada<0>" LOC = "P11";
# Segmentos del visualizador. #########
NET "salida<7>" LOC = "N13"; # dp
NET "salida<6>" LOC = "M12"; # g
NET "salida<5>" LOC = "L13"; # f
NET "salida<4>" LOC = "P12"; # e
NET "salida<3>" LOC = "N11"; # d
NET "salida<2>" LOC = "N14"; # c
NET "salida<1>" LOC = "H12"; # b
NET "salida<0>" LOC = "L14"; # a

Figura 2: Implementacin del visualizador de siete segmentos.


Como se puede apreciar en la figura 2, el carcter se despliega en los cuatro visualizadores
(por el momento, este comportamiento es el esperado).

Anda mungkin juga menyukai