KE0050 keyes 1302时钟传感器(焊盘孔) 红色 环保

50 (1)

1. 概述

DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:(1)RST 复位(2)I/O 数据线(3)SCLK串行时钟。时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信。DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。模块自带2个定位孔,方便你将模块固定在其他设备。

2. 规格参数

工作电压:3.3V-5V(DC)

接口:5PIN接口

重量:2.4g

工作温度:0°—70°

备用电池为CR1220,电压3V,电流40mAh,非可充电电池。理论数据保持时间大于1年

3. 连接图

KE0050

4. 测试代码

#include <stdio.h>

#include <string.h>

#include <DS1302.h>

/* 接口定义

CE(DS1302 pin5) -> Arduino D5 (RST)

IO(DS1302 pin6) -> Arduino D6 (DAT)

SCLK(DS1302 pin7) -> Arduino D7 (CLK)

*/

uint8_t CE_PIN = 5;

uint8_t IO_PIN = 6;

uint8_t SCLK_PIN = 7;

/* 日期变量缓存 */

char buf[50];

char day[10];

/* 创建 DS1302 对象 */

DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);

void print_time()

{

/* 从 DS1302 获取当前时间 */

Time t = rtc.time();

/* 将星期从数字转换为名称 */

memset(day, 0, sizeof(day));

switch (t.day) {

case 1:

strcpy(day, “Sunday”);

break;

case 2:

strcpy(day, “Monday”);

break;

case 3:

strcpy(day, “Tuesday”);

break;

case 4:

strcpy(day, “Wednesday”);

break;

case 5:

strcpy(day, “Thursday”);

break;

case 6:

strcpy(day, “Friday”);

break;

case 7:

strcpy(day, “Saturday”);

break;

}

/* 将日期代码格式化凑成buf等待输出 */

snprintf(buf, sizeof(buf), “%s %04d-%02d-%02d %02d:%02d:%02d”,

day,

t.yr, t.mon, t.date,

t.hr, t.min, t.sec);

/* 输出日期到串口 */

Serial.println(buf);

}

void setup()

{

Serial.begin(9600); //设置波特率

rtc.write_protect(false);

rtc.halt(false);

/*设置开始时间为2017年5月9日8点50分37秒星期二 */

Time t(2017,5, 9, 8, 50, 37, 3);

rtc.time(t);

}

/* 每一秒循环输出时间 */

void loop()

{

print_time();

delay(1000);

}

5. 测试结果

按照上图接好线,烧录好代码,上电后,通电后,我们可在软件串口监视器中看到当前时间日期,并计时,如下图。

6. 相关库文件链接

https://pan.baidu.com/s/1mBHuL054Jhy9LBvqb01Bfg

提取码:45c7