预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

精品文档 北京邮电大学 实验报告 实验名称:数码管扫描显示控制器设计与实现 学院:信息与通信工程学院 班级:2011XXXXXX 姓名:XXX 学号: 日期:2013年5月 精品文档 精品文档 一.实验目的 1.掌握VHDL语言的语法规范,掌握时序电路描述方法 2.掌握多个数码管动态扫描显示的原理及设计方法 二.实验所用仪器及元器件 1.计算机 2.直流稳压电源 3.数字系统与逻辑设计实验开发板 三.实验任务要求 1.用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3, 4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。 2.用VHDL语言设计并实现六个数码管滚动显示电路。(选作) I.循环滚动,始终点亮6个数码管,左出右进。状态为:012345-123450- 234501-345012-450123-501234-012345 II.向左滚动,用全灭的数码管充右边,直至全部变灭,然后再依次从右边一 个一个地点亮。状态为:012345-12345X-2345XX-345XXX-45XXXX- 5XXXXX-XXXXXX-XXXXX0-XXXX01-XXX012-XX0123-X01234-012345, 其中’X’表示数码管不显示。 四.实验设计思路及过程 1.实验原理 为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。 动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用 来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择 第几位数码管工作,称为位码。 精品文档 精品文档 各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此 在同一时刻如果各位数码管的位选线都处于选通状态的话,6位数码管将显示 相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描 显示方式,即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的 位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样在 同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环 下去,就可以使各位数码管显示出将要显示的字符。 虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它 各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码 管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。 总之,多个数码管动态扫描显示,是将所有数码管的相同段并联在一起, 通过选通信号分时控制各个数码管的公共端,循环一次点亮多个数码管,并利 用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。6个 数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象。 2.设计思路 设计时序电路,选用模值为6的计数器,通过一个3线至6线译码器,产 生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED点亮,同 时产生对应的,将点亮的LED数码管赋值显示为相应的数码予以显示。由于扫 描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。 3.VHDL代码 A.实验任务1 ①实现代码 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; 精品文档 精品文档 ENTITYGKY07P14IS PORT(clk,clear:INSTD_LOGIC; q:OUTSTD_LOGIC_VECTOR(6DOWNTO0); countout:OUTSTD_LOGIC_VECTOR(5DOWNTO0)); ENDGKY07P14; ARCHITECTUREbehaveOFGKY07P14IS SIGNALq_temp:STD_LOGIC_VECTOR(6DOWNTO0); SIGNALcount:STD_LOGIC_VECTOR(5DOWNTO0); SIGNALcnt:INTEGERRANGE0TO5; BEGIN p1:PROCESS(clk) BEGIN IF(clk'EVENTANDclk='1')THEN IF(cnt=5)THENcnt<=0; ELSE cnt<=cnt+1; ENDIF; ENDIF; ENDPROCESS; p2:PROCESS(cnt) BEGIN ELSE CASEcntIS 精品文档 精品文档 ENDCASE; ENDIF; ENDPROCESS; countout<=count; q<=q_temp; ENDb