在数码管上显示时分秒的程序,时钟不显示

2019-07-15 18:53发布

求大神解答:这是一个在数码管上显示时分秒的程序  问题:只显示秒钟正常工作,分钟也可以工作但是闪烁数字暗淡,时钟不显示


#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uchar code table[] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar num,miao,fen,shi,tt;
sbit dula=P2^6;
sbit wela=P2^7;
//sbit key1=P3^5;     
//sbit key2=P3^6;  
//sbit key3=P3^7;   

void delay (uint z)
{
        uint x,y;
    for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}


void display_sfm(uchar add,uchar add1,uchar sj) //显示时分秒函数
{
        dula=1;
        P0=table[sj%10];
        dula=0;
        P0=0xff;
       wela=1;
        P0=table1[add];
        wela=0;
        delay(1);

        dula=1;
        P0=table[sj/10];
        dula=0;
        P0=0xff;
       wela=1;
        P0=table1[add1];
        wela=0;
        delay(1);
}

void init()
{
        
        TMOD=0x01;
        TH0=(65530-50000)/256;
        TL0=(65535-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;        
}

void main()
{

  init();
  while(1)
  {
           if(tt==20)
       {
              tt=0;
              miao++;
             if(miao==60)         
          {        
            miao=0;
            fen++;
          if(fen==60)
             {
                 fen=0;
               shi++;
               if(shi==24)
                shi=0;
             }
              display_sfm(6,7,shi);            
          }        
           display_sfm(3,4,fen);               
       }
      display_sfm(0,1,miao);
   }
}

void timer0() interrupt 1  
{
  TH0=(65530-50000)/256;
  TL0=(65535-50000)%256 ;
  tt++;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。