51单片机——DS1302 时钟芯片(一)
DS1302是一款低功耗实时时钟芯片,具有31字节静态RAM,通过3线SPI接口与单片机通信。该芯片能独立维护日历数据,自动处理闰年及月份天数,支持双电源供电(主电源和备用电池),掉电时仍可持续计时。DS1302简化了标准SPI协议,仅需RST、SCLK和I/O三线即可完成数据传输,适用于51单片机等无硬件SPI的设备。其改进版本相比DS1202增加了涓流充电功能和额外存储空间,广泛应用于电子钟、
目录
1. 概述
DS1302 是一个 “带 31 字节掉电保存内存的电子钟机芯”,且只用 3 根线就能和单片机聊 “时间”、传 “数据”,,不用额外加零件就能自己就能完成“计时+存闹钟”
DS1302 通过 3 根线(RST、SCLK、I/O)遵循自定义 SPI 时序与外部设备通信,而 51 单片机无硬件 SPI,需用 3 个普通 IO 口通过软件控制电平变化,模拟该时序;单片机先发送 “读时间” 的命令,DS1302 通过 I/O 线返回存储的日历数据,最终单片机读取并解析这些数据。
① DS1302 是专门用于计时的芯片,能独立维护(DS1302 内部集成了实现 “独立计时” 的核心硬件,且支持双电源供电)秒、分、时、日、周、月、年 等日历数据,掉电时可通过备用电池(如 CR2032)继续运行,无需单片机持续供电。要获取这些时间数据,必须通过通信接口和单片机交互
② 理解“独立维护”:
DS1302 芯片无需单片机持续供电、无需单片机运行任何程序,仅靠自身的电源(主电 / 备用电池)和内部硬件电路,就能自主完成 “秒→分→时→日→周→月→年” 的计时累加,且能自动处理闰年、月份天数(如 2 月 28/29 天、30/31 天)等日历规则,持续保存最新的时间数据。
简单类比:DS1302 就像一个 “自带电池的电子手表机芯”—— 手表的机芯(DS1302)自己走时,你(单片机)只是偶尔看一眼时间(读数据)或调一下时间(写数据),哪怕你不看、不调,机芯依然会自己精准走时,这就是 “独立维护”。
其“独立维护”依赖电源管理电路:支持主电源(VCC2,接 5V)和备用电源(VCC1,接 CR2032 纽扣电池),当主电源断电(比如单片机掉电),备用电池会无缝接管供电,保证计时不中断。
③ “独立维护” 与单片机的关系(边界是什么?)
DS1302 的 “独立维护”≠ 和单片机完全无关,而是计时过程独立,数据交互按需进行:
- DS1302 的核心工作(独立):产生秒脉冲、更新时间寄存器、保存时间数据 —— 全程不需要单片机参与,哪怕单片机断电 / 复位,只要 DS1302 有电源(备用电池),这些工作就会一直做;
- 单片机的角色(被动访问):单片机只能 “按需读写” DS1302 的时间数据,比如:
- 初始化:单片机只需要在第一次上电时,给 DS1302 写一次初始时间(比如设置为 “2025 年 12 月 10 日 15:30:00”),之后就不用再管(开发板接主电源, DS1302 正常工作,否则,使用备用电源继续独立工作; 若失去所有供电,计时立刻停止,内部寄存器的时间数据会丢失(DS1302 的时间寄存器是 “易失性” 的,必须靠电源维持,无内置非易失性存储),所以使用前需要单片机重新向 DS1302 写入初始时间(比如 “2025-12-10 16:00:00”),才能重新开始计时。;
- 读取数据:单片机想显示时间时,才通过 3 线 SPI 接口发 “读命令”,从 DS1302 的寄存器中读取当前的秒、分、时等数据;
- 修改时间:只有需要调时间时,单片机才发 “写命令” 修改 DS1302 的寄存器,修改后 DS1302 又会基于新时间继续独立计时。
④ 3 线 SPI 接口:DS1302 的简化 SPI 通信
SPI(Serial Peripheral Interface)是一种串行通信协议,标准 SPI 为 4 线(CS 片选、SCLK 时钟、MOSI 主机发 / 从机收、MISO 主机收 / 从机发),但 DS1302 做了简化,仅用 3 根线完成通信,具体定义:

⑤ 51 单片机模拟 SPI 时序
传统 51 单片机(如 AT89C51)无硬件 SPI 控制器(硬件 SPI 是单片机内部自带的时序发生器,可自动生成 SCLK、处理数据收发),因此需要用普通 IO 口(如 P1.0、P1.1、P1.2),通过软件编程控制 IO 口的高低电平变化,模拟出 DS1302 要求的 SPI 通信时序。
开发板上集中了一个 DS1302 时钟模块,可使用它设计一个多功能电子时钟
2. 介绍
2.1 大致结构
DS1302 芯片是 DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历电路和31 字节静态RAM,通过简单的串行接口与单片机进行通信
① 实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整(内部有专门的寄存器(而非通用内存)存储时间数据,共 8 个核心寄存器(秒、分、时、日、周、月、年、控制,硬件逻辑自动维护这些寄存器的数值更新,无需单片机干预。)
② 静态 RAM(SRAM):一种靠电源维持数据的高速内存,无需像动态 RAM(DRAM)那样定期刷新,只要有电源(主电 / 备用电池),数据就不会丢失;
③ 31 字节:容量极小(仅 31 个字节),不是用来存储程序,而是给用户(单片机)提供的 “掉电可保存的临时数据区”;
④ 时钟操作可通过 AM/PM 指示决定采用 24/12 小时格式。
DS1302 的 “小时寄存器” 中专门设计了 AM/PM 控制位,通过设置该位的状态,可切换小时数据的存储 / 解读规则,实现 12 小时制或 24 小时制的计时,这种设计让 DS1302 适配不同的显示 / 使用场景(比如给民用设备显示 12 小时制,给工业设备用 24 小时制),是 RTC 芯片的通用人性化设计。
2.2 数据传输
DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需要三根通信线:RES复位 、 /O数据线、SCLK串行时钟

① 同步串行
通俗的说,DS1302 和单片机通信时,单片机发一个时钟脉冲,双方就传 1 位数据,时钟是 “指挥棒”,数据是 “跟着指挥棒走的音符”,无需额外约定传输速率,也不用复杂的帧格式

② 简单
硬件简单:线数极简,无需额外外设
仅需 3 根线,无需晶振、电平转换等额外硬件,直接用单片机普通 IO 口连接即可,对比其他通信方式:
- 标准 SPI:4 线(CS、SCLK、MOSI、MISO);
- I2C:2 线(SDA、SCL),但需上拉电阻,且有应答(ACK)机制;
- UART:至少 2 线(TX、RX),需配置波特率;
- 并行通信:十几根线(8 位数据 + 地址 + 片选)。
2. 协议简单:无复杂规则,只有 “时钟 + 数据” 的固定节奏
DS1302 的同步串行通信没有:
- I2C 的 “起始位、停止位、应答位”;
- UART 的 “波特率、奇偶校验、帧格式”;
- 标准 SPI 的 “高位 / 低位在前可选”(DS1302 固定低位在前);
唯一规则:时钟线(SCLK)拉高时采样数据,拉低时准备下一位,全程由单片机掌控,DS1302 只需要 “听时钟、传数据”。
2.3 操作与通信
时钟/RAM/的读/写数据以一个字节或多达 31 个字节的字符组方式通信
DS1302 针对不同存储区域设计了灵活的传输方式:
① 操作时钟寄存器(秒 / 分 / 时等):只能单次读写 1 个字节(每个时钟字段独立,无连续地址);
DS1302 的时钟 / 日历寄存器(秒、分、时、日、周、月、年等)是独立的 8 位寄存器,每个寄存器对应唯一地址,且彼此无连续地址关联,因此只能 “一个字节一个字节地读写”,这是操作时钟的唯一方式
② 操作31 字节 SRAM:既可以单次读写 1 个字节,也可以 “连续读写最多 31 个字节的字节组”(利用 SRAM 连续地址的特性,减少地址指令发送,提升效率)
DS1302 的 31 字节 SRAM 对应连续的地址空间(0x10~0x3F)单片机只需发送 “SRAM 起始地址”,之后无需再发地址,只需持续产生 SCLK 时钟,就能连续读写后续字节(直到 31 字节上限);适用于需批量存储 / 读取数据时(如存储多个设备参数、简易日志),比如一次性将 “闹钟小时、闹钟分钟、亮度值、工作模式”4 个参数(4 字节)写入 SRAM,或一次性读回。
这种设计兼顾了时钟操作的 “精准性”(单字节对应单个时间字段)和 RAM 操作的 “高效性”(批量传输),是 DS1302 适配实际应用场景的实用设计 —— 比如读时间只需单字节逐个读,存批量参数则用组传输省时间
2.4 VS DS1202
DS1302 由 DS1202 改进而来,增加了以下的特性:双电源管脚用于主电源和备份电源供应,Vcc1为可编程涓流充电电源,附加七个字节存储器
理解:DS1202/DS1302 都是实时时钟(RTC)芯片,核心功能是为嵌入式设备提供精准的年 / 月 / 日 / 时 / 分 / 秒计时,而改进的特性都是围绕 “供电可靠性” 和 “功能扩展性” 展开的,下面逐个拆解:
① 双电源管脚(主电源 + 备份电源供应)
DS1302 专门设计了两个独立的电源引脚(Vcc1 和 Vcc2),分别对应 “备份电源” 和 “主电源”,而 DS1202 无此独立双电源引脚设计(或电源切换逻辑简单)。
Vcc2(主电源):接设备的系统电源(如 3.3V/5V),正常工作时芯片优先用 Vcc2 供电,保证计时和数据读写;
Vcc1(备份电源):接纽扣电池 / 锂电池等小型备用电源,当主电源掉电(比如设备断电、插拔电源)时,芯片会自动切换到 Vcc1 供电,确保时钟不会停走、计时数据不丢失。
比如电子钟、工业控制器这类设备,哪怕断电几天,再次上电后依然能显示正确时间,核心就是备份电源的作用,而 DS1302 的双电源管脚让这种 “掉电续时” 的设计更规范、更稳定。
② Vcc1 为可编程涓流充电电源
Vcc1 不仅是备份电源的供电引脚,还支持 “可编程的涓流充电” 功能(DS1202 无此功能)。
涓流充电:是一种小电流、持续的充电方式(通常几十微安~几百微安),适合纽扣电池、小型锂电池这类低容量备份电源,避免大电流充电损坏电池;
可编程:用户可通过程序(向 DS1302 的充电寄存器写指令)设置:
✅ 是否开启充电(比如不需要充电时可关闭);
✅ 充电电阻的阻值(对应不同充电电流);
✅ 充电方式(比如单电池 / 双电池模式)。
备份电源(如纽扣电池)会自然损耗,DS1302 可通过主电源(Vcc2)给 Vcc1 的电池缓慢补电,大幅延长备份电源的使用寿命,不用频繁更换电池(比如原本半年换一次,充电功能开启后可用 1~2 年)。
③ 附加七个字节存储器
DS1302 在原有 “计时寄存器”(存秒、分、时、日等计时数据)之外,额外增加了 7 个字节的通用 RAM(随机存储器),DS1202 无此额外存储(“附加七个字节存储器”,是DS1302 相对 DS1202 的增量(DS1202 通用 RAM 是 24 字节,31-24=7))。

这 7 个字节是掉电非易失的(和计时数据一样,备份电源供电时不会丢失),可用来存储小型、需要掉电保存的参数,比如:
- 设备的运行次数、累计工作时长;
- 用户设置的参数(如电子钟的闹钟时间、工业设备的校准值);
- 临时的状态标记(如设备上次关机的时间戳)。
不用额外外接 EEPROM(掉电存储芯片),就能实现少量数据的掉电保存,节省硬件成本、简化电路设计(比如一个简易电子钟,只用 DS1302 就能同时实现 “计时 + 存闹钟”,无需额外芯片)。
2.5 其他
DS1302 工作时功耗很低,保持数据和时钟信息时功率小于 1mW
广泛应用于电话、传真、便携式仪器以及电池供电的仪器仪表等产品领域下面
2.6 总结
关键词:电子时芯 独立运行 掉电不丢失
① DS1302 是一个 “带 31 字节掉电保存内存的电子钟机芯”,且只用 3 根线就能和单片机聊 “时间”、传 “数据”,,不用额外加零件就能自己就能完成“计时+存闹钟”
② DS1302 芯片无需单片机持续供电、无需单片机运行任何程序,仅靠自身的电源(主电 / 备用电池)和内部硬件电路,就能自主完成 “秒→分→时→日→周→月→年” 的计时累加,且能自动处理闰年、月份天数(如 2 月 28/29 天、30/31 天)等日历规则,持续保存最新的时间数据。
③ 传统 51 单片机(如 AT89C51)无硬件 SPI 控制器(硬件 SPI 是单片机内部自带的时序发生器,可自动生成 SCLK、处理数据收发),因此需要用普通 IO 口(如 P1.0、P1.1、P1.2),通过软件编程控制 IO 口的高低电平变化,模拟出 DS1302 要求的 SPI 通信时序。
④ DS1302 芯片是 DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历电路和31 字节静态RAM,通过简单的串行接口与单片机进行通信
① 实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整(内部有专门的寄存器(而非通用内存)存储时间数据,共 8 个核心寄存器(秒、分、时、日、周、月、年、控制,硬件逻辑自动维护这些寄存器的数值更新,无需单片机干预。)
② 静态 RAM(SRAM):一种靠电源维持数据的高速内存,无需像动态 RAM(DRAM)那样定期刷新,只要有电源(主电 / 备用电池),数据就不会丢失;
③ 31 字节:容量极小(仅 31 个字节),不是用来存储程序,而是给用户(单片机)提供的 “掉电可保存的临时数据区”(相比DS1202,其额外增加了 7 个字节的通用 RAM(随机存储器);
⑤ DS1302 和单片机通信时,单片机发一个时钟脉冲,双方就传 1 位数据,时钟是 “指挥棒”,数据是 “跟着指挥棒走的音符”,无需额外约定传输速率,也不用复杂的帧格式 ;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)