风筝
发表于: 2022-4-26 09:48:14 | 显示全部楼层

在本篇文章中,我们将学习如何将PCF8563实时时钟模块与Arduino开发板进行连接,并在1602 LCD显示屏上显示当前时间和日期。在市场上有很多种实时时钟模块,如DS1307和DS3231等。但是在功耗方面,它们的功耗略高一些,如果我们使用电池供电的设备应用程序,它们会很快耗尽电池。所以如果需要选择功耗极低的实时时钟模块,那么可以采用PCF8563模块。该模块也是一个I2C模块。


PCF8563是针对低功耗优化的CMOS实时时钟和日历芯片。还提供可编程时钟输出、中断输出和低电压检测器。所有地址和数据都通过两线双向I2C总线串行传输。最大总线速度为400kbit/s。


所需的组件

●    Arduino UNO开发板

●    1602 LCD显示屏

●    PCF8563实时时钟模块

●    连接跳线

●    面包板


PCF8563实时时钟模块

该实时时钟模块基于NXP公司的PCF8563T,该芯片可编程,其I2C通信高达400KHz,并附带高精度实时时钟芯片组。

PCF8563-Real-Time-Clock-Module.jpg


它提供多种功能,例如外部可编程时钟输出、闹钟、定时器和备用电池。它比DS1302 或DS1307更稳定、更精确。PCF8563实时时钟模块提供实时时钟/日历功能,可以由板载电池驱动,即使在微控制器关闭的情况下也可以独立工作。它是一种低成本、极其精确的I2C实时时钟模块。


PCF8563的主要特性

1.  基于32.768kHz石英晶体提供年、月、日、星期、小时、分钟和秒

2.  世纪标志

3、时钟工作电压:室温下1.0 V至5.5 V

4、后备电流低;在VDD = 3.0 V 和 Temp = 25C 时典型值为 0.25A

5.  400kHz 两线 I2C 总线接口

6.  外围设备的可编程时钟输出(32.768 kHz、1.024 kHz、32 Hz 和 1 Hz)

7.  报警和定时器功能

8.  集成振荡器电容

9.  内部上电复位 (POR)

10.  I2C-bus从机地址:读A3h,写A2h

11.  开漏中断输出引脚


PCF8563的引脚排列

PCF8563实时时钟模块是一个I2C模块,即它工作在2线协议上。它具有SDA和SCL引脚,可轻松与任何微控制器连接。I2C总线的读取地址是A3h,写入地址是A2h。


它包含4个引脚,分别是:

引脚 1.  VCC — 1V 至 5.5V

引脚 2.  GND — GND

引脚 3. SDA — 串行数据

引脚 4. SCL — 串行时钟


PCF8563实时时钟模块与Arduino的硬件连接

以下是用于将PCF8563实时时钟模块与Arduino UNO开发板连接的电路图。本文在面包板上组装了电路。

Interfacing-PCF8563-Real-Time-Clock-Module-with-Arduino-1.jpg


将PCF8563模块的SDA和SCL引脚分别连接到Arduino开发板的A4和A5 引脚。将其VCC连接到5V或3.3V,将其GND连接到Arduino的GND引脚。同样,将LCD显示屏的引脚1、5、16连接到GND,引脚2、15连接到VCC。在LCD显示屏的3脚连接一个10K电位器来调节对比度。LCD显示屏的引脚4、6、11、12、13、14分别连接到Arduino开发板的数字引脚12、11、5、4、3、2。


代码

以下是将PCF8563实时时钟模块与Arduino连接并获取时间和日期的代码。但在此之前,您需要为它安装一个库。从以下链接下载库文件:PCF8563 RTC 库


现在从下面复制代码并将其上传到Arduino开发板。请更改代码中的日期和时间以匹配当前时间/日期。

  1. #include <Wire.h>
  2. #include <Rtc_Pcf8563.h>
  3. #include <LiquidCrystal.h>

  4. //init the real-time clock
  5. Rtc_Pcf8563 rtc;

  6. LiquidCrystal lcd(12 ,11 ,5 ,4 ,3 ,2);

  7. void setup()
  8. {
  9.   // set up the LCD's number of rows and columns:
  10.   lcd.begin(16, 2);
  11.   lcd.setCursor(4, 0);
  12.   lcd.print("PCF8563");
  13.   lcd.setCursor(0, 1);
  14.   lcd.print("Real Time Clock");
  15.   delay(4000);
  16.   lcd.clear();
  17.   
  18.   //clear out all the registers
  19.   rtc.initClock();
  20.   //set a time to start with.
  21.   //day, weekday, month, century, year
  22.   rtc.setDate(20, 3, 1, 20, 20);
  23.   //hr, min, sec
  24.   rtc.setTime(16, 38, 48);
  25. }

  26. void loop()
  27. {
  28.   lcd.setCursor(0, 0);
  29.   lcd.print("Time:");
  30.   lcd.setCursor(6, 0);
  31.   //lcd.print(rtc.formatTime(RTCC_TIME_HM));
  32.   lcd.print(rtc.formatTime());

  33.   lcd.setCursor(0, 1);
  34.   lcd.print("Date:");
  35.   lcd.setCursor(6, 1);
  36.   //lcd.print(rtc.formatDate(RTCC_DATE_ASIA));
  37.   lcd.print(rtc.formatDate());
  38.   
  39. // delay(1000);
  40.    
  41. }
复制代码

运行结果

上传代码后,LCD显示屏将开始显示当前时间和日期。

PCF8563-Arduino-Clock.jpg

以上就是PCF8563实时时钟模块与Arduino连接的全部内容。如果有任何疑问,请随时在本帖下面回复。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 21:55 , Processed in 0.103177 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表