找回密码
 立即注册
查看: 641|回复: 14

DS1302 自用代码 (通用)

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:161
  • 最近打卡:2025-05-01 18:53:09
已绑定手机

10

主题

42

回帖

497

积分

中级会员

积分
497
发表于 2024-10-17 08:28:27 | 显示全部楼层 |阅读模式
DS1302 自用代码 STC32G12K128 测没有问题

#define SCLK P22        //DS-S
#define DSIO P21        //DS-I        
#define RST  P20     //DS-R        

unsigned char  READ_RTC_ADDR[7]         = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};  //读取地址
unsigned char  WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c}; //写入地址

unsigned char  TIME[7] = {0,  0,         0,         0,         0,         0,         0};

unsigned char Year=0, Month=0,day=0, Week=0, Hour=0, Minute=0, Second=0;//年月日周时分秒


unsigned char Ds1302Read(unsigned char addr)  
{
        unsigned char n,dat,dat1;
        RST = 1;               
        _nop_();

        for(n=0; n<8; n++)               
        {
                DSIO = addr & 0x01;               
                addr >>= 1;
                SCLK = 1;               
                _nop_();
                SCLK = 0;               
                _nop_();
        }
        _nop_();
        
        for(n=0; n<8; n++)
        {
                dat1 = DSIO;               
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;               
                _nop_();
        }

        RST = 0;
        _nop_();        
        DSIO = 0;
        _nop_();
        return dat;        
}


void Ds1302Write(unsigned char addr, unsigned char dat)
{
        unsigned char n;
        RST = 1;
        _nop_();
        for (n=0; n<8; n++)
        {
                DSIO = addr & 0x01;
                addr >>= 1;
                SCLK = 1;
                _nop_();
                SCLK = 0;
                _nop_();
        }
        for (n=0; n<8; n++)
        {
                DSIO = dat & 0x01;
                dat >>= 1;
                SCLK = 1;
                _nop_();
                SCLK = 0;
                _nop_();        
        }        
                 
        RST = 0;
        _nop_();
}

void Ds1302Init()
{
        unsigned char n;
        Ds1302Write(0x8E,0X00);               
        for (n=0; n<7; n++)                                       
        {
                Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);        
        }
        Ds1302Write(0x8E,0x80);               
}




//========================================================================
//                                                                                                 读取时间
// ***********************************************************************
//========================================================================        
void Ds1302ReadTime()
{
        unsigned char n;
        unsigned char dd[10]="";
        for (n=0; n<7; n++)
        {
                TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
        }
        for (n=0; n<7; n++)
        {
                TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
        }
        Year=BCD_DEC(TIME[6]);
        Week=BCD_DEC(TIME[5]);
        Month=BCD_DEC(TIME[4]);
        day=BCD_DEC(TIME[3]);
        Hour=BCD_DEC(TIME[2]);
        Minute=BCD_DEC(TIME[1]);
        Second=BCD_DEC(TIME[0]);
}

unsigned char *WEEK_ZH(unsigned char aa)
{
        static unsigned char dd[10]="";
        if(aa==1) strcpy(dd,"一") ;
        if(aa==2) strcpy(dd,"二") ;
        if(aa==3) strcpy(dd,"三\xfd") ;
        if(aa==4) strcpy(dd,"四") ;
        if(aa==5) strcpy(dd,"五") ;
        if(aa==6) strcpy(dd,"六") ;
        if(aa==7) strcpy(dd,"日") ;
        return dd;
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

905

积分

高级会员

积分
905
发表于 2024-10-17 10:33:50 来自手机 | 显示全部楼层
REMOVEUNUSED
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3190

回帖

4870

积分

论坛元老

积分
4870
发表于 2024-10-17 11:34:05 来自手机 | 显示全部楼层
1302还不错啊可以宽压使用

点评

1302几乎是51单片机开发板的标配,而嵌入式板上用8563似乎更多,8563的长处才是宽压使用,而1302的优势是独立后备电池脚、充电功能和31字节用户RAM  详情 回复 发表于 2024-10-17 22:54
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-01 04:31:49

24

主题

515

回帖

986

积分

荣誉版主

积分
986
发表于 2024-10-17 13:12:33 | 显示全部楼层
unsigned char *WEEK_ZH(unsigned char aa)
{
        static unsigned char dd[10]="";
        if(aa==1) strcpy(dd,"一") ;
        if(aa==2) strcpy(dd,"二") ;
        if(aa==3) strcpy(dd,"三\xfd") ;
        if(aa==4) strcpy(dd,"四") ;
        if(aa==5) strcpy(dd,"五") ;
        if(aa==6) strcpy(dd,"六") ;
        if(aa==7) strcpy(dd,"日") ;
        return dd;
}

上面的代码应该使用 else if, 或switch来实现:

unsigned char *WEEK_ZH(unsigned char aa)
{
        static unsigned char dd[10]="";
        if(aa==1) strcpy(dd,"一") ;
        else if(aa==2) strcpy(dd,"二") ;
        else if(aa==3) strcpy(dd,"三\xfd") ;
        else if(aa==4) strcpy(dd,"四") ;
        else if(aa==5) strcpy(dd,"五") ;
        else if(aa==6) strcpy(dd,"六") ;
        else if(aa==7) strcpy(dd,"日") ;
        return dd;
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-05-01 09:06:40

3

主题

47

回帖

424

积分

中级会员

积分
424
发表于 2024-10-17 14:20:29 | 显示全部楼层
我用的DS1302,总是走快,一天能快5-6秒,有没人知道是什么原因?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:161
  • 最近打卡:2025-05-01 18:53:09
已绑定手机

10

主题

42

回帖

497

积分

中级会员

积分
497
发表于 2024-10-17 15:27:42 | 显示全部楼层
wpy62*** 发表于 2024-10-17 14:20
我用的DS1302,总是走快,一天能快5-6秒,有没人知道是什么原因?

看下晶振和电容是否匹配
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:161
  • 最近打卡:2025-05-01 18:53:09
已绑定手机

10

主题

42

回帖

497

积分

中级会员

积分
497
发表于 2024-10-17 15:34:20 | 显示全部楼层
社区*** 发表于 2024-10-17 13:12
unsigned char *WEEK_ZH(unsigned char aa)
{
        static unsigned char dd[10]="";

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3190

回帖

4870

积分

论坛元老

积分
4870
发表于 2024-10-17 15:48:00 | 显示全部楼层
wpy62*** 发表于 2024-10-17 14:20
我用的DS1302,总是走快,一天能快5-6秒,有没人知道是什么原因?

晶振频率偏高,调节一下谐振电容
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-05-01 09:06:40

3

主题

47

回帖

424

积分

中级会员

积分
424
发表于 2024-10-17 17:57:49 | 显示全部楼层
so*** 发表于 2024-10-17 15:48
晶振频率偏高,调节一下谐振电容

收到,谢谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-05-01 09:06:40

3

主题

47

回帖

424

积分

中级会员

积分
424
发表于 2024-10-17 17:58:35 | 显示全部楼层
fan*** 发表于 2024-10-17 15:27
看下晶振和电容是否匹配

收到,谢谢
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 08:44 , Processed in 0.178909 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表