数字时钟毕业设计说明书 下载本文

内容发布更新时间 : 2024/11/15 0:19:22星期一 下面是文章的全部内容请认真阅读。

中北大学2012届毕业设计说明书

图4.4 分计数器的功能仿真波形

4.3 时计数器电路实现

在这里我们设计了时计数电路模块。其对应的VHDL代码、模块符号及功能仿真波形分别如下:

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

ENTITY con24v is port(clk,reset,en:in bit;

q0,q1:out std_logic_vector(3 downto 0)); end;

architecture one of con24v is

signal m0,m1:std_logic_vector(3 downto 0); begin

process(clk,reset,en) begin

if reset='0'then m0<=\elsif clk'event and clk='1' then if en='1' then

if m0=\

12

中北大学2012届毕业设计说明书

m1<=\

elsif m0=\else m0<=m0+1; end if; end if; end if; end process; q0<=m0;q1<=m1; end;

图4.5 时计数电路模块符号

图4.6 时计数器功能仿真波形

13

中北大学2012届毕业设计说明书

5 扫描显示电路实现

5.1 动态扫描显示电路的工作原理

动态扫描显示电路的整体框图如图5.1所示,它由六进制计数器、3-8译码器、数据选择器、扫描控制电路、七段显示译码器等组成。它共有6组BCD码输入线A03-A00、A13-A10、A23-A20 、A33-A30、A43-A40、A53-A50,7根LED七段显示译码输出线a、b、c、d、e、g和6根位选通线sel0、sel1、sel2、sel3、sel4、sel5。

片选 六个数码管

片选 24选4数据选择器和数据扫描控制器 3-8译码器 ???? ?????? 六进制计数器 A00-A03 A53 clk

图5.1 动态扫描显示电路的整体框图

七段显示译码器

在时钟脉冲clk的作用下,六进制计数器开始计数,其输出通过3-8译码器作为24选4 数据选择器的片选信号,从6组输入的BCD码数据中选出一组BCD码,经过BCD七段显示译码器译码后去控制LED七段数码管。即24选4数据选择器一方面从6路数据中选出一路BCD码数据,通过七段显示译码器控制数码管的a-g管脚;另一方面产生6个控制信号sel0、sel1、sel2、sel3、sel4、sel5,使六个LED数码管每一时刻只有一只工作,即被点亮。这样六进制计数器在时钟脉冲clk作用下循环计数,从而控制6个LED七段数码管轮流显示,在扫描频率足够高的情况下,6个LED数码管能稳定显示

14

中北大学2012届毕业设计说明书

6个数码。

上面我们介绍了扫描显示电路的工作原理,接下来我们来实现扫描显示电路中的各电路模块。

5.2 动态扫描显示电路所需基本模块的实现 5.2.1 六进制计数器的电路实现

六进制计数器循环产生3为二进制数000-101。六进制计数器的VHDL代码、模块符号、功能仿真波形如下:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL;

ENTITY count6 IS PORT(clk:IN std_logic;

q:OUT std_logic_vector(2 DOWNTO 0)); END count6;

ARCHITECTURE bhv OF count6 IS

SIGNAL cq:std_logic_vector(2 DOWNTO 0); BEGIN PROCESS(clk) BEGIN

IF (clk'event AND clk='1') THEN

IF (cq=\ ELSE cq<=cq+1; END IF; END IF; q<=cq;

15

中北大学2012届毕业设计说明书

END PROCESS; END bhv;

图5.2 六进制计数器模块符号

图5.3 六进制计数器功能仿真模块

5.2.2 3-8译码器电路的实现

3-8译码器模块将输入的3位二进制数000-101进行译码,对于每一组二进制数,使得只有一路输出,产生的信号为数据选择器的片选信号,。3-8译码器的VHDL代码、模块符号、功能仿真波形如下:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL; USE Ieee.std_logic_unsigned.ALL;

ENTITY decod38 IS

16