获取时间,并驱动OLE12864显示
代码如下:


#include <U8g2lib.h>
#include <Wire.h>
#include <ThreeWire.h>
#include <RtcDS1302.h>
 
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
ThreeWire myWire(A1, A2, A0); //set data.clk,rst Pin
RtcDS1302<ThreeWire> Rtc(myWire);
#define countof(a) (sizeof(a) / sizeof(a[0]))
int yue , ri, nian, shi , fen , miao , zhou ;
void setup() {
  Serial.begin(9600);
  Rtc.Begin();
  u8g2.begin();
  Serial.print("compiled: ");
  Serial.print(__DATE__); //打印系统日期
  Serial.println(__TIME__); //打印系统时间
  RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__); //Set Time for Rtc Object
  Rtc.SetDateTime(compiled); //设置时钟芯片时间和电脑时间一致
 
}
void loop() {
  RtcDateTime now = Rtc.GetDateTime();
  printDateTime(now); //串口打印当前时间
  show_time(now);//屏幕上显示当前时间
 
  if (RtcDateTime (shi) == 12 && RtcDateTime (fen) == 00 && RtcDateTime (miao) == 00) {//闹钟设置
    Serial.print("123");
  }
}
void printDateTime(const RtcDateTime& dt) {
  char datestring[22];
  snprintf_P(datestring,
             countof(datestring),
             PSTR("%02u/%02u/%04u %02u:%02u:%02u %01u"),//输出日期到串口 输出的结果总共占两位,十进制的形式输出
             dt.Month(),
             dt.Day(),
             dt.Year(),
             dt.Hour(),
             dt.Minute(),
             dt.Second(),
             dt.DayOfWeek()
            );
  //Serial.println(datestring);
}
//show time
void show_time(const RtcDateTime & dt) { //时间显示页面
  String z_str = "";
  yue = dt.Month();
  ri = dt.Day();
  nian = dt.Year();
  shi = dt.Hour();
  fen = dt.Minute();
  miao = dt.Second();
  zhou = dt.DayOfWeek();
  switch ( zhou)
  { //将星期从数字转换为名称
    case 7: z_str = "Sunday"; break;
    case 1: z_str = "Monday"; break;
    case 2: z_str = "Tuesday"; break;
    case 3: z_str = "Wednesday"; break;
    case 4: z_str = "Thursday"; break;
    case 5: z_str = "Friday"; break;
    case 6: z_str = "Saturday"; break;
  }
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_luIS12_tr);//设置字体
    u8g2.setCursor(12, 20); //设置光标处
    u8g2.print(String(nian) + "-" + String(yue) + "-" + String(ri));//输出内容
    u8g2.setCursor(24, 35); //设置光标处
    u8g2.print(String(shi) + ":" + String(fen) + ":" + String(miao));//输出内容
    u8g2.setCursor(12, 50);//设置光标处
    u8g2.print(z_str);//输出内容
  } while ( u8g2.nextPage() );
  //  delay(50);
}