当前位置:首页 > 北京邮电大学信通院2009级数字电路跑马灯及数码管滚动显示实验报告 - 图文
二、数码管扫描显示控制器的设计与实现
1.实验目的
(1)掌握VHDL语言的语法规范,掌握时序电路描述方法 (2)掌握多个数码管动态扫描显示的原理及设计方法
2.实验所用仪器及元器件
(1)计算机
(2)直流稳压电源
(3)数字系统与逻辑设计实验开发板
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’表示数码管不显示。
4.实验原理
为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
各位数码管的相同段是并联的,段码的输出对各位数码管来说都是相同的。因此在同一时刻如果各位数码管都处于点亮状态,6位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式,即在某一时刻,只让某一位处于点亮状态,而其它各位处于灭灯状态。同时,段码输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
总之,多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。6个数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象。
5.设计思路及VHDL代码
(1)同时显示0、1、2、3、4、5这6个不同的数字到6个数码管上 i)设计思路:
(1) 设计时序电路,输入时钟经过一个分频器,产生分频系数为6的扫描信号
作为时钟,驱动计数器工作。
(2) 选用模值为6的计数器,通过一个3线至6线译码器,控制产生位码,依次控制6个数码管的亮灭,使得某一时刻有且仅有一个数码管被点亮,同时产生与被点亮的数码管序号一致的段码。
(3)根据段码生成相应的数字字型码,并输出到数码馆上。由于扫描频率较高,6位数码管序列将显示持续稳定的0至5的数码。
ii)VHDL代码
(2) 循环左滚动,始终点亮6个数码管,左出右进。状态为:012345-123450-234501-345012-450123-501234-012345 i)设计思路:
(1)同时让6个数码管显示数字的代码主体和实验任务1中一致,基本思想也一致。(2)为实现移位,关键改动为新增一个计数器,计数周期远远大于扫描周期,这样,在一个大的计数周期内,对于要显示的6位数码进行动态扫描(和实验任务1中相同),显示出6种移位状态中的一种;在下一个大的周期内,计数变量FLAG加1,使用求余运算将显示位的数码移位,比如,FLAG为0时,显示“012345”六位数码,FLAG为1时,将FLAG与扫描周期计数变量CNT6相加求余(即FLAG_A求余)对应的数码为123450,显示的数码也就为“123450”。以此类推,实现循环移位。
ii)VHDL代码
共分享92篇相关文档