Arduino与Proteus仿真实例-DS1307实时时钟驱动仿真

DS1307实时时钟驱动仿真

DS1307 串行实时时钟 (RTC) 是一种低功耗、全二进制编码十进制 (BCD) 时钟/日历加上 56 字节的 NV SRAM。 地址和数据通过 I2C 双向总线串行传输。时钟/日历提供秒、分、小时、日、日、月和年信息。 对于少于 31 天的月份,月末日期会自动调整,包括闰年的更正。 时钟以 24 小时或 12 小时格式运行,带有 AM/PM 指示器。 DS1307 具有内置电源检测电路,可检测电源故障并自动切换到备用电源。当器件由备用电源供电时,计时操作继续进行。

在实现的文章中,对DS1307做了了详细的介绍,请参考:

1、仿真电路原理图

在这里插入图片描述

2、仿真代码实现

本次使用到如下开源库:

演示代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <Wire.h>
#include <RTC.h>

static DS1307 RTC;

void setup()
{
Serial.begin(9600);
RTC.begin();

Serial.println();
Serial.println("\*\*\* RTC 1307 \*\*\*");
Serial.print("Is Clock Running : ");
if (RTC.isRunning())
Serial.println("Yes");
else
Serial.println("No. Time may be Inaccurate");
Serial.print("Hour Mode : ");
if (RTC.getHourMode() == CLOCK_H24)
Serial.println("24 Hours");
else
Serial.println("12 Hours");
Serial.print("Is Out Pin Enabled : ");
if (RTC.isOutPinEnabled())
Serial.println("Yes");
else
Serial.println("No");

Serial.print("Is SQWE Enabled : ");
if (RTC.isSqweEnabled())
Serial.println("Yes");
else
Serial.println("No");


}

void loop()
{

switch (RTC.getWeek())
{
case 1:
Serial.print("SUN");
break;
case 2:
Serial.print("MON");
break;
case 3:
Serial.print("TUE");
break;
case 4:
Serial.print("WED");
break;
case 5:
Serial.print("THU");
break;
case 6:
Serial.print("FRI");
break;
case 7:
Serial.print("SAT");
break;
}
Serial.print(" ");
Serial.print(RTC.getDay());
Serial.print("-");
Serial.print(RTC.getMonth());
Serial.print("-");
Serial.print(RTC.getYear());

Serial.print(" ");

Serial.print(RTC.getHours());
Serial.print(":");
Serial.print(RTC.getMinutes());
Serial.print(":");
Serial.print(RTC.getSeconds());
if (RTC.getHourMode() == CLOCK_H12)
{
switch (RTC.getMeridiem())
{
case HOUR_AM :
Serial.print(" AM");
break;
case HOUR_PM :
Serial.print(" PM");
break;
}
}
Serial.println();
delay(1000);
}

3、仿真结果

在这里插入图片描述

文章来源: https://iotsmart.blog.csdn.net/article/details/121235168