静态显示与动态显示在硬件电路和程序编写上的区别区别?

核心提示数码管静态显示就是每个数码管的驱动电平不会改变,知道这个数码管的数值发生变化。动态显示就是利用人眼反应迟钝,数码管轮流显示一段时间,比如都是20ms,效果看起来是几个数码管同时亮(实际是只有一个在点亮,其他的是余晖)。静态显示亮度比较亮,功

数码管静态显示就是每个数码管的驱动电平不会改变,知道这个数码管的数值发生变化。

动态显示就是利用人眼反应迟钝,数码管轮流显示一段时间,比如都是20ms,效果看起来是几个数码管同时亮(实际是只有一个在点亮,其他的是余晖)。

静态显示亮度比较亮,功耗大

动态显示亮度稍微差点,但是显示位数多

注意动态扫描频率不要低于50Hz,最好高于60Hz,否则会看到数码管闪烁

通俗点说:

1、静态显示需要更多驱动电路所成本高多了同时软件编写也方便得多

2、动态显示其实闪烁所多人感觉眼睛舒服而静态显示没有问题

3、静态显示输出亮度高所室外LED显示屏几乎都静态动态般只室内使用静态的显示屏是直接驱动灯管。就是说如果一个灯是亮着的话,每一时刻他都是亮的,

动态的指的是每一时刻,显示屏只点亮其中的某些行。所以如果一个灯是亮的话,他不是总是亮的,而是通过视觉残留让你认为他是亮的,所以亮度没有静态的高。

静态的驱动比动态的驱动和算法要复杂的多。所需的硬件资源也很多。

library IEEE;

use IEEESTD_LOGIC_1164ALL;

use IEEESTD_LOGIC_ARITHALL;

use IEEESTD_LOGIC_UNSIGNEDALL;

entity dynamic is

Port ( clk : in std_logic;

reset: in std_logic;

din1 : in std_logic_vector(6 downto 0); --译码后的数据信号1

din2 : in std_logic_vector(6 downto 0); --译码后的数据信号2

din3 : in std_logic_vector(6 downto 0); --译码后的数据信号3

din4 : in std_logic_vector(6 downto 0); --译码后的数据信号4

shift: out std_logic_vector(3 downto 0); --位选信号

bus4 : out std_logic_vector(6 downto 0)); --数据信号

end dynamic;

architecture Behavioral of dynamic is

signal scan_clk:std_logic_vector(1 downto 0);

begin

process(clk,scan_clk,reset) --分频进程

variable scan:std_logic_vector(17 downto 0);

begin

if reset='1' then

scan:="000000000000000000";

scan_clk<="00";

elsif clk'event and clk='1'then

scan:=scan+1;

end if;

scan_clk<=scan(17 downto 16);

end process;

process(scan_clk,din1,din2,din3,din4) --扫描进程

begin

case scan_clk is

when "00"=>

bus4<=din1;

shift<="0001";

when "01"=>

bus4<=din2;

shift<="0010";

when "10"=>

bus4<=din3;

shift<="0100";

when "11"=>

bus4<=din4;

shift<="1000";

when others=> bus4<="0000000";shift<="0000";

end case;

end process;

end Behavioral;

 
友情链接
鄂ICP备19019357号-22