m0_63234165 2022-01-21 15:28 采纳率: 100%
浏览 235
已结题

蓝桥杯单片机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

  • 写回答

1条回答 默认 最新

  • suqingxiao 2022-01-21 15:34
    关注

    main里面加个while试试

    void main()
    {
    whilie(1)
    {
        DS1302_Config();
        {
            DS1302_ReadTime();
            DisplayTime();
        }
    }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月21日
  • 创建了问题 1月21日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!