动态扫描显示电路设计

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

动态扫描显示电路设计

摘要:所谓动态扫描显示,就是让各位LED按照一定的顺序轮流地发光显示。只要每秒扫描次数大于24次以上,就观察不到闪烁现象,人眼看起来很稳定。静态扫描显示与动态显示相比,有显著降低LED功耗,大大减少LED的外部引线等优点。目前动态扫描显示技术已经被广泛应用于新型数字仪表、智能仪器和智能显示屏中。

本次课程实践中运用QuartusII软件,采用VHDL文本设计和原理图相结合的层次化方式实现数码动态扫描显示电路设计。首先,分别用VHDL语言编写8位数码扫描显示电路程序和分频器程序,作为底层文件;顶层文件用原理图的设计方法,调用底层文件生成的符号,从而实现动态扫描显示。用VHDL设计一个8位数码扫描显示电路,利用QuartusII9.0进行编辑输入、编译及时序仿真。其中,由于分频器的分频系数过大时,在仿真波形上很难看出波形的变化,如本设计是从100MHz分频到1KHz,分频系数为一万,所以可以通过改变减小分频系数,如改为10分频,就得到变化的波形,来验证数码动态扫描显示电路设计的正误。

关键字:LED 动态扫描显示电路 Quartus II 分频器层次化设计

一、工作原理:

1、动态扫描显示的工作原理:

8位数码扫描显示的电路符号如下图(1)所示。输入信号:时钟信号CLK。输出控制信号:段控制信号SG[6..0];位控制控制信号BT[7..0]。如图(2)所示是8位数码扫描显示电路,其中每个数码管的8个段h、g、f、e、d、c、b、a(h是小数点)都分别连接在一起,8个数码管分别由8个选通信号k1~k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅为k3对应的数码管显示来自段信号端的数据,而其他7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1~k8分别被选通,与此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。

实验参考扫描显示程序中CLK 是扫描时钟;SG 为7段控制信号,由高到低为分别接g 、f 、e 、d 、c 、b 、a7个段;BT 是位选控制信号,接图(2)中的8个位选通信号:k1、k2、…k8。程序中CNT8是一个3位技术器,作扫描计数信号,有进程P2生成;进程P3是7断译码查表输出程序,进程P1是对8个数码管选通的扫描程序,例如当CNT8等于“001”时,K2对应的数码管被选通,同时,H 被赋值3,再有进程P3译码输出“1001111”,显示在数码管上即为“3”;当CNT8扫变时将能在8个数码管上显示数据:23689ABC 。

图(1)8位数码扫描电路的符号

图(2)8位数码扫描电路

2、七段数码显示译码器的原理:

7段数码是纯组合电路。通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD 码译码,然而数字系统中的数据处理和运算都是二进制的,所以输出表达都是十六进制的。为了满足十六进制数的译码显示,最方便的方法就是利用VHDL 译码程序在FPGA/CPLD 中来实现。注意,这里没有考虑表示小数点的发光管,如果要考虑需要增加h 段,并且段输出SG[6..0]改为SG[7..0]。本实验采用共阳数码管,其电路图见下图(1)。译码真值表见表(1)。

CLK

SG[6..0] BT[7..0]

图(3)共阳数码管及其电路

表(1)译码器的真值表

代表数据输入码输出码g~a 代表数据输入码输出码g~a

0 0000 1000000 8 1000 0000000

1 0001 1111001 9 1001 0010000

2 0010 0100100 A 1010 0001000

3 0011 0110000 B 1011 0000011

4 0100 0011001 C 1100 1000110

5 0101 0010010 D 1101 0100001

6 0110 0000010 E 1110 0000110

7 0111 1111000 F 1111 0001110

3、分频器的工作原理:

分频器的原理也就是计数器,对时钟进行偶数分频,使占空比为50%。只要使用一个计数器,在计数器的前一半时间使输出为高电平,在计数器的后一半时间使输出为低电平,即可得到偶分频时钟。

4、LED显示模块原理:

LED有段码和位码之分,所谓段码就是让LED显示“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阳极的LED而言,高电平使能。

要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应8位段码。虽然8个LED 是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。

多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50HZ,将看不到闪烁现象。

本次试验不显示小数点,可把SG段控制信号向量变为8位(最高位代表小数点),并在最高位设置成恒0低电平。

二、源文件

1、8位数码扫描显示电路VHDL设计程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY smsmdl IS

PORT ( CLK : IN STD_LOGIC;

SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);

BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END;

ARCHITECTURE sone OF smsmdl IS

SIGNAL CN :STD_LOGIC_VECTOR(2 DOWNTO 0);

SIGNAL H: INTEGER RANGE 0 TO 15;

相关文档
最新文档