LED汉字滚动程序设计显示

LED汉字滚动程序设计显示
LED汉字滚动程序设计显示

基于FPGA控制的LED汉字滚动显示器设计

https://www.360docs.net/doc/4015488080.html,文章出处:发布时间:2010/09/25 | 365 次阅读| 0次推荐| 0条留言

Samtec连接器完整的信号来源开关,电源限时折扣最低45折每天新产品时刻新体验ARM Cortex-M3内核微控制器最新电子元器件资料免费下载完整的15A开关模式电源首款面向小型化定向照明应用代替

0 引言

现代文明的一个显著特征是城市中随处可见的五颜六色的广告宣传,其中大多都是由LED点阵制作的汉字或图形广告,广泛应用在银行、医院、酒店、火车站、体育场馆等各种公共场所。

汉字滚动显示器的传统设计方法是用单片机来控制的,虽然单片机方案具有价格低廉,程序编程灵活等特点,但由于单片机硬件资源的限制,未来对设计的变更和升级,总是要付出较多研发经费和较长投放市场周期的代价,甚至有可能需要重新设计。况且,在以显示为主的系统中,单片机的运算和控制等主要功能的利用率很低,单片机的优势得不到发挥,相当于很大的资源浪费。

采用EDA技术的自顶向下的模块化设计方法,借助相关开发软件,例如QualtusⅡ软件,将硬件描述语言——VHDL程序固化于具有丰富I/O口、内部逻辑和连线资源的FPGA(现场可编程门阵列)中。该技术具有系统设计效率高、集成度好、保密性强、易于修改、易于实现等优点,成为当今数字系统设计主流技术。此方式所制作的LED点阵控制器,由于是纯硬件行为,具有速度快、可靠性高、抗干扰能力强、开发周期短等显著优点。

1 EDA点阵显示汉字原理

以8×8的LED点阵为例,8×8的LED点阵是由64个发光二极管按矩阵形式排列而成,每一行上的发光管有一个公共的阳极(或阴极),每一列上的发光管有一个公共的阴极(或阳极),一般按动态扫描方式显示汉字或图形。扫描分为点扫描、行扫描和列扫描三种方式。行扫描需要按行抽取字型码,列扫描则需要按列抽取字型码。为满足视觉暂留要求,若使用点扫描方式,其扫描频率必须大于16×64=1 024Hz,周期小于1ms。若使用行或列扫描,则频率必须大于16×8=128Hz,周期小于7.8ms。由于所用实验板上提供有1 kHz的时钟,本例设计中利用该时钟进行扫描,使每行扫描时间为1 ms,实验结果显示亮度合适。现以行扫描为例简单说明动态扫描显示的原理。图1给出汉字“热”在点阵为列共阳时的行字模。工作时先将要扫描行的点阵字模从各列上输出,再让译码器选中(扫描)该行,使本行得以显示,接着再送下一行数据,再使下一行有效,直到8行全被扫描一遍。至此,一幅完整的文字信息就显现出来,然后再反复扫描这8行直至显示新的信息。以下设计采用行扫描方式实现滚动显示。

2 硬件原理图

整个电路由五大部分组成:时钟计数模块GEL_CLK,存储汉字字模的ROM模块ROMZI,数据分配器模块MUX,移位模块YW及显示模块XIANSH-I。时钟计数模块用于产生整个电路所需要的时钟及其对时钟的计数值,例如:移位时钟CLK YW,移位计数器CNT YW,字计数器CNT WORD,显示扫描计数器CNT SM。ROMZI模块是由QualtusⅡ中的LPM 1PORT ROM定制成,用来存储8个待显示的汉字。MUX模块用于在扫描时钟及扫描计数器的作用下,从ROM中读出一个汉字的8个行字模信息,送给移位模块YW,YW模块在移位时钟及移位计数器作用下,根据SELECT信号选择对读出的字模信息,进行相应的移位(左移、右移、上移、下移)后,最后送显示模块DISP驱动LED点阵显示汉字。原理图如图2所示。

3 模块设计及时序仿真

3.1 时钟计数产生模块

时钟计数产生模块由1 kHz的输人时钟为基准,进行17位的循环计数CNT[16..O]。该时钟,既是动态扫描显示的时钟,也是从ROM中取一个字8个字模的时钟,对之进行的3位循环计数作为扫描显示计数器和取一个字的字型码计数器。CNT[16..O]中的CNT[9]是对该时钟的1 024分频,将其作为移位时钟CNT_YW,周期约为l s。CNT[13…lO]作为4位的移位计数器,是对移位时钟CLK_YW的计数,也是对移位位数的统计。16个状态使一个汉字逐列移进点阵,又逐列移出。每经过16个移位时钟,将会显示完一个汉字。CNT[16..14]作为3位的取字计数器。

CNT[16…14]&CNT[2..O]作为ROM地址发生器。

3.2 ROMZI模块

利用LPM参数化模块库中单口ROM,利用QualtusⅡ中的MegaWizard Plug-In Manager定制而成,定制前首先要制作LPM ROM初始化文件,其中存储待显示汉字的字模数据,然后按照LPM MegaWizardPlug-In Manager的向导提示,结合设计要求进行定制。

图3为所定制ROM中的初始化汉字“元旦生日开心快乐”的字型码。数据分配模块MUX要求能在8个时钟作用下,从ROM中读出一行(一个汉字的8个字型码)分别送到数据分配器中的WLl~WL8输出端。

图4为数据分配模块在扫描时钟作用下读取的字模数据,比较图3和图4可知,仿真结果正确,能满足题目要求。

3.3 移位模块YW

移位模块YW是整个设计的核心,行扫描实现左移,是通过每来一个移位时钟,将每一行的字模按位左移一位,扫描时钟到来时送出移位后的新字模。通过8次移位,可将一个汉字移出点阵平面,按类似的道理,也可以将一个汉字经8次移位后移进点阵平面。本例(图2)中,CNT YW为移位时钟的计数值,以WLl~WL8为欲显示汉字的原始字模,L10~L80为移位后从列上送出的8行显示字模信息,LLl~LL8为8个原始字模信息未送出位的暂存信号。设计中需要16个移位时钟,通过前8个时钟将WLl~WL8字模移进LED点阵平面,再经后8个时钟,将汉字又一位一位地移出。移位设计参考文献中有关移位寄存器的设计,分计数值为“0000"和非"0000"两部分处理,对第一行字模的处理为:

其他行可按相同方法处理,具体参见如下的程序:

右移处理方法与上面左移相反,如对第一行可按如下方法处理:

上移时的部分程序按以下思路编制:L10~L70在CNT_YW为初态“0000”时,各信号均赋值X“00”,非初态时,均进行上移一位。即:L10<=L20;L20<=L30;…;L60<=L70;L70<=L80;对于L80,在汉字移进LED过程中即前8个状态各移进一个新行,在移出LED即后8个状态时,都补进X“00”。程序如下:

下移程序可按相反思路去编。

3.4 显示模块DISP设计

显示模块DISP是以CNT_SM为扫描计数器,是对1kHz进行三位循环计数,由前述的时钟计数产生模块产生,WLl~WL8为待送出显示的8个8位字型码,由前述的移位模块YW提供;SW[7..O]为行扫描输出信号,连接至点阵的8个行;DATA[7..0]为行扫描时对应的列输出字型码,对外连至点阵的8列。该模块参考文献中数码管动态显示程序进行设计如下:

4 硬件实现

上述各模块分别在QualtusⅡ中通过了仿真验证,最后对整体设计进行了硬件验证。将设计载入

KH31001开发板的Cyclone工系列EPlC6Q-240C8FPGA器件中,实验证明汉字滚动显示扫描情况均正常,能够按照预想进行移位显示,这说明。FPGA的内核硬件工作良好,可以正确地实现所要求的设计功能。

5 系统扩展

本文是针对8×8点阵设计,故每次取8个字形码,如果是16×16点阵,将RONZI中存储的字形码改为16位,数据线改为16位,一个汉字需要16个16位的字形码,数据分配模块MUX、移位模块YW、显示模块DISP,均要将输入输出数据中的原来的8位改成相应的16位。扫描及取字型码计数器CNT_SM 应改为CNT计数器的低4位。一个16×16点阵汉字的移进移出共需32个状态。由5位的计数器提供。如

用CNT[16..0]中的14~10位作为该计数器,这可在时钟计数器产生单元CLK_GE中应做相应修改,字计数器CNT WORD按照每取16个字进行加1统计。显示DISP部分的译码器要由3-8译码改为4-16译码。显示的汉字信息越多,ROM的地址线位数越多,字计数器CNT_WORD应在时钟计数器产生单元GE_CLK中,将相应的计数器位数扩展,由CNT计数器的最高位到位15来承担。若还是8个汉字,计数器应为CNT[17..O],CNT[17..15]为字计数器;若为16个汉字,计数器应为CNT[18..O],CNT[18..15]为字计数器,…,依次类推。

6 结语

本文在KH31001开发板上实现了基于Altera公司的Cyclone I系列FPGA器件EPlC6Q240C8硬件及VHDL硬件描述语言设计的LED点阵汉字滚动显示,能在8×8点阵上滚动显示“元旦生日开心快乐”8个汉字。文中从LED点阵显示汉字的原理阐述出发,给出了点阵汉字滚动显示控制器的原理图,部分模块的VHDL源程序及时序仿真图,并能由按键选择其滚动方式:左移、右移、上移、下移等,给出了系统扩展成16×16点阵汉字滚动的改动思路。从文中描述的系统扩展方案中看出,当系统显示字符个数变化时,只需对控制逻辑和连接关系做适当的修改,再将修改完成的程序下载到器件即可,显然,系统的维护和修改是极其方便和容易的,本文对同类设计也具有一定的参考价值。

来源:肥猪宝宝

该文章来至网络或用户,仅供学习交流之用,版权归原作者所有。

点阵显示汉字滚动图解

点阵的汉字滚动实现其实很简单,用一句话概括就是:一边在行(列)上进行扫描,一遍循环依次取出显示代码输入到列(行)上。 以我们板上载有的8×8点阵为例,当要实现2个汉字的滚动时,我们把整个滚动的过程拆开,会发现每一次完整的滚动,点阵要显示2×8=16个状态。我们可以把两个汉字的行(或列)扫描代码通过字模提取软件提出后保存在数组里,然后顺序循环的去取数组里的数据放到行(或列)上就可。 我们用图示来解析一下整个过程。我们假设要显示两个汉字”人”和”天”的左右滚动。 首先我们假设在行和列的输入数据中,1代表亮,0代表灭。数组code里保存好从字模软件中按行提取出来的扫描码,假设code[15]=A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7(A代表“人”字的列扫描码,B代表“天”字的列扫描码) 思路是这样的: 第1个时段T1:(完整的汉字“天”) 时刻t0,R=0000_0001,L=A0,R0那一列显示;、 时刻t1,R=0000_0010,L=A1,R1那一列显示; 时刻t2,R=0000_0100,;L=A2,R2那一列显示; ……. 时刻t7,R=1000_0000,;L=A7,R7那一列显示; 然后又回到时刻t0的扫描状态,循环扫描。只要在这个T1时间段内按这样扫描的话,就形成了A0—A7所代表的数据,即汉字“人”

第2个时段T2:(开始滚入“天”字) 时刻t0,R=0000_0001,L=A1,R0那一列显示;、 时刻t1,R=0000_0010,L=A2,R1那一列显示; 时刻t2,R=0000_0100,L=A3,R2那一列显示; ……. 时刻t7,R=1000_0000,L=B0,R7那一列显示;“天”字第1列 然后又回到时刻t0的扫描状态,循环扫描。只要在这个T2时间段内按这样扫描的话,就形成了A1—A7和B0所代表的数据,如下图: 第3个时段T3: 时刻t0,R=0000_0001,L=A2,R0那一列显示;、 时刻t1,R=0000_0010,L=A3,R1那一列显示; 时刻t2,R=0000_0100,;L=A4,R2那一列显示; ……. 时刻t6,R=1000_0000,L=B0,R6那一列显示;“天”字第1列 时刻t7,R=1000_0000,L=B1,R7那一列显示;“天”字第2列 然后又回到时刻t0的扫描状态,循环扫描。只要在这个T3时间段内按这样扫描的话,就形成了A1—A7和B0--B1所代表的数据,如下图: 第4个时段T4: 时刻t0,R=0000_0001,L=A2,R0那一列显示;、 时刻t1,R=0000_0010,L=A3,R1那一列显示; 时刻t2,R=0000_0100,;L=A4,R2那一列显示; ……. 时刻t5,R=1000_0000,L=B0,R5那一列显示;“天”字第1列 时刻t6,R=1000_0000,L=B1,R6那一列显示;“天”字第2列 时刻t7,R=1000_0000,L=B2,R7那一列显示;“天”字第3列 然后又回到时刻t0的扫描状态,循环扫描。只要在这个T4时间段内按这样扫描的话,就形成了A1—A7和B0—B2所代表的数据,如下图:

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

毕业设计(论文)开题报告 设计(论文)题目基于FPGA的LED 16×16点阵汉字显示设计 一、选题的背景和意义: LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。受到体育场馆用LED显示屏需求快速增长的带动,近年来,中国LED 显示屏应用逐步增多。目前,LED已经广泛应用在银行、火车站、广告、体育场馆之中。而随着奥运会、世博会的临近,LED显示屏将广泛的应用在体育场馆以及道路交通指示中,LED显示屏在体育广场中的应用将出现快速增长。 因此,本设计是很有必要的,之所以基于FPGA设计是因为现场可编程门阵列(FPGA)设计周期小,灵活度高,适合用于小批量系统,提高系统的可靠性和集成度。并且采用编写灵活的VHDL 语言编写主程序。本设计可以方便的应用到各类广告宣传中。 二、课题研究的主要内容: 1. 实现16×16点阵的汉字显示; 2. 实现有限汉字显示; 4. 实现汉字的滚动显示; 5. 完成方案论证。 三、主要研究(设计)方法论述: 通过去图书馆查阅书籍收集资料,同时在搜索引擎上检索资料,分析借鉴已有类似产品、设计方案与成功经验,选择几种可行方案比对,最后确定最切实可行的方案展开设计。 通过Multisim或Quartus软件对系统进行模拟仿真,对电路功能进行改进与完善。 在EDA试验箱上进行调试。 四、设计(论文)进度安排:

时间(迄止日期)工作内容 2010.5.17-5.23 理解并确认毕业设计任务书,撰写完成毕业设计开题报告(第1周) 2010.5.24-5.30 完成调研与资料收集、整理 (第2周) 2010.5.31-6.6 设计方案及原理框图确定 (第3周) 2010.6.7-7.4 电路资料收集,单元电路设计 (第4、5、6、7周) 2010.7.5-7.18 电路仿真与改进、完善 (第8、9周) 2010.19-8.1 资料整理 (第10、11周) 2010..8.2-8.8 书写毕业设计报告 (第12周) 2010.8.9-8.16 (第13周)修改毕业设计报告并整理装订 五、指导教师意见: 指导教师签名:年月日六、系部意见: 系主任签名:年月日 目录

16×16点阵滚动显示汉字c51程序

16×16点阵滚动显示汉字c51程序 给大家共享一个51单片机驱动的16×16点阵滚动显示汉字的程序,是公车上用的。 下载源代码 #include #define int8 unsigned char #define int16 unsigned int #define int32 unsigned long int8 flag; int8 n; int8 code table[][32]={ 欢迎您乘坐广州三汽公司公共汽车大学城2线开往大学城请您坐好扶稳 具体的字码省略,请点此处下载本列16×16点阵汉字滚动显示源代码 }; void delay(void); int16 offset; void main(void) { int8 i; int8 *p; flag=0x10;

n=0; TMOD=0x01; TH0=0xb1; TL0=0xe0; ET0=1; EA=1; TR0=1; p=&table[0][0]; while (1) { for (i=0;i<8;i++) //显示左半边屏幕 { P0=*(p+offset+2*i); P2=i|0x08; //P2.4=0,P2.3=1 选中U2, 输出扫描码给U6 delay(); P0=*(p+offset+2*i+1); P2=i|0x10; //P2.4=1,P2.3=0 选中U3, 输出扫描码给U7 delay(); } for (i=8;i<16;i++) //显示右半边屏幕 {

P0=*(p+offset+2*i); P2=(i-8)|0x20; //P2.5=1 P2.4=0, P2.3=0 选中U4,输出扫描码U8 delay(); P0=*(p+offset+2*i+1); P2=(i-8)|0x40; //P2.6=1 P2.5=0, P2.4=0 选中U5,输出扫描码U9 delay(); } } } void delay(void) { int16 i; for (i=0;i<50;i++) ; } void timer0() interrupt 1 using 3 { TF0=0; TH0=0xb1; TL0=0xe0; if (n1100)

16 16点阵LED循环显示汉字汇编语言设计

LED16X16点阵显示 课程设计报告 学院信息工程学院 专业通信工程 班级0801 学生姓名 指导老师 二0一0年十二月 一、设计目的 本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。 二、设计内容 利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED点阵显示。要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。 三、硬件电路设计 整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。该电路可静态显示1个16*16位的汉字,也可循环显示。 1、8255 Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。可由程序来改变其功能,通用性强、使用灵活。通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。 2、138译码器 译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故

使能端必须加以处理,否则无法实现需要的逻辑功能。发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。 3、373锁存器 74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。当OE接地时,若G为高电平,74LS373接收由PPU输出的地址信号;如果G为低电平,则将地址信号锁存。工作原理:74LS373的输出端O0—O7可直接与总线相连。当三态允许控制端OE为低电平时,O0—O7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0—O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。 4、LED动态显示原理 LED点阵显示系统中各模块的显示方式:有静态和动态显示两种。静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲电压驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的列数据信号,反复循环以上操作,就可显示各种图形或文字信息。 点阵式LED绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视觉暂留特性。将连续的几帧画面高速的循环显示,只要帧速率高于24帧/秒,人眼看起来就是一个完整的,相对静止的画面。最典型的例子就是电影放映机。在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在LED显示技术中被广泛使用。 以8×8点阵模块为例,说明一下其使用方法及控制过程。图2.1中,红色水平线Y0、Y1……Y7叫做行线,接内部发光二极管的阳极,每一行8个LED的阳极都接在本行的行线上。相邻两行线间绝缘。同样,蓝色竖直线X0、X1……X7叫做列线,接内部每列8个LED的阴极,相邻两列线间绝缘。 在这种形式的LED点阵模块中,若在某行线上施加高电平(用“1”表示),在某列线上施加低电平(用“0”表示)。则行线和列线的交叉点处的LED就会有电流流过而发光。比如,Y7为1,X0为0,则右下角的LED点亮。再如Y0为1,X0到X7均为0,则最上面一行8个LED 全点亮。 现描述一下用动态扫描显示的方式,显示字符“B”的过程。其过程如图3.1 图3.1用动态扫描显示字符“B”的过程 Proteus中只有5×7和8×8等LED点阵,并没有16×16LED点阵,而在实际应用中,要良好地显示一个汉字,则至少需要16×16点阵。下面我们就首先介绍使用8×8点阵构建16×16点阵的方法,并构建一块16×16LED点阵,用于本次设计。

16-16点阵LED显示汉字汇编语言

LED16X16点阵显示课程设计报告 学院 专业 班级 学生 指导老师

一、设计目的 本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。 二、设计容 利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED点阵显示。要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。 三、硬件电路设计 整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。该电路可静态显示1个16*16位的汉字,也可循环显示。 1、8255 Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。可由程序来改变其功能,通用性强、使用灵活。通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。 2、138译码器 译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。 3、373锁存器 74LS373是低功耗肖特基TTL8D锁存器,有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。当OE接地时,若G为高电平,74LS373接收由PPU输出的地址信号;如果G为低电平,则将地址信号锁存。工作原理:74LS373的输出端O0—O7可直接与总线相连。当三态允许控制端OE为低电平时,O0—O7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0—O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器部的逻辑操作不受影响。当锁存允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。 4、LED 动态显示原理 LED点阵显示系统中各模块的显示方式:有静态和动态显示两种。静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲电压驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的列数据信号,反复循环以上操作,就可显示各种图形或文字信息。 点阵式LED绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视

16×16点阵LED显示汉字

以下程序在16×16点阵LED上依次显示“梅川酷子”四个字,分别用正向显示和反向显示,间隔两秒钟变换一次,电路图和效果图下图所示。 AT89c52晶振频率为24MHz,用T0定时,改变变量flag值,从而让程序确定显示哪个汉字和显示方式(正向or反向)。 #include 或者#include #define int8 unsigned char #define int16 unsigned int #define int32 unsigned long int8 flag; /* flag变量 MSB 7 6 5 4 3 2 1 0 LSB × ×× Bit5=1,Bit4=0 时,负向显示 Bit5=0,Bit4=1 时,负向显示 Bit[2..0]74HC138的片选信号 */ int8 n; int8 code table[][32]={ {0x88,0x00,0x88,0x00,0x88,0x7F,0x48,0x00,0xDF,0x1F,0xA8,0x10,0x9C,0x1 2,0xAC,0x14,0xEA,0x7F,0x8A,0x12,0x89,0x14,0x88,0x10,0x88,0x7F,0x08,0x 10,0x08,0x14,0x08,0x08},/*"梅",0*/ {0x08,0x20,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x2 1,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x04,0x 21,0x04,0x20,0x02,0x00},/*"川",1*/ {0x00,0x08,0xFE,0x08,0x28,0x0A,0x28,0x7E,0xFE,0x0A,0xAA,0x09,0xAA,0xF F,0xEA,0x00,0x86,0x00,0x82,0x7E,0xFE,0x42,0x82,0x42,0x82,0x42,0xFE,0x 7E,0x82,0x42,0x00,0x00},/*"酷",2*/ {0x00,0x00,0xF8,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x0 1,0x00,0x41,0xFE,0xFF,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x 01,0x40,0x01,0x80,0x00}/*"子",3*/ }; void delay(void); void main(void){ int8 i; int8 j; int8 index;

点阵式LED滚动汉字显示屏

点阵式LED滚动汉字显示屏原 1.引言 点阵式LED组成的汉字显示屏在公共场所应用非常广泛。例如,车站发车时间提示、股票大厅中的股票价格显示板、商场的活动广告栏、候机厅的起飞时间表。点阵显示器的特点是可以按照需要的大小、形状和颜色进行组合,用单片机控制实行各种文字或图型的变化 2.硬件电路设计 点阵式LED滚动汉字显示屏硬件电路设计框图如图1所示。电路包括单片机、电源电路、时钟电路、复位电路、驱动电路和LED点阵电路等。本设计的核心是利用单片机读取显示字型码,通过驱动电路对16×16 LE D点阵进行动态列扫描,以实现汉字的滚动显示。本设计选用的单片机为ATMEL公司的AT89C52,显示屏采用16×16 LED点阵。电源电路通过变压整流元件为单片机和其他电路提供稳定的+5V工作电压。时钟电路是单片机的驱动电路,复位电路可在需要时,手动使单片机程序计数器复位清零。通过阳极驱动电路向16×16点阵送字型码,本设计采用74LS273。通过阴极驱动电路对16×16点阵进行列扫描,本设计采用74HC138。 图1 硬件电路设计框图 利用Proteus软件设计点阵式LED滚动汉字显示屏硬件电路原理图如图2 所示。在Proteus软件中,单片机模型本身包含了工作电源和可改变的工作频率,因此在仿真时无需设计电源电路和时钟电路。需要说明的是在Proteus软件目前版本中还没有16×16点阵模块,本设计中采用Proteus软件中现有的8×8点阵模块组合成一个16×16点阵模块。从图2中可以看出,16×16点阵的阳极驱动由P0口经输出缓冲器74LS273构成,在本设计中需要用两片,分别送出上8行和下8行的字型码。16×16点阵的阴极驱动由P2口经74HC138译码后动态扫描16×16点阵的各列,本设计中需要四片74HC138译码器,循环扫描各列,显示一个完整的汉字需要扫描32次。RP3为排阻,含有8个电阻,作P0口各位的上拉电阻,以保证P0口能够输出高电平。复位电路的作用是,在任何时刻可以手动复位单片机,使程序重新执行。

EDA16x16点阵滚动动画显示

四、课程设计的总体步骤 1、单个字符的显示(如:黄): library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity xianshi is port( clk2:in std_logic; rck,sck:out std_logic; si:out std_logic); end ; architecture one of xianshi is signal sel:std_logic_vector(3 downto 0); signal q: std_logic_vector(31 downto 0); signal i:integer range 0 to 31; signal coi:std_logic;

begin process(sel,clk1) begin case sel is when"0000"=>q<="00000100000000000111111111111111"; when"0001"=>q<="00000100000000011011111111111111"; when"0010"=>q<="00100100000000011101111111111111"; when"0011"=>q<="00100101111110101110111111111111"; when"0100"=>q<="00100101010100101111011111111111"; when"0101"=>q<="11111101010101001111101111111111"; when"0110"=>q<="00100101010100001111110111111111"; when"0111"=>q<="00100111111100001111111011111111"; when"1000"=>q<="00100101010100001111111101111111"; when"1001"=>q<="11111101010101001111111110111111"; when"1010"=>q<="00100101010101001111111111011111"; when"1011"=>q<="01100111111100101111111111101111"; when"1100"=>q<="00100100100000101111111111110111"; when"1101"=>q<="00001100000000011111111111111011"; when"1110"=>q<="00000100000000001111111111111101"; when"1111"=>q<="00000000000000001111111111111110"; when others =>null;

16215;16点阵滚动显示汉字c51程序

16×16点阵滚动显示汉字c51程序给大家共享一个51驱动的16×16点阵滚动显示汉字的程序,是公车上用的。 下载源代码 #include #define int8 unsigned char #define int16 unsigned int #define int32 unsigned long int8 flag; int8 n; int8 code table[][32]={ 欢迎您乘坐广州三汽公司公共汽车大学城2线开往大学城请您坐好扶稳 具体的字码省略,请点此处下载本列16×16点阵汉字滚动显示源代码 }; void delay(void); int16 offset; void main(void) { int8 i; int8 *p; flag=0x10;

n=0; TMOD=0x01; TH0=0xb1; TL0=0xe0; ET0=1; EA=1; TR0=1; p=&table[0][0]; while (1) { for (i=0;i<8;i++) //显示左半边屏幕 { P0=*(p+offset+2*i); P2=i|0x08; //P2.4=0,P2.3=1 选中U2, 输出扫描码给U6 delay(); P0=*(p+offset+2*i+1); P2=i|0x10; //P2.4=1,P2.3=0 选中U3, 输出扫描码给U7 delay(); } for (i=8;i<16;i++) //显示右半边屏幕 {

P0=*(p+offset+2*i); P2=(i-8)|0x20; //P2.5=1 P2.4=0, P2.3=0 选中U4,输出扫描码U8 delay(); P0=*(p+offset+2*i+1); P2=(i-8)|0x40; //P2.6=1 P2.5=0, P2.4=0 选中U5,输出扫描码U9 delay(); } } } void delay(void) { int16 i; for (i=0;i<50;i++) ; } void timer0() interrupt 1 using 3 { TF0=0; TH0=0xb1; TL0=0xe0; if (n1100)

VHDL点阵显示

数字电路课程设计报告 课程:基于FPGA的点阵显示控制器的设计 学院:电气信息工程学院 专业:测控技术与仪器 班级: 姓名: 学号: 合作者姓名: 日期:

一、引言 随着我国经济的高速发展,对公共场合发布信息的需求日益增长,利用LED 点阵滚动显示汉字的出现正好适应了这一市场需求,已经成为信息传播的一种重要手段。 采用传统方法设计的汉字滚动显示器,通常需要使用单片机、存储器和制约逻辑电路来进行PCB板级的系统集成。尽管这种方案有单片机软件的支持较为灵活,但是由于受硬件资源的限制,未来对设计的变更和升级,总是难以避免要付出较多研发经费和较长投放市场周期的代价。随着电子设计自动化(EDA)技术的进展,基于可编程FPGA器件进行系统芯片集成的新设计方法,也正在快速地到代基于PCB板的传统设计方式。因此,基于FPGA和VHDL语言实现在8*8点阵上的汉字静态或一屏显示问题。 二、课题要求 (1)技术要求 1根据电路特点,用层次设计概念。将此设计任务分成若干模块,规定每一模块的功能和各模块之间的借口,透视加深层次化设计概念; 2软件的原件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合; 3适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同,有更深一步了解。熟悉了FPGA设计的调试过程中手段的多样化; 4按适配划分后的管脚定位,同相关功能块硬件电路接口连线; (2)功能要求 1在8*8点阵上显示汉字 2可以静态显示或一屏显示 3利用拨码开关来实现静态显示与一屏显示切换 (3)本人的工作 三、设计方案 (1)工作原理 8*8点阵原理:按照要求可知,点阵模块,共由8*8=64个发光二极管组成,如何在该点阵模块上显示汉字是本实验的关键。 先将要显示的每幅图像画在8*8共64个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,五笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形矿上的分布以“正”为例,点阵分布为: 10000000 10000001 11110001 10000001 11111111 10001001 10001001 10000000 (2)原理框图

汉字滚动显示

数字系统课程设计<汉字滚动显示> 学生姓名:班级学号:指导老师:

实验5 一.实验名称:汉字滚动显示 二.实验学时:9学时 三.实验目的 1、深入了解Verilog HDL语言语法 2、学会独立思考、设计及实现较大规模的数字电路系统 四.实验内容 1.用8×8点阵显示屏滚动显示至少4个汉字; 2.可以用拨码开关控制左、右滚动显示。 五.实验仪器 1.PC机 2.数字系统设计实验开发板 六.实验分析 汉字滚动显示原理为依次对多汉字抽取像素信息,并按序排队存放于ROM之中,便可得到一个待显示数据序列。进一步通过寻址的方法来控制该数据序列的释放过程,就可实现在8×8 LED 发光二极管点阵上滚动显示多汉字信息的目的。下图给出的就是实现滚动显示多汉字信息的原理示意图。

由图可知,某一时刻能在显示数据序列中定位待显示数据的地址指针可用下式计算:addr=n+m。显然,n的取值范围应为0~N,并由它控制汉字显示的滚动速度;m的取值范围应为0~7,并由它决定LED点阵的开关的扫描速度。因此,控制n扫遍全部待显示数据的时间,可调节汉字信息的滚动速度;改变m的重复扫描周期,可改善在LED点阵上显示完整汉字信息的稳定性。由此可见,要实现汉字向左滚动,则汉字信息定位指针依次加1,如果实现汉字向右滚动,则依次减1。 七、实验步骤 1.根据实验要求作预习。 2.建立工程,设计程序: 1)新建工程;

2)新建verilog HDL文件(注:文件名和模块名称要和工程名保持一致)。 3)调试程序:见实验附录 3. 配置管脚: 参照实验指导中的管脚图,配置管脚。

4.下载到开发板,观察实验结果(见实验结果),尝试创造自己的实验方案。 八、实验结果 显示“天天开心”

16X16点阵显示汉字

课程设计题目:16*16点阵显示汉字 学院:电气工程与自动化学院 班级:ZB02131 姓名:单智显 学号:ZB0213106 指导老师:卢振利 完成日期:2013 年12月15日

目录 1.概述-------------------------------------------------------------------3 2.硬件设计-------------------------------------------------------------3 2.1 16×16点阵LED原理及应用------------------------------------------3 2.2、LED点阵的显示文字图形原理------------------------------------4 2.3点阵的移动---------------------------------------------------------------5 2.4 74HC595芯片-----------------------------------------------------------6 3.流程图----------------------------------------------------------------7 4.程序-------------------------------------------------------------------8 5.仿真图---------------------------------------------------------------11 6.参考文献------------------------------------------------------------12

基于FPGA的LED_16×16点阵汉字显示设计(终搞)范文

基于FPGA的LED显示屏的设计 丁莹莹 (陕西理工学院物理与电信工程学院通信工程专业2010级3班,陕西汉中) 指导教师:郑争兵 [摘要]主要研究基于FPGA的 Led点阵汉字滚动显示。首先描述了基于现场可编程门阵(FPGA)的硬件电路,以及点阵显示汉字的原理;然后在单个16X16 LED发光二极管点阵上滚动汉字的原理;最后给出了描述其功能的VHDL 语言程序设计方法。通过编程、调试、仿真、下载正确地实现了汉字滚动显示扫描结果,其硬件系统的实验验证也获得了与软件模拟仿真结论相吻合的结果。 [关键词]LED点阵;FPGA;VHDL语言;汉字滚动显示

The design of LED display based on FPGA Ding Yingying (Grade10,Class3,Major of Communication Engineering,School of Physics and Telecommunication Engineering , Shaanxi University of Technology, Hanzhong ,Shaanxi) Tutor: Zhen Zhengbing [Abstract]Primary research is based on FPGA, Led Scrolling dot matrix characters. First described based on field programmable gate array (FPGA) hardware circuit, as well as the principle character dot matrix display; and then in a single 16X16 LED scrolling LED dot matrix on the principles of Chinese characters; Finally, the VHDL description language program of its functions design. Through programming, debugging, simulation, download the correct character scroll achieved scan results, the experimental verification of its hardware and software are also obtained findings consistent with simulation results. [Keywords]LED dot-matrix; FPGA; VHDL language; character scrolling displa 2

8-8 点阵汉字滚动显示

VHDL/EDA实习报告 设计题目:基于FPGA的8*8点阵汉字滚动显示设计者:孙建章 学号:15号 班级:电子10-1 指导老师:赵玉刚 实习时间:2013/3/11~21

FPGA设计的特点 FPGA 通常被认为是ASIC 实现的一种替代手段. 一般ASIC 包括三种, 既全定制、半定制(含标准单元和门阵列) 以及可编程器件。对于前两种, 需要支付不可重复使用的工程费用NRE (Non recurring Engineering) , 主要用于芯片的流片、中测、分析的工程开销, 一次费用一般在1 万至数万美元以上。如果一次不成功、返工、甚至多次返工,NRE 费用将要上升。成本高、风险大, 而通常对每个ASIC 品种的需求量往往不大,NRE 费用分摊到每个产品上价太高, 用户无法接受。而对于可编程器件PLD (Programmable Logic Device) 正是可以解决上述问题的新型ASIC, PLD 以其操作灵活、使用方便、开发迅速、投资风险小等突出优点, 特别适合于产品开发初期、科研样品研制或小批量的产品. FPGA 是一种新型的PLD, 其除了具有PLD 的优点外, 其规模比一般的PLD 的规模大。目前,Xilinx 推出的XC4025 可以达到25000 门的规模,Altera 公司的FLEX10K100 系列芯片可达到十万门的规模,完全可以满足用户的一般设计需要。 FPGA 的主要特点是: 寄存器数目多, 采用查找表计数,适合时序逻辑设计。但是互连复杂, 由于互连采用开关矩阵,因而使得延时估计往往不十分准确。 FPGA 也有其自身的局限性, 其一就是器件规模的限制,其二就是单元延迟比较大。所以, 在设计者选定某一FPGA器件后, 要求设计者对器件的结构、性能作深入的了解, 在体系结构设计时, 就必须考虑到器件本身的结构及性能, 尽可能使设计的结构满足器件本身的要求. 这样就增加了设计的难度。 离开对FPGA 结构的详细了解, 设计人员就不可能优化设计。因而设计人员必须了解FPGA 器件的特性和限制, 熟悉FPGA 的结构。 在了解FPGA 结构特点的基础上, 就可以利用VHDL 语言描写出高效的电路描述实现性能优化的电路。 设计的主要工作 本设计需要利用EDA工具软件QuartusII编写并调试系统的VHDL程序。并且每一个模块都在这个软件下进行了仿真。系统的VHDL程序编好过后先在实验室的EDA实验箱上下载调试,成功过后再根据电路焊接相应的电路板。最好将程序下载到制好的电路上验证。

点阵式LED滚动汉字显示屏原理及设计思路

点阵式LED滚动汉字显示屏原理及设计思路 1.引言 点阵式LED组成的汉字显示屏在公共场所应用非常广泛。例如,车站发车时间提示、股票大厅中的股票价格显示板、商场的活动广告栏、候机厅的起飞时间表。点阵显示器的特点是可以按照需要的大小、形状和颜色进行组合,用单片机控制实行各种文字或图型的变化,达到广告宣传和提示的目的。 Proteus是一款新颖的嵌入式系统软硬件设计仿真平台,特别适用于单片机仿真,能够在线、实时仿真多种类型的单片机,诸如MCS-51系列单片机、PIC 单片机、AVR单片机等,能够像硬件仿真器一样进行软硬件调试,而没必要花钱去购买和维护价格不菲的仿真器,对于初学单片机的人来说,既减少了学习成本,又达到了良好的学习效果。 2.硬件电路设计 点阵式LED滚动汉字显示屏硬件电路设计框图如图1所示。电路包括单片机、电源电路、时钟电路、复位电路、驱动电路和LED点阵电路等。本设计的核心是利用单片机读取显示字型码,通过驱动电路对16×16 LED点阵进行动态列扫描,以实现汉字的滚动显示。本设计选用的单片机为ATMEL公司的AT89C52,显示屏采用16×16 LED点阵。电源电路通过变压整流元件为单片机和其他电路提供稳定的+5V工作电压。时钟电路是单片机的驱动电路,复位电路可在需要时,手动使单片机程序计数器复位清零。通过阳极驱动电路向16×16点阵送字型码,本设计采用74LS273。通过阴极驱动电路对16×16点阵进行列扫描,本设计采用74HC138。 图1 硬件电路设计框图 利用Proteus软件设计点阵式LED滚动汉字显示屏硬件电路原理图如图2 所示。在Proteus软件中,单片机模型本身包含了工作电源和可改变的工作频率,因此在仿真时无需设计电源电路和时钟电路。需要说明的是在Proteus软件目前版本中还没有16×16点阵模块,本设计中采用Proteus软件中现有的8×8点阵模块组合成一个16×16点阵模块。从图2中可以看出,16×16点阵的阳极驱动由P0口经输出缓冲器74LS273构成,在本设计中需要用两片,分别送出上8行

led点阵滚动汉字显示设计

下面给大家介绍下我制作的16*16led点阵设计,希望与各位电子爱好者共同讨论,共同进步。 下图是电路图连接图 下面是74HC1544线-16线译码器引脚说明,以及地址/全能输入对应的输出表。

滚动显示C程序如下。

#include <> #include <> #define uchar unsigned char #define uint unsigned int char code YD[]={ 0x01,0x00,0x01,0x00,0x7F,0xFC,0x03,0x80, 0x05,0x40,0x09,0x30,0x31,0x0E,0xDF,0xE4, 0x00,0x80,0x01,0x00,0x7F,0xFE,0x01,0x00, 0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,/*"李"*/ 0x20,0x40,0x30,0x40,0x24,0x4C,0x42,0x70, 0xFF,0x44,0x42,0x46,0x00,0x7C,0x7E,0x00, 0x42,0x40,0x7E,0x4C,0x42,0x70,0x7E,0x40, 0x42,0x44,0x42,0x46,0x4A,0x3C,0x44,0x00,/*"能"*/ 0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0, 0x08,0x10,0x0F,0xF0,0x00,0x00,0xFF,0xFE, 0x01,0x00,0x09,0x00,0x09,0xF8,0x09,0x00, 0x15,0x00,0x23,0x00,0x40,0xFE,0x00,0x00,/*"是"*/

16乘16LED点阵汉字显示程序

efan 23:04:26 有对汉字LED点阵显示熟悉的朋友吗? 要下雨了23:04:51 什么问题 typhoon 23:04:54 恩 efan 23:05:11 有段程序看不太懂 efan 23:05:26 #include #define int8 unsigned char #define int16 unsigned int #define int32 unsigned long int8 flag; int8 n; int8 code table[][32]={ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00},/*

" " */ {0x04,0x28,0x08,0x24,0x32,0x22,0xC2,0x21,0xC2,0x26,0x34,0x38,0x 04,0x04,0x08,0x18,0x30,0xF0,0xC0,0x17,0x60,0x10,0x18,0x10,0x0C, 0x14,0x06,0x18,0x04,0x10,0x00,0x00},/*"欢",0*/ {0x02,0x02,0x04,0x82,0xF8,0x73,0x04,0x20,0x02,0x00,0xE2,0x3F,0x 42,0x20,0x82,0x40,0x02,0x40,0xFA, 0x3F,0x02,0x20,0x42,0x20,0x22,0x20,0xC2,0x3F,0x02,0x00,0x00,0x0 0},/*"迎",1*/ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0 x00,0x00,0x00,0x00,0x00,0x00,0x00}/* " " */ }; void delay(void); int16 offset;

相关文档
最新文档