以前用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个时钟芯片的数据
- }
- }
复制代码 |
DS3231-DS1302-RX8025
DS3231.png (31.22 KB, 下载次数: 123)

RX8025.png (37.14 KB, 下载次数: 98)

(Q3$ZT[86L2KE(2J}`U{N8I.jpg (219.83 KB, 下载次数: 89)

0XL`O)CD5)(AX~D3CEGDZ3C.jpg (272.77 KB, 下载次数: 98)

2CQ4NC4WUF2DBLXMBRT@W}3.jpg (237.79 KB, 下载次数: 84)

U}NJ$7XYLPEYXKH{W3@%GHL.jpg (195.56 KB, 下载次数: 82)
