这是下面程序(三数字个叠在一起了)
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgduan[] = {0x08,0x0C,0x08,0x08,
0x08,0x08,0x08,0x7F,
0x38,0x24,0x22,0x10,
0x08,0x04,0x3E,0x00,
0x38,0x24,0x10,0x08,
0x10,0x24,0x38,0x00};
void delay(u16 a)
{
while(a--);
}
u8 i;
void DigDisplay()
{
for(i = 0;i < 8;i++)
{
switch(i)
{
case(0):
P0 = 0xFE;break;
case(1):
P0 = 0xFD;break;
case(2):
P0 = 0xFB;break;
case(3):
P0 = 0xF7;break;
case(4):
P0 = 0xEF;break;
case(5):
P0 = 0xDF;break;
case(6):
P0 = 0xBF;break;
case(7):
P0 = 0x7F;break;
}
P2 = smgduan[i];
delay(100);
}
}
void DigDisplay2()
{
u8 b;
for(b = 0;b < 8;b++)
{
switch(b)
{
case(0):
P0 = 0xFE;break;
case(1):
P0 = 0xFD;break;
case(2):
P0 = 0xFB;break;
case(3):
P0 = 0xF7;break;
case(4):
P0 = 0xEF;break;
case(5):
P0 = 0xDF;break;
case(6):
P0 = 0xBF;break;
case(7):
P0 = 0x7F;break;
}
P2 = smgduan[b + 8];
delay(100);
}
}
void DigDisplay3()
{
u8 c;
for(c = 0;c < 8;c++)
{
switch(c)
{
case(0):
P0 = 0xFE;break;
case(1):
P0 = 0xFD;break;
case(2):
P0 = 0xFB;break;
case(3):
P0 = 0xF7;break;
case(4):
P0 = 0xEF;break;
case(5):
P0 = 0xDF;break;
case(6):
P0 = 0xBF;break;
case(7):
P0 = 0x7F;break;
}
P2 = smgduan[c + 16];
delay(100);
}
}
void main()
{
while(1)
{
DigDisplay();
DigDisplay2();
DigDisplay3();
}
}
试试清屏后再加个延时再打印下一个