完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用DS1302时钟模块搭配TM1637四位数码管制作简易电子
材料准备 ① Arduino UNO R3主板(仅供参考) ② DS1302时钟模块 ③ TM1637四位数码管 ④ 面包板 ⑤ 杜邦线若干 DS1302时钟模块 DS1302芯片简介 DS1302可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。 [tr]引脚说明[/tr]
当然,如果我们使用集成有DS1302 芯片的时钟模块,那就变得简便了不少。本次使用的模块已经用32.768kHz的石英晶体把X1、X2相连,并使用CR2032纽扣电池作备用电源。 当主电源被切断使用并备用电源后,若重新接通主电源,时钟信息会被刷新 [tr]引脚说明[/tr]
[tr]引脚说明[/tr]
Arduino IDE代码 代码调用了 Rtc_by_Makuna 和 TM1637_Driver 两个库 两者皆可在Arduino IDE的管理库中搜索添加 参考库的示例程序,编写代码 #include #include #include // configurations // TM1637 DIO Pin 3 // TM1637 CLK Pin 2 // DS1302 CLK/SCLK 4 // DS1302 DAT/IO 5 // DS1302 RST/CE 6 // DS1302 VCC 5v // DS1302 GND GND TM1637 tm(2,3); //定义针脚 ThreeWire myWire(5,4,6); // DAT, CLK, RST RtcDS1302 void setup() { tm.init(); //初始化tm1637 tm.setBrightness(1); //设置亮度为 1 Serial.begin(9600); Serial.print("已获取系统时间并设定为: "); Serial.print(__DATE__); Serial.print(" "); Serial.println(__TIME__); Rtc.Begin(); RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__); printDateTime(compiled); Serial.println(); RtcDateTime now = Rtc.GetDateTime(); if (now < compiled) { Rtc.SetDateTime(compiled); } else if (now > compiled) { Rtc.SetDateTime(compiled); } else if (now == compiled) { Serial.println("当前时间和编译时相同"); } } void loop() { tm.switchColon(); //TM1637中间的点闪烁 RtcDateTime now = Rtc.GetDateTime(); String Timestr = printDateTime(now); Serial.println(); if (!now.IsValid()) //若now没有被实例化 { Serial.println("获取时间失败,检查RTC是否连接"); } int c0 = Timestr[15]-48; //ASCII码转数字 int c1 = Timestr[14]-48; int c2 = Timestr[12]-48; int c3 = Timestr[11]-48; tm.display(c3, false, false, 3); tm.display(c2, false, false, 2); tm.display(c1, false, false, 1); tm.display(c0, false, false, 0); delay(1000); } #define countof(a) (sizeof(a) / sizeof(a[0])) String printDateTime(const RtcDateTime& dt) { char datestring[20]; snprintf_P(datestring, countof(datestring), PSTR("%02u/%02u/%04u %02u:%02u:%02u"), dt.Month(), dt.Day(), dt.Year(), dt.Hour(), dt.Minute(), dt.Second() ); Serial.print(datestring); return (datestring); } 完成效果 注意事项 需要注意的是,校准电子钟会调用电脑的系统时间,因此要确保电脑系统时间已校准;若需重新校准电子钟只能重新上传程序,不能通过Arduino上的重新执行程序按钮校准;当主电源被切断并使用备用电源后,若重新接通主电源,时钟信息会被刷新。 |
|
|
|
只有小组成员才能发言,加入小组>>
4274个成员聚集在这个小组
加入小组3275 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4216 浏览 1 评论
4221 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 23:45 , Processed in 0.575746 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号