⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.txt

📁 8位数码扫描显示电路设计(VHDL)通过编译
💻 TXT
字号:
8位数码扫描显示电路设计(VHDL)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SCAN_LED IS                                    
    PORT (   CLK   : IN STD_LOGIC; 
              SG   : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);  --段控制信号输出
              BT   : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );--位控制信号输出
 END;
ARCHITECTURE one OF SCAN_LED IS
    SIGNAL CNT8  : STD_LOGIC_VECTOR(2 DOWNTO 0); 
    SIGNAL    A  : INTEGER RANGE 0 TO 15;
BEGIN
P1: PROCESS( CNT8 )
    BEGIN
        CASE  CNT8 IS
          WHEN "000" =>  BT <= "00000001" ; A <= 1 ;
          WHEN "001" =>  BT <= "00000010" ; A <= 3 ; 
          WHEN "010" =>  BT <= "00000100" ; A <= 5 ;
          WHEN "011" =>  BT <= "00001000" ; A <= 7 ;
          WHEN "100" =>  BT <= "00010000" ; A <= 9 ;
          WHEN "101" =>  BT <= "00100000" ; A <= 11 ;
          WHEN "110" =>  BT <= "01000000" ; A <= 13 ;
          WHEN "111" =>  BT <= "10000000" ; A <= 15 ;
          WHEN OTHERS =>  NULL ;
        END CASE ;
     END PROCESS P1;
    P2: PROCESS(CLK)
        BEGIN
         IF CLK'EVENT AND CLK = '1' THEN CNT8 <= CNT8 + 1;   
         END IF;
    END PROCESS P2 ;   
     P3: PROCESS( A ) --译码电路
      BEGIN
       CASE  A  IS
        WHEN 0  => SG <= "0111111";  WHEN 1  => SG <= "0000110"; 
        WHEN 2  => SG <= "1011011";  WHEN 3  => SG <= "1001111"; 
        WHEN 4  => SG <= "1100110";  WHEN 5  => SG <= "1101101"; 
        WHEN 6  => SG <= "1111101";  WHEN 7  => SG <= "0000111";
        WHEN 8  => SG <= "1111111";  WHEN 9  => SG <= "1101111"; 
        WHEN 10 => SG <= "1110111";  WHEN 11 => SG <= "1111100";
        WHEN 12 => SG <= "0111001";  WHEN 13 => SG <= "1011110"; 
        WHEN 14 => SG <= "1111001";  WHEN 15 => SG <= "1110001";
        WHEN OTHERS =>  NULL ;
       END CASE ;
      END PROCESS P3;    
END;




2\
------------------------------------------------------------------------------------
-- DESCRIPTION   :   BIN to seven segments converter
--                   segment encoding
--                        a
--                      +---+ 
--                    f |   | b
--                      +---+  <- g
--                    e |   | c
--                      +---+
--                        d
--                  Enable (EN) active                : high
--                  Outputs (data_out) active         : low
-- Download from :  http://www.pld.com.cn
------------------------------------------------------------------------------------



library IEEE;
use IEEE.std_logic_1164.all;

entity SEVEN_SEGMENT is
	port (
		data_in : in std_logic_vector (3 downto 0);
		EN : in std_logic;
		data_out : out std_logic_vector (6 downto 0)
	);
end entity;



architecture SEVEN_SEGMENT_arch of bin27seg is
begin

	process(data_in, EN)
	begin
		data_out <= (others => '1');
		if EN='1' then
			case data_in is
				when "0000" => data_out <= "1000000"; -- 0
				when "0001" => data_out <= "1111001"; -- 1
				when "0010" => data_out <= "0100100"; -- 2
				when "0011" => data_out <= "0110000"; -- 3
				when "0100" => data_out <= "0011001"; -- 4
				when "0101" => data_out <= "0010010"; -- 5
				when "0110" => data_out <= "0000011"; -- 6
				when "0111" => data_out <= "1111000"; -- 7
				when "1000" => data_out <= "0000000"; -- 8
				when "1001" => data_out <= "0011000"; -- 9
				when "1010" => data_out <= "0001000"; -- A
				when "1011" => data_out <= "0000011"; -- b
				when "1100" => data_out <= "0100111"; -- c
				when "1101" => data_out <= "0100001"; -- d
				when "1110" => data_out <= "0000110"; -- E
				when "1111" => data_out <= "0001110"; -- F
				when others => NULL;
			end case;
		end if;
	end process;

end architecture;

修改后
library IEEE;
use IEEE.std_logic_1164.all;

entity SEVEN_SEGMENT is
	port (
		data_in : in std_logic_vector (3 downto 0);
		EN : in std_logic;
		data_out : out std_logic_vector (6 downto 0)
	);
end entity;



architecture SEVEN_SEGMENT_arch of SEVEN_SEGMENT is
begin

	process(data_in, EN)
	begin
		data_out <= (others => '1');
		if EN='1' then
			case data_in is
				when "0000" => data_out <= "1000000"; -- 0
				when "0001" => data_out <= "1111001"; -- 1
				when "0010" => data_out <= "0100100"; -- 2
				when "0011" => data_out <= "0110000"; -- 3
				when "0100" => data_out <= "0011001"; -- 4
				when "0101" => data_out <= "0010010"; -- 5
				when "0110" => data_out <= "0000011"; -- 6
				when "0111" => data_out <= "1111000"; -- 7
				when "1000" => data_out <= "0000000"; -- 8
				when "1001" => data_out <= "0011000"; -- 9
                                when others => NULL;
                    end case;
		end if;
	end process;

end architecture;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -