1、8X8 LED点阵显示原理与应用LED点阵显示屏广泛应用与汽车报站器,广告屏等。8X8 LED点阵是最基本的点阵显示模块,理解8X8 LED点阵的工作原理就可以基本掌握LED点阵显示技术。一、 LED点阵显示的基本原理8X8点阵LED结构如下图所示: 从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。例如:要实现一根柱形的亮法,如图所示,对应的一列为一根竖柱,或者
2、对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。一根横柱:对应的行置0,而列则采用扫描的方法来实现。二、 实例应用1、 在8X8LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。分析:此任务是比较简单的,最基础的LED点阵显示应用。只需设置显示的起始地址(即起始状态),列出LED行扫描、列扫描的顺序输出,再设置一个延时即可循环显示。源程序:#include unsigned char code taba=0xfe,0xfd,0xfb,0xf7,0x
3、ef,0xdf,0xbf,0x7f;/行扫描显示编码unsigned char code tabb=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/列扫描显示编码void delay(void)/设置延时 unsigned char i,j; for(i=10;i0;i-) for(j=248;j0;j-);void delay1(void) unsigned char i,j,k; for(k=10;k0;k-) for(i=20;i0;i-) for(j=248;j0;j-);void main(void) unsigned char i,j; while
4、(1) for(j=0;j3;j+)/从左向右三次 for(i=0;i8;i+) P3=tabai; P1=0xff; delay1(); for(j=0;j3;j+)/从右向左三次 for(i=0;i8;i+) P3=taba7-i; P1=0xff; delay1(); for(j=0;j3;j+)/从上向下三次 for(i=0;i8;i+) P3=0x00; P1=tabb7-i; delay1(); for(j=0;j3;j+)/从下向上三次 for(i=0;i8;i+) P3=0x00; P1=tabbi; delay1(); 2、 数字09点阵循环显示分析:重点是数字09点阵显示代
5、码的形成:如下图所示,假设显示数字“0”123 45 6 7 800 00 3E 41 41 41 3E 00因此,形成的列代码为00H,00H,3EH,41H,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。同理,其他数字的显示代码可以由上可得。 实验程序框图:实验显示效果: 源程序#include unsigned char code tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char code digittab108=0x00,0x00,0x3e,0x41,0x41,0x41,
6、0x3e,0x00,/0 0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00,/1 0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00,/2 0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,/3 0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,/4 0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00,/5 0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00,/6 0x00,0x00,0x40,0x40,0x40,0x4f
7、,0x70,0x00,/7 0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,/8 0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00/9 ;unsigned int timecount;unsigned char cnta;unsigned char cntb;void main(void) TMOD=0x01;/启用定时器方式1 TH0=(65536-3000)/256;/定时3ms TL0=(65536-3000)%256; TR0=1; ET0=1; EA=1; while(1) ; void t0(void) interrupt 1 using 0 TH0=(65536-3000)/256; TL0=(65536-3000)%256; P3=tabcnta; P1=digittabcntbcnta; cnta+; if(cnta=8) cnta=0; timecount+; if(timecount=333) timecount=0; cntb+; if(cntb=10) cntb=0; 三、 总结通过本实验,我基本掌握了LED点阵显示的原理以及显示字符的点阵代码的取法。但是这只是最基本的LED点阵应用,以后还要学习通过8X8 LED点阵进行扩展,如大屏幕显示技术等。