七段数码管显示程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附录A 八位七段数码管显示程序
library ieee;
use led is
port( clk : in std_logic; --Clock Signal
data_in : in std_logic_vector(7 downto 0); --data bus
ledag : out std_logic_vector(6 downto 0); --定义七位输出信号
sel : out std_logic_vector(2 downto 0) --ledag Select
);
end led;
--------------------------------------------------------------------
architecture behave of led is
signal dcount : std_logic_vector(2 downto 0);
signal adh,adl : std_logic_vector(6 downto 0);
signal adcount : std_logic_vector(7 downto 0);
signal din_h,din_l : std_logic_vector(3 downto 0);
signal coclk : std_logic;
begin
process(clk) --out enable signal
begin
if(clk'event and clk='1') then
if adcount="" then
coclk<='1';
adcount<="00000000";
else
adcount<=adcount+1;
coclk<='0';
end if;
end if;
end process;
process(clk) --rd the adc data
begin
if(clk'event and clk='1') then
din_h<=data_in(7 downto 4);
din_l<=data_in(3 downto 0);
end if;
end process;
process(clk)
begin
case din_h is
when "0000"=>adh<="0111111"; --display 0
when "0001"=>adh<="0000110"; --display 1
when "0010"=>adh<="1011011"; --display 2
when "0011"=>adh<="1001111"; --display 3
when "0100"=>adh<="1100110"; --display 4
when "0101"=>adh<="1101101"; --display 5
when "0110"=>adh<="1111101"; --display 6
when "0111"=>adh<="0000111"; --display 7
when "1001"=>adh<="1101111"; --display 9 when "1010"=>adh<="1110111"; --display a when "1011"=>adh<="1111100"; --display b when "1100"=>adh<="0111001"; --display c when "1101"=>adh<="1011110"; --display d when "1110"=>adh<="1111001"; --display e when "1111"=>adh<="1110001"; --display f when others=>adh<=adh; --no change end case;
case din_l is
when "0000"=>adl<="0111111"; --display 0 when "0001"=>adl<="0000110"; --display 1 when "0010"=>adl<="1011011"; --display 2 when "0011"=>adl<="1001111"; --display 3 when "0100"=>adl<="1100110"; --display 4 when "0101"=>adl<="1101101"; --display 5 when "0110"=>adl<="1111101"; --display 6 when "0111"=>adl<="0000111"; --display 7 when "1000"=>adl<="1111111"; --display 8 when "1001"=>adl<="1101111"; --display 9 when "1010"=>adl<="1110111"; --display a when "1011"=>adl<="1111100"; --display b when "1100"=>adl<="0111001"; --display c when "1101"=>adl<="1011110"; --display d
when "1111"=>adl<="1110001"; --display f
when others=>adl<=adl; --no change
end case;
end process;
process(coclk) --display process
begin
if(coclk'event and coclk='1') then
dcount<=dcount+1;
sel<=dcount;
case dcount is
when "000"=>ledag<="1000000";
when "001"=>ledag<="1000000";
when "010"=>ledag<="1000000";
when "011"=>ledag<=adh;
when "100"=>ledag<=adl;
when "101"=>ledag<="1000000";
when "110"=>ledag<="1000000";
when "111"=>ledag<="1000000";
when others=>ledag<="0000000";
end case;
end if;
end process;
end behave;。