做记录仪、气象站、门禁或任何需要知道“现在几点”又不想一直连着电脑的项目,都得靠一颗RTC实时时钟芯片。DS3231是目前精度高又便宜的选择,它内部有温度补偿晶振,号称一年误差只有几分钟,还带一颗钮扣电池,断电后时间照样走。这篇讲它怎么接、怎么对时、怎么读时间。
DS3231模块引脚和I2C接线
模块走的是I2C总线,真正要用就四根线:VCC接电源(3.3V或5V都行)、GND接地、SDA接Arduino的A4、SCL接A5。它默认I2C地址是0x68。模块上通常带一颗CR2032钮扣电池和电池座,主电源断了靠它维持走时,主电源来了会自动切回,不用担心时间被断电清掉。

图上这个接法很直观——四根线把VCC/GND/SDA/SCL接好,再插上钮扣电池。因为SDA/SCL上已经有板载上拉电阻,不用自己另加上拉。它背后还有32K(32kHz方波输出)和SQW(方波/闹钟中断输出)两个可选脚,用不到就空着。

这块模块实物把芯片和背面的钮扣电池看得更清楚——出货默认不装电池的话得自己塞一颗CR2032进去,不然断电解质时间就丢了。它比普通DS1307模块省事的地方就是内置温补晶振,时钟不会因为温度变化跑偏,这是它贵一点但值得的原因。
对时和读取时间的代码思路
库直接用RTClib,初始化后第一次需要调用一次“对时”操作,把当前编译时刻写进RTC(一般是先设一次,之后注释掉,防止每次重启都重置)。对完时就能随时读了:在循环里读rtc.now(),得到年、月、日、时、分、秒和星期。要显示就在OLED、LCD或串口上把它们按“2026/10/19 20:30”这样格式化输出。
几点提醒
一是IO接线认准I2C:Uno上是A4/A5,别插到普通数字脚上去。二是首次对时一定要做,不然读出来的是出厂默认时间。三是DS3231还内带一颗温度传感器(可以读环境温度,精度约±3℃),配SQW还能做闹钟和定时唤醒,都是往后扩展的方向。做需要长期记录时间的项目,DS3231是稳定可靠的底座。







塞颗CR2032进去断电时间也不丢,这就是RTC存在的意义
它温补晶振精度高,配表做气象站记录时间很稳
I2C认准A4/A5,接普通数字脚上时间读不出来
首次用一定要先对一次时,不然读出来是出厂默认时间