用户工具

站点工具


ocrobot:modules:pcf8563

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
ocrobot:modules:pcf8563 [2017/10/04 08:36] 弘毅ocrobot:modules:pcf8563 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +=====PCF8563实时时钟(RTC)模块=====
  
 +OCROBOT pcf8563是一款设计非常优秀的时间源模块,提供直接可以读取的年月日时间分钟秒,并且可以提供32.768khz 1024hz 1Hz的时钟信号,采用高精度的爱普生晶体,极其优秀的极低功耗。
 +
 +====参数数据====
 +------------
 +宽电压范围 1.0~5.5V
 + 
 +复位电压标准值Vlow=0.9V
 +
 +超低功耗:典型值为 0.25uA (VDD=3.0V,Tamb=25℃)
 +
 +可编程时钟输出频率为:32.768KHz 、1024Hz 、32Hz 、1Hz
 +
 +四种报警功能和定时器功能。
 +====产品图片====
 +{{:ocrobot:modules:rcf8563侧面-修改-435.png?nolink|}}
 +{{:ocrobot:modules:rcf8563正面-修改-435.png?nolink|}}
 +====支持库(arduino)====
 +{{:ocrobot:modules:rtc_pcf8563.zip|}}
 +
 +====示例代码====
 +-------------------
 +用串口给模块配置时间
 +<code cpp>
 +/* 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[15];   //(多一位作为结束符存储)
 +char Str_year[3], Str_month[3], Str_date[3], Str_DoW[3], Str_hour[3], Str_minute[3], Str_second[3];    //字符串时间(多一位作为结束符存储空间)
 +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: year[2]month[2]date[2]DoW[2]hour[2]minute[2]second[2]");
 +        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[a] = Serial.read();
 +                }
 +                Str_year[0] = data[0];    //拆包
 +                Str_year[1] = data[1];
 +                Str_month[0] = data[2];
 +                Str_month[1] = data[3];
 +                Str_date[0] = data[4];
 +                Str_date[1] = data[5];
 +                Str_DoW[0] = data[6];
 +                Str_DoW[1] = data[7];
 +                Str_hour[0] = data[8];
 +                Str_hour[1] = data[9];
 +                Str_minute[0] = data[10];
 +                Str_minute[1] = data[11];
 +                Str_second[0] = data[12];
 +                Str_second[1] = data[13];
 + 
 +                //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);
 +}
 +
 +</code>