请问电子钟芯片1302怎么初始化,希望可以给出程序和怎么接单片机

谢谢
2024-12-03 19:12:02
推荐回答(2个)
回答1:

DS1302不需要初始化什么,只要有驱动就可以了,从DS1302读出来时间显示。参照下面的。

void Write_A_Byte_TO_DS1302(uchar x)

{

  uchar i;

 for(i=0;i<8;i++)

 {

   IO=x&0x01;SCLK=1;SCLK=0;x>>=1;

 }

}

 

uchar Get_A_Byte_FROM_DS1302()

{

  uchar i,b=0x00;

 for(i=0;i<8;i++)

 {

   b |= _crol_((uchar)IO,i);

  SCLK=1;SCLK=0;

 }

 return b/16*10+b%16;

}

 

uchar Read_Data(uchar addr)

{

  uchar dat;

 RST = 0;SCLK=0;RST=1;

    Write_A_Byte_TO_DS1302(addr);

 dat = Get_A_Byte_FROM_DS1302();

    SCLK=1;RST=0;

 return dat;

}

 

 

回答2:

void Write_A_Byte_TO_DS1302(uchar x)//向DS1302写一字节

{

 uchar i;

for(i=0;i<8;i++)

{

IO=x&0x01;SCLK=1;SCLK=0;x>>=1;

}

}

uchar Get_A_Byte_FROM_DS1302()//从DS1302读出一字节

{

 uchar i,b=0x00;

for(i=0;i<8;i++)

{

b |= _crol_((uchar)IO,i);

SCLK=1;SCLK=0;

}

return b/16*10+b%16;

}

uchar Read_Data(uchar addr)//从DS1302某处读取数据

{

 uchar dat;

RST = 0;SCLK=0;RST=1;

   Write_A_Byte_TO_DS1302(addr);

dat = Get_A_Byte_FROM_DS1302();

   SCLK=1;RST=0;

return dat;

}

void GetTime()//读取时间

{

 uchar i,addr = 0x81;

for(i=0;i<7;i++)

{

DateTime[i]=Read_Data(addr);addr+=2;

}

}

接线图: