求单片机8*8点阵简单图案源代码。

如题所述

在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左 平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次如此循环下去。
#include<AT89X52.H>

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[i];
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[i];
delay1();
}追问

你的程序是错的,我是新手求帮忙

追答

没有错的,你不能直接用的,因为我不知道你的硬件电路,你需要根据你的硬件电路对程序做适当修改才能用。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-11
#include"reg52.h"

unsigned char code a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code b[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

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=a[i];
P1=0xff;
delay1();
}
}

for(j=0;j<3;j++)
{
for(i=0;i<8;i++)
{
P3=a[7-i];
P1=0xff;
delay1();
}
}

for(j=0;j<3;j++)
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=b[7-i];

delay1();
}
}

for(j=0;j<3;j++)
{
for(i=0;i<8;i++)
{
P3=0x00;
P1=b[i];

delay1();
}
}
}
}