您当前的位置:首页 > 教程 > Arduino教程 > 【Arduino教程】第十一课:Arduino使用DS1302显示时间 网站首页 Arduino教程
【Arduino教程】第十一课:Arduino使用DS1302显示时间
发布时间:2017-12-26 13:15:33编辑:阅读()
-
很多Arduino初学者做的第一个比较使用的就是数字时钟了,今天就教大家如何通过Arduino使用DS1302时钟模块来显示日期和时间。DS1302时钟模块中使用的DS1302芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。目前也有很多国产的芯片,价格非常的便宜只需要几毛钱,不过这里提醒各位买的时候多买几片,因为这个芯片很容易损坏。
1、材料
Arduino板1块
DS1302时钟模块一块
2、原理图
DS1302时钟模块的原理图非常简单,如果不想买的同学可以按照下图使用面包板或者万能板来搭建
Arduino和DS1302时钟模块的连接图如下:
3、下载DS1302库
在如下地址下载DS1302的库
链接:https://pan.baidu.com/s/1c3GI9fM 密码:y2fr
下载后得到一个压缩包,把DS1302.h和DS1302.cpp放入到自己的代码工程目录里(也可以放入Arduino的lib库,我一般喜欢放在代码工程目录里)
4、代码
#include <stdio.h>
#include <string.h>
#include "DS1302.h"
/* DS1302与Arduino连接方式
CE(DS1302 pin5) --> Arduino D5
IO(DS1302 pin6) --> Arduino D6
SCLK(DS1302 pin7) --> Arduino D7
*/
uint8_t CEPIN = 5;
uint8_t IOPIN = 6;
uint8_t SCLKPIN = 7;
/* 日期变量缓存 */
char buf[50];
char day[10];
/* 定义DS1302对象 */
DS1302 rtc(CEPIN, IOPIN, SCLKPIN);
void print_time()
{
Time t = rtc.time();
/* 星期转换成字符串 */
memset(day, 0, sizeof(day));
switch (t.day)
{
case 1: strcpy(day, "Sunday"); break;
case 2: strcpy(day, "Monday"); break;
case 3: strcpy(day, "Tuesday"); break;
case 4: strcpy(day, "Wednesday"); break;
case 5: strcpy(day, "Thursday"); break;
case 6: strcpy(day, "Friday"); break;
case 7: strcpy(day, "Saturday"); break;
}
/* 日期格式化 */
snprintf(buf, sizeof(buf), "%04d-%02d-%02d %02d:%02d:%02d %s", t.yr, t.mon, t.date, t.hr, t.min, t.sec, day);
/* 打印输出 */
Serial.println(buf);
}
void setup()
{
Serial.begin(9600);
rtc.write_protect(false);
rtc.halt(false);
/* 初始化时间 */
Time t(2017, 12, 25, 0, 0, 0, 2);
rtc.time(t);
rtc.write_protect(true);
}
void loop()
{
/* 串口显示时间 */
print_time();
delay(1000);
}5、常见问题
常见问题总结在这个帖子里,请戳这里:DS1302使用常见问题
关键字词:Arduino教程,DS1302时钟模块,Arduino时钟
相关文章
- 【Arduino教程】第十二课:Arduino驱动28BYJ-48步进电
- 【Arduino教程】第十课:Arduino控制蜂鸣器报警装置实验
- 【Arduino教程】第九课:使用Arduino的PWM控制实现LED呼
- 【Arduino教程】第八课:使用电位器来控制LED的亮度
- 【Arduino教程】第七课:用按钮和PWM控制LED亮度的呼吸
- 【Arduino教程】第六课:通过按键button控制LED
- 【Arduino教程】第五课:Arduino第一个用例Blink
- 【Arduino教程】第四课:Arduino驱动程序安装
- 【Arduino教程】第三课:软件开发环境Arduino IDE准备
- 【Arduino教程】第二课:选择适合自己的Arduino板(Ardu