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

来自KEYES
跳转至: 导航搜索

概述

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

KE0050.png


规格参数

1、工作电压:3.3V-5V(DC)
2、接口:5PIN接口
3、重量:2.4g
4、工作温度:0°---70°
5、备用电池为正品天球CR2032,电压3V,电流260mAh,非可充电电池。理论数据保持时间大于10年


连接图

KE0050-1.png


测试代码

#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);
}


测试结果

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

KE0050-2.png


相关库文件链接

http://url.cn/4AQR3WC