找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 34146|回复: 5
打印 上一主题 下一主题
收起左侧

8X8 LED点阵显示原理与应用

[复制链接]
跳转到指定楼层
楼主
LED点阵显示屏广泛应用与汽车报站器,广告屏等。8X8 LED点阵是最基本的点阵显示模块,理解8X8 LED点阵的工作原理就可以基本掌握LED点阵显示技术。
一、        LED点阵显示的基本原理
8X8点阵LED结构如下图所示:

从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。
例如:要实现一根柱形的亮法,如图所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:
一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现。

二、    实例应用
1、在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。
分析:此任务是比较简单的,最基础的LED点阵显示应用。只需设置显示的起始地址(即起始状态),列出LED行扫描、列扫描的顺序输出,再设置一个延时即可循环显示。

源程序:
#include <AT89X52.H>

unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行扫描显示编码
unsigned char codetabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//列扫描显示编码
void delay(void)//设置延时
{
unsigned char i,j;

for(i=10;i>0;i--)
for(j=248;j>0;j--);
}

void delay1(void)
{
unsigned char i,j,k;

for(k=10;k>0;k--)
for(i=20;i>0;i--)
for(j=248;j>0;j--);

}

void main(void)
{
unsigned char i,j;

while(1)
    {
     for(j=0;j<3;j++)//从左向右三次
       {
         for(i=0;i<8;i++)
           {
              P3=taba;
              P1=0xff;
              delay1();
           }
       }

      for(j=0;j<3;j++)//从右向左三次
       {
         for(i=0;i<8;i++)
           {
              P3=taba[7-i];
              P1=0xff;
              delay1();
           }
       }

     for(j=0;j<3;j++)//从上向下三次
       {
         for(i=0;i<8;i++)
           {
              P3=0x00;
              P1=tabb[7-i];
              delay1();
           }
       }

     for(j=0;j<3;j++)//从下向上三次
       {
         for(i=0;i<8;i++)
           {
              P3=0x00;
              P1=tabb;
              delay1();
           }
       }

    }
}

2、             数字0-9点阵循环显示
分析:重点是数字09点阵显示代码的形成:
如下图所示,假设显示数字“0
1 2 3   4 5  6  7  8
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
00 00  3E 41  41  41  3E00
因此,形成的列代码为 00H00H3EH41H41H3EH00H00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。
同理,其他数字的显示代码可以由上可得。
实验程序框图:

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg实验显示效果:

源程序

#include <AT89X52.H>
unsigned char codetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char codedigittab[10][8]={{0x00,0x00,0x3e,0x41,0x41,0x41,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,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=tab[cnta];
P1=digittab[cntb][cnta];
cnta++;
  if(cnta==8)
    {
     cnta=0;
    }
timecount++;
if(timecount==333)
    {
     timecount=0;
     cntb++;
     if(cntb==10)
       {
         cntb=0;
       }
    }
}
三、    总结
通过本实验,我基本掌握了LED点阵显示的原理以及显示字符的点阵代码的取法。但是这只是最基本的LED点阵应用,以后还要学习通过8X8 LED点阵进行扩展,如大屏幕显示技术等。

评分

参与人数 2黑币 +58 收起 理由
lzxdy + 8 赞一个!
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:157452 发表于 2017-2-11 21:18 | 只看该作者
先收藏再说
回复

使用道具 举报

板凳
ID:157452 发表于 2017-2-11 21:20 | 只看该作者
突然发现这个打不开“实验程序框图:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg”
回复

使用道具 举报

地板
ID:1 发表于 2017-2-11 22:32 | 只看该作者
keven17 发表于 2017-2-11 21:20
突然发现这个打不开“实验程序框图:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/cli ...

图已补上
回复

使用道具 举报

5#
ID:161235 发表于 2017-2-13 10:52 | 只看该作者
学习学习
回复

使用道具 举报

6#
ID:161235 发表于 2017-2-13 10:52 | 只看该作者
学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表