您好!
我正在使用 BQ32002 RTC 和 Arduino。使用 DS3231 RTC、我在 Arduino 串行监视器中获得了正确的日期和时间。
但是、当我通过 Arduino 连接 BQ32002 RTC 时、我可以将时间设置为 RTC、但对于显示时间、它仅显示设置时间。
我认为 BQ32002的编程与 DS3231相同、但在这里它不充当时钟。
请帮助 我解决此问题。
此致、
Dhanya
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我正在使用 BQ32002 RTC 和 Arduino。使用 DS3231 RTC、我在 Arduino 串行监视器中获得了正确的日期和时间。
但是、当我通过 Arduino 连接 BQ32002 RTC 时、我可以将时间设置为 RTC、但对于显示时间、它仅显示设置时间。
我认为 BQ32002的编程与 DS3231相同、但在这里它不充当时钟。
请帮助 我解决此问题。
此致、
Dhanya
您好、Lane、
感谢你的答复。
我已将 Vcc 提供为3.3V、但从 Vcc 为测试供电以来、我不会提供 Vback。
[引用 USER="Lane Boyd ]此外、需要确认振荡器是否正常工作
[/报价]
如何检查振荡器是否工作?
我可以将时间和日期写入 RTC、以及从 RTC 读取的相同时间。所以我认为振荡器不工作、它不充当时钟
我还在发送代码。
平路机、
Dhanya
#include "Wire.h"
#define BQ32002_address 0x68
//将正常的十进制数转换为二进制编码小
数字节 dectoBcd (byte val)
{
return (val/10*16)+(val %10));
}
//将二进制编码小数转换为正常的十进
制数 bcdToDecd (byte val)
{
return (((((((/16*16
}+void
)
+16*10)+(Wire.begin();
Serial.begin(9600);)设置为 void val
//在此处设置初始时间:
// DS3231秒、分钟、小时、天、日期、 月、年
setDS3231time (30、35、11、3、12、1、20);
}
void setDS3231time (字节秒、字节分钟、字节小时、字节 dayOfWeek、字节
dayOfMonth、 字节月、字节年)
{
//将时间和日期数据设置为 DS3231
Wire.beginTransmission(BQ32002);
Wire.write(0);//将下一个输入设置为从秒寄存
器 Wire.write (decToBcd(second)开始;//将 seconds
Wire.write (decToBcd(minute)设置为 seconds Wire.write(decToBcd(hour)
;// decToWedToWire=7day)
;/ decdToWedTobcd(day=7ded.shay);//
//设置日期(1到31)
Wire.write (decToBcd (Month));//设置 Month
Wire.write (decToBcd (year));//设置年份(0到99)
Wire.endTransmission ();
}
void readDS323.1 time (byte *second、
byte *分钟、
*Ofhour、
byte *OfdayWeek、byte *OfWeek、*
字节*每日字节*)
字节*月、
字节*年
){
Wire.beginTransmission(BQ32002);
Wire.write(0);//将 BQ32002寄存器指针设置为00h
Wire.endTransmission ();
Wire.requestFrom (BQ32002,7);
//从寄存器00h 开始从 BQ32002请求七个字节的数据
*second = bcdToDec (Wire.read()& 0x7bcdOfWire
(& 0x7b.dec)
;*读取时间=*小时);*读取(bcdoft.dec ();*读取)= bcdome.dec (*);*读取)*。
*month = bcdToDec (Wire.read());
*year = bcdToDec (Wire.read());
}
void displayTime()
{
字节秒,分钟,小时,dayOfWeek,dayOfMonth, 月、年;
//从 DS3231
readDS323.1检索数据(&second、&minute、&hour、&dayOfWeek、&dayOfMonth、 月,
年);
//将其发送到串行监视器
Serial.print (hour,DEC);
//将字节变量转换为十进制数(显示时)
serial.print (":");
如果(分钟<10)
{
serial.print ("0");
}
serial.print (minute、DEC);
serial.print (":");
如果(second<10)
{
serial.print ("0");
}
serial.print (second、DEC);
serial.print (");
serial.print (dayOfMonth、DEC);
serial.print ("/");
serial.print (Month、DEC);
serial.print ("/");
serial.print (year、 Dec);
Serial.print ("星期几:");
switch (dayOfWeek){
案例1:
serial.println("星期日");
中断;
案例2:
serial.println("Monday");
中断;
案例3:
serial.println("Tuesday");
中断;
案例4:
serial.println("星期三");
中断;
案例5:
serial.println("星期四");
中断;
案例6:
serial.println("Friday");
中断;
案例7:
serial.println("星期六");
break;
}
}
void loop()
{
displayTime();//在串行监视器上显示实时时钟数据,
delay (1000);//每秒
}