LED显示屏广泛应用于工矿企业、学校、商场、店铺、公共场所等进行图文显示,广告宣传,信息发布。本文设计一种由4个16×16点阵LED模块组成的显示屏,由单片机作控制器,平滑移动显示任意多个文字或图形符号,本电路可级联扩展实现由任意多个16×16点阵LED模块组成的显示屏。
1 电路设计
控制电路由AT89C51单片机作控制器,显示屏由4个16×16点阵LED模块组成,每个16×16点阵LED模块由4个8×8点阵LED模块组成,用户可根据需要扩展增加任意多个16×16点阵LED模块。8×8点阵LED模块结构如图1所示,共8行8列,每个发光二极管放置在行线和列线的交叉点上,共64个发光二极管。当某一列为高电平,某一行为低电平时,则对应的发光二极管点亮。
单片机P3.0引脚接串入并出移位寄存器74LS164(U10)的串行数据输入端,8个74LS164(U10~U17)级联,P3.1引脚接8个74LSl64的时钟脉冲输入端;8个74LS164分别接8个锁存器74LS373(U18~U25),8个锁存器的数据输出端接4个16×16点阵LED模块的行线,每个16×16点阵LED模块的行线是独立控制的。P1.O接8个74LS164(U2~U9)的时钟脉冲输入端,P1.1接U2、U4、U6、U8的串行数据输入端,每两个74LSl64(U2和U3,U4和U5,U6和U7,U8和U9)级联;U2~U9的并行数据输出端接4个16×16点阵LED模块的64条列线。P1.2接所有74LSl64的清0端,P1.3接锁存器的锁存控制端。
2 工作原理
本电路利用串行通信口工作于方式0,同时利用P1.O和P1.1模拟串行输出,来实现LED显示屏字符平滑移动显示。由于LED模块为16× 16点阵,所以字符点阵也为16×16点阵,即每个字符由32个字节即16个字数据组成,每个字数据决定了每列LED点亮的情况。16×16点阵字符数据由字符点阵提取软件获得。
首先单片机P1.1串行输出一位二进制位“1”,经4组74LSl64给4个16×16点阵LED模块的第1列送入一高电平,接着由P3.O串行输出4个16×16点阵LED模块的第1列行数据,即Y1,Y17,Y33,Y49列的行数据,经74LS373锁存后送LED显示屏的行线,此时每个LED模块第1列对应的LED点亮。每列的行数据为1个字数据,4列共4个字数据,每个字数据首字节在字符点阵数据表中的地址相差32,此时每个LED模块显示每个字符的第1列。接着P1.1串行输出一位二进制位“0”,经4组74LS164移位后给4个LED模块的第2列送入一高电平,再由P3.O串行输出4个16× 16点阵LED模块的第2列行数据,即Y2,Y18,Y34,Y50列的行数据,经74LS373锁存后送LED显示屏的行线,此时每个LED模块第2列对应的LED点亮,即显示每个字符的第2列。如此循环,依次点亮每个LED模块每列对应的LED,直到点亮每个LED模块的第16列,即依次显示每个字符的各列。只要每列交替显示的时间适当,利用人眼的视觉暂留特性,看上去16列LED同时点亮,即看上去整个字符同时显示。然后再从第1列依次扫描显示至16列,如此循环多次,以确保显示出的字符具有足够的亮度。
为实现字符平滑移动显示的效果,在上面实现的4个字符静态显示一定时间后,再次扫描显示时,每个LED模块的第1列从每个字符的第2列数据开始扫描显示,即第1个LED模块显示第1个字符的第2列、第3列、……、第16列和第2个字符的第1列,第2个LED模块显示第2个字符的第2列、第3列、……、第16列和第3个字符的第1列、第2列、……。当第三次扫描显示时,每个LED模块的第1列从每个字符的第3列数据开始扫描显示,即第1个LED模块显示第1个字符的第3列、第4列、……、第16列和第2个字符的第1列、第2列,第2个LED模块显示第2个字符的第3列、第4列、……、第16列和第3个字符的第1列、第2列、……。如此实现了字符的平滑移动显示。
3 程序设计
根据以上电路设计及工作原理,绘制出本电路的控制程序流程图。按程序流程图编写出控制程序,用Wave或Keil软件调试通过后,产生目标代码文件。
4电路仿真
将目标代码文件加入用Proteus软件绘制的LED显示屏控制电路仿真图中的单片机中,仿真运行,运行结果如图4所示。
基于AT89C51单片机控制LED显示屏的电路设计
5 结语
该LED显示屏控制电路用单片机作为控制器,采用串行移位输出方式,实现了一行字符的平滑移动显示,在实际应用时还应加上相关驱动电路。本电路可扩展实现由任意多个16×16点阵LED模块组成的LED显示屏显示控制。经实际应用表明,该电路稳定可靠,效果良好。