近年来LED点阵技术发展迅猛,LED屏已经悄悄地在我们身边普及:使用场所涉及到证券市场、银行、机场、车站、商场等等,包括北京奥运会开幕式上的“巨幅画卷”也使用了巨大的LED显示屏。LED屏以其使用寿命长、环境适应能力强、亮度高、可视角大等优点受到用户的青睐。
LED点阵对电子爱好者往往有着很大的吸引力,但是由于制作点阵屏接线过于麻烦,不具备制版条件的业余爱好者对此总是望而却步。笔者利用**电路板焊接了一块32X16大小的LED屏,使用AT89S52型单片机对其进行控制。现将资料整理出来,与广大电子爱好者分享。
整体方案与硬件电路设计
本显示屏采用列扫描、直接送行显示码的方式工作,基本显示原理在后面的软件设计部分提及。分辨率为32X16的显示屏由8个共阳型LED点阵单元构成。共阳型LED点阵单元(8X8)的结构示意图如图1,由行输入高电平点亮。
图1 LED点阵单元结构示意图
图2是8个LED点阵单元级联的接线图。R1~R16是限流电阻,用来保护LED的安全;VT1~VT32是32只PNP型三极管,在这里起到开关的作用:通过控制B01~B32来使得在任何时刻只有**的列导通以点亮该列,当列切换的速度足够快时,由于人眼的视觉暂留现象,看上去整个屏都是亮的,这就是动态扫描的基本原理。
图2 8个点阵单元的级联
其实图2已经构成一块LED屏了,如果微处理器有足够大的驱动能力和足够多的I/O口,就可以直接驱动这块LED屏了。但是为了能用AT89S52单片机来控制它,我们需要再加一些驱动电路和译码电路,以提供足够的驱动能力以及简化与单片机的连接。
行驱动电路使用两片74HC245(图3),这是比较常用的驱动芯片,当DIR接高电平时,A端为输入、B端为输出。
列扫描电路则利用了两片4-16线译码器74LS154(图4),U4、U5分别对应左、右屏。A、B、C、D为输入、Y0~Y15为输出。此外,还有CS1、CS2两根线分别使能左、右屏译码器,也就是使能左、右屏。CS1、CS2为低电平使能。
图5是AT89S52单片机**小系统电路。
图3 行驱动电路
图4 译码器扫描电路
图5 单片机电路
[page]
硬件制作
LED屏在业余条件下的制作很麻烦,光8块LED点阵单元就有128根飞线。相信对于很多朋友来说动手焊这么多飞线还是第一次,包括笔者。所以,制作过程要求有足够的细心和耐心,千万不要急于求成,每天花点时间做,这样可以**自己不会因疲倦而导致频繁出错。尽量做到零错误,否则检查起来会很麻烦。
1.元器件选择
该制作涉及到的元器件并不复杂,这里就不再细说。只是要强调一点:LED点阵单元的引脚排布并不像图1那么规则,不同规格不同型号便有区别。所以提醒大家购买LED点阵单元后,需结合所查资料和**表确定其引脚排列。就笔者使用的LG12088BH型点阵单元的引脚排列如表1(仅供参考):
表1 LG12088BH型点阵单元的引脚排列(仅供参考)
行(从上到下依次为)
|
行1
|
行2
|
行3
|
行4
|
行5
|
行6
|
行7
|
行8
|
引脚号
|
9
|
14
|
8
|
12
|
1
|
7
|
2
|
5
|
列(从左到右依次为)
|
列1
|
列2
|
列3
|
列4
|
列5
|
列6
|
列7
|
列8
|
引脚号
|
13
|
3
|
4
|
10
|
6
|
11
|
15
|
16
|
电路板选用双面**电路板,具有较硬的材质也便于焊接走线。笔者使用了一大一小两块电路板,分为显示面板和背部译码器电路板两部分。
2.硬件制作图解
笔者一直追求美观和制作工艺,虽然焊接较麻烦,但仍然没有采用“飞线一团糟”的焊接方式,较好地利用了细金属导线和质量较好的漆包线。
图6是LED显示面板,驱动芯片和三极管已焊在该板上;图7是显示面板背面的连线方法:16根行线使用细金属丝贯穿整块电路板,然后用漆包线将各个点阵单元的行引脚连接至对应行线上,再用漆包线连接处于同一竖条上的点阵单元的列引脚,此时列线与行线成矩阵状。**后再焊接限流电阻、三极管基极电阻及相关排针。电阻、排针都置于显示面板反面(图8)。
LED显示面板焊接完成后(图9),再在另一块板上焊好译码器电路(图10)。为实现译码器电路与显示面板的电气连接,笔者巧妙地利用了排针与排座(图11)。
完工后的成品如图12所示。下面就可以使用AT89S52单片机对其进行控制了(图13),如果你还没有单片机系统板,那就得再加一加班了。
图6 LED显示面板
图7 显示面板背面的连线
图8 焊接好限流电阻、三极管基极电阻及排针
图9 显示面板大功告成
图10 译码器电路板
图11 译码器电路板与显示面板通过插座连接
图12 成品
图13 利用单片机系统板对其进行控制
软件设计
1.基本显示原理
一个国标汉字是由16X16即256个点(像素)来构成的,显示一个汉字该亮哪些点这些复杂的工作都交给取模软件来完成,同时,取模软件也负责把要显示的汉字转化成程序中要用到的显示代码,代码以一定的规律表征了该亮的点(一般用“1”表示)与不该亮的点(一般用“0”表示),一共256位。单片机负责将这些代码一段一段有规律地送到LED屏,比如第一次输出表示第1列的16位代码点亮第1列、紧接着再输出16位代码去点亮第2列……直到点亮第16列然后再重新点亮第1列……,如此循环,就完成了这个汉字的显示。单片机输出的速度足够快时,由于视觉暂留现象使得人眼在同一时刻感受到了这16列输出的信息,也就是看到了这个汉字。由于AT89S52单片机是8位总线结构,一次不能输出16位代码以显示完整的一列,这样我们把一个字拆分为上下两部分,一次送8位,一共送32次,这样同样完成了一个汉字的显示。事实上这个汉字区域也可以是在256象素范围内的任何图形。
再结合硬件电路来理解本文的LED屏:显示代码是通过图3所示的驱动电路送至LED屏的,列的切换则是通过译码器控制三极管VT1~VT32依次轮流导通来实现的,也就是扫描。
2.实际例程参考(提供下载DIY小型LED点阵显示系统.rar)地址:/Soft/UploadSoft/201405/DIY.rar
本期配刊光盘里附带了一些例程和演示视频。所有例程都提供了详细的注解,清晰易懂。基于硬件制作成功的基础上可将这些程序直接下载使用。
这些程序包括:
★ LED3216显示一幅图片
★ LED3216点阵反白交替显示图片
★ LED3216点阵交替变化显示汉字
★ LED3216点阵拉幕显示图片
★ LED3216点阵拉幕显示汉字
★ LED3216点阵流动显示汉字
★ LED3216点阵模拟北京奥运会开幕式击缶画面
为方便LED屏的灵活使用,笔者在程序中设置了一系列可变参数,可根据自己的需要在程序开头进行调整。以“LED3216点阵流动显示汉字”工程为例,可以设置移动速度、显示亮度,还可以设置字体大小(**大16X16)以适应显示多种字体和大小的汉字。除了这些功能,程序还会通过计算字数来自动匹配代码长度,这样使得修改显示内容相当方便。对于AT89S52型单片机,实际可在程序里放置**过200个16X16汉字的代码。
3.关于取模软件
本期配刊光盘里还附带了图15所示的取模软件。这款取模软件不仅可以满足我们对取模字数的要求,还可以方便地设置字体、大小。当然,它也能完成特殊符号、图片的取模。针对笔者提供的所有例程,均需在该软件参数设置栏的“其他选项”里设置纵向取模、字节倒序。
图14 取模软件
结语
硬件是有限的,但软件是无穷的!相信制作成功后的你已经有用它来设计电子钟的冲动了吧?没错!在硬件的基础上,爱好者可以随意地发挥自己的想象力,利用它开发出更好的产品!