在本篇文章中,我们将学习如何将PCF8563实时时钟模块与Arduino开发板进行连接,并在1602 LCD显示屏上显示当前时间和日期。在市场上有很多种实时时钟模块,如DS1307和DS3231等。但是在功耗方面,它们的功耗略高一些,如果我们使用电池供电的设备应用程序,它们会很快耗尽电池。所以如果需要选择功耗极低的实时时钟模块,那么可以采用PCF8563模块。该模块也是一个I2C模块。
PCF8563是针对低功耗优化的CMOS实时时钟和日历芯片。还提供可编程时钟输出、中断输出和低电压检测器。所有地址和数据都通过两线双向I2C总线串行传输。最大总线速度为400kbit/s。
所需的组件 ● Arduino UNO开发板 ● 1602 LCD显示屏 ● PCF8563实时时钟模块 ● 连接跳线 ● 面包板
PCF8563实时时钟模块 该实时时钟模块基于NXP公司的PCF8563T,该芯片可编程,其I2C通信高达400KHz,并附带高精度实时时钟芯片组。
它提供多种功能,例如外部可编程时钟输出、闹钟、定时器和备用电池。它比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开发板连接的电路图。本文在面包板上组装了电路。
将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开发板。请更改代码中的日期和时间以匹配当前时间/日期。 - #include <Wire.h>
- #include <Rtc_Pcf8563.h>
- #include <LiquidCrystal.h>
-
- //init the real-time clock
- Rtc_Pcf8563 rtc;
-
- LiquidCrystal lcd(12 ,11 ,5 ,4 ,3 ,2);
-
- void setup()
- {
- // set up the LCD's number of rows and columns:
- lcd.begin(16, 2);
- lcd.setCursor(4, 0);
- lcd.print("PCF8563");
- lcd.setCursor(0, 1);
- lcd.print("Real Time Clock");
- delay(4000);
- lcd.clear();
-
- //clear out all the registers
- rtc.initClock();
- //set a time to start with.
- //day, weekday, month, century, year
- rtc.setDate(20, 3, 1, 20, 20);
- //hr, min, sec
- rtc.setTime(16, 38, 48);
- }
-
- void loop()
- {
- lcd.setCursor(0, 0);
- lcd.print("Time:");
- lcd.setCursor(6, 0);
- //lcd.print(rtc.formatTime(RTCC_TIME_HM));
- lcd.print(rtc.formatTime());
-
- lcd.setCursor(0, 1);
- lcd.print("Date:");
- lcd.setCursor(6, 1);
- //lcd.print(rtc.formatDate(RTCC_DATE_ASIA));
- lcd.print(rtc.formatDate());
-
- // delay(1000);
-
- }
复制代码
运行结果 上传代码后,LCD显示屏将开始显示当前时间和日期。
以上就是PCF8563实时时钟模块与Arduino连接的全部内容。如果有任何疑问,请随时在本帖下面回复。 |