发布网友 发布时间:2022-05-01 23:39
共1个回答
热心网友 时间:2022-06-25 04:21
您好,这边查询到相关内容,可以进行参考。
硬件:Arino nano一块、DS1302时钟电路一个、TM1637-4位数码管一个、杜邦线若干;
连接:
DS1302:VCC — VCC、GND — GND、RST — D4、DAT — D5、CLK — D6;
4位数码管:VCC — VCC、GND — GND、CLK — D3、DIO — D2;
相关代码:
#include <.h>//
#include <TM1637Display.h>
// DS1302 初始化设定
DS1302 rtc(4, 5, 6);//RST-4,DAT-5,CLK-6
// 设定 TM1637 接脚
#define CLK 3
#define DIO 2
TM1637Display display(CLK, DIO);
boolean colon = true ;
String dw = "";
String hh = "";
String mm = "";
String ss = "";
float t = 0;
void setup()
{
// 设定时钟执行模式,取消写入保护
rtc.halt(false);
rtc.writeProtect(false);
// Setup Serial connection
Serial.begin(9600);
display.setBrightness(0xA);
// 第一次设定写入 DS1302 RTC时钟,之後可以加上注解
// rtc.setDOW(SUNDAY); // 设定每周星期几?
// rtc.setTime(20, 16, 30); // 设定24小时时间 20:16:30
// rtc.setDate(19, 3, 2017); // 设定日期(日, 月, 年)
}
void loop()
{
// 取得星期几
Serial.print(rtc.getDOWStr());
Serial.print(" ");
// 取得日期
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
// 取得时间
dw = rtc.getTimeStr();
Serial.println(dw);
hh = dw.substring(0,2); // 时数
mm = dw.substring(3,5); // 分钟数
ss = dw.substring(6,8); // 秒数
// 显示四位数中间的冒号
uint8_t segto;
int value = 1000;
// 显示 时:分
int t = hh.toInt()*100 + mm.toInt();
// 显示 分:秒
// int t = mm.toInt() *100 +ss.toInt();
segto = 0x80 | display.encodeDigit((t / 100)%10);
display.setSegments(&segto, 1, 1);
delay(500);
// 显示时间
display.showNumberDec(t, true);
delay(500);
}