数码管学号滚动显示(2)

2020-04-14 16:02

end process P6; P7:process(clk) begin if (delay_5ms = 250000) then key_2<=key_in; else key_2<=1; end if;

end process P7; P8:process(clk) begin key_3<=key_2; key_flag<=(key_3 and (not key_2)); end process P8;

P9:process(clk) begin if(key_flag) then key_cnt<=key_cnt+1; else key_cnt<=0; end if; end process P9;

P10:PROCESS( key_cnt ) begin CASE key_cnt IS WHEN 0=>F<=100000; WHEN 1=>F<=200000; WHEN 2=>F<=300000; WHEN 3=>F<=400000; END CASE; end process P10; END behave;

6.仿真波形及分析

用012345来仿真。状态为:012345-123450-234501-345012-450123-501234-012345

i)仿真波形

ii)波形分析

由波形可见,随着大计数周期的增加,依次产生012345-123450-234501-345012-450123-501234-012345 ??,这样便实现了循环移位。当清零信号为0时,控制数码管是否点亮的信号全为1,实现了让数码管全部熄灭的目标。实验室实测时,加大count_FLAG值为100,观察到稳定持续的周期循环移位的数码显示,完成实验任务。

308040-080403。(按键控制还是有问题)

二、数字时钟

1.实验目的

(1)掌握VHDL语言的语法规范,掌握时序电路描述方法 (2)掌握多个数码管动态扫描显示的原理及设计方法

2.实验任务要求

要求学生设计一个时钟,并输出到数码管显示时,分,秒。

3设计思路及VHDL代码

library ieee;

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

-------------------------------------------------------------------- entity digital is

port( Clk : in std_logic; --时钟输入 Rst : in std_logic; --复位输入

Display : out std_logic_vector(6 downto 0); --七段码管显示输出 SEG_SEL : buffer std_logic_vector(2 downto 0) --七段码管扫描驱动 ); end digital;

-------------------------------------------------------------------- architecture behave of digital is

signal Disp_Temp : integer range 0 to 15;

signal Disp_Decode : std_logic_vector(6 downto 0); signal SEC1,SEC10 : integer range 0 to 9; signal MIN1,MIN10 : integer range 0 to 9; signal HOUR1,HOUR10 : integer range 0 to 9;

signal Clk1kHz : std_logic;--数码管扫描时钟 signal Clk1Hz : std_logic;--时钟计时时钟 signal led_count : std_logic_vector(2 downto 0); signal led_display : std_logic_vector(3 downto 0); signal spkcout : std_logic; begin

PROCESS(clk) --产生1hz信号

variable cnt : INTEGER RANGE 0 TO 49999999; --产生1Hz时钟的分频计数器 BEGIN

IF clk='1' AND clk'event THEN IF cnt=49999999 THEN cnt:=0;

ELSE

IF cnt<25000000 THEN clk1hz<='1'; ELSE clk1hz<='0'; END IF; cnt:=cnt+1; END IF; END IF; end process;

PROCESS(clk) --产生1khz信号

variable cnt1 : INTEGER RANGE 0 TO 49999; --产生1KHz时钟的分频计数器 BEGIN

IF clk='1' AND clk'event THEN IF cnt1=49999 THEN cnt1:=0; ELSE

IF cnt1<25000 THEN clk1khz<='1'; ELSE clk1khz<='0'; END IF;

cnt1:=cnt1+1; END IF; END IF; end process;

process(Clk1Hz,Rst) begin

if(Rst='0') then --系统复位 SEC1<=0; SEC10<=0; MIN1<=0; MIN10<=0; HOUR1<=0; HOUR10<=0;

elsif(Clk1Hz'event and Clk1Hz='1') then --正常运行

if(SEC1=9) then SEC1<=0;

if(SEC10=5) then SEC10<=0;

if(MIN1=9) then MIN1<=0;

if(MIN10=5) then MIN10<=0;

if(HOUR1=9) then HOUR1<=0;

HOUR10<=HOUR10+1;


数码管学号滚动显示(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:清华大学新闻传播学业务名词解释 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: