基于CW32实时时钟DS1302应用

本文介绍了DS1302实时时钟芯片的功能、应用领域以及在CW32Cortex-M实训套件中的使用。核心代码展示了如何通过DS1302获取并显示当前的年、月、日、星期、时、分和秒。
摘要由CSDN通过智能技术生成

资料链接如下:
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经过程序初始化后将开始计时。

在这里插入图片描述

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值