迷你强 发表于 2015-3-30 17:34:43

OCROBOT 实时时钟模块(RTC pcf8563)调试实录 ② 配合i2c液晶屏显示

本帖最后由 迷你强 于 2015-4-1 11:12 编辑

      连发第二弹啦,用I2C屏幕,显示时间,之前的内容看前篇帖子

传送门

   

效果图如上图,其实非常简单,都是I2C总线,所有线都是并联的。

需要一个新的库,就是I2C液晶屏的库
点击下载

注意,此库在arduino下有一个同名的库文件,建议删除原来的,再将此文件复制进去,直接替换可能会出问题。


代码如下,因为前篇已经给模块配置好时间了。这个时间会一直走,直到电池耗尽,不过这颗电池供电个1-2年肯定问题不大。

#include "LiquidCrystal.h"
#include <Wire.h>
#include <Rtc_Pcf8563.h>

byte year, month, day,Weekday, hour, minute, second;//初始化一些变量

Rtc_Pcf8563 rtc;
LiquidCrystal lcd(0);    //初始化液晶屏
void setup()
{
lcd.begin(16, 2);    //定义屏幕的种类


}

void loop()
{
rtc.getDateTime();//从时钟读取时间
year = rtc.getYear();//读取年
month = rtc.getMonth(); //月
day = rtc.getDay();   //日
Weekday = rtc.getWeekday();//星期
hour = rtc.getHour();//小时
minute = rtc.getMinute();//分钟
second = rtc.getSecond();//秒
if( second ==0)   //判断下,如果值是0就刷新下屏幕,避免字符显示混乱
{
   lcd.clear();
}

lcd.setCursor(2, 0);   //第一行 从第三字符开始
   lcd.print("20");      
   lcd.print(year);
   lcd.print("-");
   lcd.print(month);
   lcd.print("-");
   lcd.print(day);
    lcd.setCursor(13, 0);   //从第一行 第十四个字符显示
    lcd.print(Weekday);
lcd.setCursor(4, 1);   //第二行第五个字符开始显示
   lcd.print(hour);
   lcd.print(":");
   lcd.print(minute);
   lcd.print(":");
   lcd.print(second);

delay(800);
}


非常简单啦。。这样就有一个时钟了。。

欲知后事如何,请点传送门

suoma 发表于 2015-3-30 20:30:12

谢谢分享学习一下

suoma 发表于 2015-3-30 20:30:53

一天看到了两个帖子,迷你强,你真强

1090805647 发表于 2015-3-31 14:39:28

我想在你遍的程序上加上定时功能,可否提供一个
:)

迷你强 发表于 2015-4-1 10:31:18

:lol定时器基本都是时钟提供

布列松 发表于 2015-4-12 16:41:37

怎么回事

slily 发表于 2015-5-15 16:33:47

布列松 发表于 2015-4-12 16:41 static/image/common/back.gif
怎么回事

同问,求助QAQ

迷你强 发表于 2015-10-10 09:16:10

要删除IDE本身里面的LiquidCrystal文件夹,再解压缩下载的那个文件目录进去才对,不要直接替换,可能会出问题的

加饭 发表于 2015-10-12 15:03:52

之前在做项目时一直困惑,为什么有时候LCD显示会乱码,原来要定期清屏,受教了~~

avanyway 发表于 2015-10-29 14:27:24

:lolLCD显示会乱码,原来要定期清屏,受教了~~

mondaywoo 发表于 2015-10-29 15:45:06

初学者学习。

beijia 发表于 2023-3-15 21:00:18

请教各位,我用同样的代码,从PCF8563读出来的数据,都是0,是哪里出了问题呢?感觉是数据格式的原因,不知道在哪里修改。
页: [1]
查看完整版本: OCROBOT 实时时钟模块(RTC pcf8563)调试实录 ② 配合i2c液晶屏显示