[51单片机]

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

[复制链接]
943|3
手机看帖
扫描二维码
随时随地手机跟帖
经历|  楼主 | 2018-10-15 20:33 | 显示全部楼层 |阅读模式
我只能显示最右边一位显示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;
}
}

相关帖子

ningling_21| | 2018-10-15 21:34 | 显示全部楼层
有流程图没?

使用特权

评论回复
#include<at89x52.h>
typedef  unsigned char uchar  //记住这种要用转义定义
typedef  unsigned int  uint
       
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar dat[]={0,0,0,0};  //如果你的数据时间等本来就是10进制的可以这么定义,
uchar ge=0,shi=0,bai=0,qian=0;

uint  Int_data;    //假设你的是数据
uchar DisPlay_dat[4];  //显示缓存
uchar num;

void main(void)
{
    uchar i;
    while(1)
    {
            if(Int_data >= 9999) Int_data == 9999; //防止溢出
            DisPlay_dat[3] = Int_data/1000;        //千
            DisPlay_dat[2] = (Int_data%1000)/100;  //百
            DisPlay_dat[1] = (Int_data%100)/10;    //十
            DisPlay_dat[0] = Int_data%10;          //个
       
            for(num=0; num<4; num++)
            {
                    P2 &= 0xf0;  //位选消隐,假设是低驱动有效,用P2 |= 0x0f
                    P0 = 0;      //段消隐
               
                    P0 = tab[DisPlay_dat[num];
                    P2 |= 1<<(num+4); //如果是低驱动有效,用P2 &= ~(1<<(num+4))
                /*这里不能延时1秒,根据视觉暂留,要求每秒至少扫描16次以上,也就是
                     1000ms/16/4= 15.6ms每一位的停留时间,这里建议延时10~12ms
                */
                    delay1s();   
            }
        }
}
        /*
    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;
  }
} */

使用特权

评论回复
一路向北lm| | 2018-10-18 13:20 | 显示全部楼层
记得消隐

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

31

帖子

2

粉丝