教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

LED点阵屏学习攻略

来源:网络收集 时间:2026-08-28
导读: LED点阵屏学习攻略 在经历了将近一个学期断断续续的点阵屏学习后,最后终于在AVR平台下完成了128*32点阵屏的无闪烁显示。现把整个学习过程总结如下: 无论是51单片机还是AVR单片机,点阵屏的显示原理是一样的,所以首先从51讲起。 说明:以下所有试验如无特

LED点阵屏学习攻略

在经历了将近一个学期断断续续的点阵屏学习后,最后终于在AVR平台下完成了128*32点阵屏的无闪烁显示。现把整个学习过程总结如下:

无论是51单片机还是AVR单片机,点阵屏的显示原理是一样的,所以首先从51讲起。

说明:以下所有试验如无特殊说明均在Keil uVision3 + Proteus 6.9 SP5下仿真完成。

一.基于51的点阵屏显示:(1)点亮第一个8*8点阵:

1.首先在Proteus下选择我们需要的元件,AT89C52、74LS138、

MATRIX-8*8-GREEN(在这里使用绿色的点阵)。在Proteus 6.9中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GREEN,MATRIX-8*8-BLUE,MATRIX-8*8-ORANGE ,MATRIX-8*8-RED。

在这里请大家牢记:红色的为上列选下行选;其它颜色的为上行选下列选!而所有的点阵都是高电平选中列,低电平选中行!也就是说如果某一个点所处的行信号为低,列信号为高,则该点被点亮!此结论是我们编程的基础。

2.在选择完以上三个元件后,我们开始布线,具体如下图:

这里P2是列选,P3连接38译码器后作为行选。

选择38译码器的原因:38译码器每次可输出相应一个I/O口的低电平,正好与点阵屏的低电平选中行相对,并且节省了I/O口,大大方便了我们的编程和以后的扩展。

3.下面让我们把它点亮,先看一个简单的程序:

(将奇数行偶数列的点点亮,效果如下图)

下面是源代码:

/************8*8LED点阵屏显示*****************/

#include<reg52.h>

void delay(int z) //延时函数

{

int x,y;

for(x=0;x<z;x++)

for(y=0;y<110;y++);

}

void main()

{

while(1)

{

P3=0; //行选,选择第一行

P2=0x55; //列选,即该行显示的数据

delay(5); //延时

/*****下同*****/

P3=2; //第三行

P2=0x55;

delay(5);

P3=4; //第五行

P2=0x55;

delay(5);

P3=6; //第七行

P2=0x55;

delay(5);

}

}

上面的程序实现了将此8*8点阵的奇数行偶数列的点点亮的功能。重点让我们看while循环内,首先是行选P3=0,此时38译码器的输入端为000,则输出端为01111111,即B0端为低电平,此时选中了点阵屏的第一行,接着列选我们给

P2口赋0x55,即01010101,此时又选中了偶数列,紧接着延时。然后分别对第

三、五、七行进行相同的列选。这样就点亮了此点阵屏奇数行偶数列交叉的点。 完成这个程序,我们会发现其实点阵屏的原理是如此简单,和数码管的动态显示非常相似,只不过换了一种方式而已。

4.完成了上面的点亮过程,下面我们让这个8*8的点阵屏显示一个汉字:“明” 先看效果图:

源代码如下:

/************8*8LED点阵屏显示*****************/

#include<reg52.h>

char code table[]={0x0f,0xe9,0xaf,0xe9,0xaf,0xa9,0xeb,0x11}; //"明" 字编码

void delay(int z) //延时函数

{

int x,y;

for(x=0;x<z;x++)

for(y=0;y<110;y++);

}

void main()

{

int num;

while(1) //循环显示

{

for(num=0;num<8;num++) //8行扫描 P3行选,P2列选 {

P3=num; //行选

P2=table[num]; //列选

delay(5); //延时

}

}

}

因为要显示一个汉字,这里我们使用了一个数组table[ ]来存储该字的编码,重点还是来看while循环,首先在for循环内完成对8*8点阵屏的8行依次扫描。我们来分析第一行的情况即num=0的时候,首先P3=0,选中第一行,然后P2=table[0],即P2等于table数组中第一个数据0x0f,则此时就点亮了第一行相应的点。接着延时,其他行同理。这样我们就完成了一个最简单汉字的显示。

(2)16*16点阵的显示原理

1.虽然完成了上面8*8点阵的显示,但是由于点的数量太少以至于它的显示效果并不是很理想,事实上现在大部分点阵的汉字都是16*16显示的,下面让我们来学习16*16点阵的显示。和上面一样我们先选择元件:AT89C52,

74LS138,,MATRIX-8*8-GREEN,因为要显示16*16的汉字,我们就不能再使用一个38译码器进行行选了,这里我们用两个38译码器组合成一个4选16的译码器(当然也可以使用74159)。而MATRIX-8*8-GREEN点阵需要4个。完成后如下图:

2.先来看看4选16的译码器是如何工作的,这里有4个输入端a、b、c、d,16个输出端H0~H15,如上图连线后即可完成类似于38译码器一样的工作。只不过扩展到了16行选。关于连线的原理这里不再赘述,只要明白38译码器的原理这个可以轻松理解。接着完成全部布线。如下图所示:

3.连好线后,P1作为行选,P2、P3一起作为列选。现在16*16的点阵被分成两块并不完整的部分,我们可以整体移动(包括点阵屏、连线以及连接点,)来方便我们观察显示的效果(最好同时去掉仿真中电平的指示灯)。接着我们来看一个程序,还是让此点阵屏显示一个汉字:“明”。

先看效果图:

源代码如下:

/************16*16LED点阵屏显示*****************/

#include<reg52.h>

char code table[]={0x00,0x20,0x20,0x7F,0x7E,0x21,0x22,0x21,

0x22,0x21,0x22,0x3F,0x3E,0x21,0x22,0x21,

0x22,0x21,0x22,0x3F,0x3E,0x21,0x22,0x21,

0x80,0x20,0x80,0x20,0x40,0x28,0x20,0x10}; // “明” void delay(int z)

{

int x,y;

for(x=0;x<z;x++)

for(y=0;y<110;y++);

}

void main()

{

int num;

while(1)

{

for(num=0;num<16;num++)

{

P1=num; //行选

P2=table[2*num]; //列选

P3=table[2*num+1]; //列选

delay(2);

}

}

}

4..先来看这次使用的table数组,因为是16*16的点阵,所以总共有32个数据,其中第1、2个数据用于第一行的显示,第2、3个数据用于第二行的显示,以此类推,总共16行。然后还是来看while循环内,同样for循环依次扫描

16行,以第一行为例,即num=0时,首先P1=0,选中第一行,P2=table[0]、P3=table[1]送出列选数据,即第一行要显示的两个字节的数据。其他行同理。这样很轻松的我们就完成了16*16点阵的显示。程序虽然完成了,但是回过头来看一看就会发现,我们在这里使用了P2与P3口一起来做列选,浪费了大量的I/O/资源,而且现在点阵屏的大小还只有16*16,如果想要扩展的更大,已经没有足够的I/O口可用了。所以一定要想出更好的办法进行列选。

5.为了解决上面提到的问题,我们来学习一个新的元件:74HC595。它实质上是一个串行移位寄存器,能够实现“串入并出”的功能,关于它的使用我们还是用上一个列子来讲解,先来看看它的实现,如图:

可以看到这里我们仅使用了三个I/O口就完成了列选数据的发送。主要来看74HC595是如何实现“串入并出”的,这里我们使用了两个595进行了级联,即第二个595的数据输入端连接了第一个595的级联输出 …… 此处隐藏:8651字,全部文档内容请下载后查看。喜欢就下载吧 ……

LED点阵屏学习攻略.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/2325965.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)