1、流水灯
#include <reg51.h>
void main()
{
int i,j;
while(1)
{
for(i=0;i<8;i++)
{
P2=~(0x01<<i);
for(j=1;j<10000;j++);
}
}
}
2、点阵
静态显示X
#include<reg51.h>
unsigned char array1[]={0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81};
unsigned char array2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void main()
{
int i,j;
while(1)
{
for(i=0;i<8;i++)
{
P3=array2[i];
P2=~array1[i];
for(j=0;j<100;j++);
}
}
}
上下移动
#include<reg51.h>
unsigned char array1[]={0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81,0x00};
unsigned char array2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};
void main()
{
int i,j,k,m,n;
while(1)
{
for(k=0;k<9;k++)
{
n=0;
while(n<100)
{
for(i=0,m=0;i<9-k&&m<8;i++,m++)
{
P2=~array2[i+k];
P3=array1[m];
for(j=0;j<50;j++);
}
n++;
}
for(j=0;j<10;j++);
}
for(k=7;k>=0;k--)
{
n=0;
while(n<100)
{
for(i=7;i>=k;i--)
{
P2=~array2[i];
P3=array1[i-k];
for(j=0;j<50;j++);
}
n++;
}
for(j=0;j<10;j++);
}
for(k=0;k<9;k++)
{
n=0;
while(n<100)
{
for(i=0,m=0;i<8-k&&m<9-k;m++,i++)
{
P2=~array2[m];
P3=array1[i+k];
for(j=0;j<50;j++);
}
n++;
}
for(j=0;j<10;j++);
}
for(k=7;k>=0;k--)
{
n=0;
while(n<100)
{
for(i=7;i>=k;i--)
{
P2=~array2[7-i];
P3=array1[i-k];
for(j=0;j<50;j++);
}
n++;
}
for(j=0;j<10;j++);
}
}
}
左右移动修改寄存器,并取反即可
3、数码管
显示HELLO
#include<reg51.h>
unsigned char array1[]={0x76,0x79,0x38,0x38,0x3f};
unsigned char array2[]={0xfe,0xfd,0xfb,0xf7,0xef};
void main()
{
int i,j;
while(1)
{
for(i=0;i<5;i++)
{
P2=array2[i];
P0=array1[i];
for(j=0;j<=600;j++);
}
}
}
显示后八位学号:(数字可自行修改)
#include<reg51.h>
unsigned char array1[]={0x06,0x6f,0x5b,0x06,0x5b,0x7f,0x5b,0x7d};
unsigned char array2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main()
{
int i,j;
while(1)
{
for(i=0;i<8;i++)
{
P2=array2[i];
P0=array1[i];
for(j=0;j<=600;j++);
}
}
}
有其他需求读者可留言评论。