Arduino和C51开发DS1302时钟
概述
详细
一、DS1302时钟
DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
二、51单片机串口显示时钟
硬件连接:
初始化DS1302时钟后,DS1302内部会进行计时,这里我们通过datapros()把当前时间放入Data字符串中,代码如下:
void datapros() //时间读取处理转换函数
{
Ds1302ReadTime();
Data[0] = '0'+(TIME[2]/16); //时
Data[1] = '0'+(TIME[2]&0x0f);
Data[2] = ':';
Data[3] = '0'+(TIME[1]/16); //分
Data[4] = '0'+(TIME[1]&0x0f);
Data[5] = ':';
Data[6] = '0'+(TIME[0]/16); //秒
Data[7] = '0'+(TIME[0]&0x0f);
}
主函数只要每1s打印一次数据到串口就实现时钟功能了,代码如下:
void main()
{
int i;
Ds1302Init(); //Ds1302初始化
UsartInit(); //串口初始化
while(1)
{
datapros();
sprintf(time_data,"%c%c%c%c%c%c%c%c",Data[0],Data[1],Data[2],Data[3],Data[4],Data[5],Data[6],Data[7]); //合成字符串函数
printf(time_data);
printf("\n");
delay1s(); //1s打印一次时间
}
}
时钟功能如下图:
注:如果加了其他功能,代码量多了,不能每1s打印出时间了,那你可以试试用中断
三、Arduino串口显示时钟
硬件连接:
编译烧写前,你还需要:
1. 右击Arduino软件->打开文件所在的位置
2. 将本项目代码文件夹中的DS1302文件夹复制到libraries文件夹中
这样我们代码中才能使用DS1302这个头文件,代码如下:
#include <stdio.h>
#include <string.h>
#include "DS1302.h" uint8_t RST = 5;
uint8_t DAT = 6;
uint8_t CLK = 7; /* 日期变量缓存 */
char buf[50];
char day[10]; /* 定义DS1302对象 */
DS1302 rtc(RST, DAT, CLK); 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.writeProtect(false);//关闭写保护
rtc.halt(false);
/* 初始化时间 */
Time t(2018, 12, 19, 12, 0, 0, 4);//最后一个为星期x,日:1、一:2、二:3.....
rtc.time(t);
rtc.writeProtect(true);//开启写保护
} void loop()
{
/* 串口显示时间 */
print_time();
delay(1000);
}
时钟功能如下图:
四、总结
本文实现51单片机和Arduino串口显示时钟功能,让读者对DS1302能够更好的理解,如果想深入了解DS1302具体实现和其他的功能,大家可以自行上网搜索资料,相信付出就会有收获。
五、项目结构图
注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权
Arduino和C51开发DS1302时钟的更多相关文章
- Arduino和C51开发OLED显示屏
技术:51单片机.Arduino.OLED显示屏.U8glib 概述 OLED显示屏常常用作为智能产品的显示设备,本文简单介绍OLED显示屏的使用方法. 详细 代码下载:http://www.de ...
- Arduino和C51开发DHT11温湿度传感器
技术:51单片机.Arduino.DHT11.温湿度传感器.传感器 概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产 ...
- Arduino和C51开发LCD1602显示屏
技术:51单片机.Arduino.LCD1602 概述 本文介绍了LCD1602显示屏,并在LCD1602上显示字符串,对LCD1602常见的问题的解决和开发方法也做了简单介绍. 详细 代码下载: ...
- Arduino和C51开发光敏传感器
技术:51单片机.Arduino.光敏传感器.PCF8591.AD/DA转换 概述 本文介绍了如何接收传感器的模拟信号和如何使用PCF8591 AD/DA转换模块对光敏传感器的模拟信号进行转换.讲 ...
- Arduino可穿戴开发入门教程(大学霸内部资料)
Arduino可穿戴开发入门教程(大学霸内部资料) 试读下载地址:链接:http://pan.baidu.com/s/1mg9To28 密码:z5v8 介绍:Arduino可穿戴开发入门教程(大学霸内 ...
- spi接口的ds1302时钟芯片控制在lcd1602上显示
spi接口的ds1302时钟芯片控制在lcd1602上显示 ...
- 单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》
引言 本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期.时间的校准 ...
- x86 版的 Arduino Intel Galileo 开发板的体验、分析和应用
1.前言 在今年(2013)罗马举办的首届欧洲 Make Faire 上,Intel 向对外发布了采用 x86 构架的 Arduino 开发板:Intel Galileo.这无疑是一个开源硬件领域的重 ...
- Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE
Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE Windows平台下安装Arduino IDE Windows操作系统下可以使用安装向导和压缩包形式安装.下面详细讲解这 ...
随机推荐
- DOS批处理中%cd%和%~dp0的异同分析
在DOS的批处理中,有时候需要知道当前的路径.在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0. 这两个变量的用法和代表的内容是不同的. 1. %cd% 可以用在批处理 ...
- ArcGisServer根据最大最小坐标换算瓦片行列号【转】
1.前言 在上一节中我们知道了屏幕上一像素等于实际中多少单位长度(米或经纬度)的换算方法,而知道这个原理后,接下来我们要怎么用它呢?它和我们前端显示地图有什么关联呢?这一节,我会尽量详细的将这两个问题 ...
- asp.net使用jquery.form实现图片异步上传
首先我们需要做准备工作: jquery下载:http://files.cnblogs.com/tianguook/jquery1.8.rar jquery.form.js下载:http://files ...
- Visitor 访问者模式 MD
访问者模式 简介 访问者模式是设计模式中相对比较复杂的一个,项目中可能见得非常少. 定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下,定义作用于这些元素的新的操作. 表示 ...
- vue使用watch 观察路由变化,重新获取内容
watch: { $route(to) { console.log(to) if (to.path.indexOf('index') != -1) { //路由变化后重新获取帖子列表 this.$ht ...
- 使用 CSS 接收用户的点击事情并对相关节点进行操作
问题背景:使用纯 CSS 方案,实现导航栏tab切换 实现 Tab 切换的难点在于如何使用 CSS 接收到用户的点击事情并对相关的节点进行操作.即是: 如何接收点击事件 如何操作相关DOM 下面看看如 ...
- bash shell redirecting code block
参考了:https://www.cnblogs.com/sparkdev/p/10247187.html https://www.tldp.org/LDP/abs/html/redircb.html ...
- Spring(十二):IOC容器中Bean的生命周期方法
IOC容器中Bean的生命周期方法 1)Spring IOC容器可以管理Bean的声明周期,Spring允许在Bean生命周期的特定点执行定制的任务. 2)Spring IOC容器对Bean的生命周期 ...
- CHtmlEditCtrl (2): Add a Source Text Editor to Your HTML Editor
In a previous article, I described how to create an HTML editor using the MFC CHtmlEditCtrl class in ...
- 可以在任何时候attach一个shader到program对象
可以在任何时候attach一个shader到program对象,不一定非要在指定source和编译以后,具体的描述如下: Once you have a program object create ...