(1)简介
DS3231是一种实时的RCT IC芯片,通过IIC接口进行通信,默认IIC通信地址为(0X68,应该是在头文件中有体现,大概看了下也没找见),其内部还集成了晶体振荡器和温度传感器,无需连接外部晶体。
DS3231模块如下图所示,包含RTC芯片和一个32K的EEPROM
自身带有3V CR2032锂电池,掉电时间不变
包括年、月、日、时、分、秒等具体时间信息
(2)连线
主要是IIC接口,本实验室是基于Arduino UNO使用,其他开发板的IIC管脚参考以下链接:
/u011816009/article/details/106566177
(3)程序
DS3231的程序分为两个部分,第一部分是设置起始日历信息(年、月、日、时、分、秒),第二部分是具体显示部分,分别阐述如下:
设置日历
// DS3231_Serial_Easy// Copyright (C) Rinky-Dink Electronics, Henning Karlsen. All right reserved// web: ///// A quick demo of how to use my DS3231-library to // quickly send time and date information over a serial link//// To use the hardware I2C (TWI) interface of the Arduino you must connect// the pins as follows://// Arduino Uno/:// ----------------------// DS3231: SDA pin -> Arduino Analog 4 or the dedicated SDA pin//SCL pin -> Arduino Analog 5 or the dedicated SCL pin//// Arduino Leonardo:// ----------------------// DS3231: SDA pin -> Arduino Digital 2 or the dedicated SDA pin//SCL pin -> Arduino Digital 3 or the dedicated SCL pin//// Arduino Mega:// ----------------------// DS3231: SDA pin -> Arduino Digital 20 (SDA) or the dedicated SDA pin//SCL pin -> Arduino Digital 21 (SCL) or the dedicated SCL pin//// Arduino Due:// ----------------------// DS3231: SDA pin -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin//SCL pin -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin//// The internal pull-up resistors will be activated when using the // hardware I2C interfaces.//// You can connect the DS3231 to any available pin but if you use any// other than what is described above the library will fall back to// a software-based, TWI-like protocol which will require exclusive access // to the pins used, and you will also have to use appropriate, external// pull-up resistors on the data and clock signals.//#include <DS3231.h>// Init the DS3231 using the hardware interfaceDS3231 rtc(SDA, SCL);void setup(){// Setup Serial connectionSerial.begin(115200);// Uncomment the next line if you are using an Arduino Leonardo//while (!Serial) {}// Initialize the rtc objectrtc.begin();// The following lines can be uncommented to set the date and timertc.setDOW(FRIDAY);// Set Day-of-Week to SUNDAYrtc.setTime(14, 26, 50);// Set the time to 12:00:00 (24hr format)rtc.setDate(3, 8, ); // Set the date to January 1st, }void loop(){// Send Day-of-WeekSerial.print(rtc.getDOWStr());Serial.print(" ");// Send dateSerial.print(rtc.getDateStr());Serial.print(" -- ");// Send timeSerial.println(rtc.getTimeStr());// Wait one second before repeating :)delay (1000);}
时钟显示
#include <DS3231.h>// Init the DS3231 using the hardware interfaceDS3231 rtc(SDA, SCL);void setup(){// Setup Serial connectionSerial.begin(115200);// Uncomment the next line if you are using an Arduino Leonardo//while (!Serial) {}// Initialize the rtc objectrtc.begin();// The following lines can be uncommented to set the date and time//rtc.setDOW(WEDNESDAY);// Set Day-of-Week to SUNDAY//rtc.setTime(12, 0, 0);// Set the time to 12:00:00 (24hr format)//rtc.setDate(1, 1, ); // Set the date to January 1st, }void loop(){// Send Day-of-WeekSerial.print(rtc.getDOWStr());Serial.print(" ");// Send dateSerial.print(rtc.getDateStr());Serial.print(" -- ");// Send timeSerial.println(rtc.getTimeStr());// Wait one second before repeating :)delay (1000);}