点阵LED显示屏设计--最终版本

上传人:206****923 文档编号:90452109 上传时间:2019-06-12 格式:DOC 页数:20 大小:993.51KB
返回 下载 相关 举报
点阵LED显示屏设计--最终版本_第1页
第1页 / 共20页
点阵LED显示屏设计--最终版本_第2页
第2页 / 共20页
点阵LED显示屏设计--最终版本_第3页
第3页 / 共20页
点阵LED显示屏设计--最终版本_第4页
第4页 / 共20页
点阵LED显示屏设计--最终版本_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《点阵LED显示屏设计--最终版本》由会员分享,可在线阅读,更多相关《点阵LED显示屏设计--最终版本(20页珍藏版)》请在金锄头文库上搜索。

1、 点阵LED显示屏设计1 设计目的1、 了解点阵字符产生和显示原理和系统的16*16点阵的工作机理。2、 加强对总线产生、地址定位的CPLD实现方法的理解。3、 掌握在FPGA中调用ROM的使用方法。2 设计原理主要完成汉字字符在LED上的显示,16*16扫描LED点阵的工作原理与8位扫描数码管类似,只是显示的方式与结果不一样而已。下面就本实验系统的16*16点阵的工件原理做一些简单的说明。16*16点阵由此256个LED通过排列组合而形成16行*16列的一个矩阵式的LED阵列,俗称16*16点阵。单个的LED的电路如下图2.1所示:图2.1 单个LED电路图由上图可知,对于单个LED的电路图

2、当Rn输入一个高电平,同时Cn输入一个低电平时,电路形成一个回路,LED发光。也就是LED点阵对应的这个点被点亮。16*16点阵也就是由16行和16列的LED组成,其中每一行的所有16个LED的Rn端并联在一起,每一列的所有16个LED的Cn端并联在一起。通过给Rn输入一个高电平,也就相当于给这一列所有LED输入了一个高电平,这时只要某个LED的Cn端输入一个低电平时,对应的LED就会被点亮。具体的电路如下图2.2所示:图2.2 16*16点阵电路原理图在点阵上显示一定有字符是根据其字符在点阵上的显示的点的亮灭来表示的如下图2.3所示: 图2.3 字符在点阵上的显示在上图中,显示的是一个“汉”

3、字,只要将被“汉”字所覆盖的区域的点点亮,则在点阵中就会显示一个“汉”字。根据前面我们所介绍的点阵显示的原理。当我们选中第一列后,根据要显示汉字的第一列中所需要被点亮的点对应的Rn置为高电平,则在第一列中需要被点亮的点就会被点亮。依此类推,显示第二列、第三列第N列中需要被点亮的点。然后根据人眼的视觉原理,将每一列显示的点的间隔时间设为一定的值,那么我们就会感觉显示一个完整的不闪烁的汉字。同时也可以按照这个原理来显示其它的汉字。下图2.4是一个汉字显示所需要的时序图:图2.4 显示时序图 在上图中,在系统时钟的作用下,首先选取其中的一列,将数据输入让这列的LED显示其数据(当为高电平时LED发光

4、,否则不发光)。然后选取下一列来显示下一列的数据。当完成一个16*16点阵的数据输入时,即列选择计数到最后一列后,再从第一列开始输入相同的数据。这样只要第一次显示第一列的数据和第二次显示第一列的数据的时间足够短,那么人的眼睛就会看到第一列的数据总是显示的,而没有停顿现象。同样的道理其它列也是这样,直到显示下一个汉字。在实际的运用当中,一个汉字是由多个八位的数据来构成的,那么要显示多个汉字的时候,这些数据可以根据一定的规则存放到存储器中,当要显示这个汉字的时候只要将存储器中对应的数据取出显示即可。本实验的示例程序依次显示的是“ 欢迎使用嵌入式SOC开发系统 ”。数据量不大,所以没有放入存储器中,

5、而在程序中直接输入对应的一个16位的数据。示例程序的字库数据的格式如下图2.5所示:图2.5 字库格式整个设计的电路原理如下图2.6所示:图2.6 16*16点阵显示的电路框图3 设计的过程和结果3.1 整体设计设计要求完成的任务是通过编程实现对16X16点阵的控制。在点阵的循环显示“周盛电信0802班36号”这几个汉字和字符。16*16点阵的电路原理在前面已经做了详尽的说明,在此设计中,16*16点阵由4个8*8点阵组成,考虑到LED电流功耗与FPGA电流功耗的关系,在设计的电路中加入驱动电路。具体电路如下图3.1所示。与FPGA的管脚连接如表3-1所示。图3.1 16*16点阵电路图信号名

6、称对应FPGA管脚名说明DOT-C0P19点阵的第1列输入端口DOT-C1P4点阵的第2列输入端口DOT-C2R6点阵的第3列输入端口DOT-C3R7点阵的第4列输入端口DOT-C4R8点阵的第5列输入端口DOT-C5J3点阵的第6列输入端口DOT-C6W18点阵的第7列输入端口DOT-C7R11点阵的第8列输入端口DOT-C8U10点阵的第9列输入端口DOT-C9U9点阵的第10列输入端口DOT-C10U8点阵的第11列输入端口DOT-C11R16点阵的第12列输入端口DOT-C12R15点阵的第13列输入端口DOT-C13R14点阵的第14列输入端口DOT-C14J6点阵的第15列输入端口

7、DOT-C15R4点阵的第16列输入端口DOT-R0L8点阵的第1行输入端口DOT-R1J4点阵的第2行输入端口DOT-R2H6点阵的第3行输入端口DOT-R3H5点阵的第4行输入端口DOT-R4H4点阵的第5行输入端口DOT-R5H3点阵的第6行输入端口DOT-R6G7点阵的第7行输入端口DOT-R7G6点阵的第8行输入端口DOT-R8P6点阵的第9行输入端口DOT-R9P5点阵的第10行输入端口DOT-R10P3点阵的第11行输入端口DOT-R11N6点阵的第12行输入端口DOT-R12N4点阵的第13行输入端口DOT-R13N3点阵的第14行输入端口DOT-R14M6点阵的第15行输入端

8、口DOT-R15M5点阵的第16行表3-1 16X16点阵与FPGA的管脚连接表设计流程如下如下:开始开关是否闭合number:=0显示选定的字number:=number+1number是否为9图3.2 流程图3.2 部分设计 3.2.1 实体设计在设计实体时,只需要考虑黑匣子外面的接口,由图3.1的16*16点阵电路图可以设计实体部分如下:entity LED is port( clk : in std_logic; lyzs : out std_logic_vector(15 downto 0); zsly : out std_logic_vector(15 downto 0); ly

9、: in std_logic );end LED; 3.2.2 结构体设计结构体里面的中间变量可以通过信号定义,程序如下:architecture behave of LED is type line is array(0 to 255) of std_logic_vector(15 downto 0); signal lya : line; signal zsb : line; signal dx :integer range 0 to 16:=1; signal m :integer range 0 to 400:=0; signal s :integer range 0 to 50000

10、; signal p :std_logic:=0; begin 3.2.3 列扫描显示要动态显示汉字,由于程序采用的是滚屏显示,因此可以采用列扫描的方式,进行循环扫描,其程序如下:zsb(0)=0000000000000000;zsb(1)=0000000000000001;zsb(2)=0000000000000010;zsb(3)=0000000000000100;zsb(4)=0000000000001000;zsb(5)=0000000000010000;zsb(6)=0000000000100000;zsb(7)=0000000001000000;zsb(8)=00000000100

11、00000;zsb(9)=0000000100000000;zsb(10)=0000001000000000;zsb(11)=0000010000000000;zsb(12)=0000100000000000;zsb(13)=0001000000000000;zsb(14)=0010000000000000;zsb(15)=0100000000000000;zsb(16)=1000000000000000; 3.2.4 功能键的设计 设计一个具有暂停功能的按键,在运行过程中按下此键,屏幕显示为暂停状态,但是扫描过程并没有停止,程序如下:process(ly) begin if lyevent

12、and ly=1 then p=NOT p; end if; end process; 3.2.5 控制器模块的设计点阵LED显示的原理就是用高低电平来控制1616个二极管的点亮或者熄灭,达到显示字的目的,所以我们先要把要显示的字的十六进制代码编写出来,可用字模提取软件提取。图3.3演示了用字模提取软件“周”字的十六进制代码。图3.3 字模提取软件的应用4 设计的仿真和运行结果4.1 设计的仿真把源程序通过键盘输入电脑,先在MAX+plus软件环境下进行编译,将编译提示的错误完全改正后,在MAX+plus软件环境下进行仿真的结果如图4.1所示。图4.1仿真结果 经分析,仿真结果与预测结果一样,

13、符合要求。4.2 运行结果 软件仿真完全正确后,线封锁引脚,然后连接硬件,再次编译,没有错误后下载程序到硬件之中,得到的点阵LED显示结果,滚屏显示“周盛电信0802班36号”,按下暂停键可以显示当前的显示的内容。5 心得体会在这两周的课程设计过程中,我学会了很多关于EDA的知识,也学会了怎么样用EDA软件编写程序,更重要的是学会了设计的思路和方法。刚开始设计时,我觉得自己是迷茫的,由于平时上课都是学的理论知识,很少有机会将理论知识运用到实际生活中,因而极其缺乏实践经验,对软件的使用一点都不熟悉,所以我根本就不知道要设计出点阵LED显示驱动电路要多少模块、每一个模块该怎么做,在老师和同学的帮助下,我终于慢慢学会了,而且能够利用上个学期老师教授的VHDL语言编写程序,尽管最初的程序编译时还有或多或少的错误存在,但这毕竟是很大的进步,我心里还是十分高兴的。后来在慢慢的尝试中我们终于把源程序全部改正确了,从而离成功又进了一大步。最后,我们用硬件成功显示了我的姓名、班级和学号。经过这次实习,我对EDA课程有了跟深入的认识,对于EDA技术在现实生活中的应用也有了进一步的认识,它在现实生活中无处不在,就如我所做的点阵LED显示,我

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号