shazhengq 发表于 2015-9-22 17:43:19

入门新人DS3231 程序求助

我自己想做一个串口时钟,用串口发送指令返回时间信息。自己就利用其他高手的帖子自己写了一个程序。但是有一个问题自己解决不了。怎么显示24小时制的时间?。
如图所示,我下午15点设置的时间,显示的是3


下面是我在DS3231中写的时间
//调用DS3231库与i2c驱动库
#include <DS3231.h>
#include <Wire.h>
//初始化ds3231以及所需要的变量
DS3231 Clock;
bool Century=false;
bool h12;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits;
bool ADy, A12h, Apm;

byte year, month, date, DoW, hour, minute, second;

void setup() {
      
      Wire.begin();
      Clock.setSecond(50);//配置秒
      Clock.setMinute(32);//配置分钟
      Clock.setHour(17);//配置小时(24小时制)
      Clock.setDate(22);//配置日
      Clock.setMonth(9);//配置月
      Clock.setYear(15);//配置年 (仅最后两位)
      
}
void loop() {
}



下面是我在ARDUINO中写的读取指令

#include <DS3231.h>
#include <Wire.h>


//========定义时钟需要的各种变量========
DS3231 Clock;
bool Century=false;
bool h12;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits;
bool ADy, A12h, Apm;
int second,minute,hour,date,month,year,val;


void setup(void) {

Serial.begin(115200);

}

void ReadDS3231()
{
int second,minute,hour,date,month,year,pm;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12,PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();


Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print('\n');
}
void loop()
{
val=Serial.read();
if(val=='a')
ReadDS3231();
}

求各路高手指点迷津

fengz41 发表于 2015-9-24 23:13:04

Clock.getHour是获取小时的。可以传递的函数应该就是决定返回小时制式。楼主应该研究一下库文件。这个坎是绕不不开的。

darkorigin 发表于 2015-9-24 23:25:35

hour=Clock.getHour(h12,PM);
这句是不是有问题。。。。

dbo 发表于 2015-9-25 12:57:01

setClockMode(bool h12)

shazhengq 发表于 2015-10-13 17:39:35

我参考了下面这个帖子算是顺利的解决了这个问题。谢谢大家
http://www.geek-workshop.com/thread-5929-1-1.html
页: [1]
查看完整版本: 入门新人DS3231 程序求助