OCROBOT 实时时钟模块(RTC pcf8563)调试实录 ① 模块的初始化
本帖最后由 迷你强 于 2015-3-30 17:43 编辑好久没写文档了,最近太忙了,抽空写篇使用说明文档吧,最近憋了一款很高级的模块,实时时钟(RTC),这款时钟与市面上其他时钟方案有一些区别,功能比较强大,偏向于实际应用中断唤醒什么的,而不是单纯的提供现在的时间,主要在低功耗应用场景有非常不错的应用
拥有后备电池,超低功耗 ,供电电压1.0-5.5V均可
属于简单好用,高精度的时间模块了
我们简单说下怎么配置时间。我写了一段通过串口配置的代码,比当年写DS3231的时候高级了一点。
先来下载驱动库
解压缩放入arduino\libraries\目录下重启IDE即可
看图接线
接线很简单,VCC 接5v , GND 接GND, SCL 接A5 , SDA 接 A4
标准的I2C通讯电路
好了,下载下面的代码
/* Demonstration of Rtc_Pcf8563 Set Time.
* 时钟时间初始化代码,初始化后时钟会一直运行,以后基本不需要重新初始化了。
*电路链接
* VCC to 5V
* GND to GND
* SCL to A5
* SDA to A4
*/
#include <Wire.h>
#include <Rtc_Pcf8563.h>
//init the real time clock
Rtc_Pcf8563 rtc;
char data; //(多一位作为结束符存储)
char Str_year, Str_month, Str_date, Str_DoW, Str_hour, Str_minute, Str_second; //字符串时间(多一位作为结束符存储空间)
byte year, month, day, DoW, hour, minute, second;
void setup()
{
Serial.begin(9600);
//clear out the registers
//set a time to start with.
//day, weekday, month, century(1=1900, 0=2000), year(0-99)
Serial.println("Please enter the time: yearmonthdateDoWhourminutesecond");
Serial.println("example: 2014-12-3 Wednesday 14:15:15 enter:14120303141515");
}
void loop()
{
if (Serial.available() >=14) //串口读取数据
{
for (int a = 0; a <14; a++)
{
data = Serial.read();
}
Str_year = data; //拆包
Str_year = data;
Str_month = data;
Str_month = data;
Str_date = data;
Str_date = data;
Str_DoW = data;
Str_DoW = data;
Str_hour = data;
Str_hour = data;
Str_minute = data;
Str_minute = data;
Str_second = data;
Str_second = data;
//Str to byte
year = atoi(Str_year); //转换数据类型
month = atoi(Str_month);
day = atoi(Str_date);
DoW = atoi(Str_DoW);
hour = atoi(Str_hour);
minute = atoi(Str_minute);
second = atoi(Str_second);
// conf times; //写入时钟
rtc.initClock();
//day, weekday, month, century(1=1900, 0=2000), year(0-99)
rtc.setDate(day, DoW, month, 0, year);
//hr, min, sec
rtc.setTime(hour, minute, second);
}
//both format functions call the internal getTime() so that the
//formatted strings are at the current time/date.
Serial.print(rtc.formatTime());
Serial.print("\r\n");
Serial.print(rtc.formatDate());
Serial.print("\r\n");
delay(1000);
}
代码很简单,新买的模块是没有时间的,需要配置,按照要求串口写入时间,就将模块初始化好了。就可以使用了
基本是这样。假设现在的时间是2015年3月30日 周一 14点 30分 52秒
你就在串口写入数字 15033001143052发送即可。
格式就是:年月日周小时分钟秒
输出时间是外国的习惯月/日/年 不是错了哟。。。
好了今天就介绍到这里了。下期我们介绍如何独立的输出各个时间来应用,我们下期会用1602液晶屏来做个时钟
有需要的朋友可以在论坛的淘宝杂货铺购买
第二篇传送门 谢谢,刚好有一个PCF8563,少个库 期待你用PCF8563做出更好的作品 顶一个+++++ 顶顶顶顶顶 请问这个是充电电池? 幻生幻灭 发表于 2015-3-31 08:05 static/image/common/back.gif
请问这个是充电电池?
非充电电池,基本上这样一颗电池都能用用1-2年时间,充电锂电池的寿命也就这么长时间,所以没必要,而且超小电流放电很容易将充电电池过放而死,充电电池的平均容量只有非充电电池的一半而已。一次性电池才是好选择 感谢楼主的分享
页:
[1]