0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DS1302时钟芯片的工作原理

CHANBAEK 来源:CSDN-_会飞_的鱼 作者:CSDN-_会飞_的鱼 2023-03-07 15:01 次阅读

一. 描述

DS1302时钟芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。 它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。

DS1302芯片包含一个用于存储实时时钟/日历的 31 字节的静态 RAM,可通过简单的串行接口微处理器通讯,将当前的时钟存于RAM。 DS1302芯片对于少于 31 天的月份月末会自动调整,并会自动对闰年进行校正。 由于有一个 AM/PM 指示器,时钟可以工作在 12 小时制或者 24小时制。

二. 芯片参数

1.芯片特点

  • 实时时钟计算年、月、日、时、分、秒、星 期,直到 2100 年,并有闰年调节功能
  • 31 x 8 位 通用暂存 RAM
  • 串行输入输出,使管脚数最少
  • 2.0V 至 5.5V 宽电压范围操作
  • 在 2.0V 时工作电流小于 300nA
  • 读写时钟或 RAM 数据时有单字节或多字节(脉冲串模式)数据传送方式
  • 8 管脚 DIP 封装或可选的 8 管脚表面安装 SO 封装
  • 简单的 3 线接口
  • 与 TTL 兼容 (VCC = 5V)
  • 可选的工业温度范围:-40°C to +85°C

2.引脚说明

截图20230301181839.png

DS1302采用的是三线接口的双向数据通信接口RST是片引脚,低电平有效; SCLK是时钟芯片,为通信提供时钟源; I/O为数据输入输出引脚,用于传输及接收数据;

DS1302还采用了双电源供电模式,VCC1 连接到备用电源,在VCC2主电源失效时保持时间和日期数据.

三. 参考电路

截图20230301181839.png

DS1302芯片基本电路如上图,其中Y2为32.768k外部晶振,为芯片提供时钟源;P2为备用电池,以保证在主电源掉电后,芯片仍可继续运行;D1为二极管,保证电压的单向导通,防止主电源电压过高烧坏备用电池;R6为上拉电阻,增强信号传输的稳定性。

四. 控制程序

1.时钟数据的读写地址

截图20230301181839.png

如上图,为DS1302芯片的时钟数据的读和写的地址,也就是说要实现对芯片控制,就是往这些地址上写入或读出数据。 其中:

读地址为: 0x81(秒), 0x83(分), 0x85(时), 0x87(日), 0x89(月), 0x8b(星期), 0x8d(年);

写地址为: 0x80(秒), 0x82(分), 0x84(时), 0x86(日), 0x88(月), 0x8a(星期), 0x8c(年);

2.控制时序

DS1302控制软件最基本的操作为写函数和读函数,其次就是实现初始化函数。

(1)读时序

截图20230301181839.png

/*******************************************************************************
* 函数功能       : 读取一个地址的数据
*******************************************************************************/
uchar Ds1302Read(uchar addr)
{
  uchar n,dat,dat1;
  RST = 0;
  _nop_();




  SCLK = 0;//先将SCLK置低电平。
  _nop_();
  RST = 1;//然后将RST(CE)置高电平。
  _nop_();




  for(n=0; n<8; n++)//开始传送八位地址命令
  {
    DSIO = addr & 0x01;//数据从低位开始传送
    addr >>= 1;
    SCLK = 1;//数据在上升沿时,DS1302读取数据
    _nop_();
    SCLK = 0;//DS1302下降沿时,放置数据
    _nop_();
  }
  _nop_();
  for(n=0; n<8; n++)//读取8位数据
  {
    dat1 = DSIO;//从最低位开始接收
    dat = (dat>>1) | (dat1<<7);
    SCLK = 1;
    _nop_();
    SCLK = 0;//DS1302下降沿时,放置数据
    _nop_();
  }




  RST = 0;
  _nop_();  //以下为DS1302复位的稳定时间,必须的。
  SCLK = 1;
  _nop_();
  DSIO = 0;
  _nop_();
  DSIO = 1;
  _nop_();
  return dat;  
}

(2)写时序

截图20230301181839.png

/*******************************************************************************
* 函数功能       : 向DS1302命令(地址+数据)
*******************************************************************************/
void Ds1302Write(uchar addr, uchar dat)
{
  uchar n;
  RST = 0;
  _nop_();
  SCLK = 0;//先将SCLK置低电平。
  _nop_();
  RST = 1; //然后将RST(CE)置高电平。
  _nop_();




  for (n=0; n<8; n++)//开始传送八位地址命令
  {
    DSIO = addr & 0x01;//数据从低位开始传送
    addr >>= 1;
    SCLK = 1;//数据在上升沿时,DS1302读取数据
    _nop_();
    SCLK = 0;
    _nop_();
  }
  for (n=0; n<8; n++)//写入8位数据
  {
    DSIO = dat & 0x01;
    dat >>= 1;
    SCLK = 1;//数据在上升沿时,DS1302读取数据
    _nop_();
    SCLK = 0;
    _nop_();  
  }




  RST = 0;//传送数据结束
  _nop_();
}

(3)初始化

/*******************************************************************************
* 函数功能       : 初始化DS1302.
*******************************************************************************/
void Ds1302Init()
{
  uchar n;
  Ds1302Write(0x8E,0X00);     //禁止写保护,就是关闭写保护功能
  for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年
  {
    Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);  
  }
  Ds1302Write(0x8E,0x80);     //打开写保护功能
}

3. 参考示例

实现了DS1302的驱动程序,接下来就可以实现DS1302的报时功能了。




//---DS1302写入和读取时分秒的地址命令---//
//---秒分时日月周年 最低位读写位;-------//
uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; 
uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};




//---DS1302时钟初始化2013年1月1日星期二12点00分00秒。---//
//---存储顺序是秒分时日月周年,存储格式是用BCD码---//
uchar TIME[7] = {0, 0, 0x12, 0x01, 0x01, 0x02, 0x13};




/*******************************************************************************
* 函数功能       : 读取时钟信息
*******************************************************************************/
void Ds1302ReadTime()
{
  uchar n;
  for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年
  {
    TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
  }  
}




void main()
{
  LcdInit();
  Ds1302Init();
  while(1)
  {  
    Ds1302ReadTime();       //读取此时的时间
    LcdDisplay();                 //显示时间
  }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电源
    +关注

    关注

    182

    文章

    16553

    浏览量

    244701
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409117
  • 接口
    +关注

    关注

    33

    文章

    7639

    浏览量

    148485
  • 时钟芯片
    +关注

    关注

    2

    文章

    229

    浏览量

    39576
  • DS1302
    +关注

    关注

    8

    文章

    448

    浏览量

    50226
收藏 人收藏

    评论

    相关推荐

    何为DS1302时钟芯片

    标题 单片机外设之一(时钟芯片DS1302)何为DS1302?DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时
    发表于 12-08 08:15

    DS1302 的基本组成和工作原理

    DS1302 的基本组成和工作原理DS1302 的基本组成和工作原理DS1302 的管脚排列及描述如下图及表所示
    发表于 01-14 13:27 17次下载
    <b class='flag-5'>DS1302</b> 的基本组成和<b class='flag-5'>工作原理</b>

    时钟芯片DS1302及其在数据记录中的应用

    时钟芯片DS1302及其在数据记录中的应用:介绍了美国DALLAS公司推出的低功耗时钟芯片DS1302
    发表于 05-22 08:35 140次下载

    基于DS1302芯片时钟设计

    基于DS1302芯片时钟设计
    发表于 03-01 12:21 11次下载

    基于实时时钟模块 时钟芯片DS1302

    基于实时时钟模块 时钟芯片DS1302
    发表于 10-16 11:35 39次下载
    基于实时<b class='flag-5'>时钟</b>模块 <b class='flag-5'>时钟</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>

    ds1302芯片介绍,ds1302工作原理解析

    时钟小编相信大家见怪不怪了,那么时钟芯片大家知道是什么吗?今天我们就来谈谈最常用时钟芯片ds1302
    发表于 10-18 16:19 4.3w次阅读

    DS1302的内部结构全面剖析

    说起DS1302想必还是有很多人知道的吧,毕竟现在流行的串行时钟电路有很多DS1302就在其中。对于DS1302小编在《ds1302
    发表于 10-19 09:28 5936次阅读

    DS1302芯片的使用,时钟芯片DS1302功能汇总

    DS1302大家都知道他是时钟芯片,知道了原理肯定想知道功能和操作方法,这篇文章就是主要来说DS1302芯片的功能以及
    发表于 10-19 10:43 8961次阅读

    DS1302时钟芯片调试经验,奉上调试时钟芯片DS1302的程序

     时钟芯片DS1302目前得到广泛的应用,但是DS1302的调试还是很有难度的。这篇文章就来说说DS1302
    发表于 10-19 11:12 1w次阅读

    MSP430F149微控制器简介及其时钟芯片DS1302的应用介绍

    介绍TI公司生产的MsP430F149单片机与美 国 DALLAS公司推出的低功耗时钟芯片 DS1302之间的接口应用程序,并详细介绍时钟芯片
    发表于 11-27 14:30 0次下载
    MSP430F149微控制器简介及其<b class='flag-5'>时钟</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>的应用介绍

    时钟芯片DS1302的原理及使用

    一.描述DS1302时钟芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计
    发表于 01-17 13:03 27次下载
    <b class='flag-5'>时钟</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>的原理及使用

    DS1302时钟芯片的使用

    DS1302时钟芯片的使用带你写一个小时钟DS1302地址字节控制字节逻辑有效位必须是逻辑1,若为0,则数据就写不进去
    发表于 01-18 09:01 3次下载
    <b class='flag-5'>DS1302</b><b class='flag-5'>时钟</b><b class='flag-5'>芯片</b>的使用

    基于单片机的DS1302实时时钟实验 实时时钟芯片DS1302工作原理

    在许多系统当中都需要精确的时钟功能,因此时钟芯片孕育而生。其中美国达拉斯 DALLAS 公司设计的 DS1302 是一款非常流行的数字时钟
    的头像 发表于 07-27 18:27 3472次阅读
    基于单片机的<b class='flag-5'>DS1302</b>实时<b class='flag-5'>时钟</b>实验 实时<b class='flag-5'>时钟</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>的<b class='flag-5'>工作原理</b>

    DS1302时钟芯片工作原理

    DS1302时钟芯片是一种实时时钟芯片,采用三线串行接口与微处理器相连,可以提供年、月、日、时、分、秒等时间信息。
    的头像 发表于 11-18 09:39 2210次阅读

    DS1302时钟芯片的电路原理

    DS1302时钟芯片内部的时钟电路原理是基于晶振的振荡原理。晶振是一种利用晶体的共振特性产生稳定的振荡信号的元件。在DS1302中,晶振的频
    的头像 发表于 11-18 09:40 1214次阅读