菜单
  

     
      图14 小时低位计数模块元件图
    小时低位计数子程序:
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    USE ieee.std_logic_unsigned.all;
    USE ieee.std_logic_arith.all;
    ENTITY hl IS
    PORT   (clk_1s : IN STD_LOGIC;
    iset : IN STD_LOGIC;
    flag : IN STD_LOGIC;
    iset_addr : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
    addr_1s : OUT STD_LOGIC_vector(3 downto 0);
    os : OUT STD_LOGIC);
    END hl;
    ARCHITECTURE hl_architecture OF hl IS
    BEGIN
    k1:process(clk_1s,iset)
    variable count:integer range 0 to 10:=0;
    begin
    if iset='0' then
    count:=CONV_INTEGER(iset_addr);
    addr_1s<=iset_addr;
    elsif rising_edge(clk_1s) then
    if flag='1' then
    if count=3 then
    os<='1';
    count:=0;
    addr_1s<=CONV_STD_LOGIC_VECTOR(count,4);
    else
    os<='0';
    count:=count+1;
    addr_1s<=CONV_STD_LOGIC_VECTOR(count,4);
    end if; else
    if count=9 then  os<='1';
    count:=0;
    addr_1s<=CONV_STD_LOGIC_VECTOR(count,4);
    else  os<='0';
    count:=count+1;
    addr_1s<=CONV_STD_LOGIC_VECTOR(count,4);
    end if;
    end if;
    end if;
    end process k1;END hl_architecture;
    (4) 小时高位计数模块
    小时高位模块主要完成小时高位1和2之间的变换,同时当小时高位为2是,将是flag赋值为高电平,当为1是,flag变为低电平。iset为低电平时,小时高位由外部控制按键输入,当iset为高电平时开始计数,该模块框图如图15所示。
     
      图15 小时高位计数模块元件
    小时高位计数子程序:
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    USE ieee.std_logic_unsigned.all;
    USE ieee.std_logic_arith.all;
    ENTITY hh IS
    PORT  (clk_1s : IN STD_LOGIC;
    iset : IN STD_LOGIC;
    iset_addr : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
    addr_1s : OUT STD_LOGIC_vector(3 downto 0);
    flag: OUT STD_LOGIC);
    END hh;
    ARCHITECTURE hh_architecture OF hh IS
    BEGIN
    k1:process(clk_1s,iset)
    variable count:integer range 0 to 2:=0;
    begin
    if iset='0' then
    count:=CONV_INTEGER(iset_addr);
    addr_1s<=iset_addr;
    if count=2 then
    flag<='1';
    else flag<='0';
    end if;
    elsif rising_edge(clk_1s) then
         if count=2 then
    flag<='0';  count:=0;
    addr_1s<=CONV_STD_LOGIC_VECTOR(count,4);
    elsif count=1 then
    flag<='1';
    count:=count+1;
    addr_1s<=CONV_STD_LOGIC_VECTOR(count,4);
    else
    flag<='0';
    count:=count+1;
    addr_1s<=CONV_STD_LOGIC_VECTOR(count,4);
    end if;  end if;
    end process k1;
    END  
    小时高位计数仿真波形如图16所示。   
    图16 小时高位计数模块仿真波形
    4.3 译码显示模块
    该模块完成对计数器编码信息的译码工作,驱动数码管显示相应的数字。时钟扫描信号为分频器输出的另一500Hz高频脉冲信号,addr[30]为输入时间信号,经过译码转换后输出到LED中显示[11]。该模块的输入端口clk是频率为500Hz的扫描时钟,故每一位显示的时间为2ms,需要扫描4个数码管,故显示间隔为8ms。译码模块逻辑图如图17所示:
     
    图17 译码显示模块元件
    译码显示模块子程序:
    LIBRARY  IEEE;
        USE IEEE.std_logic_1164.ALL;
      ENTITY drive IS
    PORT  ( clk:in std_logic;addr : IN STD_LOGIC_vector(3 downto 0);
    led : OUT STD_LOGIC_vector(7 downto 0) );
    END drive;
    ARCHITECTURE behave OF drive IS
    SIGNAL sel : STD_LOGIC_vector(3 downto 0);
    BEGIN
  1. 上一篇:AT89C55单片机的数字音乐盒设计+仿真图+电路原理图+源码
  2. 下一篇:51单片机的角度测量系统设计+仿真图+源码
  1. 基于中频信号的家用治疗...

  2. 基于嵌入式技术的智能家...

  3. 基于FPGA竞赛系统设计+程序

  4. Matlab基于前馈控制的加热炉温度控制系统设计

  5. MEMS基于SHARC型DSP的组合导航算法实现

  6. 基于LabVIEW的车牌图像识别技术研究

  7. 基于LabVIEW和MATLAB混合编程...

  8. java+mysql车辆管理系统的设计+源代码

  9. 电站锅炉暖风器设计任务书

  10. 中考体育项目与体育教学合理结合的研究

  11. 酸性水汽提装置总汽提塔设计+CAD图纸

  12. 杂拟谷盗体内共生菌沃尔...

  13. 大众媒体对公共政策制定的影响

  14. 当代大学生慈善意识研究+文献综述

  15. 十二层带中心支撑钢结构...

  16. 乳业同业并购式全产业链...

  17. 河岸冲刷和泥沙淤积的监测国内外研究现状

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回