找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3569|回复: 3
收起左侧

单片机电子钟调整后的时间无法写入ds1302

[复制链接]
ID:492869 发表于 2019-3-24 01:29 | 显示全部楼层 |阅读模式

此时设定时间与ds1302不同

此时设定时间与ds1302不同

点击确认后没有定为我需要的时间,而是ds1302的时间

点击确认后没有定为我需要的时间,而是ds1302的时间
      程序一开始是能够完善运行的,设置时间时停止不动,设置完毕后开始走动。
      但是后来我将字库中的字符从8*16修改为16*32以后,虽然设置时间的时候仍是停止不动,但是其实还是在计时,设置完毕后时间就会自动跳转,不是我设置的那个数了。      目前发现仅有秒无法正确修改,且修改时只能减不能加,其余时,分,日期都能正常修改。
      我怀疑是下面那段程序出错了,求解答。
      如果能帮我解决一下12864显示残缺的问题就更好了,十分感谢!

单片机源程序:

  1. //-----------------------------------------------------------
  2. // 设置时间
  3. //---------------------------------------------------------
  4. void SET_DS1302()          //  设置时间
  5. {
  6.    uchar i;
  7.    Write_Data_TO_DS1302(0x8E,0x00); //写控制字,取消写保护
  8.    // 分,时,日,月,年依次写入
  9.    for(i=1;i<7;i++)
  10.      {
  11.           // 分的起始地址是10000010(0x82),后面依次是时,日,月,周,年,写入地址每次递增2


  12.                    Write_Data_TO_DS1302(0x80+2*i,(DateTime[i]/10<<4)|(DateTime[i]%10));    //希望能解释一下这一句。


  13.          }
  14.    Write_Data_TO_DS1302(0x8E,0x80); //写控制字,加写保护
  15. }
  16. //--------------------------------------------------------
  17. // 读取当前时间
  18. //-------------------------------------------------------
  19. void GetTime()                  //  读取当前时间
  20. {
  21.   uchar i;
  22.   for(i=0;i<7;i++)
  23.     {
  24.           DateTime[i]=Read_Data_FROM_DS1302(0x81+2*i);
  25.         }
  26. }
复制代码

回复

使用道具 举报

ID:96682 发表于 2019-3-24 09:19 | 显示全部楼层
编者有意这么写的算不算错?

要解决残缺的问题得上剧本
回复

使用道具 举报

ID:111634 发表于 2019-3-24 11:16 | 显示全部楼层
本帖最后由 zl2168 于 2019-3-26 11:16 编辑

实例91  具有校正功能的时钟1302(LCD1602显示)
先Proteus仿真,确认有效。
实例91 带校正时钟1302(LCD1602显示).rar (52.68 KB, 下载次数: 38)
回复

使用道具 举报

ID:721769 发表于 2021-4-25 14:49 | 显示全部楼层
zl2168 发表于 2019-3-24 11:16
实例91  具有校正功能的时钟1302(LCD1602显示)
先Proteus仿真,确认有效。

你好,可以向向您请教一下.c  源代码吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表