当前位置: 首页 > 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;这些模型在处理首次就…...

Craft Agents 爆火:Agent 工具正在从“命令行玩具”走向“工作流系统”

开源地址&#xff1a;GitHub 项目 lukilabs/craft-agents-oss当前 GitHub 页面显示&#xff0c;该项目已达到 5.8k Star、779 Fork&#xff0c;同时还有较活跃的 Issue 和 PR 讨论。https://github.com/lukilabs/craft-agents-oss最近&#xff0c;Agent 类开源项目又火了一个。…...

对抗性指令微调:为多模态大模型构建幻觉“纠错雷达”

1. 项目概述&#xff1a;用“对抗性”指令微调&#xff0c;给多模态大模型装上“纠错雷达” 如果你最近玩过GPT-4V、LLaVA这类多模态大模型&#xff0c;肯定遇到过这种情况&#xff1a;你问它“图片里那个穿红衣服的人手里拿的是什么&#xff1f;”&#xff0c;它可能会煞有介…...

基于MCP协议与FastMCP框架,构建连接AI助手与Testmo的智能测试管理桥梁

1. 项目概述&#xff1a;当AI助手遇上专业测试管理如果你是一名QA工程师、SDET或者开发&#xff0c;每天的工作都离不开Testmo这样的测试管理平台&#xff0c;那你肯定对下面这个场景不陌生&#xff1a;为了创建一个测试用例&#xff0c;你得在浏览器里点开项目&#xff0c;找到…...

CFD与FEA技术解析:工程仿真的核心工具与应用

1. CFD与FEA技术概述在工程仿真领域&#xff0c;计算流体力学&#xff08;CFD&#xff09;和有限元分析&#xff08;FEA&#xff09;就像工程师的左膀右臂。CFD专注于流体行为的数值模拟&#xff0c;而FEA则擅长结构力学分析。这两种技术共同构成了现代虚拟样机开发的核心工具链…...

CANN/shmem原理与架构详解

SHMEM原理概述 【免费下载链接】shmem CANN SHMEM 是面向昇腾平台的多机多卡内存通信库&#xff0c;基于OpenSHMEM 标准协议&#xff0c;实现跨设备的高效内存访问与数据同步。 项目地址: https://gitcode.com/cann/shmem SHMEM初始化流程介绍 shmem的初始化接口int ac…...

MCPal:基于MCP协议为AI助手构建原生桌面通知系统

1. 项目概述&#xff1a;一个为AI助手打造的桌面通知中枢 如果你和我一样&#xff0c;日常重度依赖Claude、Cursor、GPT这些AI编程助手&#xff0c;那你肯定遇到过这个场景&#xff1a;你给AI助手布置了一个任务&#xff0c;比如“帮我分析一下这个项目的依赖关系”&#xff0…...

Deep Agent全解析:为什么普通Agent只能“浅尝辄止”,而Deep Agent能真正干复杂活?

一、先说结论&#xff1a;Deep Agent到底是什么&#xff1f;Deep Agent&#xff0c;直译叫“深度智能体”&#xff0c;你可以把它理解成&#xff1a;不是只会调用一个工具、回答一个问题的普通Agent&#xff0c;而是能围绕一个复杂目标&#xff0c;自己拆任务、查资料、调用工具…...

ComfyUI-IF_AI_tools:AI绘画精准控制的瑞士军刀插件指南

1. 项目概述&#xff1a;当ComfyUI遇上AI绘画的“瑞士军刀”最近在折腾ComfyUI的工作流时&#xff0c;我总感觉缺了点什么。原生的节点功能强大&#xff0c;但面对一些特定的、高频的AI绘画需求&#xff0c;比如精准的人物姿态控制、复杂的场景构图&#xff0c;或者只是想快速给…...

AI代码审计工具Vulnhuntr实战:LLM如何挖掘复杂逻辑漏洞

1. 项目概述&#xff1a;当AI成为代码审计员 在安全圈摸爬滚打十几年&#xff0c;我见过太多因为一个不起眼的代码缺陷引发的“血案”。传统的静态代码分析工具&#xff08;SAST&#xff09;就像拿着清单的检查员&#xff0c;只能发现那些写在教科书里的、模式固定的漏洞&…...

CANN/runtime CMO缓存操作

11-06 CMO 缓存操作 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 本章节描述 CMO&#xff08;Cache Maintenance Operations&#xff09;缓存操作接口&#xff0c;用于缓存刷新与失效操作。 aclErr…...