标题: 调整DS1302的时间 [打印本页]

作者: 君工创    时间: 2023-1-16 22:01
标题: 调整DS1302的时间
为什么我调整DS1302的时间不立即更新,要断电重启才显示更新的值。

作者: xuyaqi    时间: 2023-1-17 20:53
这和你的程序有关。
作者: 君工创    时间: 2023-1-17 22:43
问题已经解决。
作者: xianfajushi    时间: 2023-1-25 12:13
以下是我的写入和更新代码,能写入就没问题,如果没写入,检查看是否释放了写保护,我这代码是十进制直接转16进制后写入分钟增1和秒钟清零的。


作者: 君工创    时间: 2023-1-25 12:47
我使用的是矩阵键盘,直接输入数字。经过不懈努力。可以直接输入设置值了。谢谢你的回复。
作者: xianfajushi    时间: 2023-1-26 06:10
君工创 发表于 2023-1-25 12:47
我使用的是矩阵键盘,直接输入数字。经过不懈努力。可以直接输入设置值了。谢谢你的回复。

道理都一样,矩阵看是怎样的写法,是每位还是整体分钟就有2种不同了,我这里写了每秒步进的简单处理的逻辑代码,暂时只写了分钟调节的荔枝,当然还可以进一步处理进制逻辑。


作者: 名字不是重点    时间: 2023-1-26 10:48
没有代码,不好说,可能你的代码就是要重启也不好说。
作者: 君工创    时间: 2023-1-26 12:21
我目前的输入方法是直接输入年月日时分秒数值,比如要输入25,直接按数值键②、⑤、确认。就可以输入年月日的对应位置。
作者: 名字不是重点    时间: 2023-1-26 17:39
这是我的代码,你参考 一下:
   if(!key1)           //时加量键
        {
          Delay20ms();
          if(!key1)
          {
           while(!key1);
           beep_on(200);
           hour=RTC_read_ram(0x85); //读小时值
           hour=hour/16*10+hour%16;        //BCD转10进制
           if(++hour>23)hour=0;           //增量溢出则置0
           t_bcd=hour/10<<4|hour%10        ;  //10进制转BCD
           RTC_write_data(0x8e,0x00);  //1302写使能
           RTC_write_data(0x84,t_bcd); //写入新小时值
           RTC_write_data(0x8e,0x80);  //1302写失能
           key_time_out=5;
          }
        }
作者: coody_sz    时间: 2023-1-26 18:04
程序问题。
作者: xianfajushi    时间: 2023-1-26 20:15
君工创 发表于 2023-1-26 12:21
我目前的输入方法是直接输入年月日时分秒数值,比如要输入25,直接按数值键②、⑤、确认。就可以输入年月日 ...

那就是按分钟整体写入的,写年月天星期则要注意写一个返回阳历年月的天数函数做比较否则有可能天数出错或人工看日历无误输入。
作者: 君工创    时间: 2023-1-26 21:08
xianfajushi 发表于 2023-1-26 20:15
那就是按分钟整体写入的,写年月天星期则要注意写一个返回阳历年月的天数函数做比较否则有可能天数出错或 ...

我增加防溢出就可以避免输入过大数目了。比如小时不超24,分钟不超60,日不超31等等,谢谢你的提醒。
作者: 君工创    时间: 2023-1-26 21:35
名字不是重点 发表于 2023-1-26 17:39
这是我的代码,你参考 一下:
   if(!key1)           //时加量键
        {

我用矩阵键盘数字键,使用整体数值输入。谢谢你。
作者: xianfajushi    时间: 2023-1-27 08:50
君工创 发表于 2023-1-26 21:08
我增加防溢出就可以避免输入过大数目了。比如小时不超24,分钟不超60,日不超31等等,谢谢你的提醒。

好说,我有现成的年的月的天数函数和计算星期的函数https://blog.csdn.net/xianfajush ... 1001.2014.3001.5502
作者: Y_G_G    时间: 2023-1-29 20:50
用了几年有DS1302
以前公司有晶振机,可以调好,一年能控制在5分的误差以内
公司倒闭之后,就换DS3231了,再加一个GPS自动授时,简单省事,什么都不用管
什么键盘遥控按键的,什么都不要
作者: 君工创    时间: 2023-1-29 21:33
Y_G_G 发表于 2023-1-29 20:50
用了几年有DS1302
以前公司有晶振机,可以调好,一年能控制在5分的误差以内
公司倒闭之后,就换DS3231了,再 ...

我认为你这方案是实时时钟的最高级别了。
作者: 名字不是重点    时间: 2023-1-29 22:00
Y_G_G 发表于 2023-1-29 20:50
用了几年有DS1302
以前公司有晶振机,可以调好,一年能控制在5分的误差以内
公司倒闭之后,就换DS3231了,再 ...

本来就是啊,做为数码时钟产品,不管是一年调一次还是一个月调一次,都是次品。能不调校的产品才是好产品。
话说回来,年误差在秒级的就可以了,民用品又不是神州18的工程。
有点矛盾啊~
作者: Y_G_G    时间: 2023-1-30 09:23
名字不是重点 发表于 2023-1-29 22:00
本来就是啊,做为数码时钟产品,不管是一年调一次还是一个月调一次,都是次品。能不调校的产品才是好产品 ...

1302作为时钟,本身就是低端产品用的,一两个月调节一次是正常的
之前打卡用的纸卡钟,里面用的就是1302,基本是一个月调节一次
作者: hhdsdy    时间: 2023-1-30 11:16
君工创 发表于 2023-1-29 21:33
我认为你这方案是实时时钟的最高级别了。

用ESP8266或者ESP32,十分钟网络对时一次,只要有网络,连RTC和备用电池都不要
作者: wdmcp    时间: 2023-2-1 15:49
我做的1302时钟越走越快,一两个月就快10分钟了。。
作者: hex2009    时间: 2023-2-1 16:46
wdmcp 发表于 2023-2-1 15:49
我做的1302时钟越走越快,一两个月就快10分钟了。。

算好,每天减多少秒
作者: 君工创    时间: 2023-2-1 21:36
wdmcp 发表于 2023-2-1 15:49
我做的1302时钟越走越快,一两个月就快10分钟了。。

统计多少天快多少秒,平均每天多少秒,之后每天自动减除即可。
作者: 名字不是重点    时间: 2023-2-2 01:45
wdmcp 发表于 2023-2-1 15:49
我做的1302时钟越走越快,一两个月就快10分钟了。。

32768的2个电容加大点就慢下来了。具体要多少,试一下就知道了

作者: wdmcp    时间: 2023-2-3 10:20
名字不是重点 发表于 2023-2-2 01:45
32768的2个电容加大点就慢下来了。具体要多少,试一下就知道了

哦哦,再改进一下。
作者: wdmcp    时间: 2023-2-3 10:21
君工创 发表于 2023-2-1 21:36
统计多少天快多少秒,平均每天多少秒,之后每天自动减除即可。

嗯,这也是一个方法。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1