欢迎来到天天文库
浏览记录
ID:11531075
大小:166.32 KB
页数:6页
时间:2018-07-12
《cpld驱动数码显示电路》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、CPLD驱动数码显示电路时间:2009-07-31 来源: 作者: 点击:971 字体大小:【大中小】- 1.1显示原理: 八段数码显示管如图1.1所示,八段数码管每一段为一发光二极管,共有a~g以及小数点dp八个发光二极管。将八段数码管中的每个二极管的阴极并联在一起,组成公共阴极端。这样把共阴极管脚接地,此时哪个管脚输入高电平,对应发光二极管就被点亮。 图1.1八段数码显示管 CL5461AS数码管管脚图如图1.2所示,它将四个数码显示管的a~g及小数点dp管脚并联在一起,作为数码管数据输入端;分别引出各个数码管的阴极A1~A4。 图1.2CL5461AS数码管管脚图 只要在A1
2、~A4管脚上轮流加低电平其频率大于40Hz,可实现四个数码管同时被点亮的视觉效果。在点亮不同数码管的同时输入不同的数据,即可在数码管上同时显示四位不同的数字。例如:四个数码管要显示9876数字。第一个数码管A1加低电平,其余A2、A3、A4高电平,同时数码管输入和9对应的数据;然后第二个数码管A2加低电平,其余A1、A3、A4高电平,同时数码管输入和8对应的数据;然后第三个数码管A3加低电平,其余A1、A2、A4高电平,同时数码管输入和7对应的数据;然后第四个数码管A4加低电平,其余A1、A2、A3高电平,同时数码管输入和6对应的数据;周而复始重复上述过程,四个数码管就显示9876数字。1.2
3、驱动八位数码管显示电路框图 用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线译码器译码其输出
4、信号接到八位数码管的阴极Vss0、Vss1、Vss2、Vss3、Vss4、Vss5、Vss6、Vss7端。要显示的数据信息A~H中哪一个,通过八选一数据选择器的地址码来选择,选择出的数据信息经七段译码器译码接数码管的a~g管脚。这样八个数码管就可以轮流显示八个数字,如果时钟脉冲频率合适,可实现八个数码管同时被点亮的视觉效果。1.3模块及模块功能:1.3.1时钟脉冲计数器模块 时钟脉冲计数器模块CN8如图1.5所示。CN8模块输入信号是时钟脉冲clk,其频率大于40Hz,每遇到一个时钟脉冲clk上升沿,内部累加器便加一,再把累加器所得结果以2进制数的形式输出。要显示八位数字,所以用3位2进制
5、数作为输出。输出信号为cout[0..2]。 图1.5时钟脉冲计数器模块CN8libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycn8isport(clk:instd_logic;cout:outstd_logic_vector(2downto0));endcn8;architecturertlofcn8issignalq:std_logic_vector(2downto0);beginprocess(clk)beginif(clk'eventandclk='1')thenif(q=7)the
6、nq<="000";elseq<=q+1;endif;endif;endprocess;cout<=q;endrtl;1.3.23-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.63-8线译码器模块DECODER3_8libraryie
7、ee;useieee.std_logic_1164.all;entitydecoder3_8isport(a:instd_logic_vector(2downto0);q:outstd_logic_vector(7downto0));enddecoder3_8;architecturertlofdecoder3_8isbeginprocess(a)begincaseaiswhen"000"=>q<
此文档下载收益归作者所有