?? scan_led.vhd
字號:
--//**************************Copyright (c)***********************
--//** 廣州周立功單片機發(fā)展有限公司
--//** 研 究 所
--//** 測控事業(yè)部
--//**
--//** http://www.zlgmcu.com
--//**
--//**-----------------文件信息-----------------------------------
--//**文 件 名:
--//**創(chuàng) 建 人: Xu hui quan (許惠泉)
--//**最后修改日期:
--//**描 述:
--//**
--//*------------------當(dāng)前版本修訂--------------------------------
--//** 修改人:
--//** 日 期:
--//** 描 述:
--//**
--//**------------------------------------------------------------
--//*************************************************************/
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_Arith.ALL;
USE IEEE.STD_LOGIC_Unsigned.ALL;
ENTITY scan_led IS
PORT(
clk_1k: IN STD_LOGIC;
d: IN STD_LOGIC_VECTOR(31 DOWNTO 0); --輸入要顯示的數(shù)據(jù)
dig: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --數(shù)碼管選擇輸出引腳
seg: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) --數(shù)碼管段輸出引腳
);
END ENTITY;
ARCHITECTURE one OF scan_led IS
SIGNAL seg_r: STD_LOGIC_VECTOR(7 DOWNTO 0); --定義數(shù)碼管輸出寄存器
SIGNAL dig_r: STD_LOGIC_VECTOR(7 DOWNTO 0); --定義數(shù)碼管選擇輸出寄存器
SIGNAL disp_dat: STD_LOGIC_VECTOR(3 DOWNTO 0); --定義顯示數(shù)據(jù)寄存器
SIGNAL count: STD_LOGIC_VECTOR(2 DOWNTO 0); --定義計數(shù)寄存器
BEGIN
dig<=dig_r;
seg<=seg_r;
PROCESS(clk_1k)
BEGIN
IF RISING_EDGE(clk_1k) THEN
count<=count+1;
END IF;
END PROCESS;
PROCESS(clk_1k)
BEGIN
IF RISING_EDGE(clk_1k) THEN
CASE count IS
WHEN "000"=> disp_dat<=d(31 DOWNTO 28); --第一個數(shù)碼管
WHEN "001"=> disp_dat<=d(27 DOWNTO 24); --第二個數(shù)碼管
WHEN "010"=> disp_dat<=d(23 DOWNTO 20); --第三個數(shù)碼管
WHEN "011"=> disp_dat<=d(19 DOWNTO 16); --第四個數(shù)碼管
WHEN "100"=> disp_dat<=d(15 DOWNTO 12); --第五個數(shù)碼管
WHEN "101"=> disp_dat<=d(11 DOWNTO 8); --第六個數(shù)碼管
WHEN "110"=> disp_dat<=d(7 DOWNTO 4); --第七個數(shù)碼管
WHEN "111"=> disp_dat<=d(3 DOWNTO 0); --第八個數(shù)碼管
END CASE;
CASE count IS --選擇數(shù)碼管顯示位
WHEN "000"=> dig_r<="01111111"; --選擇第一個數(shù)碼管顯示
WHEN "001"=> dig_r<="10111111"; --選擇第二個數(shù)碼管顯示
WHEN "010"=> dig_r<="11011111"; --選擇第三個數(shù)碼管顯示
WHEN "011"=> dig_r<="11101111"; --選擇第四個數(shù)碼管顯示
WHEN "100"=> dig_r<="11110111"; --選擇第五個數(shù)碼管顯示
WHEN "101"=> dig_r<="11111011"; --選擇第六個數(shù)碼管顯示
WHEN "110"=> dig_r<="11111101"; --選擇第七個數(shù)碼管顯示
WHEN "111"=> dig_r<="11111110"; --選擇第八個數(shù)碼管顯示
END CASE;
END IF;
END PROCESS;
PROCESS(disp_dat)
BEGIN
CASE disp_dat IS
WHEN X"0"=> seg_r<=X"c0";--顯示0
WHEN X"1"=> seg_r<=X"f9";--顯示1
WHEN X"2"=> seg_r<=X"a4";--顯示2
WHEN X"3"=> seg_r<=X"b0";--顯示3
WHEN X"4"=> seg_r<=X"99";--顯示4
WHEN X"5"=> seg_r<=X"92";--顯示5
WHEN X"6"=> seg_r<=X"82";--顯示6
WHEN X"7"=> seg_r<=X"f8";--顯示7
WHEN X"8"=> seg_r<=X"80";--顯示8
WHEN X"9"=> seg_r<=X"90";--顯示9
WHEN X"a"=> seg_r<=X"88";--顯示a
WHEN X"b"=> seg_r<=X"83";--顯示b
WHEN X"c"=> seg_r<=X"c6";--顯示c
WHEN X"d"=> seg_r<=X"a1";--顯示d
WHEN X"e"=> seg_r<=X"86";--顯示e
WHEN X"f"=> seg_r<=X"8e";--顯示f
END CASE;
END PROCESS;
END;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -