1.试验使命
在8X8LED点阵上显现柱形,让其先从左到右滑润移动三次,其次从右到左滑润移动三次,再次从上到下滑润移动三次,最终从下到上滑润移动三次,如此循环下去。
2.电路原理图
(1).把“单片机体系”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;
(2).把“单片机体系”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;
4.程序设计内容
(1).8X8点阵LED作业原理阐明
8X8点阵LED结构如下图所示
从图4.24.2中能够看出,8X8点阵共需求64个发光二极管组成,且每个发光二极管是放置内行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因而要完成一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或许对应的一行为一根横柱,因而完成柱的亮的办法如下所述:
一根竖柱:对应的列置1,而行则选用扫描的办法来完成。
一根横柱:对应的行置0,而列则选用扫描的办法来完成。
5.汇编源程序
ORG00H
START:NOP
MOVR3,#3
LOP2:MOVR4,#8
MOVR2,#0
LOP1:MOVP1,#0FFH
MOVDPTR,#TABA
MOVA,R2
MOVCA,@A+DPTR
MOVP3,A
INCR2
LCALLDELAY
DJNZR4,LOP1
DJNZR3,LOP2
MOVR3,#3
LOP4:MOVR4,#8
MOVR2,#7
LOP3:MOVP1,#0FFH
MOVDPTR,#TABA
MOVA,R2
MOVCA,@A+DPTR
MOVP3,A
DECR2
LCALLDELAY
DJNZR4,LOP3
DJNZR3,LOP4
MOVR3,#3
LOP6:MOVR4,#8
MOVR2,#0
LOP5:MOVP3,#00H
MOVDPTR,#TABB
MOVA,R2
MOVCA,@A+DPTR
MOVP1,A
INCR2
LCALLDELAY
DJNZR4,LOP5
DJNZR3,LOP6
MOVR3,#3
LOP8:MOVR4,#8
MOVR2,#7
LOP7:MOVP3,#00H
MOVDPTR,#TABB
MOVA,R2
MOVCA,@A+DPTR
MOVP1,A
DECR2
LCALLDELAY
DJNZR4,LOP7
DJNZR3,LOP8
LJMPSTART
DELAY:MOVR5,#10
D2:MOVR6,#20
D1:MOVR7,#248
DJNZR7,$
DJNZR6,D1
DJNZR5,D2
RET
TABA:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
TABB:DB01H,02H,04H,08H,10H,20H,40H,80H
END
6.C言语源程序
#include
unsignedcharcodetaba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodetabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
voiddelay(void)
{
unsignedchari,j;
for(i=10;i>0;i–)
for(j=248;j>0;j–);
}
voiddelay1(void)
{
unsignedchari,j,k;
for(k=10;k>0;k–)
for(i=20;i>0;i–)
for(j=248;j>0;j–);
}
voidmain(void)
{
unsignedchari,j;
while(1)
{
for(j=0;j<3;j++)//fromlefttoright3time
{
for(i=0;i<8;i++)
{
P3=taba
P1=0xff;
delay1();
}
}
for(j=0;j<3;j++)//fromrighttoleft3time
{
for(i=0;i<8;i++)
{
P3=taba[7-i];
P1=0xff;
delay1();
}
}
for(j=0;j<3;j++)//fromtoptobottom3time
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=tabb[7-i];
delay1();
}
}
for(j=0;j<3;j++)//frombottomtotop3time
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=tabb
delay1();
}
}
}
}