vhdl數碼管動態掃描四:8位數碼管輸出任意數值的顯示電路
實驗設計注意事項
在EDA/SOPC裝置中,圖示數碼管顯示采用的是動態掃描方式,即當掃描選通電路74LS138輸入為000,(SEL2、SEL1、SEL0為000時,)Y0輸出低電平,8個數碼管中左邊第一個數碼管被選通,此時,應在數碼管輸入端輸入相應數據。其中,74LS245起輸出驅動作用。
人眼視覺暫留頻率在24Hz以上,如果大于該頻率,點亮單個七段顯示器,看上去能有8個同時顯示的效果,而且顯示也不閃爍。因此,選通頻率要大于24Hz以上。 依據實驗裝置電路,完成七段LED顯示譯碼器的設計應包含如下電路:
①分頻電路:將10MHz脈沖分頻到1kHz;
②七段譯碼電路;
③掃描計數電路:完成模8的計數電路,為掃描選通做準備;
④掃描選通電路:利用分時傳輸思想,將要顯示的數據依次傳入數碼管顯示電路。
VHDL代碼
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_arith.all;
USE IEEE.std_logic_unsigned.all;
ENTITY xianshi IS
PORT(clk:in std_logic;
smg:out std_logic_vector(7 downto 0);
sel:out std_logic_vector(2 downto 0));
END ENTITY;
ARCHITECTURE func OF xianshi IS
SIGNAL fp,tmp:std_logic;
SIGNAL count:std_logic_vector(9 downto 0);
SIGNAL sl:std_logic_vector(2 downto 0);
BEGIN
PROCESS(clk)
BEGIN
IF(clk‘EVENT AND clk = ’1‘)
THEN IF(count = “1111100111”)
THEN count <= (OTHERS => ’0‘);
tmp <= NOT tmp; ELSE
count <= count + 1; END IF;
END IF; fp <= tmp;
END PROCESS;
PROCESS(fp)
BEGIN
IF(fp’EVENT AND fp = ‘1’)
THEN IF(sl = “111”)
THEN sl <= “000”;
ELSE
sl <= sl + 1; END IF;
END IF;
END PROCESS;
sel <= sl;
PROCESS(sl) BEGIN
CASE sl IS
WHEN “000” => smg <= “01000000”;
WHEN “001” => smg <= “01111001”;
WHEN “010” => smg <= “00100100”;
WHEN “011” => smg <= “00110000”;
WHEN “100” => smg <= “00011001”;
WHEN “101” => smg <= “00010010”;
WHEN “110” => smg <= “00000010”;
WHEN “111” => smg <= “01111000”;
WHEN OTHERS => NULL;
END CASE;
END PROCESS;
END ARCHITECTURE;