DS1302-时间设定

在这里插入图片描述

接线方法

VCC–》3.3
GND–》GND
CLK–》7
DAT–》6
RST–》5

DS1802设置时间


#include <stdio.h>
#include <DS1302.h>

namespace {

//设置适当的数字I / O引脚连接。这些是针
// Arduino的指配以及DS1302芯片的指配。见DS1302
//数据表:
//
//    http://datasheets.maximintegrated.com/en/ds/DS1302.pdf

const  int  kCePin    = 5 ;  //芯片启用
const  int  kIoPin    = 6 ;  //输入/输出
const  int  kSclkPin = 7 ;  //串行时钟

//创建DS1302对象。
DS1302 rtc(kCePin, kIoPin, kSclkPin);

String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "Sunday";
    case Time::kMonday: return "Monday";
    case Time::kTuesday: return "Tuesday";
    case Time::kWednesday: return "Wednesday";
    case Time::kThursday: return "Thursday";
    case Time::kFriday: return "Friday";
    case Time::kSaturday: return "Saturday";
  }
  return "(unknown day)";
}

void printTime() {
//从芯片中获取当前时间和日期。
  Time t = rtc.time();

  //命名星期几。
  const String day = dayAsString(t.day);

  //格式化时间和日期并插入临时缓冲区。
  char buf[50];
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
           day.c_str(),
           t.yr, t.mon, t.date,
           t.hr, t.min, t.sec);

 //将格式化的字符串打印到serial,以便我们可以看到时间。
  Serial.println(buf);
}

} //命名空间

void setup() {
  Serial.begin(9600);

//通过关闭写保护并清除来初始化新芯片
  //时钟停止标志。不必总是调用这些方法。见DS1302
  //数据表了解详情。
  rtc.writeProtect(false);
  rtc.halt(false);

  //创建一个新的时间对象来设置日期和时间。
  // 2013年9月22日星期日01:38:50
  Time t(2013, 9, 22, 1, 38, 50, Time::kSunday);

//在芯片上设置时间和日期。
  rtc.time(t);
}

//每秒循环并打印时间。
void loop() {
  printTime();
  delay(1000);
}



没啥卵用的,RAM操作方法 (来自搬砖人员的自嘲)

#include <stdio.h>
#include <DS1302.h>

namespace {

//设置适当的数字I / O引脚连接。这些是针
// Arduino的指配以及DS1302芯片的指配。见DS1302
//数据表:
//
//    http://datasheets.maximintegrated.com/en/ds/DS1302.pdf
const  int  kCePin    = 5 ;  //芯片启用
const  int  kIoPin    = 6 ;  //输入/输出
const  int  kSclkPin = 7 ;  //串行时钟

DS1302 rtc(kCePin, kIoPin, kSclkPin);

}  //命名空间
void setup() {
  Serial.begin(9600);

  rtc.writeProtect(false);

    //使用字节接口清除所有RAM字节。
  for (int i = 0; i < DS1302::kRamSize; ++i) {
    rtc.writeRam(i, 0x00);
  }

  //使用批量接口编写字符串。
  static const char kHelloWorld[] = "hello world";
  rtc.writeRamBulk((uint8_t*)kHelloWorld, sizeof(kHelloWorld) - 1);
}

void loop() {
  char buf[32];

  //使用字节界面将RAM字节值打印为十六进制。
  for (int i = 0; i < DS1302::kRamSize; ++i) {
    snprintf(buf, sizeof(buf), "[%02X]", rtc.readRam(i));
    Serial.print(buf);
  }
  Serial.println();

  //使用批量接口将RAM字节值打印为ASCII。
  uint8_t ram[DS1302::kRamSize];
  rtc.readRamBulk(ram, DS1302::kRamSize);
  Serial.println((const char*)ram);

  delay(3000);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值