打印
[51单片机]

51单片机控制DS1302实时显示时间:有原理图,程序及相关器...

[复制链接]
楼主: 必过源码
手机看帖
扫描二维码
随时随地手机跟帖
61
forgot| | 2024-3-21 14:24 | 只看该作者 回帖奖励 |倒序浏览
回复可见回复可见回复可见回复可见回复可见回复可见

使用特权

评论回复
62
richardchenhf| | 2024-6-7 16:57 | 只看该作者
谢谢 非常感谢

使用特权

评论回复
63
DDDDGeGe| | 2024-7-26 11:23 | 只看该作者
感谢分享啊

使用特权

评论回复
64
2669020082| | 2024-7-26 13:30 | 只看该作者
学习学习学习

使用特权

评论回复
65
89cpu| | 2024-8-16 14:26 | 只看该作者
回复看一看,谢谢。

使用特权

评论回复
66
dyx8899| | 2024-8-17 19:57 | 只看该作者
感谢分享

使用特权

评论回复
67
鑫越电子| | 2024-10-30 15:43 | 只看该作者
51单片机控制DS1302实时显示时间

使用特权

评论回复
68
夜雨依丁| | 2024-12-10 15:03 | 只看该作者
谢谢分享

使用特权

评论回复
69
STCMCUNT018| | 2024-12-10 16:21 | 只看该作者
666

使用特权

评论回复
70
STCMCUNT018| | 2024-12-10 16:21 | 只看该作者
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;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则