蓝桥杯单片机ds1302在数码管上显示时钟一直不变是怎么回事呀


#include <STC15F2K60S2.H>
#include "ds1302.h"


unsigned char SMG[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code READ_CK[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; 
unsigned char code WRITE_CK[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};
unsigned char TIME[7]={0x30,0x59,0x23,0x17,0x10,0x06,0x21};

/*============ÈÕÀúʱÖÓ²ÎÊýÅäÖú¯Êý======================*/
void DS1302_Config()
{
    unsigned char i;
    Write_Ds1302(0x8e,0x00);    //¹Ø±Õд±£»¤
    for(i=0;i<7;i++)
    {
        Write_Ds1302(WRITE_CK[i],TIME[i]);
    }
  Write_Ds1302(0x8e,0x80);    //´ò¿ªÐ´±£»¤
}
/*==========ÈÕÀúʱÖÓÊý¾Ý¶ÁÈ¡º¯Êý===========*/
void DS1302_ReadTime()
{
    unsigned char i;
    for(i=0;i<7;i++)
    {
        TIME[i]=Read_Ds1302 (READ_CK[i]);
    }
}

void Delay(unsigned char t)
{
    while(t--);
}

void SelectHC573(unsigned char channel)
{
    switch(channel)
    {
        case 4: P2=(P2&0x1f) | 0x80; break;
        case 5: P2=(P2&0x1f) | 0xa0; break;
        case 6: P2=(P2&0x1f) | 0xc0; break;
        case 7: P2=(P2&0x1f) | 0xe0; break;
    }
}

void Display(unsigned char pos,unsigned char value)     //ÊýÂë¹ÜÏÔʾ
{
    SelectHC573(6);
    P0=0x01<<pos;
    SelectHC573(7);
    P0=value;
}

void Display_All()
{
    SelectHC573(6);
    P0=0xff;
    SelectHC573(7);
    P0=0xff;
}

void DisplayTime()            //ÊýÂë¹ÜÏÔʾʱÖÓ
{
    Display(0,SMG[TIME[2]/16]);
    Delay(100);
    Display(1,SMG[TIME[2]%16]);
    Delay(100);
    
    Display(2,0xbf);
    Delay(100);
    
    Display(3,SMG[TIME[1]/16]);
    Delay(100);
    Display(4,SMG[TIME[1]%16]);
    Delay(100);
    
    Display(5,0xbf);
    Delay(100);
    
    Display(6,SMG[TIME[0]/16]);
    Delay(100);
    Display(7,SMG[TIME[0]%16]);
    Delay(100);
    
    Display_All();
}

void main()
{
    DS1302_Config();
    {
        DS1302_ReadTime();
        DisplayTime();
    }
}

img

main里面加个while试试

void main()
{
whilie(1)
{
    DS1302_Config();
    {
        DS1302_ReadTime();
        DisplayTime();
    }
}
}