小白请教一下关于动态数码管显示
我想要实现一个能够自动计数的,可以从0-9,或是0-99.......!但是我一直实验不成功,请各位大侠看看我这段代码那里错了。
#include <reg52.h>
sbit LATCH1=P2^2;
sbit LATCH2=P2^3;
unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f} ;
unsigned int code DuanMa[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71} ;
unsigned int TempData[8]={0,0,0,0,0,0,0,0};
void delayms (int z);
void display(unsigned char FirstBit,unsigned char Num);
void mian ()
{
unsigned char num=0;
unsigned int j;
while (1)
{
j++;
if (j==500)
{
j=0;
num++;
if (num==10)
num=0;
}
TempData[0]=DuanMa[num];
display(2,1); //2表示从第几位开始 1表示有几个数码管显示。
}
}
void display(unsigned char FirstBit,unsigned char Num)
{
unsigned char i;
for (i=0;i<Num;i++)
{
P0=0x00;
LATCH1=1;
LATCH1=0; //消影
P0=WeiMa[i+FirstBit];
LATCH2=1;
LATCH2=0;
P0=TempData[i];
LATCH1=1;
LATCH1=0;
delayms(200);
}
}
void delayms (int z)
{
unsigned x,y;
for (x=z;x>0;x--)
for (y=123;y>0;y--);
}