蓝桥杯篇---实时时钟 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) {// 在这里可以添加代码来显示时间}
}
代码说明
- DS1302_WriteByte:向 DS1302 写入一个字节的数据。
- DS1302_ReadByte:从 DS1302 读取一个字节的数据。
- DS1302_SetTime:设置 DS1302 的时间。
- 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"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母. 例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译…...
【MySQL在Centos 7环境安装】
文章目录 一. 卸载不必要的环境二. 检查系统安装包三. 卸载这些默认安装包四. 获取mysql官⽅yum源五. 安装mysql yum 源,对⽐前后yum源六. 看看能不能正常⼯作七. 安装mysql服务八. .查看配置⽂件和数据存储位置九. 启动服务并查看服务是否存在十. 登陆⽅法十一. 设…...
科技引领未来,中建海龙C-MiC 2.0技术树立模块化建筑新标杆
在建筑行业追求高效与品质的征程中,中建海龙科技有限公司(简称“中建海龙”)以其卓越的创新能力和强大的技术实力,不断书写着装配式建筑领域的新篇章。1 月 10 日,由深圳安居集团规划,中建海龙与中海建筑共…...
玩转观察者模式
文章目录 什么是观察者模式解决方案结构适用场景实现方式观察者模式优缺点优点:缺点:什么是观察者模式 观察者模式通俗点解释就是你在观察别人,别人有什么变化,你就做出什么调整。观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察…...
Baklib知识中台构建企业智能运营核心架构
内容概要 在数字化转型的浪潮中,企业对于知识的系统化管理需求日益迫切。Baklib作为新一代的知识中台,通过构建智能运营核心架构,为企业提供了一套从知识汇聚到场景化落地的完整解决方案。其核心价值在于将分散的知识资源整合为统一的资产池…...
Anaconda +Jupyter Notebook安装(2025最新版)
Anaconda安装(2025最新版) Anaconda简介安装1:下载anaconda安装包2: 安装anaconda3:配置环境变量4:检查是否安装成功5:更改镜像源6:更新包7:检查 Jupyter Notebook一.Jup…...
正成为现代城市发展的必然趋势的智慧交通开源了
智慧交通视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。通过人流密集检测…...
手撕Transformer编码器:从Self-Attention到Positional Encoding的PyTorch逐行实现
Transformer 编码器深度解读 代码实战 1. 编码器核心作用 Transformer 编码器的核心任务是将输入序列(如文本、语音)转换为富含上下文语义的高维特征表示。它通过多层自注意力(Self-Attention)和前馈网络(FFN&#x…...
Webpack和Vite插件的开发与使用
在现代开发中一般各公司都有自己的监控平台,对前端而言如果浏览器报错的话就可以通过埋点收集错误日志,再结合sourcemap文件可以帮助我们定位到错误代码,帮助我们排查问题。这里就记录一下之前在webpack和vite两个环境中的插件开发࿰…...
HTTP的状态码
HTTP 状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。 常见的HTTP状态码 …...
Python函数-装饰器
装饰器 写好的函数,不做任何修改,就可以改变执行内容,在其头或尾部加入新的流程代码本质上就是使用函数嵌套,在内部嵌套定义的函数中调用原函数,从而可读在前或后加入新的代码使用的关键: 将原函数作为参数…...
【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
HTTP请求报文头和相应报文头
一、HTTP请求报文头 HTTP请求报文由请求行、请求头和请求体组成。请求头包含客户端向服务器发送的附加信息。 1.1 请求行 格式: 方法 请求URI HTTP/版本示例: GET /index.html HTTP/1.1 方法: 请求类型,如GET、POST、PUT、DELETE等。 请求URI: 请求的资源…...
19.4.9 数据库方式操作Excel
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。 通过COM来操作Excel操作,请参看第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 回车和换行 先问大家一个问题:回车换行是什么,或者说回车和换行是同一个概念吗? 可能大家对回车换行有一定的误解࿰…...
Qt 中使用 SQLite 数据库的完整指南
SQLite 是一款轻量级、嵌入式的关系型数据库,无需独立的服务器进程,数据以文件形式存储,非常适合桌面和移动端应用的本地数据管理。Qt 通过 Qt SQL 模块提供了对 SQLite 的原生支持,开发者可以轻松实现数据库的增删改查、事务处理…...
数智化时代的工单管理:从流程驱动到数据驱动-亿发
在数智化时代,工单管理系统已从简单的任务分发工具演变为企业运营的智能中枢。传统工单系统关注流程的线性推进,而现代工单管理系统则强调数据的全生命周期管理,通过智能算法实现工单的自动分配、优先级判定和效能优化。这种转变不仅提升了运…...
Large Language Model Distilling Medication Recommendation Model
摘要:药物推荐是智能医疗系统的一个重要方面,因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是,目前使用的许多复杂模型往往忽视医疗数据的细微语义,而仅仅严重依赖于标识信息。此外,这些模型在处理首次就…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
