电子技术吧 关注:14,495贴子:35,790
  • 2回复贴,共1

帮我看一下下面程序哪里出问题,数码管显示0~9999,为什么

只看楼主收藏回复

帮我看一下下面程序哪里出问题,数码管显示0~9999,为什么只有一位数码管显示0~9(最右边的一位显示)
P2^4~P2^7位选,P0段选,共阳4位数码管
#include<at89x52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};
uchar dat[]={0,0,0,0};
uchar ge=0,shi=0,bai=0,qian=0;
void delay1s(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
}
void main(void)
{
uchar i;
while(1)
{
for(ge=0;ge<10;ge++)
{
P2=0xef;
P0=tab[i];
delay1s();
if(ge>=9)
{
ge=0;
shi++;
P0=tab[i];
delay1s();
if(shi>=9)
{
shi=0;
bai++;
delay1s();
if(bai>=9)
{
bai=0;
qian++;
delay1s();
if(qian>=9)
{
qian=0;
}
}
}
}
}
dat[0]=ge%10;
dat[1]=shi%10/10;
dat[2]=bai/100;
dat[3]=qian/1000;
}
}
图如下:


IP属地:福建来自Android客户端1楼2018-10-16 09:30回复
    满拾进位不行啊


    IP属地:安徽2楼2018-10-17 16:00
    回复
      我玩过,应该和51单片机差不多


      IP属地:江苏来自Android客户端3楼2018-10-23 18:01
      回复