VHDL数码管动态扫描

上传人:cn****1 文档编号:506810241 上传时间:2022-10-08 格式:DOCX 页数:14 大小:631.66KB
返回 下载 相关 举报
VHDL数码管动态扫描_第1页
第1页 / 共14页
VHDL数码管动态扫描_第2页
第2页 / 共14页
VHDL数码管动态扫描_第3页
第3页 / 共14页
VHDL数码管动态扫描_第4页
第4页 / 共14页
VHDL数码管动态扫描_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《VHDL数码管动态扫描》由会员分享,可在线阅读,更多相关《VHDL数码管动态扫描(14页珍藏版)》请在金锄头文库上搜索。

1、北京邮电大学数电实验报告实验名称:数码管扫描显示控制器设计与实现学 院:信息与通信工程姓 名:班 级:学 号:班内序号:实验目的1. 掌握VHDL语言的语法规范,掌握时序电路描述方法;2. 掌握多个数码管动态扫描显示的原理和设计方法.二 实验所用仪器及元器件1. 计算机2. 直流稳压电源3. 数字系统与逻辑设计实验开发板三 实验任务及要求1. 用 VHDL 语言设计并实现六个数码管串行扫描电路,要求同时显示0, 1, 2, 3, 4, 5 这六个不同的数字图形到六个数码管上,仿真下载验证其功能。2. 用 VHDL 语言设计并实现六个数码管滚动显示电路。(选作)(1)循环滚动,始终点亮6 个数码

2、管,左出右进。状态为:012345123450234501 345012450123501234012345四 实验设计思路及过程1. 实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。动态 扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的 字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称 为位码。各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此在同一 时刻如果各位数码管的位选线都处于选通状态的话, 6 位数码管将显示相同的字符。若 要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式,即

3、在某一时刻, 只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上 输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而 其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位 熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足 够短,给人眼的视觉印象就会是连续稳定地显示。总之,多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选 通信号分时控制各个数码管的公共端,循环一次点亮多个数码管,并利用人眼的视觉暂 留现象,只要扫

4、描的频率大于50Hz,将看不到闪烁现象。6个数码管则需要50*6=300Hz 以上才能看到持续稳定点亮的现象。2. 设计思路设计时序电路,实验板上产生的时钟信号的频率为50MHz,频率过高,需要经过 分频后才能满足电路的时延要求,所以需要经过一个分频器系数为2k的分频器,产生 25kHz的扫描信号作为时钟,驱动计数器工作。选用模值为6的计数器,通过一个3线 至6线译码器,产生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED 点亮,同时产生对应的位段,将点亮的 LED 数码管赋值显示为相应的数码予以显示。由于扫描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。3.VHD

5、L代码实验任务 1: 实现代码:(1)分频系数为2k的分频器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;entity div_2K isport(clk_in:in std_logic; clk_out:out std_logic);end div_2K;architecture a of div_2K issignal temp:integer range 0 to 1999;beginp1:process(clk_in)beginif clk_inevent and clk_in=1 t

6、henif temp=1999 thentemp=0;else temp=temp+1;end if;end if;end process p1;p2:process(temp)beginif temp=1999 thenclk_out=1;elseclk_outWHEN 1 =WHEN 2 =WHEN 3 =WHEN 4 =WHEN 5 =WHEN OTHEND CASE ;in=CLK,clk_out=clk_tmp);ISBT = 011111 ; A = 0 ;BT = 101111 ; A = 1 ;BT = 110111 ; A = 2 ;BT = 111011 ; A = 3 ;

7、BT = 111101 ; A = 4 ;BT = 111110 ; A NULL ;-3线至 6 线译码器-A 为位码-实现模6 计数器-实现数码管的显示功能END PROCESS P1;P2:process(clk_tmp)BEGINIF clk_tmpEVENT AND clk_tmp= 1 THEN if CNT6 = 5 thenCNT6 = 0;elseCNT6 SG SG SG SG SG SGCLK,clk_out=clk_tmp); P1:process(CNT6)-3 线至 6 线译码器-A 为位码BEGINCASE CNT6 ISWHEN 0 = BT = 011111

8、; A BT = 101111 ; A BT = 110111 ; A BT = 111011 ; A BT = 111101 ; A BT = 111110 ; A NULL;END CASE ;END PROCESS P1;P2:process(clk_tmp)BEGINIF clk_tmpEVENT AND clk_tmp= 1 THEN-实现模 6 计数器if CNT6= 5 thenCNT6= 0;else-设置标志-相当于另一个时钟-计数周期为 5000-当记满 5000 时左移动一位-不满5000 继续计数CNT6=CNT6 + 1; end if;IF (FLAG = 6) T

9、HENFLAG = 0;END IF;IF COUNT =4999 THENCOUNT = 0;FLAG =FLAG+1;ELSECOUNT =COUNT+1;END IF;END IF;END PROCESS P2;P3:process(A,FLAG,FLAG_A)BEGINFLAG_A SG SG SG SG SG SG NULL ;END CASE ;END PROCESS P3;END ACE;代码分析:代码主体和实验任务1 中一致,基本思想也一致。为实现移位,关键改动 为新增一个计数器,技术周期远远大于扫描周期,这样,在一个大的计数周期内,对于要 显示的 6 位数码进行动态扫描(和实验任务 1 中相同),显示出 6 种移位状态中的一种; 在下一个大的周期内,利用FLAG标志,并使用求余运算将显示位的数码移位,比如,大 的计数周

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号