当前位置: 首页 > news >正文

蓝桥杯篇---实时时钟 DS1302


文章目录

  • 前言
  • 特点简介
    • 1.低功耗
    • 2.时钟/日历功能
    • 3.32字节的额外RAM
    • 4.串行接口
  • DS1302 引脚说明
    • 1.VCC1
    • 2.VCC2
    • 3.GND
    • 4.CE
    • 5.I/O
    • 6.SCLK
  • DS1302 寄存器
    • 1.秒寄存器
    • 2.分钟寄存器
    • 3.小时寄存器
    • 4.日寄存器
    • 5.月寄存器
    • 6.星期寄存器
    • 7.年寄存器
    • 8.控制寄存器
  • DS1302 与 IAP25F2K61S2 的连接
    • 1.CE连接
    • 2.I/O连接
    • 3.SCLK连接
  • DS1302 示例代码
  • 代码说明
  • 注意事项
  • 总结
  • 总结


前言

以上就是今天要讲的内容,本文简单介绍了实时时钟 DS1302的使用。


特点简介

DS1302 是一款由 Maxim Integrated 生产的实时时钟(RTC)芯片,具有以下特点:

1.低功耗

低功耗:适合电池供电的应用。

2.时钟/日历功能

时钟/日历功能:提供秒、分、时、日、月、星期和年的信息。

3.32字节的额外RAM

31字节的额外RAM:可用于存储用户数据

4.串行接口

串行接口:通过简单的三线接口(CE、I/O、SCLK)微控制器通信。

DS1302 引脚说明

1.VCC1

VCC1:主电源引脚。

2.VCC2

VCC2:备用电源引脚(通常接电池)。

3.GND

GND:

4.CE

CE:芯片使能引脚(高电平有效)。

5.I/O

I/O:数据输入/输出引脚。

6.SCLK

SCLK:串行时钟引脚。

DS1302 寄存器

DS1302 内部有多个寄存器,用于存储时间和控制信息。主要寄存器包括:

1.秒寄存器

秒寄存器(0x80):存储秒数。

2.分钟寄存器

分钟寄存器(0x82):存储分钟数。

3.小时寄存器

小时寄存器(0x84):存储小时数。

4.日寄存器

日寄存器(0x86):存储日期。

5.月寄存器

月寄存器(0x88):存储月份。

6.星期寄存器

星期寄存器(0x8A):存储星期几。

7.年寄存器

年寄存器(0x8C):存储年份。

8.控制寄存器

控制寄存器(0x8E):用于控制写保护等功能。

DS1302 与 IAP25F2K61S2 的连接

假设 IAP25F2K61S2 的 GPIO 引脚与 DS1302 连接如下:

1.CE连接

CE 连接到 P1.0

2.I/O连接

I/O 连接到 P1.1

3.SCLK连接

SCLK 连接到 P1.2

DS1302 示例代码

以下是一个简单的示例代码,展示如何使用 IAP25F2K61S2 与 DS1302 进行通信,读取和设置时间。

#include <reg52.h>sbit CE = P1^0;  // 芯片使能引脚
sbit IO = P1^1;  // 数据输入/输出引脚
sbit SCLK = P1^2; // 串行时钟引脚// 向DS1302写入一个字节
void DS1302_WriteByte(unsigned char addr, unsigned char data) {unsigned char i;CE = 1;  // 使能DS1302// 发送地址字节for (i = 0; i < 8; i++) {IO = addr & 0x01;SCLK = 1;SCLK = 0;addr >>= 1;}// 发送数据字节for (i = 0; i < 8; i++) {IO = data & 0x01;SCLK = 1;SCLK = 0;data >>= 1;}CE = 0;  // 禁用DS1302
}// 从DS1302读取一个字节
unsigned char DS1302_ReadByte(unsigned char addr) {unsigned char i, data = 0;CE = 1;  // 使能DS1302// 发送地址字节for (i = 0; i < 8; i++) {IO = addr & 0x01;SCLK = 1;SCLK = 0;addr >>= 1;}// 读取数据字节for (i = 0; i < 8; i++) {data >>= 1;if (IO) data |= 0x80;SCLK = 1;SCLK = 0;}CE = 0;  // 禁用DS1302return data;
}// 设置DS1302的时间
void DS1302_SetTime(unsigned char year, unsigned char month, unsigned char day, unsigned char hour, unsigned char minute, unsigned char second) {DS1302_WriteByte(0x8E, 0x00);  // 关闭写保护DS1302_WriteByte(0x8C, year);  // 设置年DS1302_WriteByte(0x88, month); // 设置月DS1302_WriteByte(0x86, day);   // 设置日DS1302_WriteByte(0x84, hour);  // 设置小时DS1302_WriteByte(0x82, minute);// 设置分钟DS1302_WriteByte(0x80, second);// 设置秒DS1302_WriteByte(0x8E, 0x80);  // 打开写保护
}// 读取DS1302的时间
void DS1302_GetTime(unsigned char *year, unsigned char *month, unsigned char *day, unsigned char *hour, unsigned char *minute, unsigned char *second) {*year = DS1302_ReadByte(0x8D);  // 读取年*month = DS1302_ReadByte(0x89); // 读取月*day = DS1302_ReadByte(0x87);   // 读取日*hour = DS1302_ReadByte(0x85);  // 读取小时*minute = DS1302_ReadByte(0x83);// 读取分钟*second = DS1302_ReadByte(0x81);// 读取秒
}void main() {unsigned char year, month, day, hour, minute, second;// 设置时间DS1302_SetTime(0x23, 0x10, 0x15, 0x12, 0x30, 0x00);  // 2023年10月15日12:30:00// 读取时间DS1302_GetTime(&year, &month, &day, &hour, &minute, &second);while (1) {// 在这里可以添加代码来显示时间}
}

代码说明

  1. DS1302_WriteByte:向 DS1302 写入一个字节的数据。
  2. DS1302_ReadByte:从 DS1302 读取一个字节的数据。
  3. DS1302_SetTime:设置 DS1302 的时间。
  4. DS1302_GetTime:读取 DS1302 的时间。

注意事项

电源:确保 **DS1302 的主电源和备用电源连接正确,**以保证在断电时时钟继续运行。

写保护:在写入时间数据之前,需要关闭写保护写入 0x00 到控制寄存器),写入完成后重新打开写保护(写入 0x80 到控制寄存器)。

总结

通过上述代码,您可以轻松地在 IAP25F2K61S2 上使用 DS1302 实时时钟芯片。您可以根据需要扩展代码,例如添加时间显示功能或使用 DS1302 的额外 RAM 存储数据。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了实时时钟 DS1302的使用。

相关文章:

蓝桥杯篇---实时时钟 DS1302

文章目录 前言特点简介1.低功耗2.时钟/日历功能3.32字节的额外RAM4.串行接口 DS1302 引脚说明1.VCC12.VCC23.GND4.CE5.I/O6.SCLK DS1302 寄存器1.秒寄存器2.分钟寄存器3.小时寄存器4.日寄存器5.月寄存器6.星期寄存器7.年寄存器8.控制寄存器 DS1302 与 IAP25F2K61S2 的连接1.CE连…...

C语言蓝桥杯1003: [编程入门]密码破译

要将"China"译成密码&#xff0c;译码规律是&#xff1a;用原来字母后面的第4个字母代替原来的字母&#xff0e; 例如&#xff0c;字母"A"后面第4个字母是"E"&#xff0e;"E"代替"A"。因此&#xff0c;"China"应译…...

【MySQL在Centos 7环境安装】

文章目录 一. 卸载不必要的环境二. 检查系统安装包三. 卸载这些默认安装包四. 获取mysql官⽅yum源五. 安装mysql yum 源&#xff0c;对⽐前后yum源六. 看看能不能正常⼯作七. 安装mysql服务八. .查看配置⽂件和数据存储位置九. 启动服务并查看服务是否存在十. 登陆⽅法十一. 设…...

科技引领未来,中建海龙C-MiC 2.0技术树立模块化建筑新标杆

在建筑行业追求高效与品质的征程中&#xff0c;中建海龙科技有限公司&#xff08;简称“中建海龙”&#xff09;以其卓越的创新能力和强大的技术实力&#xff0c;不断书写着装配式建筑领域的新篇章。1 月 10 日&#xff0c;由深圳安居集团规划&#xff0c;中建海龙与中海建筑共…...

玩转观察者模式

文章目录 什么是观察者模式解决方案结构适用场景实现方式观察者模式优缺点优点:缺点:什么是观察者模式 观察者模式通俗点解释就是你在观察别人,别人有什么变化,你就做出什么调整。观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察…...

Baklib知识中台构建企业智能运营核心架构

内容概要 在数字化转型的浪潮中&#xff0c;企业对于知识的系统化管理需求日益迫切。Baklib作为新一代的知识中台&#xff0c;通过构建智能运营核心架构&#xff0c;为企业提供了一套从知识汇聚到场景化落地的完整解决方案。其核心价值在于将分散的知识资源整合为统一的资产池…...

Anaconda +Jupyter Notebook安装(2025最新版)

Anaconda安装&#xff08;2025最新版&#xff09; Anaconda简介安装1&#xff1a;下载anaconda安装包2&#xff1a; 安装anaconda3&#xff1a;配置环境变量4&#xff1a;检查是否安装成功5&#xff1a;更改镜像源6&#xff1a;更新包7&#xff1a;检查 Jupyter Notebook一.Jup…...

正成为现代城市发展的必然趋势的智慧交通开源了

智慧交通视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。通过人流密集检测…...

手撕Transformer编码器:从Self-Attention到Positional Encoding的PyTorch逐行实现

Transformer 编码器深度解读 代码实战 1. 编码器核心作用 Transformer 编码器的核心任务是将输入序列&#xff08;如文本、语音&#xff09;转换为富含上下文语义的高维特征表示。它通过多层自注意力&#xff08;Self-Attention&#xff09;和前馈网络&#xff08;FFN&#x…...

Webpack和Vite插件的开发与使用

在现代开发中一般各公司都有自己的监控平台&#xff0c;对前端而言如果浏览器报错的话就可以通过埋点收集错误日志&#xff0c;再结合sourcemap文件可以帮助我们定位到错误代码&#xff0c;帮助我们排查问题。这里就记录一下之前在webpack和vite两个环境中的插件开发&#xff0…...

HTTP的状态码

HTTP 状态码 当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务器会返回一个包含 HTTP 状态码的信息头&#xff08;server header&#xff09;用以响应浏览器的请求。 常见的HTTP状态码 …...

Python函数-装饰器

装饰器 写好的函数&#xff0c;不做任何修改&#xff0c;就可以改变执行内容&#xff0c;在其头或尾部加入新的流程代码本质上就是使用函数嵌套&#xff0c;在内部嵌套定义的函数中调用原函数&#xff0c;从而可读在前或后加入新的代码使用的关键&#xff1a; 将原函数作为参数…...

【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

HTTP请求报文头和相应报文头

一、HTTP请求报文头 HTTP请求报文由请求行、请求头和请求体组成。请求头包含客户端向服务器发送的附加信息。 1.1 请求行 格式: 方法 请求URI HTTP/版本示例: GET /index.html HTTP/1.1   方法: 请求类型&#xff0c;如GET、POST、PUT、DELETE等。   请求URI: 请求的资源…...

19.4.9 数据库方式操作Excel

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。 通过COM来操作Excel操作&#xff0c;请参看第21.2节 在第19.3.4节【…...

BFS 走迷宫

#include<bits/stdc.h> using namespace std; int a[100][100],v[100][100];//访问数组 n,m<100 struct point {int x;int y;int step; }; queue<point> r;//申请队列 int dx[4]{0,1,0,-1};//四个方向 右下左上 int dy[4]{1,0,-1,0}; int main() { /* 5 4 1 …...

【Linux系统】—— 简易进度条的实现

【Linux系统】—— 简易进度条的实现 1 回车和换行2 缓冲区3 进度条的准备代码4 第一版进度条5 第二版进度条 1 回车和换行 先问大家一个问题&#xff1a;回车换行是什么&#xff0c;或者说回车和换行是同一个概念吗&#xff1f;   可能大家对回车换行有一定的误解&#xff0…...

Qt 中使用 SQLite 数据库的完整指南

SQLite 是一款轻量级、嵌入式的关系型数据库&#xff0c;无需独立的服务器进程&#xff0c;数据以文件形式存储&#xff0c;非常适合桌面和移动端应用的本地数据管理。Qt 通过 Qt SQL 模块提供了对 SQLite 的原生支持&#xff0c;开发者可以轻松实现数据库的增删改查、事务处理…...

数智化时代的工单管理:从流程驱动到数据驱动-亿发

在数智化时代&#xff0c;工单管理系统已从简单的任务分发工具演变为企业运营的智能中枢。传统工单系统关注流程的线性推进&#xff0c;而现代工单管理系统则强调数据的全生命周期管理&#xff0c;通过智能算法实现工单的自动分配、优先级判定和效能优化。这种转变不仅提升了运…...

Large Language Model Distilling Medication Recommendation Model

摘要&#xff1a;药物推荐是智能医疗系统的一个重要方面&#xff0c;因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是&#xff0c;目前使用的许多复杂模型往往忽视医疗数据的细微语义&#xff0c;而仅仅严重依赖于标识信息。此外&#xff0c;这些模型在处理首次就…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...