arduino设置ds1302电子时钟模块

img

NO.1
前言

目前有许多流行的串行时钟电路,例如 DS1302,DS3231,DS1307,PCF8485 等。它们由于其简

单的接口,低成本和易用性而被广泛使用。

NO.2
DS1302

DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。

工作电压为 2.5V~5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。

DS1302 内部有一个 31×8 的用于临时性存放数据的 RAM 寄存器。

DS1302 是 DS1202 的升级产品,与 DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。

NO.3
接线

Arduino Uno R3

Arduino Uno R3 DS1302
2 RST
3 DAT
4 CLK
GND GND
5V VCC
NO.4
代码

本代码只调试DS1302,初始化时间并打印到串口

#include "DS1302.h"
//定义引脚
DS1302 rtc(2, 3, 4);
void setup()
{
  //禁用时钟写保护
  rtc.halt(false);
  rtc.writeProtect(false);
  //设置时钟时间 24小时制
  rtc.setTime(18, 49, 50);
  //设置时钟日期 日-月-年
  rtc.setDate(22, 11, 2020);
  //初始化串口
  Serial.begin(9600);
}

void loop()
{
  //串口中打印日期时间
  Serial.print(rtc.getDateStr());
  Serial.print(" ");
  Serial.print(rtc.getTimeStr());
  Serial.print("\n");
  delay(1000);
}

结果

NO.5
实际操作

右侧的LCD显示屏第二行显示当前时间,第一行显示温度和湿度

NO.6
DS1302函数

设置时钟的工作模式

rtc.halt(false);

设置写入保护的开关

rtc.writeProtect(false);

设置DS1302~时分秒(24小时制)

rtc.setTime(18, 50, 55);

设置DS1302~年月日

rtc.setDate(22, 11, 2020);

读取星期

rtc.getDOWStr()

读取日期

rtc.getDateStr()

读取时间

rtc.getTimeStr()

NO.7
Tips

电池

  1. 本例采用CR2302纽扣电池,CR2032电池的容量在200mAh左右,考虑自放电因素,和温度密切相关,即使没有负载,极限寿命也在5年左右

  2. 如果没开自动充电功能可以使用半年以上,如果开了充电功能芯片会自动为此备用电池充电的,可用上几年

  3. DS1302 有两个电源输入,一个是主电源,一个是备用电源,这样是为了在系统掉电的情况下,我们的时钟还会继续走。如果使用的是充电电池,还可以在正常工作时,设置充电功能,给我们的备用电池进行充电

时间设置

  1. setTime和setDate仅需要在初始化时设置一次[setup函数内],设置后,可将这两个函数注销,因为时钟自带内存记忆功能,不需要每次设置

  2. 如果时间有误差,或者需要再次调整,使用重复第1条提示即可

END.