zoukankan      html  css  js  c++  java
  • 动态扫描7段数码管

    工作过程:
    1.clk(50MHz)通过lpm_counter0(加法器)分频---〉分频后的信号q[24]和q[23]分别输入到subcont(减法器)和addcont(加法器),由它们产生一个16位的数data[15..0]用于4位数码管显示,例如0-3位在第一个数码管显示,4-7在第二个数码管显示,......,12-15位在第四个数码管显示。

    2.经分频后的时钟信号q[5]使计数器开始计数,结果由0到3,0表示选择第一个数码管(让它点亮),同时让多路选择器输出data[3..0],依此类推,3表示选择第四个数码管,同时让多路选择器输出data[15..12],程序如下:
      process(rst,clk)--计数器
    begin
     if rst='1' then
       comclk<="00";
      elsif rising_edge(clk) then
           if comclk>=3 then
             comclk<="00";
            else
              comclk<=comclk+1;
            end if;
           end if;

    end process;
    process(comclk)--译码器
     begin
         if     comclk="00" then ledcom<="0001";  --把计数的结果00译码成0001
         elsif  comclk="01" then ledcom<="0010";
         elsif  comclk="10" then ledcom<="0100";
         else  ledcom<="1000";
         end if;
    end process;
    process(comclk)--多路选择器
     begin
        if     comclk="00" then bcd_led<=datain(3 downto 0);
        elsif  comclk="01" then bcd_led<=datain(7 downto 4);
        elsif  comclk="10" then bcd_led<=datain(11 downto 8);
        else   bcd_led<=datain(15 downto 12);end if;
    end process;
    --注意译码器和多路选择器的时钟都是一样的,即comclk,换句话说,就是同一时刻产生“0001”(选择第一个数码管)和datain(3 downto 0)(在第一个数码管显示的数字)

    3.要显示的四位二进制的数通过4-7数码管译码器变成7段码,再输入到a、b、....、g这些管脚。

  • 相关阅读:
    Flask-1-05-Cookie&Session
    Flask-1-05-Response
    Flask-1-04-Request
    Python3 装饰器无参有参 Egon老师视频
    python魔法方法、构造函数、序列与映射、迭代器、生成器---python基础教程
    Python3(廖雪峰教程) 链接
    Python面向对象之私有属性和方法(转载)
    python3 isinstance
    生成器 讲得不错的帖子
    Python3 pickle模块
  • 原文地址:https://www.cnblogs.com/yuxi/p/632188.html
Copyright © 2011-2022 走看看