找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3513|回复: 3
打印 上一主题 下一主题
收起左侧

单片机电子钟调整后的时间无法写入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. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1,书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

地板
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 单片机教程网

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