_SKU_DFR0151_DS1307_时钟模块_V2.0 - jimaobian/DFRobotWikiCn GitHub Wiki
DFRobot曾出过一款DS1307 RTC 实时时钟模块,它以低廉的价格广受好评。此次DFRobot特意推出了新一代Gravity接口版本。
新版模块采用高精度时钟晶振,大幅度减少了时间误差,实测24小时内误差仅在1秒左右(机械表大约在20s左右)。此外新版RTC模块采用了单节CR1220供电,缩减了整体的体积,电池最小使用寿命为3~5年。保留了4KB的EEPROM的内存,用以记录更多闹钟和一些事件信息,可通过调整电阻设置I2C地址。
Gravity: I2C DS1307 RTC实时时钟模块采用Gravity-I2C接口,可以直插Gravity IO扩展板,配合DFRobot新开发的Arduino DS1307库,可以轻松实现时间设定,时间显示等功能。无论是用于数据采集,还是制作时钟,都是一个非常棒的选择!
- 工作电压:5V
- 通信接口:I2C/IIC(Gravity PH2.0-4P接口 & 排针)
- 芯片可输出数据:年、月、日、星期、时、分、秒。
- 自动闰年补偿计算
- 保证准确日期到2100年
- 1Hz输出插口
- 56字节的非易失性内存
- 4KB的只读内存(EEPROM)
- 尺寸:22 * 27mm
| | | | -------------------------------------------------- | | | : | |
标号 | 名称 | 功能描述 |
1 | VCC | 电源输入正极(5v) |
2 | GND | 电源输入负极 |
3 | SCL | I2C时钟 |
4 | SDA | I2C数据 |
5 | SQ | 时钟输出 |
6 | VCC | 电源输入正极(5v) |
7 | GND | 电源输入负极 |
8 | SCL | I2C时钟 |
9 | SDA | I2C数据 |
实时时钟管脚定义
- 说明:本教程为你演示怎样使用“arduino”来更新模块的时间
-
硬件
- Arduino UNO x1
- DS1307 时钟模块 V2.0 x1
- 杜邦线 若干
-
软件
- Arduino IDE 点击下载Arduino IDE
- Arduino IDE 点击下载DS1307库
|
/***************************************************
* Real Time Clock Module
* ****************************************************
* How to apply the DS1307 clock module.
* @author Dongzi([email protected])
* @version V1.0
* @date 2017-08-21
GNU Lesser General Public License.
See <http://www.gnu.org/licenses/> for details.
* All above must be included in any redistribution
* ****************************************************/
#include <Wire.h>
#include <DS1307.h>
#define updata_flag 0 //1 updata time,0 only show time
//Modify the following data
#define TIME_YR 17
#define TIME_MTH 8
#define TIME_DATE 21
#define TIME_DOW 1
#define TIME_HR 0
#define TIME_MIN 1
#define TIME_SEC 0
char* str[]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};//week
int rtc[7];
void showtime() //
{
RTC.get(rtc,true);
{
Serial.print( rtc[6]); /*YEAR MONTH DATE*/
Serial.print("-");
Serial.print( rtc[5]);
Serial.print("-");
Serial.println( rtc[4]);
Serial.print( rtc[2]); /*HOUR MIN SEC */
Serial.print(":");
Serial.print( rtc[1]);
Serial.print(":");
Serial.println( rtc[0]);
Serial.println( str[rtc[3]-1]); /********WEEK*****/
Serial.println("**********");
}
}
void setup()
{ Serial.begin(9600);
Wire.begin();
if(updata_flag)
{ Serial.println(" OldTime: ");
showtime();
RTC.stop();
RTC.set(DS1307_SEC,TIME_SEC); //---Update time----
RTC.set(DS1307_MIN,TIME_MIN);
RTC.set(DS1307_HR,TIME_HR);
RTC.set(DS1307_DOW,TIME_DOW);
RTC.set(DS1307_DATE,TIME_DATE);
RTC.set(DS1307_MTH,TIME_MTH);
RTC.set(DS1307_YR,TIME_YR);
RTC.start();
Serial.println(" SetTime: ");
showtime();
}
}
void loop()
{ if(updata_flag==0)
showtime(); //Output data from serial port
delay(1000);
}
|}
特别说明:
#define updata_flag 0 //1 updata time,0 only show time
- 当flag等于0时,代码仅显示时间
- 当flag等于1时,代码仅设定时间
- 使用前请先设定时间,设定完成之后,将1改成0,确保只显示时间
| : |
:注:EEPROM芯片默认I2C地址为0x50, A0~A2 丝印旁边200R 焊接上为ON 去掉为0ff |
| 问:有什么办法让电脑时间实时更新到模块中吗? |
答:请点击下面的链接:电脑时间实时更新
| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |
- [ 原理图与元件布局图]
- DS1307 Datasheet
- 历史版本