以前用DS1302 做了万年历,感觉精度不稳定,受晶振和匹配电容的影响,不同的DS1302误差也不一样
在网上查资料,精度比较高的两种实时芯片,DS3231,RX8025,两则都能在TB上买到,就是DS3231好贵哦
它们的性能呢,就不用多说了,芯片手册里都有,就简单说一下,DS3231-RX8025都是IIC通讯,内置晶振
,中断输出,闹钟寄存器。

综上,自己做了一个DS1302-DS3231-RX8025三个一的一个时钟,单片机STC12C5A32S2用来观察它们的精度,经过一周多的时间观察,果然1302不行,
做了四个,四个1302变化的都不一样,而3231和8025还是比较理想,4块板子上的3231-8025走时都很准确

综合比较DS3231和8025胜出,再综合价格,RX8025为最终胜者。不过RX8025没有备用电池接口VBAT,需要
设计一个主备电切换电路。

LCD是LCD160160,比较少见,在咸鱼上淘的,当初调试这款液晶时,化了很大功夫,大家可以选择自己熟练
的液晶显示。

供大家交流学习,有不同看法可以一起交流

上传的文件有程序,PCF原理图,以及芯片手册。

这里就贴主函数程序,完整程序见附件

/*****************************************************************************
  • 1.本程序时测试DS1302,DS3231,RX8025三款时钟芯片的精准度,基于液晶LCD160160显示
  • 程序说明:
  •         1.RX8025,DS3231都是IIC通讯,本程序中RX8025采用了比较完善的IIC程序;
  • DS3231采用的是比较简单的IIC程序,但两者原理都是一样的。
  •         2.本程序中星期的计算是采用公式计算的得来,原型是蔡勒公式,与网上的公式都是
  • 大同小异。所以在此程序中的“周”只计算了一次,是根据DS1302读出来的“年月日”数据来
  • 计算的,因为三个时钟芯片的年月日都一样,所以就只计算一次。因此在向各个芯片写数据
  • 时,只写了年月日,时分秒,没有写周数据。
  • 实验结果:
  •         1.用主电时各芯片的精度:DS3231>RX8025>DS1302,3231与8025的精度都比较准,1302的
  • 精度就受很多影响了,因为是外置晶振,受晶振精度以及匹配电容的影响,多个1302的准确度
  • 都不一样。不过多个3231,8025比较,他们之间的误差都比较小。
  •         2.掉电测试,精度DS3231和RX8025相差不大,DS1302误差比较大
  • ******************************************************************************/
  • #include "STC12_INT.H"
  • #include "KEYBord.h"
  • #include "DisplayTime.h"
  • #include "STC12_UART.H"
  • void main()
  • {
  •         P4SW =0X70;        //将P4.4 P4.5 P4.6设为IO口模式
  •         Time0_Init(10);
  •         Init_LCD1616();
  •         Clear_Screen(0);
  •         Write_6x16Font_N(1,0,0,"实时时钟精度测试");
  •         RX8025_Init();
  •         while(1)
  •         {
  •                 GetKeyValue();        //读取按键数据
  •                 GotoDisplay();        //显示3个时钟芯片的数据
  •         }
  • }
  • 复制代码
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png