第一范文网 - 专业文章范例文档资料分享平台

基于FPGA的LED16×16点阵汉字显示设计(VHDL版)概要

来源:用户分享 时间:2025/7/20 0:19:19 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

更新数组数据 二维数组 动态显示 图2-1 方案二原理图

2.2.2方案的比较

方案一很容易实现,而且占用FPGA的资源较少。但是由于其实现方式的局限性,该方案只能实现汉字的滚动显示。方案二中将LED点阵抽象成了一个二维数组。可以设计一些比较复杂的算法来控制这个数组,使设计的系统不但可以滚动显示汉字,还可以扩展一些其它的显示效果。但是方案二中对数组的处理部分对FPGA芯片的资源消耗太大学校实验室里的EPF10K10LC84-4芯片只有576个逻辑单元远远不够设计要求。所以最终选择方案一。

2.3扫描控制模块

2.3.1 LED的显示原理

16×16扫描LED点阵的工作原理同8位扫描数码管类似。它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(0-15)输入。 通过时钟的每列扫描显示完整汉字。

图2-2 LED灯红绿信号 图2-3 16×16点阵LED等效电路

点阵LED一般采用扫描式显示,实际运用分为三种方式: (1)点扫描 (2)行扫描 (3)列扫描

若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉

4

暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。 2.3.2汉字的存储

用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作。第一步是获得数据并保存,即在存贮器中建立汉字数据库。第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3.3所示的被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。

2.4 汉字显示

汉字显示使用的是16×16的点阵,EDA实验箱上有其接口电路,列选信号为SEL0,SEL1,SEL2,SEL3,经4线16线译码器输出16列,从左起为第一列,列选信号是由一个4位向量SEL[3..0]控制;行选信号为H0~H15,是由16个行信号组成的,每一行由一个单独的位来控制,高电平有效。例如“0000”表示第0列,“0000000000000001”表示第一行的点亮。由于列是由一个向量决定,而每一时刻的值只能有一个固定的值,因而只能使某一列的若干个点亮,因此就决定了只能用逐列扫描的方法。例如要使第一列的2,4,6,8,行亮,则列为“0001”、行为“0000000010101010”就可以实现了。 下面是各个部分的程序设计: 2.4.1列循环扫描 列循环扫描

通过对每一列的扫描来完成对字母的现实,只要扫描的频率足够快,就能给人以连续的感觉。因此要控制扫描的频率,不能太低,否则,就会造成视觉上的不连续,本设计的扫描频率不得低于50Hz,扫描程序如下:

图2-4 16×16LED点阵模块

5

Library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; Entity dz_xs is

Port(enable,clk:in std_logic; --端口定义 输入信号

Sel:out std_logic_vector(3 downto 0)); --端口定义 输出信号 End dz_xs;

Architecture count of dz_xs is

Signal lie:std_logic_vector(3 downto 0); Begin

Process(clk,enable) --脉冲、使能信号 begin

If clk'event and clk='1'then

If enable='1' then

If lie>\ Lie<=lie-\Else

Lie<=\End if;

End if;

End if;

Sel<=lie; End process; 2.4.2字符样式设计 字符样式设计

本环节是建立一个数据库,使之能在扫描的同时读取所需要的信息,从而完成汉字的显示。本次设计“王、日、田、口”汉字样式设计程序如下: Library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; Entity dz_xs is

Port(enable,clk:in std_logic; --端口定义 输入信号

h0,h8:out std_logic_vector(7 downto 0)); --端口定义 输出信号(h0-列数据输出,h8-代表行数据输出)

End dz_xs;

Architecture count of dz_xs is

Signal lie:std_logic_vector(3 downto 0); --信号标志

6

Signal past1:std_logic_vector(1 downto 0); Begin

Process(enable,clk) --脉冲、使能信号 Begin

If clk'event and clk='1'then

If enable='1' then

Case lie is

When \

Case lie is --“王”字设计

When \When \When \When \When \When \When \When \When \When \When \When others=>h0<=\

End case; When \

Case lie is --“日”字设计

When\When\When\When\When\

7

基于FPGA的LED16×16点阵汉字显示设计(VHDL版)概要.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c730b779z2f3gyk618jsm0fvam2gyzr007i7_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top