多位数码管动态显示优缺点

核心提示优点:当显示位数较多时,采用动态显示方式比较节省I/O 口,硬件电路也较静态显示简单,也比较省电;缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。动态显示的特点是将所有数码管的段选线并联在一起,通

优点:当显示位数较多时,采用动态显示方式比较节省I/O 口,硬件电路也较静态显示简单,也比较省电;

缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。

动态显示的特点是将所有数码管的段选线并联在一起,通过控制位选信号来控制数码管的点亮。这样一来,就没有必要给每一位数码管配一个锁存器,从而大大简化了硬件电路。

动态显示驱动

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制;

当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

以上内容参考:百度百科-数码管

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

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