嵌入式LED点阵汉字显示系统的驱动与编码
点阵LED显示原理与点阵汉字库的编码和从标准字库中提取汉字编码的方法

点阵LED显示原理与点阵汉字库的编码和从标准字库中提取汉字编码的方法。
2009年06月03日下午04:27一.实验要求编程实现中英文字符的显示。
二.实验目的1.了解LED点阵显示的基本原理和实现方法。
2.掌握三.实验电路及连线点阵显示模块WTD3088的(红色)列输入线接至内部LED的阴极端,行输入线接至内部LED的阳极端(若阳极端输入为高电平,阴极端输入低电平,则该LED点亮)。
发光点的分布如图22-0所示。
Fig 22-0 WTD3088 LED分布如图22-1示,本实验模块使用74LS374来控制列输入线的电平值。
将74LS374的某输出置0,则对应的LED阴极端被置低。
如图22-2示,本实验模块使用74LS273来控制行输入线,并通过9013提供电流驱动。
将74LS273的某输出置1,则对应的LED阳极端被置高。
每次系统重新开启或总清后,74LS273输出为全0,LED显示被关闭。
通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
Fig 22-1 LED模块及列扫描电路Fig 22-2 行扫描电路Fig 22-3地址译码电路本实验模块使用4块WTD3088组成16×16点阵,以满足汉字显示的要求。
为了方便的控制四个单元,使用了一片74LS139译码,产生四个地址片选信号:CLKR1= CSLED,CLKR2= CSLED+1,用于行控制的两片74LS273;CLKC1= CSLED+2,CLKC2= CSLED+3,用于列控制的两片74LS374。
实验接线:按示例程序,模块的CSLED接51/96地址的8000H。
四.实验说明使用高亮度LED发光管构成点阵,通过编程控制可以显示中英文字符、图形及视频动态图形。
LED显示以其组构方式灵活、亮度高、技术成熟、成本低廉等特点在证券、运动场馆及各种室内/外显示场合得到广泛的应用。
所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库(如ASC16、HZ16)中提取。
可实现汉子滚动显示的LED点阵驱动设计

74HC138真值表
74HC595 74HC595是一款漏极开路输出的CMOS移位
寄存器,输出端口为可控的三台输出端,亦 能串行输出控制下一级级联芯片。 特点:高速移位时钟频率Fmax>25mHZ 标准串行接口 CMOS串行输出,可用于多个设备的级联 低功耗:TA=25°c Icc=4μ安
下图为单色8x8的点阵内部结构图。从图可以
看出,它的每一列共有一根列线,每一行共 有一根行线,当相应的行接高电平,列接低 电平时,对应的发光二极管被点亮。
三 LED点阵的应用
点阵显示是集微电子技术、计算机技术、信
息处理于一体的新型显示方式。由于其具有 色彩鲜艳,动态范围广,亮度高,寿命长, 工作稳定可靠等优点。 不仅可以静态的显示信息,而且也可以通过 动态滚动,从而增加信息显示的容量。为了 醒目,还可以产生诸如闪动、滚动等显示效 果。
LED点阵广告牌设计
指导老师:金印彬 测控001:齐宸 10010312
内容介绍
三、LED点阵应用 四、点阵显示原理 五、元件管脚说明 六、LED点阵电路设计 七、系统原理总图及其仿真 八、总结 九、致谢
一设计背景
基于单片机的16x16点阵LED汉字显示是由LED 点阵显示屏来实现汉字的显示。LED点阵显示屏作 为一种新兴的显示期间,是由多个独立的LED发光 二极管封装而成。LED点阵显示屏可以显示数字或 符号,通常用来显示时间,速度,系统状态等。本 设计给出了一种基于MCS-51单片机的2×16×16点 阵LED显示屏的设计方案。包括系统具体的硬件设 计方案。包括系统具体的硬件设计方案,软件流程 图和部分汇编语言程序等方面。在负载范围内,只 需通过简单的级联就可以对显示进行拓展,是一种 成本低廉的图文显示方案
点阵式汉字LED显示屏电路原理与制作(精)

点阵式汉字LED显示屏电路原理与制作汉字显示屏广泛应用与汽车报站器,广告屏等。
本文介绍一种实用的汉字显示屏的制作,考虑到电路元件的易购性,没有使用8*8的点阵发光管模块,而是直接使用了256个高量度发光管,组成了16行16列的发光点阵。
同时为了降低制作难度,仅作了一个字的轮流显示,实际使用时可根据这个原理自行扩充显示的字数。
1汉字显示的原理:我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p07口。
方向为p 00到p07 ,显示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。
即二进制00000100,转换为16进制为 04h.。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。
然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04h.这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码为:04H,00H,04H,02H,04H,02H,04H,04H04H,08H,04H,30H,05H,0C0H,0FEH,00H05H,80H,04H,60H,04H,10H,04H,08H04H,04H,0CH,06H,04H,04H,00H,00H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。
点阵式汉字LED显示屏电路原理与制作(精)

点阵式汉字LED显示屏电路原理与制作引言随着现代科技的不断发展,点阵式汉字LED显示屏已经成为了人们常见的显示设备之一。
它的使用范围广泛,包括交通信号灯、信息传递广告牌、计数器以及各种显示屏幕等。
本文将介绍点阵式汉字LED显示屏的电路原理与制作方法。
电路原理点阵式汉字LED显示屏电路由LED点阵驱动、字符编码、汉字存储等部分组成,其中最重要的是LED点阵驱动电路。
LED点阵驱动电路的主要作用是将字符编码与点阵对应,控制LED点阵的纵横排列亮灭,从而完成汉字、数字和符号的显示。
LED点阵驱动原理一般的LED点阵由数个单色LED灯组成,每个LED灯都是一对正负极相接的二极管。
在LED点阵中,各个LED灯的安装形式分为共阳和共阴两种。
如果LED 点阵的共阳端和各LED灯的阳极相接,共阴端和各LED灯的阴极相连接,则属于共阳形式。
反之,如果LED点阵的共阴端和各LED灯的阴极相接,共阳端和各LED灯的阳极相连接,这种连接形式就属于共阴。
在LED点阵驱动电路中,常用的联系方式是行列驱动方式。
行驱动是指将某一行的LED灯全部亮起,列驱动则是指依次将某一列的LED灯全部亮起。
在LED点阵驱动电路中,使用逐行扫描和逐列扫描驱动方式。
逐行扫描方式就是将控制信号送到一个行选通器中,由行选通器依次将行选通信号输入到LED点阵中,显示出字符内容;逐列扫描方式就是将控制信号送到一个列选通器中,由列选通器依次将列选通信号输入到LED点阵中,显示出字符内容。
字符编码的原理汉字是由笔画组成的字符,每个汉字都有自己的字符编码。
在计算机内存中,每个汉字的编码都是由二进制数字组成的,这些数字被称为“汉字编码”。
汉字的编码方式有多种,常用的有GB2312、GB18030、Unicode、UTF-8等。
在LED点阵驱动电路中,需要将字符编码和LED点阵对应起来,完成LED点阵的控制。
汉字存储的原理汉字存储是指将字符编码和LED点阵对应的关系存储到EEPROM或Flash等芯片中。
《嵌入式接口技术》实验报告4-LED点阵显示

六、教师评语
签名:
日期:
日期:
成绩
PINSEL0=0x00000000;
IO0DIR=0x3f;
while(1)
{
screen();
}
return 0;
}
效果图:
五、分析与讨论
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复一下实验二就能够做出来。
这个实验和实验二数码管的实验差不多,只是把接受数据的一段换成了led点阵,所以难度不是很大,复习一下实验二就能够做出来。
Senddata_Row(ROW[j+1]);
Senddata_Line(LINE[j+1]);
Delay(50);
Senddata_Row(0xff);
Senddata_Line(0x00);
j=j+2;
Delay(1000);
}
}
int main (void)
{// add user source code
#define DS2 0x08
#define SH_CP1 0x02
#define ST_CP1 0x04
#define SH_CP2 0x10
#define ST_CP2 0x20
uint32 const ROW[]={0xc3,0xdb,0x87,0xb7,0x0f,0x6f,0x87,0xb7,0xc3,0xdb,0xe1,0xed,0xf0,0xf6,0xe1,0xed};
else
IO0SET=DS1;
LED点阵汉字图形显示系统的....

1.实训目的采用16*16点阵显示固定汉字或图形,要求具有一定特效功能。
2.方案设计对比方案一:采用两个74LS245芯片驱动,4个8*8点阵模块构成16*16的点阵模块,74LS245中的A 信号到B 信号,控制点阵的行,89C51的P1、P3口控制信号A 。
方案二:采用74LS164芯片,这是一个移位储存器,可以无限拓展IO 口。
原因:16*16点阵模块所需的IO 口89C51芯片可以提供,故不需要拓展,并且方案一的电路简单,容易理解 所以选择方案一3.硬件电路设计C110uF R110KXT111.0592C220P C320PVCCD14148K5RST EA/VP31X119X218RESET9RD 17WR 16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN 29ALE/P 30TXD 11RXD 10VCC 40GND 20U189S51P30P31P32P33P34P35P36P37P10P11P12P13P14P15P16P17COL15COL14COL13COL12COL11COL10COL9COL8VCCVCC123456789A14.7KC4104GND123456789A24.7KCOL0COL1COL2COL3COL4COL5COL6COL7G 19DIR 1A12B118A23B217A34B316A45B415A56B514A67B613A78B712A89B81174LS245G 19DIR 1A12B118A23B217A34B316A45B415A56B514A67B613A78B712A89B81174LS245P10P11P12P13P14P15P16P17ROW0ROW1ROW2ROW3ROW4ROW5ROW6ROW7ROW8ROW9ROW10ROW11ROW12ROW13ROW14ROW15P30P31P32P33P34P35P36P37+5V +5V 0D F 3A 1G H25E 7C B 648*8LEDC O L 0C O L 1C O L 2C O L 3C O L 4C O L 6C O L 7R O W 0R O W 1R O W 2R O W 3R O W 4R O W 5R O W 6R O W 7C L O 50D F 3A 1G H 25E 7C B 648*8LEDC O L 8C O L 9CO L 10C O L 11C O L 12C O L 14C O L 15R O W 0R O W 1R O W 2R O W 3R O W 4R O W 5R O W 6R O W 7C L O 130D F 3A 1G H25E 7C B 648*8LEDC O L 0C O L 1C O L 2C O L 3C O L 4C O L 6C O L 7R O W 8R O W 9R O W 10R O W 11R O W 12R O W 13R O W 14R O W 15C L O 50D F 3A 1G H25E 7C B 648*8LEDC O L 8C O L 9CO L 11C O L 11C O L 12C O L 14C O L 15R O W 8R O W 9R O W 10R O W 11R O W 12R O W 13R O W 14R O W 15C L O 134.程序设计#include <at89x52.h>unsigned char code hzdot[] = {/*电CB5E7 */0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x10,0x80,0x40,0x80,0x40,0x00,0x7F,0x00,0x00,/*信CD0C5 */0x10,0x01,0x30,0x06,0x18,0x02,0xE8,0x7F,0x0C,0x00,0xCC,0x1F,0x0A,0x00,0xC9,0x1F, 0x08,0x00,0xC8,0x1F,0x48,0x10,0x48,0x10,0x48,0x10,0xC8,0x1F,0x48,0x10,0x00,0x00,/*10 C3130 */0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x0E,0x24,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,0x24,0x3E,0x18,0x00,0x00,0x00,0x00,/*13 C3133 */0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x3C,0x0E,0x42,0x08,0x42,0x08,0x20,0x08,0x18,0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x42,0x08,0x22,0x3E,0x1C,0x00,0x00,0x00,0x00,/*班CB0E0 */0x80,0x00,0x9F,0x7E,0x84,0x08,0x84,0x08,0x84,0x08,0xA4,0x08,0xBF,0x7E,0xA4,0x08,0x94,0x08,0x84,0x08,0x84,0x08,0x5C,0x08,0x43,0x08,0x20,0x7F,0x10,0x00,0x08,0x00,/*楼CC2A5 */0x08,0x04,0x08,0x25,0x08,0x16,0xBF,0x7F,0x08,0x0E,0x1C,0x15,0xAC,0x64,0x0A,0x02, 0x0A,0x02,0xE9,0x7F,0x08,0x09,0x88,0x09,0x08,0x06,0x08,0x1B,0xE8,0x60,0x08,0x40,/*君CBEFD */0x00,0x00,0xFC,0x1F,0x40,0x10,0x40,0x10,0xFF,0x7F,0x20,0x10,0x20,0x10,0xFC,0x1F,0x20,0x10,0x10,0x00,0xF8,0x1F,0x18,0x10,0x14,0x10,0x12,0x10,0xF1,0x1F,0x10,0x10,/*丽CC0F6 */0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,0x7E,0x3F,0x42,0x21,0x42,0x23,0x46,0x25,0x4A,0x2D,0x5A,0x25,0x4A,0x21,0x42,0x21,0x42,0x21,0x72,0x3D,0x22,0x11,0x00,0x00 /* CAFA1 */0x00,0x00,0xDC,0x01,0x74,0x01,0x24,0x01,0x8C,0x01,0xD8,0x00,0x70,0x00,0x20,0x00,0x80,0x3B,0x80,0x2E,0x80,0x24,0x80,0x31,0x00,0x1B,0x00,0x0E,0x00,0x04,0x00,0x00/* CAFA1 */0x00,0x00,0x3C,0x3C,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x3C,0x3C,0x3C,0x3C, 0x3C,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x000x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; unsigned char buf[32];unsigned char row=0;void delay(unsigned int t){unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<300;j++);}main(){unsigned char i;unsigned int cn=0;unsigned char bank;TMOD=0x01;TH0=64536/256;TL0=64536%256;TR0=1;ET0=1;EA=1;while(1){bank=0;for(i=0;i<32;i++){buf[i]=hzdot[i+cn*2];if(buf[i]==0) bank++;}if(bank==32) cn=0;else cn++;delay(100);}}void t0_int(void) interrupt 1{ TF0=0;TH0=64536/256;TL0=64536%256;P1=0x00; P3=0x00;P0=~buf[2*row]; P2=~buf[2*row+1];if(row<8) {P1=0x01<<row; P3=0x00;}else {P3=0x01<<(row-8); P1=0x00;}row++;if(row==16) row=0;}5.调试与测试硬件电路测试方法:电路焊接完成之后,空置芯片,连接5V直流稳压电源,黑表笔接地,红表笔测量89C51芯片的40、31号管脚,74LS245芯片的1、20号管脚是否有5V电压;完成之后,由于8*8LED点阵都是由共阳二极管构成,电流方向是由行到列,74LS245控制行,89C51控制列,所以给74LS245一个高电平,89C51一个低电平;利用两根导线测量,74LS245一端接10号脚,另一端固定按11~18接一端,另一根导线接89C51芯片的20号管脚,另一端按顺序从39~32,21~28号管脚接;都亮之后,插入芯片74LS245,导线一端接89C51的20号,另一端接39~32,21~28号,测试芯片是否有用;然后用单片机烧入程序,拔下89C51芯片,插入到完成好的16*16点阵中,接入5V电源。
LED汉字点阵显示系统设计

摘要LED显示屏已经广泛应用在信息显示系统中,LED点阵电子显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。
它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。
同时也可广泛应用到宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业。
本综合设计控制部分采用8051单片机为核心,硬件由LED显示器硬件电路,LED显示屏驱动电路等组成,软件选用C语言编程。
单片机可将汉字通过软件程序控制在LED显示屏上显示。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
关键词:LED;点阵显示;单片机;目录第1章绪论 (1)1.1汉字点阵显示概述 (1)1.2本文研究内容 (1)第2章系统主要硬件设计 (2)2.1LED点阵显示系统总体设计方案 (2)2.2LED汉字显示系统主机电路 (2)2.3LED汉字点阵显示屏行驱动电路设计 (3)2.4LED汉字点阵显示屏列驱动电路设计 (4)2.5滚动显示汉字的原理 (5)第3章系统的软件设计 (7)3.1主流程图设计 (7)3.2子程序流程图 (8)3.3程序清单 (9)第4章系统仿真 (12)第5章总结 (13)参考文献 (14)附录1 (15)附录2 (16)第1章绪论1.1汉字点阵显示概述LED电子显示屏是随着计算及相关的微电子、光电子技术的迅猛发展形成的一种新型信息显示媒体。
它利用发光二极管构成的点阵模块或像素单元组成可变面积的显示屏幕,以可靠性高、使用寿命长、环境适应能力强、性能价格比高、使用成本低等特点,在短短的十来年中,迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。
1.2本文研究内容本文主要主要利用8051单片机,LED点阵显示器组成及其他一些外围电路组成点阵式汉字电子显示屏的基本原理及程序设计方法。
主要内容如下:①根据显示内容设计单片机电路连接图。
LED点阵显示屏工作原理及驱动程序

LED点阵显示屏工作原理及驱动程序LED显示屏驱动程序几年前本人得到一块双色LED显示屏,因为没有控制器,所以对显示屏的工作原理进行了一番研究,利用手头上的元件,搭了一块电路板,编写了一段程序就放置一边了,这几天有时间,把原来的89C51汇编程序改了一下,改为AT89C2051和STC11F04E单片机能用的程序,放到博客上希望有兴趣的同行可以参考一下。
下面是显示效果图:下面是接口电路板图:下面是电路原理图:工作原理:这块显示屏是分为上下共32行LED点阵,水平有4块16*16点阵,所以能显示16*16点阵8个汉字。
工作原理是用74ls138做为行扫描,列用74ls595控制,当138扫描到某一行时,595决定哪一列该亮,就这样快速扫描,就形成了图像了。
参见下图:以单色单元板为例走线方式如下图:各信号走向如下:l JP1排针16脚信号A->74HC245的第2脚(信号放大)->74HC245的第18脚->74HC138的第1脚->JP2排针16脚l JP1排针15脚信号B->74HC245的第3脚(信号放大)->74HC245的第17脚->74HC138的第2脚->JP2排针15脚l JP1排针1脚信号OE->74HC245的第4脚(信号放大)->74HC245的第16脚->74HC04D的第1脚->74HC04D的2脚->①74HC138的第5脚->②74HC04D的3脚->74HC04D的4脚->JP2排针1脚l JP1排针11脚信号R->74HC245的第9脚(信号放大)->74HC245的第11脚->最左上角74HC595-1的第14脚->74HC595-1的9脚->74HC595-2的14脚->74HC595-2的9脚->最右下角74HC595-16的14脚->74HC595-16的9脚->JP2排针11脚我现在用的是双色板,JP1各端口含义如下:ABCD是显示屏电路板上的74LS138地址译码端,单片机寄存器R3控制行扫描,当R3从00000000到00010000增加时ABCD的变化给138译码,当R3=0FH 时正好扫描16行,当进位到10时扫描结束,OE是138的片选使能端,低电平有效。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微 处 理 机M I CROPROCESS ORS嵌入式LE D 点阵汉字显示系统的驱动与编码汪 建,张丽娟(华中科技大学电气与电子工程学院,武汉430074) 摘 要:论述了一种小型嵌入式LE D 点阵显示系统的驱动电路和汉字编码方法;驱动电路采用行驱动芯片74LS273和9013,列驱动芯片74LS374,结合寻址电路,对每个LE D 点动态驱动;显示程序采用行扫描,列顺序输出码值的方法,结合四段式汉字编码方法,无间断和延迟的在LED 阵上输出汉字。
整个系统试验后运行稳定美观,功耗低,且有很大的扩展空间。
关键词:嵌入式系统;LE D 点阵;汉字显示系统;8098单片机中图分类号:TP368.1 文献标识码:B 文章编号:1002-2279(2007)01-0119-03D riving and Co d ing o n Em bedded LED A rray C hine se -C ha racte r D isp laying SystemWANG J ian,ZHANG L i -juan(College of Electrical and Electronic Engineering,Huazhong U niversity of Science and Technology,W uhan 430074,China ) Abstract:The driving circuit and a method of Chinese character coding in an embedded LE D array dis p lay syste m are discussed in this paper .74LS273and 9013work as r ow driving chi p,and 74LS374works as line driving chi p;they work with the address -seeking circuit,dyna m ically drive each LED dot;in dis p lay p r ogra m ,the app r oach of r ow -scanning,out put code in line order,with 4-seg ment coding,dis p lay Chinese character in a LE D array without pause and delay .The syste m runs steadily and aesthetically with l ow cost .It has r oom for extending functi ons .Key words:E mbedded syste m;LE D array;Chinese -Character D is p laying Syste m;8098single -chi p contr oller1 引 言LED 点阵显示系统基本原理是使用高亮度LED 发光管构成点阵,通过编程控制显示中英文字符、图形及视频动态图形。
LED 显示以其组构方式灵活、亮度高、成本低廉等特点在各种室内外显示场所得到广泛的应用[1]。
目前使用的大规模点阵显示系统采用专用大规模集成电路和专业软件实现对汉字的显示,价格昂贵且不易精简使用或开发其它可扩展功能。
因此一种可运用于小型嵌入式LE D 屏幕信息系统的研制对于实现用户灵活开发使用LED 点阵显示汉字具有重大意义。
显示字符的点阵数据可以自行编写,也可从标准字库(如ASC16、HZ16)[2]中提取。
但不管是自己编写字库还是直接调用字库,都需要正确掌握汉字的编码方法和寻址技巧[2]。
目前单片机和嵌入式系统初学者对LED 点阵显示的基本原理理解还不够深入,对其与单片机的接口和驱动等尚不很清楚。
他们急切需要一个结构清晰、易于上手学习的LE D 点阵显示试验单元来巩固所学到的书本知识。
基于实际应用和教学的需要,设计了这个高效可靠的基于8098单片机的汉字点阵式显示模块[3]。
一方面,用户可以自行编制汉字代码甚至组成字库来灵活显示所需要的语句;另一方面,可用于学生实验,使学生动手学习后深刻理解单片机对点阵式LE D 的控制原理,掌握文中所述的汉字编码方法,并同时提高搭制硬件电路的动手能力。
2 系统总述使用4块L MM -2088AE 组成16×16点阵,以满足汉字显示的要求。
点阵显示模块的列输入线接至内部LED 的阴极端,行输入线接至内部LED 的阳极端。
若某行的阳极端输入高电平,某列的阴极端输入低电平,则对应该LED 点亮。
发光点的分布如图1所示。
图1 LMM -2088AE LE D 的发光点分布汪建(1958-),男,湖北人,教授。
主研方向:智能仪器,自动检测和控制,电工理论及新技术。
收稿日期:2005-09-08第1期2007年2月No .1Feb .,2007微 处 理 机 如图2所示,本系统使用74LS374来控制列输入线的电平值。
将74LS374的某输出置0,则对应的LED 阴极端被置低;使用74LS273来控制行输入线,并通过9013提供电流驱动。
将74LS273的某输出置1,则对应的LED 阳极端被置高。
每次系统总清后,74LS273输出为全0,LED 熄灭。
编程控制各显示点对应LE D 阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
图2 点阵汉字显示系统框图3 地址译码电路本实验模块为了方便的控制四个LMM2088AE 单元,使用了一片74LS139结合8253计数器,产生四个地址片选信号:CLKR1=CS LED,CLKR2=CS LE D +2,用于行控制的两片74LS273,分别接74LS139的4、5脚;CLKC1=CS LE D +4,CLKC2=CS LE D +6,用于列控制的两片74LS374,分别接74LS139的6、7脚,如图3所示。
图3 地址译码电路4 汉字的编码与显示程序模块我国汉字数量繁多,构形迥异,给单片机控制显示系统带来了困难。
目前一般采用软件字库法和字库芯片法。
这两种方法将单片机的软硬件进行扩展后可以显示更多的汉字,适用于大型的LED 显示系统[4]。
然而,这两种方法如果应用于小型系统中,必然会占用大量软硬件资源,给用户的维护和灵活利用带来了困难。
另一方面,任何字库的基础都是单个汉字的编码。
研究一种简便适用的汉字编码方法,也为编制大型的标准字库提供了坚实的基础。
我们基于小型汉字显示系统的需要,开发出了一种美观、易于学习的16×16汉字编码方法。
试验表明此编码方法非常适用于制作醒目的小型欢迎标语等,价格低廉,性能可靠。
我们采用的方法是:行扫描,列顺序输出码值。
由于16×16点阵是由4块8×8点阵组成,所以我们理论上的一行或一列实际上是两块芯片一行或一列的合并。
如果只为了程序逻辑上的简洁,码表就会编制的很紊乱,甚至会出现LE D 点亮的时间不一致的情况。
为了解决这个问题我们使用了4段字码表,前两段是按列顺序分别输出左右两边的行码值,后两段是按行顺序分别输出上下两边的列码值。
而程序中索引码值时则采用每次读取每段码值的一个值,这种方法保证了LE D 每一列点亮时间的一致,行顺序上也因为相隔时间只有μs 级而人眼觉察不到不一致;另一方面,汉字码表的编制清晰明了,便于扩充字库。
下面我们以汉字“华”为例来说明这种编码方法。
按左上、右上、左下、右下的顺序,分别以1、2、3、4标识这四块LMM -2088AE 。
段码T ABR1按列顺序记录1、2两块的行码值,即上8行;段码T ABR2按列顺序记录3、4两块的行码值,即下8行;T ABR1和T ABR2这两段码都以高电平记录发光点段码,列顺序上的从左到右对应码值的高位到低位。
T ABC1按行顺序记录1、3两块每列的码值,即左8列;T ABC2按行顺序记录2,4两块每列的码值,即右8列。
T ABC1和T ABC2这两段码都以低・021・2007年 汪建等:嵌入式LE D 点阵汉字显示系统的驱动与编码电平记录发光点所在的行,行顺序上的从上到下对应码值的高位到低位。
由于是按行顺序输出点阵,所以这两段字码对于任何汉字都是一样的,扩充字库时可重复使用。
参考图4,下面是汉字“华”的编码: T ABR1:DB #00H,#00H,#02H,#06H,#08H,#3FH,#22H,#02HDB #3FH,#05H,#09H,#11H,#01H,#00H,#00H,#00H T ABR2:DB #00H,#00H,#20H,#20H,#20H,#0A0H,#20H,#0F8HDB #20H,#20H,#20H,#20H,#20H,#00H,#00H,#00H T ABC1:DB #7FH,#0BFH,#0DFH,#0EFH,#0F7H,#0F BH,#0F DH,#0FEHDB #0FFH,#0FFH,#0FFH,#0FFH,#0FFH,#0FFH,#0FFH,#0FFH T ABC2:DB #0FFH,#0FFH,#0FFH,#0FFH,#0FFH,#0FFH,#0FFH,#0FFHDB #7FH,#0BFH,#0DFH,#0EFH,#0F7H,#0F BH,#0F DH,#0FEH图4 汉字“华”的16×16显示寻找码值时,程序采用的不是顺序读完一段码值后再读下一段,而是每次读取每段的一个值,在一个循环中显示点阵的一行。
图5是显示模块软件流程和用MCS -96汇编语言编制的显示程序。
图5 显示模块程序流程图ST ART:LD CX,#T ABR1;初始化 LD DX,#T ABR2 LD EX,#T ABC1 LD FX,#T ABC2CD I SP:CLRB BH ;清除显示 LDB BL,#0FFH ST B BH,CLKR1[0] ST B BH,CLKR2[0] ST B BL,CLKC1[0] ST B BL,CLKC2[0]SET_H:LDB AH,#10H ;设置循环次数LOOP:;“显示”程序段 ST B BL,CLKC1[0];将所有列置高,清除上一次扫描的显示,以免干扰 ST B BL,CLKC2[0] LDB AL,[CX ]+;送第一行左八列的码值到74LS237 ST B AL,CLKR1[0] LDB AL,[DX ]+;送第一行右八列的码值到74LS237 ST B AL,CLKR2[0] LDB AL,[EX ]+;送第一列上八行的码值到74LS374 ST B AL,CLKC1[0] LDB AL,[FX ]+;送第一列下八行的码值到74LS374 ST B AL,CLKC2[0] LCALL DE LAY ;延时 LCALL CD I SP2;清除显示 DJNZ AH,LOOP以上只是举例说明了单个汉字的静态显示,本系统也可以实现多个汉字的动态显示,即在扩展的寻址空间内,依次把下一个要显示的汉字送入一个16×16点阵块,使几个汉字点阵保持“同速不同相”的显示,就可以灵活的实现用户所需的左移右移等功能。