沈雅

努力,以不负沈雅之名!
嵌入式、Linux、Cosplay、Acg、动漫、各种文学 全为我所爱矣!
交流联系:QQ88459122

[EDA]实验三、数码管显示控制器设计

一、实验目的

熟悉数码管显示控制原理。

 二、实验内容

1、设计并实现8个数码管SM1-SM8同步循环显示数字0-9。

 三、实验仪器

ZY11EDA13BE型实验箱通用编程模块,配置模块,时钟源模块,开关按键模块

数码管显示模块。 

 四、实验原理

1、8个数码管SM1-SM8同步循环显示数字0-9

提示:可参考下面的原理图进行设计。通过计数器完成计数过程,计数时钟clk选择1Hz,

即每秒变化一次。计数四位二进制计数器。计数结果D3-D0经74248译为7段码供数码管显示。位选信号仍为32768Hz。要实现8位都循环显示必须满足8位都选中一遍后才可以改变计数数据,显然我们选择的32768Hz远大于1Hz,所以此设计能满足8位数码管按1秒循环显示,但不能满足只显示0-9。下面原理图显然还显示了0-9以外的字符,需要修改原理图在计数到9时马上清零重新计数,或换其它计数方法。

代码:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;


entity display7seg is

       port(clk,reset,clk32768:in std_logic;

            sel:buffer std_logic_vector(2 downto 0);

            A,B,C,D,E,F,G,H:out std_logic);

end display7seg;


architecture art of display7seg is

signal k :std_logic_vector(3 downto 0);

begin

process(clk,reset) is

begin

if reset='1' then

   k<="0000";

  else

    if clk'event and clk='1' then

      if k="1001" then

         k<="0000";

      else

         k<=k+'1';

      end if;

     end if;

end if;

end process;


process(clk32768,reset) is

begin

if reset='1'then

   sel<="000";

else

  if clk'event and clk='1' then

     if sel ="111" then

        sel<="000";

     else

        sel <= sel +'1';

     end if;

   end if;

end if;

end process;


process (k) is      

variable out_temp:std_logic_vector(7 downto 0);

begin

case k is

          When "0000"=> out_temp:="11111100";

          When "0001"=> out_temp:="11011010";

          When "0010"=> out_temp:="11110010";

          When "0011"=> out_temp:="01100110";

          When "0100"=> out_temp:="10110110";

          When "0101"=> out_temp:="11011010";

          When "0110"=> out_temp:="10111110";

          When "0111"=> out_temp:="11100000";

          When "1000"=> out_temp:="11111110";

          When "1001"=> out_temp:="11100110";

when others=> out_temp:="00000000";

end case;

A<= out_temp(7);

B<= out_temp(6);

C<= out_temp(5);

D<= out_temp(4);

E<= out_temp(3);

F<= out_temp(2);

G<= out_temp(1);

H<= out_temp(0);

end process;

end art;


五、实验步骤

1、在Quartus 9.0软件中新建源程序文件,输入自己设计的源程序,编译,仿真,锁定管脚并下载到目标芯片。

2、对于实验内容1,将信号源模块第一全局时钟GCLK1跳线器接1Hz,第二全局时钟GCLK2跳线器接32768Hz,拨位开关KD1作为复位控制。观察数码管SM1-SM8是否按1秒循环显示数字0-9。


评论

© 沈雅 | Powered by LOFTER