目录
[1. 概述](#1. 概述)
[2. 介绍](#2. 介绍)
[2.1 大致结构](#2.1 大致结构)
[2.2 数据传输](#2.2 数据传输)
[2.3 操作与通信](#2.3 操作与通信)
[2.4 VS DS1202](#2.4 VS DS1202)
[2.5 其他](#2.5 其他)
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 位数据 + 地址 + 片选)。
- 协议简单:无复杂规则,只有 **"时钟 + 数据"**的固定节奏
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
广泛应用于电话、传真、便携式仪器以及电池供电的仪器仪表等产品领域下面