絾謌 发表于 2014-4-15 17:48:31

DS1307怎么设定时间?

求大神讲一下DS1307的时间设定{:soso_e183:}

Super169 发表于 2014-4-15 18:11:07

本帖最后由 Super169 于 2014-4-15 18:12 编辑

我是用 Arduino 板子連接, 再用程式設定.

簡單的可以先做好一個程式, 指定了一個時間 (例如一分鐘後的時間), 在 setup() 中直接設定時間, 等待時間一到, 提早 2秒左右就按 reset(), 之後盡快刪去程式避免再執行.又或加一個鍵, 等待時間一到就按鍵設定時間.

複雜一點...就寫一個完整的時間設定, 加入幾個鍵去做.

hi55234 发表于 2014-4-15 19:43:41

#include <Wire.h>
#include <RTClib.h>

void printDateTime(DateTime dateTime);

//创建实例
RTC_DS1307 RTC;

void setup (void){
Serial.begin(9600);
//初始化总线
Wire.begin();
//初始化实时时钟
RTC.begin();   

}

void loop() {
if (Serial.available() > 0) {

    int instruct = Serial.read();

    switch (instruct) {
    case 'D': {
      //获取当前日期和时间
      DateTime now = RTC.now();
      //通过串口传送当前的日期和时间      
      printDateTime(now);
      break;
    } case 'S':
   RTC.set(RTC_YEAR, 14);
      RTC.set(RTC_MONTH, 3);
   RTC.set(RTC_DAY, 5);
   
      RTC.set(RTC_HOUR, 22);
             RTC.set(RTC_MINUTE, 22);
                  RTC.set(RTC_SECOND, 0);
      break;
    }
}
}

void printDateTime(DateTime dateTime) {
    //传送年份
    Serial.print(dateTime.year(), DEC);
    Serial.print('/');
    //传送月份
    Serial.print(dateTime.month(), DEC);
    Serial.print('/');
    //传送月份中的第几天
    Serial.print(dateTime.day(), DEC);
    Serial.print(' ');
    //传送小时
    Serial.print(dateTime.hour(), DEC);
    Serial.print(':');
    //传送分钟
    Serial.print(dateTime.minute(), DEC);
    Serial.print(':');
    //传送秒
    Serial.print(dateTime.second(), DEC);
    Serial.println();
}

eddiewwm 发表于 2014-4-15 21:10:17

hi55234 发表于 2014-4-15 19:43 static/image/common/back.gif
#include
#include



請問<RTClib.h>在那裡下載的?

Super169 发表于 2014-4-15 21:57:51

hi55234 发表于 2014-4-15 19:43 static/image/common/back.gif
#include
#include



對....我也忘了可以經由串口去溝通, 直接由串口發個時間給它設定就可以了.

eddiewwm 发表于 2014-4-15 22:16:59

eddiewwm 发表于 2014-4-15 21:10 static/image/common/back.gif
請問在那裡下載的?

你用的函數看來跟Adafruit的<RTClib.h>不一樣,可否給一個下載地址作參考?

shihaipeng04 发表于 2014-4-16 10:52:49

arduino的实例文件里就有。。

eddiewwm 发表于 2014-4-19 11:23:42

shihaipeng04 发表于 2014-4-16 10:52 static/image/common/back.gif
arduino的实例文件里就有。。

還是找不到以下這些函數:
//
   } case 'S':
   RTC.set(RTC_YEAR, 14);
      RTC.set(RTC_MONTH, 3);
   RTC.set(RTC_DAY, 5);

      RTC.set(RTC_HOUR, 22);
             RTC.set(RTC_MINUTE, 22);
                  RTC.set(RTC_SECOND, 0);
      break;
//

shihaipeng04 发表于 2014-4-19 20:24:18

eddiewwm 发表于 2014-4-19 11:23 static/image/common/back.gif
還是找不到以下這些函數:
//
   } case 'S':


那不是函数,是实例的事件,虽然和函数用法一样。

//创建实例
RTC_DS1307 RTC;

rtc 里包含 属性和事件。 这个细说不了,你得着个书看了,面向对象的程序设计。 不一定是C的,其他语言也行,vb什么的都可以,了解了面向对象程序先。

简单点,找到<RTClib.h 还有RTClib.cpp看看里面的程序也能知道个的大概。

eddiewwm 发表于 2014-4-20 12:54:21

shihaipeng04 发表于 2014-4-19 20:24 static/image/common/back.gif
那不是函数,是实例的事件,虽然和函数用法一样。

//创建实例


明白的,但手上的 <RTClib.h 还有RTClib.cpp。裡面就是找不到這些,你手上的能運行嗎?

asdfcgdc 发表于 2015-8-14 09:14:58

eddiewwm 发表于 2014-4-15 21:10 static/image/common/back.gif
請問在那裡下載的?

http://www.geek-workshop.com/forum.php?mod=viewthread&tid=5929&highlight=DS1307
这个链接里有一个下载包,库文件就在里面,包括实验和你说的东西

水镜 发表于 2015-9-22 19:58:10

good,感谢。
页: [1]
查看完整版本: DS1307怎么设定时间?