极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 絾謌

DS1307怎么设定时间?

[复制链接]
发表于 2014-4-15 17:48:31 | 显示全部楼层 |阅读模式
求大神讲一下DS1307的时间设定{:soso_e183:}
回复

使用道具 举报

发表于 2014-4-15 18:11:07 | 显示全部楼层
本帖最后由 Super169 于 2014-4-15 18:12 编辑

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

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

複雜一點...就寫一個完整的時間設定, 加入幾個鍵去做.
回复 支持 反对

使用道具 举报

发表于 2014-4-15 19:43:41 | 显示全部楼层
  1. #include <Wire.h>
  2. #include <RTClib.h>

  3. void printDateTime(DateTime dateTime);

  4. //创建实例
  5. RTC_DS1307 RTC;

  6. void setup (void){
  7.   Serial.begin(9600);
  8.   //初始化总线
  9.   Wire.begin();
  10.   //初始化实时时钟
  11.   RTC.begin();   

  12. }

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

  15.     int instruct = Serial.read();

  16.     switch (instruct) {
  17.     case 'D': {
  18.       //获取当前日期和时间
  19.       DateTime now = RTC.now();
  20.       //通过串口传送当前的日期和时间      
  21.       printDateTime(now);
  22.       break;
  23.     } case 'S':
  24.    RTC.set(RTC_YEAR, 14);
  25.       RTC.set(RTC_MONTH, 3);
  26.    RTC.set(RTC_DAY, 5);
  27.    
  28.       RTC.set(RTC_HOUR, 22);
  29.              RTC.set(RTC_MINUTE, 22);
  30.                     RTC.set(RTC_SECOND, 0);
  31.       break;
  32.     }
  33.   }
  34. }

  35. void printDateTime(DateTime dateTime) {
  36.     //传送年份
  37.     Serial.print(dateTime.year(), DEC);
  38.     Serial.print('/');
  39.     //传送月份
  40.     Serial.print(dateTime.month(), DEC);
  41.     Serial.print('/');
  42.     //传送月份中的第几天
  43.     Serial.print(dateTime.day(), DEC);
  44.     Serial.print(' ');
  45.     //传送小时
  46.     Serial.print(dateTime.hour(), DEC);
  47.     Serial.print(':');
  48.     //传送分钟
  49.     Serial.print(dateTime.minute(), DEC);
  50.     Serial.print(':');
  51.     //传送秒
  52.     Serial.print(dateTime.second(), DEC);
  53.     Serial.println();
  54. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2014-4-15 21:10:17 | 显示全部楼层
hi55234 发表于 2014-4-15 19:43
#include
#include

請問<RTClib.h>在那裡下載的?
回复 支持 反对

使用道具 举报

发表于 2014-4-15 21:57:51 | 显示全部楼层
hi55234 发表于 2014-4-15 19:43
#include
#include

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

使用道具 举报

发表于 2014-4-15 22:16:59 | 显示全部楼层
eddiewwm 发表于 2014-4-15 21:10
請問在那裡下載的?

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

使用道具 举报

发表于 2014-4-16 10:52:49 | 显示全部楼层
arduino的实例文件里就有。。
回复 支持 反对

使用道具 举报

发表于 2014-4-19 11:23:42 | 显示全部楼层
shihaipeng04 发表于 2014-4-16 10:52
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;
//
回复 支持 反对

使用道具 举报

发表于 2014-4-19 20:24:18 | 显示全部楼层
eddiewwm 发表于 2014-4-19 11:23
還是找不到以下這些函數:
//
   } case 'S':


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

//创建实例
RTC_DS1307 RTC;

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

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

使用道具 举报

发表于 2014-4-20 12:54:21 | 显示全部楼层
shihaipeng04 发表于 2014-4-19 20:24
那不是函数,是实例的事件,虽然和函数用法一样。

//创建实例

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

使用道具 举报

发表于 2015-8-14 09:14:58 | 显示全部楼层
eddiewwm 发表于 2014-4-15 21:10
請問在那裡下載的?

http://www.geek-workshop.com/for ... mp;highlight=DS1307
这个链接里有一个下载包,库文件就在里面,包括实验和你说的东西
回复 支持 反对

使用道具 举报

发表于 2015-9-22 19:58:10 | 显示全部楼层
good,感谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 23:20 , Processed in 0.049954 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表