1、点阵 LED 显示屏的原理与制作电子协会:黄世玲 截稿 2008-12-12汉字显示屏到处可见,被广泛应用于与汽车报站器,广告屏等。(图 1)网上也有很多关于汉字显示屏的制作原理的材料,本文是本人参考例说 51 单片机(C 语言版)(人民邮电出版社)并在其基础上加以修改制作成功的单个字 16*16LED 显示屏的一些经验总结。本文中的 16*16LED 显示屏是采用 4 块 8*8LED 合并而成的。下图是 4 个 8*8LED 组成的显示屏。(图 2)这里我把点阵 LED 显示屏制作的电路原理分成两个部分来介绍即显示屏电路和显示屏驱动电路。一、 显示屏电路本人用的是共阴极的 8*8 点阵屏,
2、在市场上是比较容易买到,下图是 8*8 点阵屏的实物图。(图 3)8*8 点阵屏的内部电路原理图如图 4 所示,点阵屏有两个类型,一类为共阴极(左),另一类则为共阳极(右),下图给出了两种类型的内部电路原理及相应的管脚图。(图 5)LED 阵列的显示方式是按显示编码的顺序,一行一行地显示。每一行的显示时间大约为 4ms,由于人类的视觉暂留现象,将感觉到 8 行 LED 是在同时显示的。若显示的时间太短,则亮度不够,若显示的时间太长,将会感觉到闪烁。本文采用低电平逐行扫描,高电平输出显示信号。即轮流给行信号输出低电平,在任意时刻只有一行发光二极管是处于可以被点亮的状态 ,其它行都处于熄灭状态。为
3、了方便调试本文把 4 块 8*8 组成的 16*16 的点阵屏的行信号扫描输出管脚和列信号显示输出管脚分别引到显示屏的两边。Protel 原理图如下:(图 6) 如图 6 所示的原理图中的 Si(i=1,2,3, ,16) 代表行扫描信号输出,Di(i=1,2 ,3,16)代表列显示信号输出。实物电路图的正反面如下:(图 7) 二、 显示屏驱动电路显示屏驱动电路的原理图如下:(图 8)显示屏驱动电路主要由主芯片控制电路、电源电路、控制信号放大电路等组成。1、主芯片控制电路该部分电路主要由 AT89S52 和 74LS154 组成。单片机的 P0 和 P2 号控制显示信号的输出,P1 号的低 4
4、 位控制74LS154 的译码输入,从而控制扫描信号的输出。2、电源电路整个电路的供电由 USB 电源提供,利用我们的电脑主机 USB 接口可以输出+5V 电压,方便我们在实验室调试。3、控制信号放大电路为提供负载能力,在 P0 和 P2 口接 16 个常用 9013 的 NPN 三极管放大驱动信号。电路中列方向由 p0 口和 p2口完成扫描,由于 p0 口没有上拉电阻,因此接一个 1k*8 的排阻上拉。行方向则由 416 译码器 74LS154 完成扫描,它由 89C51 的 P1.0-P1.3 控制。同样,驱动部分则是 16 个9015 的三极管完成的。三、 程序与软件在 UCDOS 中文
5、宋体字库中,每一个字由 16 行 16 列的点阵组成显示,即国标汉字库中的每一个字均由 256 点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字, 也可以显示在 256 像素范围内的任何图形。用 8 位的 AT89S52 单片机控制, 由于单片机的总线为 8 位,一个字需要拆分为 2 个部分如图 9 所示。本电路把它拆分为左部和右部,左部由 16(行)*8(列)点阵组成, 下部也由 16(行)*8(列)点阵组成。图(9)为了让大家更清楚的理解点阵的扫描过程,在这我们以显示汉字“我”为例,来说明其扫描原理:单片机首先由 P2 口输出
6、显示数据信号给右部分的第一行如图 9 所示,即第一行的 P20-P27 口。方向为 P20到 P27 ,显示汉字“我”时,P21 点亮,由左到右排,为 P20 灭,P21 亮, P22 灭,P23 灭, P24 灭, P25 灭, P26 灭, P27 灭。即二进制 00000010,转换为 16 进制为 0x02。右部分的第一行完成后,继续扫描左半部的第一行,为了接线的方便,我们仍设计成由左往右扫描,即从 P00向 P07 方向扫描,从上图可以看到,这一行只有 P05、P06 亮,其它灭, 即为 00000110,16 进制则为 0x60。然后单片机再次转向右半部第二行,仍为 P21、P23
7、 点亮,为 01010000,即 16 进制 0x0A。这一行完成后继续进行左半部分的第二行扫描,P02、P03、P04 点亮,为二进制 00111000,即 16 进制 0x1C。依照这个方法,继续进行下面的扫描,一共扫描 32 个 8 位,可以得出汉字“我”的扫描代码为:0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08由这个
8、原理可以看出, 无论显示何种字体或图像, 都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。不过现在有很多现成的汉字字模生成软件, 我们就不必自己去画表格算代码了。在网上汉字字模生成软件有很多种,本文告别推荐一种汉字字模生成软件,HZDotReader V3.0,我个人认为这个软件的功能相当完美。最主要的一个功能是可以选择汉字编码的取模方式,如下图 10 所示。本例中的“我”字的取模方式为以横向 8 个连续点构成一个字节,最左边的点为字节的最低位,即 BIT0,最右边的点为 BIT7。很少有字模软件可以实现这一功能。(图 10)下面给出一个简单的静态显示“我”字的程序清单:#include
9、#define CCED2 0x0000 /*我 */unsigned char code word_zai162 = /*我 CCED2 */0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08;void main() char scan,i,j;P0=0;P1=0;P2=0;while(1) scan=0;for(i=0;ivo
10、id main() char scan,i;P0=0;P1=0;P2=0;while(1) scan=0;for(i=0;i16;i+)P1=scan;P0=0xff;P2=0xff;scan+;若发现二极管不是全被点亮则要用万用表来仔细地检测。一般会出现的问题是电路板上的线被短路,断开等。根据不亮的二极管来找电路出现的问题应该是比较容易的。所以本电路的调试过程是较简单的。当然调试前必须要确保所购买的每一块显示屏都是完好的。五、 总结1、为方便调试应该给该电路加上一个下载电路部分,每次烧程序调试都要把芯片取出插入,容易损坏芯片的管脚。2、为了合适大部分的取字模软件,在画原理图应当考虑列显示屏显示信号输入管脚由左到右的接法;大部分的取字模软件都是从左到右的取模方式,所以应当把显示屏的列信号显示输入管脚从左到右接地接到单片机 P2,P0口时由高位接到低位。谢谢!