基于CPLD的驱动数码显示电路设计案例

发布者:程序界的行者最新更新时间:2012-03-20 来源: 电子产品世界关键字:cpld 手机看文章 扫描二维码
随时随地手机看文章

显示原理:
    八段数码显示管如图1.1 所示,八段数码管每一段为一发光二极管,共有a~g 以及小数点dp 八个发光二极管。将八段数码管中的每个二极管的阴极并联在一起,组成公共阴极端。这样把共阴极管脚接地,此时哪个管脚输入高电平,对应发光二极管就被点亮。
 
图 1.1 八段数码显示管

CL5461AS 数码管管脚图如图1.2 所示,它将四个数码显示管的a~g 及小数点dp 管脚并联在一起,作为数码管数据输入端;分别引出各个数码管的阴极A1~A4。
 
图1.2 CL5461AS 数码管管脚图

只要在A1~A4 管脚上轮流加低电平其频率大于40Hz,可实现四个数码管同时被点亮的视觉效果。在点亮不同数码管的同时输入不同的数据,即可在数码管上同时显示四位不同的数字。例如:四个数码管要显示9876 数字。第一个数码管A1 加低电平,其余A2、A3、 A4高电平,同时数码管输入和9 对应的数据;然后第二个数码管A2 加低电平,其余A1、A3 、A4 高电平,同时数码管输入和8 对应的数据;然后第三个数码管A3 加低电平,其余A1、A2 、A4 高电平,同时数码管输入和7 对应的数据;然后第四个数码管A4 加低电平,其余A1、A2 、A3 高电平,同时数码管输入和6 对应的数据;周而复始重复上述过程,四个数码管就显示9876 数字。

驱动八位数码管显示电路框图
    用CPLD 设计一个驱动八位数码管显示电路。八位数码管管脚图如图1.2 所示。
    用两个CL5461AS 数码管接成一个八位数码管显示,将两个CL5461AS 数码管的a~g 及小数点dp 管脚并联在一起,两个CL5461AS 数码管的阴极A1~A4 定义为Vss0、Vss1、Vss2、Vss3、Vss4、Vss5、Vss6、Vss7。
    用CPLD 设计一个驱动八位数码管显示电路的框图如图1.4 所示。
 
图1.4 驱动八位数码管显示电路框图

    时钟脉冲计数器的输出同时作为 3 线—8 线译码器、八选一数据选择器地址码的输入。
    时钟脉冲计数器的输出经过3 线—8 线译码器译码其输出信号接到八位数码管的阴极Vss0、Vss1、Vss2、Vss3、Vss4、Vss5、Vss6、Vss7 端。要显示的数据信息A~H中哪一个,通过八选一数据选择器的地址码来选择,选择出的数据信息经七段译码器译码接数码管的a~g 管脚。这样八个数码管就可以轮流显示八个数字,如果时钟脉冲频率合适,可实现八个数码管同时被点亮的视觉效果。

模块及模块功能:
1.3.1 时钟脉冲计数器模块
    时钟脉冲计数器模块CN8 如图1.5 所示。CN8 模块输入信号是时钟脉冲clk,其频率大于40Hz,每遇到一个时钟脉冲clk 上升沿,内部累加器便加一,再把累加器所得结果以2进制数的形式输出。要显示八位数字,所以用3 位2 进制数作为输出。输出信号为cout[0..2]。
 
图 1.5 时钟脉冲计数器模块CN8

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cn8 is
port(clk:in std_logic;
cout:out std_logic_vector(2 downto 0));
end cn8;
architecture rtl of cn8 is
signal q: std_logic_vector(2 downto 0);
begin
process(clk)
begin
if (clk'event and clk='1' ) then
if (q=7) then
q<="000";
else
q<=q+1;
end if;
end if;
end process;
cout<=q;
end rtl;

1.3.2  3-8线译码器模块
    3-8 线译码器模块DECODER3_8 如图1.6 所示。DECODER3_8 模块的输入端是A[2..0]接收时钟脉冲计数器CN8 模块的输出信号,经过译码后输出信号Q[7..0]分别接八个数码管的阴极Vss7、Vss6、Vss5、Vss4、Vss3、Vss2、Vss1、Vss0,使对应的数码管的阴极为低电平,对应的数码管被点亮。要显示八位数字,需要八个输出端,所以做成3-8 线译码器。
 
图 1.6 3-8 线译码器模块DECODER3_8

library ieee;
use ieee.std_logic_1164.all;
entity decoder3_8 is
port(a:in std_logic_vector(2 downto 0);
q:out std_logic_vector(7 downto 0));
end decoder3_8;
architecture rtl of decoder3_8 is
begin
process(a)
begin
case a is
when "000"=>q<="11111110";
when "001"=>q<="11111101";
when "010"=>q<="11111011";
when "011"=>q<="11110111";
when "100"=>q<="11101111";

when "101"=>q<="11011111";
when "110"=>q<="10111111";
when others=>q<="01111111";
end case;
end process;
end rtl;

1.3.3 八选一数据选择模块
    八选一数据选择模块 SEL81 如图1.7 所示。SEL81 模块输入信号一个是数据选择器SEL81的地址码SEL[2..0],另一部分是数据信息A[3..0] ~H[3..0]。地址码SEL[2..0]来自时钟脉冲计数器CN8,由地址码SEL[2..0]决定输出哪个输入数据。输出信号是Q[3..0]。
 
图 1.7 八选一数据选择模块SEL81

 

library ieee;
use ieee.std_logic_1164.all;
entity sel81 is
port(sel:in std_logic_vector(2 downto 0);
a,b,c,d,e,f,g,h:in std_logic_vector(3 downto 0);
q:out std_logic_vector(3 downto 0));
end sel81;
architecture rtl of sel81 is
begin
process(a,b,c,d,e,f,g,h,sel)
variable cout: std_logic_vector(3 downto 0);
begin
case (sel) is
when "000"=>cout:=a;
when "001"=>cout:=b;
when "010"=>cout:=c;
when "011"=>cout:=d;
when "100"=>cout:=e;
when "101"=>cout:=f;
when "110"=>cout:=g;
when others=>cout:=h;
end case;
q<=cout;
end process;
end rtl;

1.3.4 七段译码器模块
    七段译码器模块 DISP 如图1.8 所示。DISP 模块是七段译码器,将输入的4 位二进制数转换为数码显示管所对应的数字。例如输入为4 位二进制数0000 的时候,使数码显示管显示0,则要七段译码器输出为0111111,即g 段为0,g 段发光二极管不亮,其他发光二极管被点亮,显示效果为0。DISP 模块输入信号D[3..0]接到八选一数据选择模块的输出信号Q[3..0];七段译码器输出信号Q[6..0]接数码管的a~g 管脚。
 
图 1.8 七段译码器模块DISP

library ieee;
use ieee.std_logic_1164.all;
entity disp is
port(d:in std_logic_vector(3 downto 0);
q:out std_logic_vector(6 downto 0));
end disp;
architecture rtl of disp is
begin
process(d)
begin
case d is
when"0000"=>q<="0111111";
when"0001"=>q<="0000110";
when"0010"=>q<="1011011";
when"0011"=>q<="1001111";
when"0100"=>q<="1100110";
when"0101"=>q<="1101101";
when"0110"=>q<="1111101";
when"0111"=>q<="0100111";
when"1000"=>q<="1111111";
when others=>q<="1101111";
end case;
end process;
end rtl;

1.3.5 驱动八位数码管显示的整体电路
    将各个模块连接起来构成整体电路图如图 1.9 所示,可以实现用CPLD 设计一个驱动八位数码管显示电路的功能。clk 是时钟脉冲输入信号,经过时钟脉冲计数器CN8 模块,将信号以3 位2 进制数的形式输出,输出信号是COUT[2..0]。时钟脉冲计数器CN8 的输出同时作为3 线—8 线译码器DECODER3_8 和八选一数据选择器SEL81 地址码SEL[2..0]的输入。时钟脉冲计数器CN8 的输出经过3 线—8 线译码器DECODER3_8 译码其输出信号Vss[7..0]接到八位数码管的阴极Vss7、Vss6、Vss5、Vss4、Vss3、Vss2、Vss1、Vss0 端,决定点亮哪位数码管。同时时钟脉冲计数器CN8 模块输出的信号也进入数据选择器SEL81 地址码SEL[2..0]的输入,进行输出数据的选择,其输出是Q[3..0]。八选一数据选择器SEL81 模块的输出是Q[3..0]再经过七段译码器DISP 模块,将其翻译成可以用数码显示管的数据。七段译码器DISP 模块的输出Q[6..0]分别经300 欧电阻接数码显示管的a~g 管脚。八选一数据选择器模块的输入端,可根据具体需要进行设计。
 
图 1.9 驱动八位数码管显示的整体电路

关键字:cpld 引用地址:基于CPLD的驱动数码显示电路设计案例

上一篇:在20分钟内建立一个NIOS II开发环境的方法
下一篇:基于FPGA的SPI自动发送模块技术设计

推荐阅读最新更新时间:2024-03-30 21:52

基于CPLD的DSP与声卡接口技术
 1引言   使用复杂可编程逻辑器件(CPLD)可提高系统集成度、降低噪声、增强系统可靠性并降低成本,同时它不仅具有电擦除特性,而且出现了边缘扫描及在线编程等高级特性,因而可用于状态机、同步、译码、解码、计数、总线接口等很多方面,在信号处理领域的应用也非常活跃。MAX7000系列是ALTERA公司采用先进的0.8μmCMOSEEPROM技术制造的高性能、高密度的CPLD 。MAX7000的结构可完全模仿TFL,并可将SSI,MSI,LSI和传统PLD的逻辑函数高密度地集成。EPM7128S是MAX7000系列的高密度器件,它有128个逻辑宏单元和最大100个输入,具有在系统编程(ISP)特性,非常适合输入、输出端要求较多的逻辑
[嵌入式]
基于<font color='red'>CPLD</font>的DSP与声卡接口技术
基于CPLD的软开关电源数字控制器设计
   1 引言   近年来,随着大功率 开关电源 的发展,对控制器的要求越来越高,开关 电源 的数字化和智能化也将成为未来的发展方向。   目前,我国的大功率开关电源多采用传统的模拟控制方式,电路复杂,可靠性差。因此,采用集成度高、集成功能强大的数字控制器设计开关电源控制器,来适应不断提高的开关电源输出可编程控制、数据通讯、智能化控制等要求。    2.数字控制器设计   本文设计的数字控制器,采用TI公司24X系列DSP控制器中的TMS320LF2407A芯片作为主控制器,主要功能模块包括:(1)DSP与可编程逻 辑器件CPLD相配合实现全桥移相谐振软开关驱动(2)偏磁检测电路;(3)其他功能,如数据采集、保护及外部接口等。
[电源管理]
基于<font color='red'>CPLD</font>的软开关电源数字控制器设计
用AlteraFLEX10K可编程逻辑器件实现复用器的设计
    摘要: 以三路固定时分复用器的设计为例,介绍了Altera公司的FLEX10K嵌入式可编程逻辑器件的自顶向下设计方法,给出了FLEX 10K嵌入式可编程器件在Mux+plus Ⅱ环境下对多路时分复用器的仿真实现。     关键词: 可编程逻辑器件 Mux+plus Ⅱ 时分复用 仿真 FLEX 10K 1 Altera FLEX 10K概述 Altera公司的FLEX 10K嵌入式可编程系列产品是将传统的可编程逻辑与嵌入式门阵列有机地结合在一起的新型器件。由于它有两个独特的逻辑应用结构——嵌入式阵列和逻辑阵列,从而使FLEX 10K系列产品革新了可编程结构并挤身为门阵列市场的主流。
[工业控制]
循环冗余校验码的单片机及CPLD实现
1 基本原理 串行数据的差错检验是保证数据正确的必要手段,通常采用奇遇校验法和循环冗余校验法。这两种方法都是通过冗余数据来提供必要信息。奇偶校验法适用于以字节为单位数据传输。例如用偶校验传送1个ASCII字符时,要附加1个校验位,从而使全部9位中“1”的个数为偶数。奇偶校验简单易行,但当数据崩溃或出现多位错误时,往往不能检验出来,因而可靠性不高。 循环冗余码校验法利用了循环和反馈机制,校验码由输入数据与历史数据经过较为复杂的运算而得到。因此,冗余码包含了更为丰富的数据间的信息,可靠性更高。校好的循环冗余码可校验出以下错误:①全部数据位任意奇数个位出错;②全部数据位中任意连续2位出错;③处于一个8位时间窗内的任1~8位数据出错。
[单片机]
循环冗余校验码的单片机及<font color='red'>CPLD</font>实现
采用CPLD实现数字滤波及抗干扰设计
1 滤波和抗干扰概述 单片机应用系统的输入信号常含有种种噪声和干扰,它们来自被测信号源、传感器、外界干扰源等。为了提高测量和控制精度,必须消除信号中的噪声和干扰。噪声有两大类:一类为周期性的;另一类为不规则的。前者的典型代表为50Hz的工频干扰,一般采用硬件滤波,使用积分时间等于20ms的整数倍的双积分A/D转换器,可有效地消除其对信号的影响。后者为随机信号,它不是周期信号,可用数字滤波方法予以消弱或滤除。所谓数字滤波,就是通过一定的计算或判断程序来减少干扰信号在有用信号中的比重,故实际上它是一种软件滤波。硬件滤波具有效率高的优点,但要增加系统的投资和设备的体积,当干扰的性质改变时我们往往不得不重新搭接电路;软件滤波是用程序实
[单片机]
采用<font color='red'>CPLD</font>实现数字滤波及抗干扰设计
用单片机和CPLD实现步进电机的控制
步进电机是一种将脉冲信号转换成角位移的伺服执行器件。其特点是结构简单、运行可靠、控制方便。尤其是步距值不受电压、温度的变化的影响、误差不会长期积累,这给实际的应用带来了很大的方便。它广泛用于消费类产品(打印机、照相机)、工业控制(数控机床、工业机器人)、医疗器械等机电产品中。 通常的步进电机控制方法是采用CPU(PC机、单片机等)配合专用的步进电机驱动控制器来实现,这存在成本较高、各个环节搭配不便(不同类的电机必须要相应的驱动控制器与之配对)等问题。 CPLD器件具有速度快、功耗低、保密性好、程序设计灵活、抗干扰能力强、与外围电路接口方便等特点,越来越多的应用于各种工控、测量、仪器仪表等方面。同时单片机非常适合应用于需要复
[单片机]
用单片机和<font color='red'>CPLD</font>实现步进电机的控制
基于CPLD的MIDI播放器设计方案
引言 大规模可编程逻辑器件 CPLD 和 FPGA 是当今应用最广泛的两类可编程逻辑器件,电子设计工程师利用它可以在办公室或实验室设计出所自己所需要的专用芯片和专用产品,从而大大缩短了产品上市时间,降低了开发成本。此外,可编程逻辑器件还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,这样就极大的提高了电子系统设计的灵活性和通用性。 1 工作原理 MIDI音乐是Windows下的一种合成音乐,由于它通过记谱的方式来记录一段音乐,因此与wave 音乐相比,它可以极大的减少存储容量。MIDI音乐的基本原理:组成乐曲的每一个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏的两个基本数据,因此
[嵌入式]
在Protel99SE下实现可编程逻辑器件设计
摘要:通过工程实例介绍了在DSPDigital Signal Processing数字信号处理系统设计中,利用PRO-TEL99SE嵌套的Advanced Protel PLD99硬件描述语言CUPL进行可编程逻辑器件设计的方法。 关键词:可编程逻辑器件(PLD);硬件描述语言(CUPL);Protel99se 1 引言 在以往的DSP设计中,采用TTL、CMOS电路和专用数字电路进行设计时,器件对电路的处理功能是固定的,用户不能定义或修改其逻辑功能。但随着电子技术的发展和工程对所需功能复杂程度的进一步提高,系统将需要很多芯片,这样, 在芯片之间,以及芯片和印刷电路板的布线和接点也相应增多,因而导致系统的可靠性下降
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved