suoma 发表于 2017-3-20 14:15:28

singz 发表于 2017-3-20 10:50
在保存并退出的 t.min=sminute;下面加上

rtc.setDOW(SATURDAY);      // 设置星期


用这个库,时间可以设置,日期不行,但是有一次又可以设置日期,挺奇怪的,还是怀疑程序,没用IIC转接板

singz 发表于 2017-3-20 15:01:00

suoma 发表于 2017-3-20 13:10
提供了,就是用他的库中helloworld例程

接线没问题吧?

singz 发表于 2017-3-20 15:03:06

suoma 发表于 2017-3-20 14:15
用这个库,时间可以设置,日期不行,但是有一次又可以设置日期,挺奇怪的,还是怀疑程序,没用IIC转接板

能设置时间说明没问题,就用这个库吧,日期设置不了可能是前面日期声明有错误,再查一查

suoma 发表于 2017-3-20 15:15:15

singz 发表于 2017-3-20 15:03
能设置时间说明没问题,就用这个库吧,日期设置不了可能是前面日期声明有错误,再查一查

嗯,我再改一改,谢谢你,液晶、时钟接线没问题

suoma 发表于 2017-3-21 10:11:37

singz 发表于 2017-3-20 11:03
IIC库正确吗? 我看你发来的文件里用的是液晶库,如果是IDE自带的液晶库应该是不行的,自带的是并行总 ...

保存并退出时间设置按了set键还是分钟位闪烁,没有退出设置状态,我使用复位键保存时间退出,

singz 发表于 2017-3-21 10:43:32

本帖最后由 singz 于 2017-3-21 10:48 编辑

suoma 发表于 2017-3-21 10:11
保存并退出时间设置按了set键还是分钟位闪烁,没有退出设置状态,我使用复位键保存时间退出,

闹钟可以删,但是下面这两句清屏和退出的语句要留下,不然没法退出设置状态

/* ~~~~~~~~~~~~~~~~~~~~~~~~~ 退出设置 ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
          if(buttonPress(Set))
            {
            lcd.clear();
            delay(200);
            goto exit;
            }


exit:;

suoma 发表于 2017-3-21 15:12:27

singz 发表于 2017-3-21 10:43
闹钟可以删,但是下面这两句清屏和退出的语句要留下,不然没法退出设置状态

/* ~~~~~~~~~~~~~~~~~~~ ...

if(buttonPress(Set))
          {
                  t.yr=syear;
                        t.mon=smonth;
                        t.date=sdate;
                        if (AdjP>0)
                      {
                                t.hr=shour;
                                t.min=sminute;
                      }
                        Time t(syear, smonth, sdate, shour, sminute, 00, sdow);
                        rtc.time(t);       
          }
加在了上面后面,按了set键还是分钟位闪烁,还是没有退出设置状态

singz 发表于 2017-3-21 15:44:05

suoma 发表于 2017-3-21 15:12
加在了上面后面,按了set键还是分钟位闪烁,还是没有退出设置状态

exit:;   //这一句要放在设置子程序里最后一个 } 的前面,意思是退出这个子程序

suoma 发表于 2017-3-21 16:46:09

singz 发表于 2017-3-21 15:44
exit:;   //这一句要放在设置子程序里最后一个 } 的前面,意思是退出这个子程序

exit:;
这个位置我没变,和你程序位置一样,最后一个}前

我在loop()最后加了如下程序,想看是否设置成功
snprintf(buf, sizeof(buf), "%04d-%02d-%02d %02d:%02d:%02d", t.yr, t.mon, t.date,t.hr, t.min, t.sec);
Serial.println(buf);
delay(1000);
打开串口,显示如下,显然未设置成功,但是再上电后时间又是更新的,不明白

suoma 发表于 2017-3-28 09:21:53

singz 发表于 2017-3-21 15:44
exit:;   //这一句要放在设置子程序里最后一个 } 的前面,意思是退出这个子程序

你的程序验证没有问题,帮忙看下99楼的问题

singz 发表于 2017-3-28 14:51:00

suoma 发表于 2017-3-28 09:21
你的程序验证没有问题,帮忙看下99楼的问题

没用过串口监视,但是既然时间是更新过的,说明功能没问题,只是执行没通过串口,具体我也不懂哈

suoma 发表于 2017-3-28 18:18:02

singz 发表于 2017-3-28 14:51
没用过串口监视,但是既然时间是更新过的,说明功能没问题,只是执行没通过串口,具体我也不懂哈

你好,今天有了新进展,用串口监视只是为验证按键设置的时间是否写入时钟芯片,今天实现了该功能。
目前是用DS1302和1602,1602通过IIC转接。使用DS1302的第一个库,有两个问题没有解决:
1、年份设置,我程序是“yy-mm-dd HH:mm”显示,按键年增加,但是退出设置状态后显示不对,怀疑数据类型问题;
我的类型如下
void PritimeSet(int syear,int smonth,int sdate,int shour,int sminute)

2、按键退出时间设置状态,目前一直无法退出,我只能通过复位退出,时间可以写进时钟芯片。就是按你程序把exit放到最后一个括号前。

用你的程序验证DS3231没有问题,以上问题均不会出现,

singz 发表于 2017-3-29 09:56:04

本帖最后由 singz 于 2017-3-29 10:02 编辑

suoma 发表于 2017-3-28 18:18
你好,今天有了新进展,用串口监视只是为验证按键设置的时间是否写入时钟芯片,今天实现了该功能。
目前 ...


1.应该是数据类型问题, 其他地方都是 byte 型

2.goto exit; 和 exit:; 都在的话,如果还是退不出来,是不是放错了 } ?要放到第一个 if 的 { 对应的 } 前,这样才能退出第一个 if

lun1910 发表于 2017-4-4 20:58:44

请问你用的电阻是多大的?

singz 发表于 2017-4-5 09:00:27

lun1910 发表于 2017-4-4 20:58
请问你用的电阻是多大的?

37k欧到45k欧
页: 1 2 3 4 5 6 [7] 8 9
查看完整版本: 用1602和DS3231搭建的可调时钟 ~~新人帖~~标题要长~~