基于亚龙YL—236的32×16 LED点阵显示屏的设计
李金娟
摘 要:文章介绍了基于亚龙YL-236实验台的32×16点阵显示屏的硬件电路设计、电路驱动、软件设计,实现滚动显示16×16的汉字、8×16的数字、字母。具有结构简单,可控性好,方便实现的优点,具有一定的实际价值。
关键词:32×16点阵;74HC573;单片机
LED点阵显示屏是一种简单的汉字、数字、字母显示器,具有价廉、易于控制、使用寿命长等特点,可广泛应用于各种公共场合,如车站、码头、银行、学校、火车、公共汽车显示等。文章详细介绍了一种简单方便的32x16点阵LED显示屏的设计过程。
1 硬件系统设计
亚龙YL-236实验台32列×16行的点阵显示屏,由8个8×8行共阴点阵器组成。
一般说来,LED点阵显示屏有行共阳和行共阴两种类型,内部结构如图1所示。
本显示屏采用行共阴型LED显示屏,采取纵向扫描(即横向取模、字节倒序)、直接送横向显示码的方式工作,基本显示原理采用动态扫描显示。分辨率为32X16的显示屏由8个共阴型LED点阵单元构成。共阴型LED点阵单元(8X8)的结构示意图如图1(b),由行输入高电平点亮(在行驱动上加了ULN2803)。
8个LED点阵单元级联的电路原理,如图2所示。U1、U2分别锁存上半屏和下半屏数据,并由ULN2803反相缓冲驱动,U3-U6锁存数据并直接驱动LED显示。因为本显示屏采用行共阴LED,而行数据经过ULN2803反相缓冲驱动,所以行数据和列数据都是高电平点亮。通过控制U1(或者U2)选择上(或者下)半屏,通过控制U3-U6选择列,来使得在任何时刻只有唯一的行导通以点亮该行,当行切换的速度足够快时,由于人眼的视觉暂留现象,看上去整个屏都是亮的,这就是动态扫描的基本原理。
其实图2已经构成一块LED屏了,如果微处理器有足够大的驱动能力和足够多的I/O口,就可以直接驱动这块LED屏了。但是为了能用AT89S52单片机来控制它,我们需要再加一些驱动电路和译码电路,以提供足够的驱动能力以及简化与单片机的连接。
行驱动电路使用两片74HC573和两片ULN2803,74HC573是比较常用的驱动芯片,当LE接高电平时,D端为输入、Q端为输出。
列扫描电路则利用了四片74HC573,U3、U4、U5、U6分别对应列0、列1、列2、列3屏。U3、U4、U5、U6的LE端为高电平,D端为输入、Q端为输出。
本系统采用AT89S52单片机作控制器,整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路等部分组成。为了简化显示屏电路,降低成本,本系统在单片机部分不加字库存储器。而在PC机上编辑汉字和字符显示信息形成数组,通过keil软件编译生成hex文件,然后通过ISP下载线下载给单片机存储并进行显示处理。
2 LED点阵显示器的扫描驱动
LED显示屏驱动电路的设计应与所用控制系统相配合。驱动通常分为动态扫描型及静态锁存型驱动二大类。文章选用动态扫描型驱动电路。动态扫描型驱动方式是首先选中上半屏,先后往第0块、第1块、第2块、第3块的点阵上送横向取模字节倒序的数据,然后循环8次上半屏扫描完毕;再选中下半屏循环8次,这样子16行全部扫描完毕。只要每行的刷新速率大于50Hz,利用人眼的视觉暂留效应,人们就可以看到一幅完整的文字或画面。
编程过程中注意:
⑴向点阵发送数据时,首先将数据送总线D0-D7,然后给相关集成块发送锁存信号。当74HC573的LE(ROW0、ROW1、COL0、COL1、COL2、COL3)引脚为高电平时,D端数据被传送到其输出端Q。当LE为低电平,Q端数据被保持,不受D端影响。
⑵要点亮点阵LED,发送的行列数据都是高电平有效。
⑶行线数据是低位在上,列线数据是低位在前。
有两种扫描方式,即横向扫描和纵向扫描。扫描方式不同,取模的方式不同,字模数据不同,编程的方式也不同,结合具体的硬件电路还能够看到,显示的亮度不同。一般说来,结合亚龙YL-236实验台的点阵实际电路,选择横向取模,字节倒序,即纵向扫描的方式,这样亮度更亮一些。
先来看一下8×8行共阴点阵的横向扫描和纵向扫描方式,如图3所示。行和列数据都是高电平点亮。
本程序中汉字是16×16点阵,按照从左到右从上到下横向取模字节倒序的方式取模,取模过程如图4所示,右高位。
图4采用横向取模,字节倒序的方式进行取模,结构上左到右从上到下。那么生产的字模的表格为:从第一行开始,取左侧的8位,倒序读,0x20;接着取第一行右侧的8位,倒序读,0x01;接着取第二行左侧的8位,倒序读,0x20;接着取第二行右侧的8位,倒序读,0x01;接着取第三行左侧的8位,倒序读,0x20;……
取模之后的编码表如下:
//汉字字模表:北 //
// 汉字库: 宋体16.dot 横向取模右高位,数据排列:从左到右从上到下 //
/////////////////////////////////////////////////////////////////////////
unsigned char code tab[] = // 数据表
{
0x20,0x01,0x20,0x01,0x20,0x11,0x20,0x19,0x20,0x05,0x3E,0x03,0x20,0x01,0x20,0x01,
0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x38,0x41,0x27,0x41,0x22,0x7E,0x00,0x00,
};
3 软件系统设计
为了便于同时显示8×16的英文和16×16的汉字,把两种字模数组都存入同一个数组,统一按16字节一行,英文占一行,汉字占两行。同时,增加一个字符索引数组,以便查找它的字模。
索引字符串存到索引数组中,索引字符串中字符的序号与其在字模中的行号相同。查找一个字符在索引中的位置,就查到了相应字模行号。
本系统的软件设计流程图如图5所示,该显示程序以常用的左移为例来进行设计。
4 结语
经过实际应用证明,本显示屏可以作为信息显示装置。用于公共场所来进行信息显示,而且具有工作稳定、字符清晰、亮度适中等特点。若所显示的信息较为简单,也可直接将信息代码拷入单片机中,还可以通过外扩储存器的方式来增加显示的信息量。
[参考文献]
[1]雷林军.单片机控制装置安装与调试[M].北京:电子工业出版社,2011.
[2]杨少光.单片机控制装置安装与调试备赛指导[M].北京:高等教育出版社,2010.