打印
[产品应用]

基于CW32实时时钟DS1302应用

[复制链接]
249|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
资料链接如下:
BD网盘链接:
https://pan.baidu.com/s/1IsFqi-bdPQcilu71JMrsVA
提取码:n99y
相关视频:基于CW32实时时钟DS1302应用

一、简介

DS1302是一款集成了实时时钟(RTC)功能的芯片。RTC是一种能够精确测量和跟踪时间的电子设备,可以提供准确的日期和时间信息。DS1302实时时钟芯片由Maxim Integrated(美信半导体)生产,具有以下主要特点:

①时钟精度:DS1302采用32.768kHz的晶体振荡器来提供基准时钟信号。它具有较高的时钟精度,使得它可以提供准确的时间信息,每月的时间偏差非常小。

②时钟和日历功能:DS1302可以跟踪秒、分钟、小时、日期、月份和年份。它提供了完整的时钟和日历功能,可以准确地记录时间和日期。

③低功耗设计:DS1302芯片采用了低功耗设计,因此在电池供电时可以提供长时间的运行时间。

④数据保持功能:DS1302具有数据保持功能,使得即使在电源断电的情况下,时钟和日历数据仍然可以得到保持,确保数据的可靠性和连续性。

⑤简化的接口:DS1302通过串行接口(2线或3线),与微控制器或其他外部设备进行通信。这种简化的接口使得它更容易与其他系统集成,实现实时时钟功能。

DS1302实时时钟芯片被广泛应用于各种应用领域,如电子设备、仪器仪表、自动化系统、安防系统等需要准确时间信息的场合。它的易用性、低功耗以及稳定的性能使得它成为常用的实时时钟解决方案之一。


二、所需物料

本实验用到了CW32 Cortex-M实训套件实验箱、DS1302实时时钟模块及Keil5开发环境。




CW32 Cortex-M实训套件




DS1302实时时钟模块实物




DS1302原理图


DS1302具体工作原理可观看视频,或参考以下链接中的文章: https://blog.csdn.net/u013184273/article/details/78843881
三、核心代码
/*
用TFT屏幕显示年、月、日、星期、时、分、秒
显示界面如下:
----------------
DS1302 Real Time
                         
Year :xxxx
Month:xx
Day  :xx
Week :xx
xx:xx:xx

----------------
*/

#include "main.h"
#include "config.h"
#include "Ds1302.h"        //DS1302底层驱动代码
#include "Lcd_Driver.h"
#include "LCD_calculate.h"

char strings[2];         //储存要显示的数字

int main()
{
        u8 value = 0;
       
        RCC_Configuration(); //配置时钟
       
        Lcd_Init();
        Lcd_Clear(GRAY0);
       
        Ds1302_GPIO_Init();  //GPIO配置
       
//        Ds1302_Config(23,7,7,5,14,58,55); //初始化DS1302,2023年7月7日星期五23点59分55秒
       
        Gui_DrawFont_GBK16(0,0,WHITE,RED,"DS1302 Real Time"); //显示界面
        Gui_DrawFont_GBK16(0,32,WHITE,RED,"Year :20  ");
        Gui_DrawFont_GBK16(0,48,WHITE,RED,"Month:    ");
        Gui_DrawFont_GBK16(0,64,WHITE,RED,"Day  :    ");
        Gui_DrawFont_GBK16(0,80,WHITE,RED,"Week :    ");
        Gui_DrawFont_GBK16(0,96,WHITE,RED,"  :  :    ");
       
        while(1)
        {               
                Ds1302_GetHour(&value);                  //小时
                sprintf(strings,"%d",value/10);
                Gui_DrawFont_GBK16(0,96,WHITE,RED,strings);
                sprintf(strings,"%d",value%10);
                Gui_DrawFont_GBK16(8,96,WHITE,RED,strings);
               
                Ds1302_GetMinite(&value);                //分钟
                sprintf(strings,"%d",value/10);
                Gui_DrawFont_GBK16(24,96,WHITE,RED,strings);
                sprintf(strings,"%d",value%10);
                Gui_DrawFont_GBK16(32,96,WHITE,RED,strings);
               
                Ds1302_GetSecond(&value);                //秒钟
                sprintf(strings,"%d",value/10);
                Gui_DrawFont_GBK16(48,96,WHITE,RED,strings);
                sprintf(strings,"%d",value%10);
                Gui_DrawFont_GBK16(56,96,WHITE,RED,strings);       
               
                Ds1302_GetDay(&value);                  //星期
                sprintf(strings,"%d",value/10);
                Gui_DrawFont_GBK16(40+8,80,WHITE,RED,strings);
                sprintf(strings,"%d",value%10);
                Gui_DrawFont_GBK16(48+8,80,WHITE,RED,strings);
               
                Ds1302_GetDate(&value);                 //日期
                sprintf(strings,"%d",value/10);
                Gui_DrawFont_GBK16(32+16,64,WHITE,RED,strings);
                sprintf(strings,"%d",value%10);
                Gui_DrawFont_GBK16(40+16,64,WHITE,RED,strings);       
               
                Ds1302_GetMonth(&value);                //月份
                sprintf(strings,"%d",value/10);
                Gui_DrawFont_GBK16(48,48,WHITE,RED,strings);
                sprintf(strings,"%d",value%10);
                Gui_DrawFont_GBK16(55,48,WHITE,RED,strings);
               
                Ds1302_GetYear(&value);                 //年份
                sprintf(strings,"%d",value/10);
                Gui_DrawFont_GBK16(56+8,32,WHITE,RED,strings);
                sprintf(strings,"%d",value%10);
                Gui_DrawFont_GBK16(64+8,32,WHITE,RED,strings);
        }
}



四、实验最终现象

把程序下载进DS1302模块,DS1302经过程序初始化后将开始计时。



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/2302_81038468/article/details/136470352

使用特权

评论回复
沙发
weifeng90| | 2025-3-7 19:12 | 只看该作者
记得大学时期学习单片机时,RTC就是用的DS1302。

使用特权

评论回复
板凳
小小蚂蚁举千斤| | 2025-3-13 22:12 | 只看该作者
这个试验箱如何采购?

使用特权

评论回复
地板
中国龙芯CDX| | 2025-3-19 22:26 | 只看该作者
CW32实时时钟DS1302是如何具体编程的

使用特权

评论回复
5
jf101| | 2025-3-20 17:40 | 只看该作者
DS1302应用学习一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

92

帖子

0

粉丝