网站大量收购独家精品文档,联系QQ:2885784924

82 FPGA对LED显示器的控制.ppt

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
82 FPGA对LED显示器的控制

8.2 FPGA对LED显示器的控制 LED数码管的工作原理 在数字逻辑电路中,可用74LS48(共阳)/74LS49(共阴)译码驱动电路来控制LED显示。在FPGA中,用硬件描述语言设计一个译码驱动器,例如进行一个74LS48的功能设计。 由于FPGA和硬件描述语言的灵活性,可以设计出能显示更多内容的译码驱动模块。 FPGA实现LED静态显示控制 采用FPGA实现LED数码管动态显示控制 N个LED数码管以静态方式显示时,需用到8×N条引脚线。在较为复杂的系统中,FPGA的引脚端资源是有限的。因此对于多个LED数码管显示,可以采用扫描方式来实现LED数码管动态显示。 实现方法是依次点亮各个LED数码管,循环进行显示,即一个数码管显示之后另一个数码管马上显示,利用人眼的视觉暂留特性,可以到多个数码管同时显示的效果。 采用扫描方式来实现LED数码管动态显示,控制好数码管之间的延时是相当重要。 根据人眼视觉暂留原理,LED数码管每秒的导通16次以上,人眼就无法分辨LED数码管短暂的不亮,认为是一直点亮的(其实LED数码管是以一定频率在闪动的)。 但是,延时(导通频率)也不是越小越好,因为LED数码管达到一定亮度需要一定时间。 如果延时控制的不好则会出现闪动,或者亮度不够。据经验,延时0.005秒可以达到满意的效果。 修改延时,亦能得到更多的显示效果,如加长延时,使得数码管显示一小段时间,再点亮下一个,即可得到数码管逐个显示的效果。 另外,显示的字符有变化时,可在延时到达后送一个低电平(共阴极数码管)让LED数码管先短暂熄灭,再显示下一个字符,可使在视觉上字符的变化更清晰。 FPGA实现LED动态方式显示的控制电路 FPGA驱动LED静态显示程序(1) library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity decoder is Port (seg:in std_logic_vector(3 downto 0 ); --四位二进制码输入 q3:out std_logic_vector(6 downto 0) ); --输出LED七段码 end decoder; architecture Behavioral of decoder is begin FPGA驱动LED静态显示程序(1) process(seg) begin case seg is when 0000 = q3=0000001;--0 when 0001 = q3=1001111;--1 when 0010 = q3=0010010;--2 when 0011 = q3=0000110;--3 when 0100 = q3=1001100 --4 when 0101 = q3=0100100;--5 when 0110 = q3=0100000;--6 when 0111 = q3=0001111;--7 when 1000 = q3=0000000;--8 when 1001 = q3=0000100;--9 when others = q3=1111111; end case; end process; end Behavioral; FPGA驱动LED动态显示(4位) entity dynamic is Port ( clk,reset: in std_logic; din1 : in std_logic_vector(6 downto 0);--译码后的数据信号1 din2 : in std_logic_vector(6 downto 0); --译码后的数据信号2 din3 : in std_logic_vector(6 downto 0); --译码后的数据信号3 din4 : in std_logic_vector(6 downto 0); --译码后的数据信号4 shift: out std_logic_vector(3 downto 0); --位选信号 bus4 : out std_logic_vector(6 downto 0)); --数据信号 end dynamic; architecture Behavioral of dynamic is signal scan_clk:std_logic_vector(1 downto 0); process(clk,scan_clk,reset)

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档