1、实验六LED点阵实验 南昌大学实验报告学生姓名: 学 号: 6100210173 专业班级: 中兴101班 实验类型: 验证 综合 设计 创新 实验日期:2012 实验六 LED点阵实验一、实验目的利用EDA技术实现1616 LED点阵屏的的扫描和动态显示。二、实验要求能利用1616 LED点阵显示自己所设计的汉字。(我设计的汉字是“中兴班”)三、实验原理首先对LED屏的显示方式给出方案论证。(1)方案的提出方案一:静态显示。所谓静态显示就是对LED电子显示屏中每一象素点都通过硬件单独控制,整个LED电子显示屏的显示实际上就是所有LED的同时显示。 方案二:采用动态扫描法并行输出数据。所谓动态
2、扫描法实际上是利用人眼的视觉暂留现象而实现的一种显示方法。(2)方案的比较方案一的优点在于编程简单且硬件保证无闪烁。缺点:硬件利用率低,造成硬件成本较高。例如一个16*16 的LED显示屏,如用8位锁存器,需32个,此外还有32个锁存器口地址所需的译码电路以及LED驱动电路。显然,这种硬件开销是不能接受的。方案二采用动态扫描来实现LED电子显示屏的显示过程,软件操作实现简便。本实验采用了采用动态扫描法并行输出数据的显示方法。LED点阵的列为扫描选通信号、行为数据输入。显示采用逐行扫描方式,数据端不断输入数据,列扫描按一定顺序逐行选通,扫描一个周期(16次)产生一帧画面。图5.1以44共阴LED
3、阵列为例,给出了LED阵列的组合方式,列选通高有效,数据低有效;数据端输入数据,选通列根据相应数据亮灯,接着送入第二列数据,选通第二列,依次完成一屏的扫描。图2.6.1 LED阵列结构四、定制ROM的方法 1、建立.mif格式文件:首先在Quartus File菜单中选择NEW,在NEW窗中选择Memory Initialization File 项,单击OK产生ROM数据文件大小选择窗口。这里选ROM的数据数Number为48,数据宽Word size取16位。如图所示,将“中兴班”对应数码输入其中即可,如图所示: 保存为adf.mif 2、定制LPM_ROM元件。在Tools中选择Mega
4、 Wizard Plug-In Manager 产生如图界面,选择Create a new custom 项,如图所示 单击next后,选择VHDLCycloneIIROM1Port 如图所示 选择ROM 控制线、地址线和数据线,如图所示 address5.0,q15.0.接下来按下面步骤操作 单击next出现如下图的对话框,在File name 中输入刚才建立的.mif文件,在Allow 前打勾,并在下面输入ROM1单击next即可按图单击next如下图,单击finish即完成了ROM的定制。打开其生成的语言文件,编译后生成如下图的模块后即可调用了。五、实验程序 实验总图: 分频程序: li
5、brary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;-entity fenpin is port( clkin : in std_logic; -20M时钟输入 clk1 : out std_logic ); end fenpin;-architecture behave of fenpin is signal clk : std_logic:=0; begin process(clkin) variable count: integer rang
6、e 0 to 12010:=0; begin if clkinevent and clkin=1 then count:=count+1; if(count=12000) then clk=not clk; -进行24000分频,产生方波 count:=0; end if; end if; clk1=clk; end process;end architecture behave;列选模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;
7、-entity he is port( clk1 : in std_logic; -时钟输入 keyc : out std_logic_vector(15 downto 0); -点阵列控制 address : out std_logic_vector(5 downto 0) -点阵行地址输出 ); end he;-architecture behave of he is signal cdount : std_logic_vector(3 downto 0); signal dount : std_logic_vector(9 downto 0); signal S : std_logic_
8、vector(1 downto 0); begin process(clk1) -显示时序控制 begin if clk1event and clk1=1 then dount1 then -“中兴班”三个字循环显示的控制,分频数比列选大 S=00; else S=S+1; end if; end if; if cdount15 then -循环列选 cdount=cdount+1; else cdountkeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeyckeycaddressaddressaddressaddres
9、saddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddressaddre
10、ssaddressaddressaddressaddress=null; end case; end if; end process;end architecture behave;六、 波形仿真先分析列选的仿真情况:如图所示结合上图,看ROM的输出:通过与.mif文件对比发现仿真图的输出与其完全一样,所以程序仿是可以达到实验要求的。七、实验现象 实验现象:LED屏上动态的显示“中兴班”三字。然后改变ROM中数据(通过更替MIF文件),LED屏上产生了不同的动画效果。达到了实验要求的目的。八、实验心得 通过本次实验,最主要的收获是学会了如何去定制ROM并将它运用到点阵中去,学会了利用扫描的方法让点阵滚动显示所需的汉字,列选的时间和字与字之间的时间间隔要控制好才能编出显示效果非常好的图形字符。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1