微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 在数码管上显示时分秒的程序,时钟不显示

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

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

#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++;
}

时分秒要一起显示,而不是条件显示

搞定了,谢谢前辈指点

想请问一下 为什么会这样

想请问一下 为什么会这样

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top