求一个八位七段共阳极数码管的显示程序.
下面的程序能显示76543210,但是9,8这两个数不能显示出来,
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity dynamic_segled is
port
\x09(
\x09\x09clk :in std_logic;\x09
\x09\x09data:out std_logic_vector(7 downto 0);
\x09\x09sel:out std_logic_vector(7 downto 0)
\x09);
end ;
architecture fun of dynamic_segled is
signal cnt:integer range 0 to 62449;
signal flip_led:integer range 0 to 7;
begin
\x09
process(clk)
begin
\x09if clk'event and clk='1' then ----- 动态扫描
\x09\x09 if cnt=62499 then
\x09\x09 \x09cnt
人气:199 ℃ 时间:2020-05-19 04:18:17
解答
process(flip_led)
begin
\x09case flip_led is ---译码显示
\x09 when 0 =>sel我知道这个程序是轮流显示76543210,我可以将他们随意组合变成其他的数值例如216,100等等,但是8和9这两个数的判断我不知道怎么判断,我将第八个数码管显示7的程序改成如下这样的,希望能显示出8和9,但是不能正常显示,显示为错误的,求大神指导! when 8 =>sel<="11111110"; data<=x"80h";when 9=>sel<="11111110"; data<=x"90";你的意思是要用VHDL做动态显示。是这样的么?signal flip_led: integer range 0 to 7;这个信号的定义里面,flip_led的值你定义的是0-7共8个数。下面你的CASE fli_led IS这里在去判断8和9.怎么会有呢。如果想显示8和9很容易。你把signal flip_led: integer range 0 to 7这个句话改成signal flip_led: integer range 0 to 9。就可以了。从你所做的程序中来看,你有一定的思路,但是思路有点混乱。
推荐
猜你喜欢