菜单
  

     
      图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. 基于oversim的P2P通信仿真系统设计

  2. 基于力控组态软件的PLC系...

  3. 基于SIMATICS7-200的小型锅炉...

  4. 基于Arduino的自动浇花系统设计+电路图+程序

  5. DC-DC基于超级电容的电梯弱电供电系统设计

  6. 基于图像识别的电子锁设计+PCB电路图+程序

  7. 单片机的信号发生器的设计任务书

  8. 浅析中国古代宗法制度

  9. 上市公司股权结构对经营绩效的影响研究

  10. 高警觉工作人群的元情绪...

  11. C++最短路径算法研究和程序设计

  12. g-C3N4光催化剂的制备和光催化性能研究

  13. 现代简约美式风格在室内家装中的运用

  14. 巴金《激流三部曲》高觉新的悲剧命运

  15. 江苏省某高中学生体质现状的调查研究

  16. 中国传统元素在游戏角色...

  17. NFC协议物理层的软件实现+文献综述

  

About

优尔论文网手机版...

主页:http://www.youerw.com

关闭返回