文档库 最新最全的文档下载
当前位置:文档库 › LED点阵编程

LED点阵编程

LED点阵编程
LED点阵编程

一.基于51的点阵屏显示:

(1)点亮第一个8*8点阵:

1.首先在Proteus下选择我们需要的元件,AT89C52、74LS138、MA TRIX-8*8-GREEN(在这里使用绿色的点阵)。在Proteus 7.5中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GREEN,

MATRIX-8*8-BLUE,MA TRIX-8*8-ORANGE ,MA TRIX-8*8-RED。

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

点被点亮!此结论是我们编程的基础。

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

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

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

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

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

下面是源代码:

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

#include

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

{

int x,y;

for(x=0;x

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

}

void main()

{

while(1)

{

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

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

delay(5); //延时

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

P0=2; //第三行

P1=0x55;

delay(5);

P0=4; //第五行

P1=0x55;

delay(5);

P0=6; //第七行

P1=0x55;

delay(5);

}

}

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

即B0端为低电平,此时选中了点阵屏的第一行,接着列选我们给P2口赋0x55,即01010101,此时又选中了偶数列,紧接着延时。然后分别对第三、五、七行进行相同的列选。

这样就点亮了此点阵屏奇数行偶数列交叉的点。

完成这个程序,我们会发现其实点阵屏的原理是如此简单,和数码管的动态显示非常相似,只不过换了一种方式而已。

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

先看效果图:

源代码如下:

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

#include

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

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

{

int x,y;

for(x=0;x

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

}

void main()

{

int num;

while(1) //循环显示

{

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

{

P03=num; //行选

P1=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

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

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的级联输出口Q7’。也就是说,我们只需要从第一个595的输入端串行输入数据,便可以实现把数据送入第二个595的功能。而且595的数量可以进行无限的级联,而不管有多少个595,

我们只需要一个数据输入端就可以,这样就大大节省了I/O资源。对于595的具体使用还是来看程序。

源代码如下:

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

#include

sbit R="P2"^0; //数据输入端口

sbit CLK="P2"^1; // 时钟信号

sbit STB="P2"^2; // 锁存端

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

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

}

void WriteByte(char dat) //写一个字节的数据

{

char i;

for(i=0;i<8;i++) //循环8次把编码传给锁存器

{

dat=dat>>1; //右移一位,取出该字节的最低位

R=CY; //将该字节的最低位传给R

CLK=0; //将数据移入595,上升沿

CLK=1;

}

}

void main()

{

int num;

while(1)

{

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

{

WriteByte(table[2*num]); //送出一个字节

WriteByte(table[2*num+1]);

P1=num; //行选

STB=1; //输出锁存器中的数据,下降沿

STB=0;

delay(2);

}

}

}

先来看不同之处,这里我们首先位定义了R、CLK、STB,分别对应于74HC595的DS、SH_CP、

ST_CP用以实现串行数据输入、数据移位以及并行数据输出。然后来看WriteByte(char dat)函数,

该函数实现了串行向595中输入一个字节数据的功能。来看for循环,首先dat=dat>>1,把要输入的数据右移一位,这样最低位便进入移位寄存器CY中,紧接着我们让R=CY,把该位传给595的

输入端,CLK一个上升沿的跳变就实现了把该位数据移入595的功能。8次循环便可以将一个字节的数据送出。重点还是看while循环内,同样也是16行的扫描,然后就是WriteByte(table[2*num])等同于上面的P2=table[2*num],WriteByte(table[2*num+1])等同于P3=table[2*num+1],完成列选,接着行选,然后有一个STB的下降沿的跳变,这个变化能够

实现并行输出移位寄存器中的数据。这样就完成了整个过程。

(3)16*16点阵的移位控制

点阵的移位一般有上、下、左、右的移动,这里我们重点讲上移和左移,其它同理。

1. 点阵的上移:

点阵的上移相对来说很简单,看效果图如下:

源代码:(该程序实现了循环上移显示“邢台”)

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

#include

sbit R="P2"^0; //数据输入端口

sbit CLK="P2"^1; // 时钟信号

sbit STB="P2"^2; // 锁存端

char code table[]={

/*-- 文字: 邢--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0x00,0xFE,0x3E,0x48,0x22,0x48,0x22,

0x48,0x12,0x48,0x12,0x48,0x0A,0xFF,0x13,

0x48,0x22,0x48,0x42,0x48,0x42,0x48,0x46,

0x44,0x2A,0x44,0x12,0x42,0x02,0x40,0x02,

/*-- 文字: 台--*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x40,0x00,0x40,0x00,0x20,0x00,0x10,0x04,

0x08,0x08,0x04,0x10,0xFE,0x3F,0x00,0x20,

0x00,0x08,0xF8,0x1F,0x08,0x08,0x08,0x08,

0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,

};

void delay(int z)

{

int x,y;

for(x=0;x

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

}

void WriteByte(char dat) //写一个字节的数据{

char i;

for(i=0;i<8;i++) //循环8次把编码传给锁存器

{

dat=dat>>1; //右移一位,取出该字节的最低位

R=CY; //将该字节的最低位传给R

CLK=0; //将数据送出,上升沿

CLK=1;

}

}

void main()

{

int num,move,speed;

while(1)

{

if(++speed>8) //移动速度控制

{

speed=0;

move++; //移位

if(move>16) //是否完成移位一个汉字

move=0; //从头开始

}

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

{

WriteByte(table[2*num+move*2]); //送出一个字节

WriteByte(table[2*num+1+move*2]);

P1=num; //行选

STB=1; //输出锁存器中的数据,下降沿

STB=0;

delay(2);

}

}

}

可以看到这个程序和静态显示的程序没有太大的差距,主要就是加入了一个move变量来控制移动,WriteByte(table[2*num+move*2])中当move变量变化的时候更改了写入595中的数据,

正好实现了移动显示的效果。而speed变量的if判断语句能够控制移动速度的大小。下面重点讲左移。

2. 点阵的左移:

因为点阵的数据最终是一个一个字节的并行送出的,所以要实现点阵的左移,我们就需要考虑如何才能够动态的更改每一个发送字节的数据,而汉字的每一个字节的编码是固定的,这里

我们可以使用一个数据缓冲区来完成点阵的左移。重点说一下点阵左移中关键的一步操作temp=(BUFF[s]>>tempyid) | (BUFF[s+1]<<(8-tempyid))。这里temp作为要发送的一个字节数据,

它由数据缓冲区中的数据组合而成,并且动态的变化,大致来说就是首先第一个字节的数据右移tempyid位,第二个字节的数据左移8-tempyid位,两者相或后组成一个字节新的数据,只

要我们一直不断地移位、相或、发送,就能实现左移的效果。不太好理解,先来看实例(循环左移显示“邢台学院”),效果图如下:

见源代码:

#include

#define uchar unsigned char

#define uint unsigned int

uchar yid,h; //YID为移动计数器,H为行段计数器

uint zimuo; //字模计数器

uchar code hanzi[]; //汉字字模

uchar BUFF[4]; //缓存

void in_data(void); //调整数据

void rxd_data(void); //发送数据

void sbuf_out(); //16段扫描

uchar code table[]={//篇幅有限,省略编码};

void main(void)

{

uchar i,d=10;

yid=0;

zimuo=0;

while(1)

{

while(yid<16) //数据移位。

{

for(i=0;i

{

sbuf_out();

}

yid++; //移动一步

}

yid=0;

zimuo=zimuo+32; //后移一个字,

if(zimuo>=96) //到最后从头开始,有字数决定

zimuo=0;

}

}

/********************************/

void sbuf_out()

{

for(h=0;h<16;h++) //16行扫描

{

in_data(); //调整数据

rxd_data(); //串口发送数据

P1=0x7f; //关闭显示。

P1_7=1; //锁存为高,595锁存信号

P1=h; //送行选

}

}

/******************************************************/

void in_data(void)

{

char s;

for(s=1;s>=0;s--) //h为向后先择字节计数器,zimuoo为向后选字

计数器

{

BUFF[2*s+1]=table[zimuo+1+32*s+2*h]; //把第一个字模的第一个字节放入BUFF0

//中,第二个字模的第一个字节放入BUFF2中

BUFF[2*s]=table[zimuo+32*s+2*h]; // 把第一个字模的第二个字节放入BUFF1中,

//第二个字模的第二个字节放入BUFF3中

}

}

/*******************************************************/

void rxd_data(void) //串行发送数据

{

char s;

uchar inc,tempyid,temp;

if(yid<8)

inc=0;

else

inc=1;

for(s=0+inc;s<2+inc;s++) //发送2字节数据

{

if(yid<8)

tempyid=yid;

else

tempyid=yid-8;

temp=(BUFF[s]>>tempyid)|(BUFF[s+1]<<(8-tempyid));//h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的数据

SBUF=temp;//把BUFF中的字节从大到小移位相或后发送输出。

while(!TI); //注:这里使用了串口,串口数据的发送为最低位在前。

TI=0; //等待发送中断

}

}

首先来看定义的数据缓冲区BUFF[ ],这里一开始将会存储第一个汉字与第二个汉字的第一行的编码,该缓冲区动态的存储点阵屏每一行要发送的数据,注意这里BUFF的大小为4个字节,

比16*16点阵屏要显示的汉字多了一个汉字行的大小,这一点是必要的,这样我们才能实现利用该缓冲区进行左移控制,接着来看in_data(void)函数,利用该函数,我们实现了动态的修改

缓冲区中的数据,这里不再详述过程,重点看程序的注释即可。然后看rxd_data(void)函数,该函数的作用正是利用串口串行发送数据,也就是上面提到的移位、相或然后发送,关于在移位

过程中的具体实现细节以及如何协调的进行数据发送,首先来看inc变量,该变量决定了从BUFF缓冲区中的第一个还是第二个数据开始读取,当移位开始后,在移完一个字节的数据之前我们

都从BUFF数据缓冲区中的第一个字节开始读取,当移完一个字节后,inc变成1,这时我们从BUFF数据缓冲区中的第二个字节开始读取,于此同时后一个字节总是在和前一个字节的数据进行移

位相或,达到慢慢向前推进的效果,这里有一个临界点,就是当移位满16位后,即一个汉字移出点阵屏后,这时候我们就需要将数据缓冲区中的数据进行更新,即后移一个字,这时数据缓冲

区中的数据就变成了第二个汉字和第三个汉字的第一行汉字的编码,以此类推。下面来看sbuf_out()函数,该函数实现了16行的扫描,最后来看while循环内,这时主函数内已经很简单了,

首先在while(yid<16)内,有控制移动速度的for循环,即显示几次静态的画面移动一步,而zimuo变量为移位过程中汉字的选择变量,它每32位的变化,正好是一个16*16汉字的编码个数。

这样就完成了整个点阵左移的控制(这里使用了串口实现点阵的左移,当然我们也可以不用串口,关于非串口实现的左移后面介绍),它的过程比较复杂,需反复思考。

(4)128*32点阵扩展显示

1. 128*32点阵的静态显示

完成了16*16点阵的静态与移动显示之后,就已经算是掌握了点阵屏显示的主要部分,以后不管想要操纵什么样的点阵屏,只要把握上面的原理,都能按照我们的想法进行显示。所以接下来

的讲解不会再有上面那么详细。

下面来看128*32点阵是如何显示的。

这里的布线有点繁琐,首先来看一下64*16点阵的布线,如下图:

前面已经提到过,在该仿真环境下红色点阵为上列选下行选。理解了64*16的点阵布线,我们来看一下128*32的仿真图:

这是一个完整的128*32的点阵屏,只是在上面小屏的基础上级联了更多的595,因为只有一个4选16的译码器,而该点阵有32行,这里我们使用两个数据输入端,分别对应点阵屏的上、下半屏。下面以操作上半屏为例(下半屏同理)。

看效果图:

见源代码:

#include

#define uchar unsigned char

#define uint unsigned int

uchar yid,h; //YID为移动计数器,H为行段计数器

uint zimuo; //字模计数器

uchar code hanzi[]; //汉字字模

uchar BUFF[18]; //缓存

void in_data(void); //调整数据

void rxd_data(void); //发送数据

void sbuf_out(); //16段扫描

uchar code table[]={//篇幅有限,省略编码};

void main(void)

{

uchar i,d=10;

yid=0;

zimuo=0;

while(1)

{

while(yid<16) //数据移位。

{

for(i=0;i

{

sbuf_out();

}

yid++; //移动一步

}

yid=0;

zimuo=zimuo+32; //后移一个字,

if(zimuo>=480) //到最后从头开始,有字数决定zimuo=0;

}

/********************************/

void sbuf_out()

{

for(h=0;h<16;h++) //16行扫描

{

in_data(); //调整数据

rxd_data(); //串口发送数据

P1=0x7f; //关闭显示。

P1_7=1; //锁存为高,595锁存信号

P1=h; //送行选

}

}

/******************************************************/

void in_data(void)

{

char s;

for(s=8;s>=0;s--) //h为向后先择字节计数器,zimuoo为向后选字计数器

{

BUFF[2*s+1]=table[zimuo+1+32*s+2*h]; //把第一个字模的第一个字节放入BUFF0

//中,第二个字模的第一个字节放入BUFF2中

BUFF[2*s]=table[zimuo+32*s+2*h]; // 把第一个字模的第二个字节放入BUFF1中,

//第二个字模的第二个字节放入BUFF3中

}

}

/*******************************************************/

void rxd_data(void) //串行发送数据

{

char s;

uchar inc,tempyid,temp;

if(yid<8)

inc=0;

else

inc=1;

for(s=0+inc;s<8+inc;s++) //发送8字节数据

{

if(yid<8)

tempyid=yid;

else

tempyid=yid-8;

temp=(BUFF[s]>>tempyid)|(BUFF[s+1]<<(8-tempyid));//h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的数据

SBUF=temp;//把BUFF中的字节从大到小移位相或后发送输出。

while(!TI); //注:这里使用了串口,串口数据的发送为最低位在前。

TI=0; //等待发送中断

}

}

该程序同上面的左移程序大同小略,只有几处不同。它同样实现了上半屏循环左移显示一系列汉字的功能。对该程序,就不再详细讲解。

二.基于A VR的点阵屏显示

(1)静态显示

上面已经讲完了基于51的点阵屏显示,相信大家已经掌握了点阵屏显示的原理,下面仍然依据该原理,我们使用A VR单片机来进行控制。

下面的程序均在ICCA VR Version 6.31A环境下编写并均在点阵实验板上测试通过。

首先来看一下128*32点阵屏两行静态显示的程序,源代码如下:

#include

#include

#define uchar unsigned char

#define uint unsigned int

#include "delay.h"

#include "code.h"

#pragma data: data

#define screen_size 8 //半屏显示汉字个数:8 32*128

uchar BUFF_1[screen_size*2+2]; //缓存

uchar BUFF_2[screen_size*2+2]; //缓存

uchar disrow; //disrow 为16行变量

uchar temp_up,temp_down;

uchar Move_up,Move_down;

uchar temp_up,temp_down;

uint zimo_up,zimo_down;

#define HC595_data1_H() PORTB |= BIT(0)

#define HC595_data1_L() PORTB &=~BIT(0)

#define HC595_data2_H() PORTB |= BIT(1)

LED点阵显示屏实验报告解析

16?16点阵LED电子显示屏的设计 摘要:文章介绍了基于单片机AT89C51的16?16点阵LED电子显示屏的设计。分别阐述了显示屏显示的基本原理,硬件设计、控制方法及其程序的实现。经过调试和分析,设计的结果能够实现对汉字的静态和动态显示,动态显示的内容有多种方式,同时又可通过上位机更新显示的内容。 关键字:AT89C51;16?16点阵;LED;显示屏 一绪论 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。 1 LED点阵显示屏概述 LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。 目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。 2 LED显示屏控制技术状况 显示屏的控制系统包括输入接口电路、信号控制、转换和数字化处理电路及输出接口电路等,涉及的具体技术很多,其关键技术包括串行传输与并行传输技术、动态扫描与静态锁存技术、自动检测及远程控制技术等。

单片机LED点阵显示方法与程序代码

单片机LED点阵显示方法与程序代码 点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。 由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实物的话,加上三极管才足够亮。 显示的方法有两种: 1、逐列扫描方式。如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED亮(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。 2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。 以逐行扫描为例,从上图可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如下图所示。

一、行扫描静态显示, 用51单片机实现上图静态显示的程序如下: #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { while(1) { P2=0x01; for(i=0;i<8;i++) { P1=TAB; delay(100); P2=P2<<1|P2>>7; } } } 二、行扫描翻页显示 字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 实现图显示效果的程序如下:

LED点阵显示与C语言编程(基础篇)

点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。 由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实物的话,加上三极管才足够亮。 显示的方法有两种: 1、逐列扫描方式。如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED亮(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。 2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。 图1 以逐行扫描为例,从图2可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如图3所示。

图 2 图3 一、行扫描静态显示, 用51单片机实现图3静态显示的程序如下: #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { while(1) { P2=0x01; for(i=0;i<8;i++) { P1=TAB[i]; delay(100); P2=P2<<1|P2>>7; } } } 二、行扫描翻页显示 字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 实现图4显示效果的程序如下: /*8X8行扫描,翻页显示*/ #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏 0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xF F, //L 0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF , //O 0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xF F, //V

LED点阵原理图

LED点阵书写显示屏的设计 2011-12-23 22:51:14 来源:21IC 关键字:STC89C58LED双色点阵红外光电三板管光笔 近年来,点阵LED显示屏利用发光二极管构成的点阵模块或像素单元组成可变面积的显示屏幕,以可靠性高、使用寿命长、环境适应能力强、性能价格比高、使用成本低等特点,已成为众多显示媒体以及户外作业显示的电子工具,广泛地应用于车站、宾馆、金融、证券、邮电、体育等广告发布或交通运输等行业。目前LED显示屏的设计已经有多种方法可以实现,本设计是基于STC89C58单片机利用自制的光笔中红外光电三极管检测光笔触及位置处红色LED灯的点亮,计算出光笔位置的行列坐标,并根据按键设置的不同工作模式控制LED显示,从而实现点亮、划亮、反显、清屏、笔画拖动、轮流显示等功能。 1 系统设计方案 用双色LED点阵(红色和绿色)模块组合成32×32的LED点阵屏。其中红色LED作微亮扫描检测用,绿色LED作显示用,用红外光电三极管自制光笔。在检测时依次点亮红色LED,当点亮到某个LED时,如果此时光笔放在该LED时,这时红外光电三极管的阻值会发生变化,通过相应的检测电路可以得出一个高低电平的变化,单片机检测到信号变化时就可以判断光笔的当前位置。 该方案简单易行,对光笔位置判断的灵敏度较高,抗外界干扰能力强。采用双色点阵和红外光电三极管能够有效地减少环境可见光和显示LED(绿色)所发的光线对光笔中光电三极管的干扰。 2 系统结构及单元模块设计 2.1 系统总体框图 系统主要由微处理器STC89C58,32×32双色LED点阵显示、光笔及检测电路、外界光照强度检测电路、按键输入电路、液晶显示模块等几个部分组成。系统硬件结构框图如图1所示。

LED点阵显示屏设计报告

西安邮电大学 开发性实验结题报告 学院:电子工程学院 班级:光信1201 姓名:袁云飞学号:05123010 班级:光信1201 姓名:赵晓伟学号:05123019 班级:光信1201 姓名:陶鹏江学号:05123018 237团队 2014年3月30日

16 32点阵LED电子显示屏 摘要: 本设计是一16×32点阵LED电子显示屏的设计。 整机以美国ATMEL 公司生产的40脚单片机AT89C52为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制两个行驱动器74HC573和四个列驱动器74HC573来驱动显示屏显示。该电子显示屏可以显示各种文字或单色图像,全屏采用8块8×8点阵LED显示模块来组成16×32点阵显示模式。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。 单片机控制系统程序采用单片机C语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点得到广泛的应用。 关键词:AT89C51单片机;LED;点阵显示;动态显示;C语言。 一绪论 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。 1 LED点阵显示屏概述 LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。 目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,

基于51单片机的led点阵显示

项目名称:基于51单片机的LED点阵显示器 目录 一、项目介绍 (2) 1.1 项目背景 1.2 功能介绍 二、电路结构 (3) 三、实现模块 (5) 四、运行程序 (7) 一、项目介绍 1.1项目背景 当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。目前,点阵式显示器件具体包括LED显示模块和LCD显示模块等。现在发展的LCD比较先进,LCD的优点较为明显,他体积小,容易控制,功能强,价格适宜,能够适应显示器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越来越广泛的应用;随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设备的工作状态和生产过程状态的显示与监控起到了非常重要的作用,对于那些需要显示

的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。 1.2功能介绍 2本次设计的用单片机控制的显示电路使用比较简单,操作方便。它主要是通过一个8×8点阵来显示图案,通过不同的按键来选择控制图案的种类及显示方式。在通电以后,显示屏全亮,随后进入逐字显示状态。按下复位键K1,系统自动复位,显示diligent,随后进入待命状态。按键1、2、3、4分别控制不同的图案。另外,我们可以通k5键来控制字符移动速度的快慢。 二、电路结构 单片机最小系统设计 2.2.1 各部分具体电路 1 单片机的时钟电路 AT89C52单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。AT89C52的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。 内部时钟方式:利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在 XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2-1电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择30PF左右。

LED点阵显示与C语言编程(精)

一、行扫描静态显示, 用51单片机实现图3静态显示的程序如下: #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { while(1) { P2=0x01; for(i=0;i<8;i++) { P1=TAB[i]; delay(100); P2=P2<<1|P2>>7; } } } 二、行扫描翻页显示 字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 实现图4显示效果的程序如下: /*8X8行扫描,翻页显示*/ #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏 0xFD,0xF D,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF, //L 0xE3,0xDD, 0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //O 0xDD,0xD D,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //V 0xC1,0

8X8_LED点阵显示原理与编程技术

8X8 LED 点阵显示原理与编程技术 1 .实验任务 在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,女口此循环下去。 2. 实验目的 掌握用单片机I/O 口进行LED点阵扫描显示。 3. 实验工具 PROTEUS6.9, Keil uVisio n2 软件 4. 原理图 5. 相关知识 1) LED点阵 八十年代以来出现了组合型IED点阵显示器,以发光二极管为像素,它用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。具有高亮度、功耗低、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。点阵显示器有单色和双色两类,可显示红,黄,绿,橙等。LED点阵有4X 4、4X 8、5X 7、5X & 8 X & 16X 16、24X 24、40X 40 等多种; 根据像素的数目分为等,双基色、三基色等,根据像素颜色的不同所显示的文字、图象等内容的颜色也不同,单基色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。图1--5示出几种LED点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验 获得。 2) LED点阵扫描驱动方案: 由LED点阵显示器的内部结构可知,器件宜采用动态扫描驱动方式工作,由于 見珈乩工柞膏 hnp: WTieKiin r cortvjianc aLlic ng oooGofrc -0 口 c-d

基于单片机的LED点阵显示屏的设计(精)

毕业设计(论文)文献综述 论文题目:基于单片机的LED点阵显示屏的设计 DESIGN OF LED DOT-MATRIX DISPLAY SCREEN BASED ON MCU 学生姓名:陈珂学号:0707070502102 二级学院名称:电子信息学院专业:电子信息工程 指导教师:黄暑娟职称:副教授 填表日期: 2011 年 2 月 20 日 浙江传媒学院教务处制 引言 随着人们生活环境的不断改善和美化,在许多场合可以看到LED灯。在大型商场车站,地铁站以及各类办事窗口等越来越多的场所需要用LED点阵显示汉字或者图像。LED行业已成为一个快速发展的新兴产业,市场空间巨大,前景广阔。LED显示屏是利用发光二极管点阵模型或者像素单元组成平面的显示屏幕。不但拥有色彩丰富,组态灵活,能够适应室内外各种环境的特点,还具有发光效率高,使用寿命长的优势。LED显示屏经历了初期的不可更换显示内容,单色,双色的

图文显示到如今的可随时更换显示内容,全彩色的视频显示,历经发展,LED显示屏得到了广泛的应用和发展。 一、国内外研究发展现状 随着信息产业的高速发展,LED显示屏作为信息传播的一种重要手段成为现代信息化社会的一个闪亮标志。近年LED显示屏已广泛应用于室内外需要进行服务内容和服务宗旨宣传的公众场所如银行、营业部、车站、机场、港口、体育场馆等信息的发布,政府机关政策、政令,各类市场行情信息的发部和宣传等。目前,对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,它可以用单片机控制实现显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,根据不同的需求动态或静态显示。 LED显示屏(LED panel)是由几万-几十万个半导体发光二极管像素点均匀排列组成,是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。利用不同的材料可以制造不同色彩的LED像素点,目前应用最广的是红色、绿色、黄色,而蓝色和纯绿色LED的开发已经达到了实用阶段。 LED显示屏的发展可分为以下几个阶段: 第一阶段为1990年到1995年,主要是单色和16级双色图文屏。用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。 第二阶段是1995年到1999年,出现了64级、256级灰度的双基色视频屏。视频控制技术、图像处理技术、光纤通信技术等的应用将LED显示屏提升到了一个新的台阶。LED显示屏控制专用大规模集成电路芯片也在此时由国内企业开发出来并得以应用。 第三阶段从1999年开始,红、纯绿、纯蓝LED管大量涌入中国,同时国内企业进行了深入的研发工作,使用红、绿、蓝三原色LED生产的全彩色显示屏被广泛应用,大量进入体育场馆、会展中心、广场等公共场所,从而将国内的大屏幕带入全彩时代。 具体的说,LED显示屏目前的发展现状如下:

LED点阵显示屏(完整源程序版)

编号: 单片机 实训 (论文)说明书 题目:LED点阵模块控制器 院(系):应用科技学院 专业:电子信息工程 学生姓名: 学号: 指导教师: 2009年12月28日

目录 引言 (1) 1系统的设计与分析 (2) 1.1 LED点阵控制原理 (3) 1.1.1LED简介 (3) 1.1.2LED点阵 (4) 1.1.3显示原理 (5) 1.1.4显示屏的原理图及结构 (6) 1.2 单片机小系统 (8) 1.2.1 51系列单片机的概述 (8) 1.2.2单片机的组成 (8) 2 程序设计 (10) 2.1 系统程序的框架 (10) 2.1.1 串口通讯协议 (10) 2.1.2 显示处理效果函数 (10) 2.1.3 显示函数 (10) 2.2 程序流程图 (9) 3总结 (11) 谢辞 (13) 参考文献 (14) 附录(所有的源程序) (15)

摘要 LED是发光二极管Light Emitting Diode的英文缩写, 是一种能够将电能转化为可见光的半导体。LED点阵是由发光二极管排列组成的显示器件, 在我们日常生活的电器中随处可见,极为普通也广为人知。特别是它的发光类型属于冷光源,效率及发热量是普通发光器件难以比拟的,它采用低电压扫描驱动,具有:耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远、规格品、可靠耐用、应用灵活、安全、响应时间短、绿色环保、控制灵活种等特点。目前LED显示屏作为新一代的信息传播媒体,已经成为城市信息现代化建设的标志。随着社会经济的不断进步,以及LED显示技术的不断完善,人们对LED显示屏的认识将越来越深入,其应用领域将会越来越广。 本文设计一个16*64点阵模块控制器,根据标准的08控制接口要求,可以驱动市面上常见的16扫单色显示屏,显示汉字、英文、阿拉伯数字及其他信息等。整个系统提供很宽的外部扩展,包括时钟、温湿度、亮度等常规点阵控制器的模块。 关键词:LED点阵控制器;89S52;16扫;08接口

8 8LED点阵显示实验

8 8LED点阵显示实验 一.实验要求 利用实验系统提供的实验模块点阵显示,编程实现中英文字符的显示。 二.实验目的 1.了解LED点阵显示的基本原理和实现方法。 2.掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法。 三.实验电路及连线 点阵显示模块WTD3088的(红色)列输入线接至内部LED的阴极端,行输入线接至内部LED 的阳极端(若阳极端输入为高电平,阴极端输入低电平,则该LED点亮)。发光点的分布如图22-0所示。 Fig 22-0 WTD3088 LED分布 如图22-1示,本实验模块使用74LS374来控制列输入线的电平值。将74LS374的某输出置0,则对应的LED阴极端被置低。如图22-2示,本实验模块使用74LS273来控制行输入线,并通过9013提供电流驱动。将74LS273的某输出置1,则对应的LED阳极端被置高。每次系统重新开启或总清后,74LS273输出为全0,LED显示被关闭。 通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。

Fig 22-1 LED模块及列扫描电路 Fig 22-2 行扫描电路 Fig 22-3地址译码电路 本实验模块使用4块WTD3088组成16×16点阵,以满足汉字显示的要求。为了方便的控制四个单元,使用了一片74LS139译码,产生四个地址片选信号:CLKR1= CSLED,CLKR2= CSLED+1,用于行控制的两片74LS273;CLKC1= CSLED+2,CLKC2= CSLED+3,用于列控制的两片74LS374。实验接线:按示例程序,模块的CSLED接51/96地址的8000H。 四.实验说明

基于单片机的Led点阵广告牌设计

盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 基于单片机的LED广告牌设计 班级电子2班姓名秦地学号0902214075 成绩 一、设计背景 LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED 显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。 二、任务要求 设计一个简易的LED广告牌,用于显示自己的名字或其它个性信息。显示的字符用LED 发光二极管排列成固定形状,在控制电路驱动下各字符轮流循环点亮。或者用LED点阵显示,显示内容可更新。汉字一般是以点阵式方式存储的,如16×16,24×24点阵。汉字的字模其实是汉字字形的图形化。所谓16点阵字模,就是把汉字写在一个16×16的网格内,汉字的笔划通过某网格时该网格就对应1,否则该网格对应0,这样,每一网格均对应1或0,把对应1的网格连起来看,就是这个汉字。汉字就是这样通过字节表示其点阵存储在字形中的。为了方便查找所需要汉字的点阵,每个汉字都与一个双字节的内码相对应。通过汉字的内码可以计算出它的点阵起始字节。 三、整体设计方案 如图所示,本设计通过单片机来控制行列驱动器使LED显示屏显示出汉字,单片机选用AT89C52芯片,行驱动器采用74HC154的P0口,列驱动器选用74HC595芯片。该系统主要由AT89C52芯片、电源、行驱动器、列驱动器、16×64LED点阵5部分组成。

16led点阵显示汇编版

课程设计报告 课程《微机原理课程设计》 题目《LED点阵屏应用》 系别物理与电子工程学院 年级 10级专业光电信息工程 班级光电101 学号 0503101(02/28/33/34)学生姓名陈晨、周翔宇、翟付伟、朱易佳 指导教师居伟骏职称讲师 设计时间 2013年3月17日~29日

目录 目录 (1) 一、绪论 (2) 二、选题分析 (3) 2.1题目内容与要求 (3) 2.1.1具体要求: (3) 三、方案设计 (3) 3.1硬件设计 (3) 3.1.1设计所用元件 (3) 3.1.2硬件连接 (6) 3.2软件设计 (6) 3.2.1编程分析与程序框图 (6) 3.2.2 程序代码 (8) 四、结果及分析 (14) 4.1实验结果 (14) 4.2结果分析 (14) 五、总结与体会 (15) 六、参考文献 (16)

一、绪论 微机原理是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。通过对微机原理课本以及实验的学习,我们可以了解包括微型计算机体系结构、汇编语言设计、8086微处理器和指令系统等内容。 作为一门计算机应用专业的一门必修课,微机原理与接口技术对于我们了解计算机内部的工作原理,各部件的作用,各部件间的联系是十分重要的。但是只学习课本知识是远远不够的。所以,我们只有通过真实的接触,实际的操作,才能将理论知识和实际应用联系在一起,真正的将理论实际化。我们知道学习和掌握计算机中常用的接口技术以及设计技术,充分理解理论知识对于应用的指导作用是很重要的,只有这样才能进一步加强理论知识与应用相结合的实践和锻炼。因此,我们开展了这次历时两个星期的课程设计,通过这次设计实践能进一步加深我们对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。 本次课程设计主要是为了了解8255芯片的工作原理和相关设计技术,并且通过此次设计,我们对于微型计算机的基本系统结构和软硬件的工作原理会有大体的认识。 学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。这不仅丰富巩固了我们在课堂上学的知识,而且还为我们日后步入社会打下了基础。

LED点阵显示程序

实验二十五LED点阵显示实验 一.实验要求 利用实验系统提供的实验模块○27点阵显示,编程实现中英文字符的显示。 二.实验目的 1.了解LED点阵显示的基本原理和实现方法。 2.掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法。 三.实验电路及连线 点阵显示模块MD1216C-RG的(红色)行输入线接至内部LED的阴极端,列输入线接至内部LED的阳极端(若阳极端输入为高电平,阴极端输入低电平,则该LED点亮)。发光点的分布如下图Fig1所示。 Fig1 MD1216C-RG分布 如图Fig2所示,本实验模块使用74LS374来控制行输入线的电平值。将74LS374的某输出置0,则对应的LED阴极端被置低。如图Fig3所示,本实验模块使用74LS273来控制列输入线,并通过9013提供电流驱动。将74LS273的某输出置1,则对应的LED阳极端被置高。每次系统重新开启或总清后,74LS273输出为全0,LED显示被关闭。 通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。

Fig 2 LED模块及行扫描电路 Fig 3 列扫描电路 本实验模块使用1块MD1216C-RG(共阳极)组成16×16点阵,以满足汉字显示的要

求。为了方便的控制四个单元,使用了一片74LS139译码,产生四个地址片选信号:CLKC1= CSLED ,CLKC2= CSLED+1,用于列控制的两片74LS273;CLKR1= CSLED+2,CLKR2= CSLED+3,用于行控制的两片74LS374。 实验接线 按示例程序,LED 模块的CSLED 接F200H 。 四.实验说明 使用高亮度LED 发光管构成点阵,通过编程控制可以显示中英文字符、图形及视频动态图形。LED 显示以其组构方式灵活、亮度高、技术成熟、成本低廉等特点在证券、运动场馆及各种室内/外显示场合得到广泛的应用。 所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库(如ASC16、HZ16)中提取。后者需要正确掌握字库的编码方法和字符定位的计算。 实验盘片中“字符转换”子目录下提供的ZIMO221.exe,可方便的将字符或汉字字模提取出来。取字模的方式有很多种,具体可参看ZIMO221.exe 程序里的“参数设置”。 五.实验程序框图 提供LED_A51、LED_HZ51两个示例程序。分别演示Asc16字符和Hz16字符的简单点阵显示。用户应留心其中列扫描的实现及码表的处理。 CSLED EQU 0F200H CSC1 EQU CSLED ;列1~8 273 CSC2 EQU CSLED+1H ;列9~16 273 CSR1 EQU CSLED+2H ;行1~8 374 CSR2 EQU CSLED+3H ;行9~`6 374 开始 清除显示 设置字符码表 起始地址 LED 行扫描; 列顺序输出码表 延时以控制显示效果 循环 处理

8×8LED点阵屏显示数字(韩余)详解

8×8LED点阵屏显示数字(韩余)详解

目录 1 设计目的 (1) 1.1设计目的 (1) 1.2设计内容和要求 (1) 1.3设计思路 (1) 2 设计原理分析 (2) 2.1定时器控制8×8LED点阵屏显示数字系统设计 (2) 2.2定时器控制8×8LED点阵屏显示数字系统的功能要求 (2) 2.2.1计时显示 (2) 2.2.2中断设置 (2) 2.38×8LED点阵屏显示数字系统的基本构成及原理 (2) 3 系统硬件电路的设计 (3) 3.1系统硬件总电路构成及原理 (3) 3.2主控制部分――AT89C51单片机简介 (3) 3.2.1 AT89C51的内部结构功能 (4) 3.2.2 51单片机的串行接口工作方式 (5) 3.3其它器件 (6) 3.4定时器控制8×8LED点阵屏显示数字系统原理图 (7) 3.5设计的连线图: (8) 3.5.1单片机实物图: (8) 3.6硬件资源及其分配 (8) 3.7运行步骤 (8) 3.8检测与调试 (9) 3.8.1硬件调试: (9) 3.8.2软件调试: (9) 4 系统软件程序的简单设计 (10) 4.1程序框图 (10) 4.2程序流程图及程序 (11) 4.2.1程序流程图: (11) 4.2.2程序清单: (12) 4.2.3仿真结果图: (14) 结论 (15) 参考文献 (16)

1 设计目的 1.1设计目的 1、通过单片机课程设计,熟练掌握C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。 2、通过8×8LED点阵屏显示数字系统的设计,掌握数码管的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。 1.2设计内容和要求 内容:设计一个8×8LED点阵屏显示数字。 要求:利用单片机的中断系统,令8×8LED点阵屏循环显示数字0—9。 1.3 设计思路 1.先熟悉实验原理,了解8×8LED点阵屏显示数字的工作过程,以及所需要的组件。 2.通过单片机的各个引脚的输出控制8×8LED点阵屏显示数字。 3.绘制电路原理图,编写程序,并进行仿真,基本实现8×8LED点阵屏显示数字。

LED点阵屏学习攻略

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 void delay(int z) //延时函数 { int x,y; for(x=0;x

单片机×LED点阵显示屏方案

基于单片机的16×64LED点阵显示屏的设计 0 引言 LED点阵显示屏是一种简单的汉字显示器,具有价廉、易于控制、使用寿命长等特点,可广泛应用于各种公共场合,如车站、码头、银行、学校、火车、公共汽车显示等。本文详细介绍了一种低廉的16x64点阵LED显示屏的设计过程。 1 硬件系统设计 本系统采用AT89C52单片机作控制器,整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路等部分组成。为了简化显示屏电路,降低成本,本系统在单片机部分不加字库存储器。而在PC机上编辑汉字和字符显示信息,并将其转换为相应的点阵显示数据,然后通过串口(采用RS-232通信标准>送给单片机存储并进行显示处理。图1所示为其硬件系统原理图。 1.1 单片机控制电路 本系统由AT89C52构成单片机最小应用系统.同时配有11.0592 MHz晶振和按键复位电路等。系统外扩的一片Flash存储器29F040为数据存储器,可用来存储由PC机串口送来的点阵信息(通过软件将图像或文字转换成与LED显示屏的像素相对应的点阵信息>。该Flash存储器是一种非易失性存储器,它在供电电源关闭后仍能保持片内信息。因为

29F040的容量为512 KB(该芯片内部由8个64 Kbyte的读写块组成,可分块进行读、写和擦除等操作>,而AT89C52只能管理64KB的数据空间,所以,需将29F040分成8页,每页64KB。其页码可由单片机的P3.2~P3.4来选择。另外,采用MAX232可完成RS232与TTL 电平的转换,以便使PC机与单片机交换信息。 1.2 16x64点阵显示器的设计 图2是一种8x8的LED点阵单色行共阳模块的内部结构图,其单点工作电压Uf为1.8 V,正向电流IF为8~10 mA。当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮;而当其某一列线为高时,其行列交叉的点为暗;当某一行线为低电平时,无论列线如何,对应这一行的点全部为暗。 用四个8x8点阵显示可构成16x16点阵显示器,其连接方法如图3所示。图中,将(A>和(B>的8列、(C>和(D>的8列分别对应相连,同时将(A>和(C>的8行、 (B>和(D>的8行分别对应相连。即可形成一个16行(每一行有16个LED>、16列(每一列也有16个LED>

8×8LED点阵显示数字A到F

摘要 本文研究了基于AT89S51单片机LED8×8点阵显示屏的设计并运用PROTEUS软件进行原理图绘制,运用KEIL软件进行仿真和调试。主要介绍了LED8×8点显示屏的硬件电路设计、汇编程序设计与调试、PROTEUS软件绘制原理图和实物制作等方面的内容,本显示屏的设计具有体积小、硬件少、电路结构简单及容易实现等优点。能帮助广大电子爱好者了解点阵显示原理,认识单片机的基本结构、工作原理及应用方法,并提高单片机知识技术的运用能力。利用单片机来设计的系统,既能实现系统所需的功能,也可以满足计数的准确、迅速性,并且电路简单,操作简单,通用性强。

目录 1.绪论 (2) 1.1前言 (2) 1.2国内外的研究概况 (2) 2. 系统概述 (3) 3.课程设计目的 (3) 4.课程设计题目和任务 (3) 5.设计内容 (4) 5.1系统功能的描述 (4) 5.2 系统硬件设计 (4) 5.2.1 AT89S51芯片的介绍 (4) 5.2.2 单片机系统设计 (7) 5.2.3 单片机的发展趋势 (8) 5.2.4 时钟电路的设计 (9) 5.2.5 复位电路的设计 (9) 5.2.6驱动电路的设计 (10) 5.2.7 8×8LED点阵 (10) 5.3 计数器初值计算 (11) 5.4 字母A到F点阵显示代码的形成 (11) 5.5 程序流程图 (12) 5.6 源程序 (12) 6. 调试及性能分析 (13) 6.1系统调试 (13) 6.1.1软件调试 (13) 6.1.2硬件调试 (14) 6.2设计分析 (14) 7.设计总结 (14) 附件调试结果 (15) 参考书目 (16)

基于51单片机的led点阵显示

项目名称:基于51单片机的LED点阵显示器 目录 一、项目介绍 (2) 1.1 项目背景 1.2 功能介绍 二、电路结构………………………………………3 三、实现模块………………………………5 四、运行程序………………………………………7 一、项目介绍 1.1项目背景 当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。目前,点阵式显示器件具体包括LED显示模块和LCD显示模块等。现在发展的LCD比较先进,LCD的优点较为明显,他体积小,容易控制,功能强,价格适宜,能够适应显示器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越来越广泛的应用;随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设备的工作状态和生产过程状态的显示与监控起到了非常重要的作用,对于那些需要显示的

信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕LED点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。 1.2功能介绍 2本次设计的用单片机控制的显示电路使用比较简单,操作方便。它主要是通过一个8×8点阵来显示图案,通过不同的按键来选择控制图案的种类及显示方式。在通电以后,显示屏全亮,随后进入逐字显示状态。按下复位键K1,系统自动复位,显示diligent,随后进入待命状态。按键1、2、3、4分别控制不同的图案。另外,我们可以通k5键来控制字符移动速度的快慢。 ? 二、电路结构 单片机最小系统设计 2.2.1 各部分具体电路 1 单片机的时钟电路 AT89C52单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。AT89C52的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。 内部时钟方式:利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2-1电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择30PF左右。

单片机控制8X8LED点阵显示程序

单片机控制8X8LED点阵滚动显示数字0-9 LED是light-emitting diode的缩写,在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN 结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。 LED电子显示屏作为一种现代电子媒体,以其灵活的显示面积(可分割、任意拼装)、高亮度、长寿命、大容量、数字化、实时性的特点,是其他任何一种媒体所不可替代的。? LED电子显示屏充分运用现代信息技术,将声、光、电、机等学科整合并完美组合、集视频、动画、字幕、图片于一体的高科技信息发布的终端产品。LED显示屏还可延伸到网络、通讯、综合布线、监控、广播等弱电系统。 LED点阵一般采用扫描式显示,实际运用分为三种方式: (1)点扫描; (2)行扫描; (3)列扫描。 若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。 若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED 亮度会不足。 今天做一个简单的点阵显示实验,使点阵模块循环向左滚动反显数字0-9,即数字是对应的LED是不亮的,其余的是亮的! 我们使用的是8*8点阵的型号是PAL48SB。PAL48SB点阵参数如下:发光尺寸: Φ4.8mm,列行:8×8,发光颜色:高亮红绿双色,极性:共阳,散射剂:透明,表面黑色。表面大小:48×48×9.2mm,双列12脚,位距:2.54×11=27.94mm。点阵外形图和其内部的连线图如下图所示!上下分别为0DF3A1GH和25E7CB64。 单独的8*8点阵是没法工作的。下面我们做一个点阵模块,它可以直接通过排线接到单片机的I/O口上!

相关文档