Arduino和C51开发DS1302时钟

技术:51单片机、Arduino、DS1302时钟、串口通信

概述

本文实现51单片机和Arduino串口实时显示时钟功能,让读者对DS1302能够更好的理解,这次功能也和上节课学到的串口通信运用在一起

详细

代码下载:http://www.demodashi.com/demo/14706.html

一、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具体实现和其他的功能,大家可以自行上网搜索资料,相信付出就会有收获。

五、项目结构图

代码下载:http://www.demodashi.com/demo/14706.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

原文地址:https://www.cnblogs.com/demodashi/p/10503357.html

时间: 2024-11-12 23:08:39

Arduino和C51开发DS1302时钟的相关文章

Arduino和C51开发OLED显示屏

技术:51单片机.Arduino.OLED显示屏.U8glib 概述 OLED显示屏常常用作为智能产品的显示设备,本文简单介绍OLED显示屏的使用方法. 详细 代码下载:http://www.demodashi.com/demo/14753.html 一.OLED显示屏 OLED显示屏是利用有机电自发光二极管制成的显示屏.由于同时具备自发光有机电激发光二极管,不需背光源.对比度高.厚度薄.视角广.反应速度快.可用于挠曲性面板.使用温度范围广.构造及制程较简单等优异之特性,被认为是下一代的平面显示

Arduino和C51开发DHT11温湿度传感器

技术:51单片机.Arduino.DHT11.温湿度传感器.传感器 概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产品的思维有很大的帮助 详细 代码下载:http://www.demodashi.com/demo/14729.html 一.DHT11温度传感器 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳

Arduino和C51开发LCD1602显示屏

技术:51单片机.Arduino.LCD1602 概述 本文介绍了LCD1602显示屏,并在LCD1602上显示字符串,对LCD1602常见的问题的解决和开发方法也做了简单介绍. 详细 代码下载:http://www.demodashi.com/demo/14741.html 一.LCD1602 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母.数字.符号的点阵型液晶模块.它是由若干个5x7或者5x10的点阵字符

Arduino和C51开发光敏传感器

技术:51单片机.Arduino.光敏传感器.PCF8591.AD/DA转换 概述 本文介绍了如何接收传感器的模拟信号和如何使用PCF8591 AD/DA转换模块对光敏传感器的模拟信号进行转换.讲述了51单片机和Arduino如何读取模拟信号,并通过串口实时显示出来. 详细 代码下载:http://www.demodashi.com/demo/14737.html 一.光敏传感器 光敏传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长.光传

Arduino可穿戴开发入门教程(大学霸内部资料)

Arduino可穿戴开发入门教程(大学霸内部资料) 试读下载地址:链接:http://pan.baidu.com/s/1mg9To28 密码:z5v8 介绍:Arduino可穿戴开发入门教程(大学霸内部资料)为国内第一本可穿戴技术实施教程.本教程以最流行的开源硬件Arduino讲解可穿戴产品的构建方法.全教程覆盖Arduino Lily硬件.软件开发和项目构建等内容.最后,还讲解三个项目:番茄闹钟.二进制时钟.P#OV手*&环. 目  录 第1章  LilyPad Arduino概览 1 1.1

单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》

引言 本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期.时间的校准.具有走时精确,功耗低,显示直观,调整简单方便等优点. 功能描述 基本显示: 第一行为日期,依次为:年-月-日-星期 第二行为时间,依次为:时:分:秒 说明: 每月的天数,闰年的天数可自动调整 蓝牙校准日期: 命令d+年月日星期+#,如设置2016年12月8日星期四,手机发送命令:d16120804

Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE

Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE Windows平台下安装Arduino IDE Windows操作系统下可以使用安装向导和压缩包形式安装.下面详细讲解这两种方式. 1.Arduino IDE Windows安装向导方式 Windows安装向导方式安装和绝大多数Windows应用程序安装类似,只需要直接运行下载的.exe文件即可.例如1.6.0版本的安装向导方式的文件名为arduino-1.6.0-windows.exe.直接双击该文件即可开始安装.

可编程硬件Arduino初探(2)-开发环境搭建

1.介绍 Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的板)和软件(arduino IDE).它适用于爱好者.艺术家.设计师和对于“互动”有兴趣的朋友们. 详细信息请自行科普: http://www.arduino.cc/ http://baike.baidu.com/view/1268436.htm?fr=aladdin http://en.wikipedia.org/wiki/Arduino 2.官方IDE 下面来搭建环境,arduino官方自己推出了一个简

android开发之时钟UI

android中自带了时钟UI组件,分别为AnalogClock和DigitalClock,分别为模拟时钟与数字时钟.   1.AnalogClock    可以自定义表盘.时针与分针.如下,只需在xml文件中设置即可. <!-- 定义模拟时钟,并使用自定义表盘.时针图片 --> <AnalogClock android:layout_width="wrap_content" android:layout_height="wrap_content"