数码管学号滚动显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南京邮电大学

通达学院

课程设计报告

设计类别: EDA-VHDL

专业名称: 通信工程

班级学号:

基本题 : 数字时钟设计

综合题 : 数码管学号滚动显示

同小组成员:

学号:

姓名:

指导教师: 王奇、梅中辉、周晓燕,孔凡坤日期:2011年11月7日—11月18日

一、数码管学号滚动显示

1.实验目的

(1)掌握VHDL语言的语法规范,掌握时序电路描述方法

(2)掌握多个数码管动态扫描显示的原理及设计方法

2.实验所用仪器及元器件

(1)计算机

(2)直流稳压电源

(3)数字系统与逻辑设计实验开发板

3.实验任务要求

要求学生在六个数码管滚动显示自己的学号(六位),每隔一定时间循环移位一次,学号为奇数则左移,学号为偶数则右移。间隔时间可由开关选择1秒,2秒,3秒和4秒。

4.实验原理

为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。

各位数码管的相同段是并联的,段码的输出对各位数码管来说都是相同的。因此在同一时刻如果各位数码管都处于点亮状态,6位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式,即在某一时刻,只让某一位处于点亮状态,而其它各位处于灭灯状态。同时,段码输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出要显示的字符。

虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉匰象就会戯连续稳定地显示。

总之,多个数码管动态扫描显示,是将所有数码管犄相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个敠码管,并利用人眼的视觉暂留现象,Ꮺ要扫描的频率大于50Hz,将看不到闪烁现象。个数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象。

5.设计思路䏊VHDL代码

循环左滚动,始终点亮6个数码管,左出右进。状态为:080403-804030-040308-403080-030804-308040-080403

i)设计思路:

(1)同时让6个数码管显示数字的代码主体和实验任务1中一致,基本思想也一致。

(2)为实现移位,关键改动为新增一个计数器,计数周期远远大于扫描周期,这样,

在一个大的计数周期内,对于要显示的6位数码进行动态扫描(和实验任务1中相

同),显示出6种移位状态中的一种;在下一个大的周期内,计数变量FLAG加1,使用求余运算将显示位的数码移位,比如,FLAG为0时,显示“012345”六位数码,FLAG为1时,将FLAG与扫描周期计数变量CNT6相加求余(即FLAG_A求余)对应的数码为080403,显示的数码也就为“080403”。以此类推,实现循环移位。

(3)加入按键控制,按键按下来控制移位的时钟的频率,以实现间隔时间可由开关选择1秒,2秒,3秒和4秒。

ii)VHDL代码

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY jiyawen IS

PORT(

clk,clear,key_in:IN STD_LOGIC;

num_out:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);

pipe_out:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));

END jiyawen;

ARCHITECTURE behave OF jiyawen IS

SIGNAL clk_temp:STD_LOGIC;

SIGNAL clk_te:STD_LOGIC;

SIGNAL count_f: INTEGER RANGE 0 TO 5;

SIGNAL CNT6:INTEGER RANGE 0 TO 6;

SIGNAL NUM:INTEGER RANGE 0 TO 5;

SIGNAL count_FLAG:INTEGER RANGE 0 TO 99;

SIGNAL FLAG:INTEGER RANGE 0 TO 6;

SIGNAL FL:INTEGER RANGE 0 TO 40000;

SIGNAL F:INTEGER RANGE 0 TO 40000;

SIGNAL key_cnt:INTEGER RANGE 0 TO 3;

SIGNAL key_0:STD_LOGIC;

SIGNAL key_1:STD_LOGIC;

SIGNAL key_2:STD_LOGIC;

SIGNAL key_3:STD_LOGIC;

SIGNAL key_v:STD_LOGIC;

SIGNAL key_flag:STD_LOGIC;

SIGNAL key_s:STD_LOGIC;

SIGNAL delay_5ms:INTEGER RANGE 0 TO 250000;

SIGNAL FLAG_NUM:INTEGER RANGE 0 TO 10;

BEGIN

P0:process(clk)

begin

process(clk)

begin

相关文档
最新文档