目前有许多流行的串行时钟电路,例如 DS1302,DS3231,DS1307,PCF8485 等。它们由于其简
单的接口,低成本和易用性而被广泛使用。
NO.2DS1302DS1302 是美国 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 |
本代码只调试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.6DS1302函数设置时钟的工作模式
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.7Tips
电池
本例采用CR2302纽扣电池,CR2032电池的容量在200mAh左右,考虑自放电因素,和温度密切相关,即使没有负载,极限寿命也在5年左右
如果没开自动充电功能可以使用半年以上,如果开了充电功能芯片会自动为此备用电池充电的,可用上几年
DS1302 有两个电源输入,一个是主电源,一个是备用电源,这样是为了在系统掉电的情况下,我们的时钟还会继续走。如果使用的是充电电池,还可以在正常工作时,设置充电功能,给我们的备用电池进行充电
时间设置
setTime和setDate仅需要在初始化时设置一次[setup函数内],设置后,可将这两个函数注销,因为时钟自带内存记忆功能,不需要每次设置
如果时间有误差,或者需要再次调整,使用重复第1条提示即可
END.