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

51单片机-第七节-DS1302实时时钟

 一、DS1302介绍:

实时时钟芯片,可对年,月,日,周,时,分,秒计时,是一种集成电路。

二、DS1302原理:

1.寄存器定义:

Command:操作模式,决定要进行的操作是读/写,以及读写内容(秒、分、时。。。)

如下图,其中最左侧的值即为进行对应操作的Command的值。

例:对小时进行读取,Command = 0x85;

2.引脚定义与电路:

其中Vcc1/2是电源,X1/X2是晶振。重点在于后三个。

后三个的作用为输入和读取数据。

其中后三个的原理与_74HC595_完全类似,均为1位1位输入,详细过程见上一节。

CE:总开关,置1时开始工作;

I/O:传入的数据,0/1;

SCLK:来回置01,由0到1时依次传入I/O中的数据。

3.时序:

怎么看?--- 低为0高为1,画一条竖线,在同一竖线上的事是同时发生的。

例:下图中读操作:

将CE = 1,随后使SCLK在01切换,每次上升沿(0到1)依次将I/O口的数据传给R/W、A0等。

(注:R/W-1的8位即为Command)

8次上升后,确定Command,在下降沿(1到0)读取数据给I/O口。

(其中具体8位,每一位代表什么,详见上面的RTC图)

三、集成DS1302:

.h文件:

//时钟初始化
void DS1302_Init();
//数组:储存时钟的时间:年月日时分秒周(0-6)
unsigned char DS1302_Time[];
//用于设置和读取时钟数据,设置会将数组中的时间传入,读取会将时钟数据导出存在上面数组中
void DS1302_SetTime();
void DS1302_ReadTime();

.c文件:

sbit DS1302_SCLK = P3 ^ 6;
sbit DS1302_IO = P3 ^ 4;
sbit DS1302_CE = P3 ^ 5;#define DS1302_SECOND    0x80
#define DS1302_MINUTE    0x82
#define DS1302_HOUR    0x84
#define DS1302_DATE    0x86
#define DS1302_MONTH    0x88
#define DS1302_DAY    0x8A
#define DS1302_YEAR    0x8C
#define DS1302_WP    0x8E//储存时钟的时间:年月日时分秒周
unsigned char DS1302_Time[] = { 19,11,16,12,59,55,6 };
//时钟初始化
void DS1302_Init()
{DS1302_CE = 0;DS1302_SCLK = 0;
}
//写入数据,参数:Command,Data
void DS1302_WriteByte(unsigned char Command, unsigned char Data)
{unsigned char i;DS1302_CE = 1;for (i = 0; i < 8; i++){DS1302_IO = Command & (0x01<<i);DS1302_SCLK = 1;DS1302_SCLK = 0;}	for (i = 0; i < 8; i++){DS1302_IO = Data & (0x01<<i);DS1302_SCLK = 1;DS1302_SCLK = 0;}DS1302_CE = 0;
}
//读取数据,参数:Command,返回值:Data
unsigned char DS1302_ReadByte(unsigned char Command)
{unsigned char i;unsigned char Data = 0x00;DS1302_CE = 1;Command |= 0x01;for (i = 0; i < 8; i++){DS1302_IO = Command & (0x01 << i);DS1302_SCLK = 0;DS1302_SCLK = 1;}	for (i = 0; i < 8; i++){DS1302_SCLK = 1;DS1302_SCLK = 0;if (DS1302_IO) { Data |= (0x01<<i); }}DS1302_CE = 0;DS1302_IO = 0;return Data;
}
//用于设置和读取时钟数据
void DS1302_SetTime()
{DS1302_WriteByte(DS1302_WP, 0x00);DS1302_WriteByte(DS1302_YEAR, DS1302_Time[0] / 10 * 16 + DS1302_Time[0] % 10);DS1302_WriteByte(DS1302_MONTH, DS1302_Time[1] / 10 * 16 + DS1302_Time[1] % 10);DS1302_WriteByte(DS1302_DATE, DS1302_Time[2] / 10 * 16 + DS1302_Time[2] % 10);DS1302_WriteByte(DS1302_HOUR, DS1302_Time[3] / 10 * 16 + DS1302_Time[3] % 10);DS1302_WriteByte(DS1302_MINUTE, DS1302_Time[4] / 10 * 16 + DS1302_Time[4] % 10);DS1302_WriteByte(DS1302_SECOND, DS1302_Time[5] / 10 * 16 + DS1302_Time[5] % 10);DS1302_WriteByte(DS1302_DAY, DS1302_Time[6] / 10 * 16 + DS1302_Time[6] % 10);DS1302_WriteByte(DS1302_WP, 0x80);
}
void DS1302_ReadTime()
{DS1302_Time[0] = DS1302_ReadByte(DS1302_YEAR) / 16 * 10 + DS1302_ReadByte(DS1302_YEAR) % 16;DS1302_Time[1] = DS1302_ReadByte(DS1302_MONTH) / 16 * 10 + DS1302_ReadByte(DS1302_YEAR) % 16;DS1302_Time[2] = DS1302_ReadByte(DS1302_DATE) / 16 * 10 + DS1302_ReadByte(DS1302_YEAR) % 16;DS1302_Time[3] = DS1302_ReadByte(DS1302_HOUR) / 16 * 10 + DS1302_ReadByte(DS1302_YEAR) % 16;DS1302_Time[4] = DS1302_ReadByte(DS1302_MINUTE) / 16 * 10 + DS1302_ReadByte(DS1302_YEAR) % 16;DS1302_Time[5] = DS1302_ReadByte(DS1302_SECOND) / 16 * 10 + DS1302_ReadByte(DS1302_YEAR) % 16;DS1302_Time[6] = DS1302_ReadByte(DS1302_DAY) / 16 * 10 + DS1302_ReadByte(DS1302_YEAR) % 16;}

四、实战:显示秒:

利用LCD1602调试:

unsigned char Second;
void main()
{LCD_Init();DS1302_Init();LCD_ShowString(1, 1, "RTC");DS1302_WriteByte(0x80, 0x03);while (1){Second = DS1302_ReadByte(0x81);LCD_ShowNum(2, 1, Second, 3);}
}

问题:此时调试会出现问题,由9直接变为16。

原因:DS1302不是以正常的2进制转10进制表示的,而是用BCD码。(详见:寄存器定义)

BCD码:用4位二进制数表示一位10进制数:

例:0001 0011 = 13 ; 1000 0101 = 85 ; 即 0x85 = 85 ;

解决方法:利用LCD1602中显示16进制的函数即可:LCD_ShowHexNum

正确版:

unsigned char Second;
void main()
{LCD_Init();DS1302_Init();LCD_ShowString(1, 1, "RTC");DS1302_WriteByte(0x80, 0x03);while (1){Second = DS1302_ReadByte(0x81);LCD_ShowHexNum(2, 1, Second, 3);}
}

五:实战:实时时钟:

void main()
{LCD_Init();DS1302_Init();LCD_Showstring(1, 1, "  -  -  ");LCD_Showstring(2, 1, "  :  :  ");DS1302_SetTime();while (1){DS1302_ReadTime();LCD_ShowNum(1, 1, DS1302_Time[0], 2);LCD_ShowNum(1, 4, DS1302_Time[1], 2);LCD_ShowNum(1, 7, DS1302_Time[2], 2);LCD_ShowNum(2, 1, DS1302_Time[3], 2);LCD_ShowNum(2, 4, DS1302_Time[4], 2);LCD_ShowNum(2, 7, DS1302_Time[5], 2);}
}

相关文章:

51单片机-第七节-DS1302实时时钟

一、DS1302介绍&#xff1a; 实时时钟芯片&#xff0c;可对年&#xff0c;月&#xff0c;日&#xff0c;周&#xff0c;时&#xff0c;分&#xff0c;秒计时&#xff0c;是一种集成电路。 二、DS1302原理&#xff1a; 1.寄存器定义&#xff1a; Command&#xff1a;操作模式…...

Java毕业设计 基于SSM和Vue的图书馆座位预约系统小程序

Java毕业设计 基于SSM和Vue的图书馆座位预约系统小程序 这篇博文将介绍一个基于SSM框架和Vue开发的图书馆座位预约系统微信小程序&#xff0c;适合用于Java毕业设计。 功能介绍 用户 登录 注册 首页 图片轮播 关于我们 公告信息 图书馆信息 图书馆详情 预约选座 收藏 …...

【C++11】:lambda表达式function包装器

目录 前言一&#xff0c;可变参数模板1.1 简单认识1.2 STL容器中的empalce系列相关接口 二&#xff0c;lambda表达式2.1 lambda表达式语法2.2 探索lambda底层 三&#xff0c;包装器3.1 function包装器3.2 bind 四&#xff0c;类的新功能4.1 默认成员函数4.2 关键字default4.3 关…...

[io]进程间通信 -有名、无名管道 区别

有名管道和无名管道的区别 无名管道有名管道 使用场景 亲缘关系进程不相关的任意进程特点 1.固定读端fd[0]写端fd[1] 2.文件IO进行操作 3.不支持lseek&#xff08;&#xff09;操作 4.数据存储在内核空间 1.文件系统中存在管道文件 2.文件IO操作 3.不支持lseek 4.先进先出 5.数…...

pywinauto:Windows桌面应用自动化测试(七)

前言 上一篇文章地址&#xff1a; pywinauto&#xff1a;Windows桌面应用自动化测试&#xff08;六&#xff09;-CSDN博客 下一篇文章地址&#xff1a; 暂无 一、实战常用方法 1、通过Desktop快速获取窗口 通过之前章节我们了解到控制应用的方法为Application&#xff0…...

RGB++是什么;UTXO是什么;Nervos网络;CKB区块链;

目录 RGB++是什么,简单举例说明 RGB++简介 举例说明 UTXO是什么 定义 功能与特点 使用方式 优缺点 结论 CKB区块链 一、基础属性 二、技术特点 三、经济模型 四、应用场景 Nervos网络 一、网络架构 二、技术特点 三、经济模型 四、应用场景 五、未来展望 …...

轻闪PDF v2.14.9 解锁版下载与安装教程 (全能PDF转换器)

前言 轻闪PDF(原傲软PDF编辑软件)是一款操作简单的全能PDF转换器,轻松实现PDF转换为Word,Excel或其他格式,以及PDF压缩,合并和图片文字识别OCR等功能.这款pdf编辑转换软件几乎支持所有常见文档格式,一键完成PDF与其他文档互相转换,并含有PDF合并,压缩,图片文字识别OCR等增值功…...

mysql 5.7 解析binlog日志,并统计每个类型语句(insert、update、delete)、每个表的执行次数

1、mysqlbinlog工具 使用mysqlbinlog工具将文件中执行语句解析至某个文件中。 /usr/local/mnt/mysql/bin/mysqlbinlog --base64-outputDECODE-ROWS -v /usr/local/mnt/mysql/log/mysql-bin.017278 > binlog017278.sql --base64-outputDECODE-ROWS 参数&#xff1a; 这个…...

MySQL案例:MHA实现主备切换(主从架构)万字详解

目录 MHA 概念 MHA的组成 特点 案例介绍 &#xff08;1&#xff09;案例需求 &#xff08;2&#xff09;案例实现思路 &#xff08;3&#xff09;案例拓扑图 &#xff08;4&#xff09;案例环境 案例步骤 基本环境配置 关闭防火墙和内核安全机制 安装数据库 授权…...

81.SAP ME - SAP SMGW Getway Monitor

目录 1.起因 2.SMGW Displaying Logged On Clients Displaying Remote Gateways Display and Control Existing Connections Deleting a Connection Displaying Gateway Release Information Displaying Parameters and Attributes of the Gateway Change Gateway Pa…...

SAPUI5基础知识24 - 如何向manifest.json中添加模型(小结)

1. 背景 在上一篇博客中&#xff0c;我们总结了SAPUI5中模型的各种类型&#xff0c;并通过代码给出了实例化这些模型的方式。 其实&#xff0c;在SAPUI5中&#xff0c;我们可以通过在manifest.json 中添加模型配置&#xff0c;简化模型的初始化过程&#xff0c;并确保模型在应…...

操作系统---文件管理

一、系统调用&#xff08;系统API&#xff09; 什么是系统调用 由操作系统向应用程序提供的程序接口信息&#xff0c;本质上就是应用程序与操作系统之间交互的接口。 操作系统的主要功能是为了管理硬件资源和为应用软件的开发人员提供一个良好的环境&#xff0c;使得应用程序…...

C语言指针详解(三)目录版

C语言指针详解&#xff08;三&#xff09;目录版 1、字符指针变量1.1、字符指针变量的一般应用1.2、常量字符串1.3、常量字符串与普通字符串的区别1.3.1 常量字符串的不可修改性1.3.2 常量字符串的存储 2、数组指针变量2.1、数组指针变量定义2.2、数组指针变量的初始化 3、二维…...

【AI资讯早报】AI科技前沿资讯概览:2024年8月6日早报

【AI资讯早报&#xff0c;感知未来】AI科技前沿资讯概览&#xff0c;涵盖了行业大会、技术创新、应用场景、行业动态等多个方面&#xff0c;全面展现了AI领域的最新发展动态和未来趋势。 1.【图像生成技术再突破】Midjourney V6.1震撼发布&#xff0c;人像生成质量跃上新台阶 …...

等保测评中的密码技术与密钥管理

在信息安全领域&#xff0c;等保测评&#xff08;信息安全等级保护测评&#xff09;是一项重要的安全评估活动&#xff0c;旨在评估信息系统的安全性&#xff0c;并根据评估结果给予相应的安全等级。这一过程中&#xff0c;密码技术与密钥管理发挥着至关重要的作用。本文将详细…...

go语言flag库学习

文章目录 flag基本创建使用方法正常声明全局变量指针短写 flag 基本创建使用方法 func String(name string, value string, usage string) *string func StringVar(p *string, name string, value string, usage string) 正常声明全局变量 package mainimport ("flag…...

2024年必备技能:智联招聘岗位信息采集技巧全解析

随着大数据时代的发展&#xff0c;精准定位职业机会成为程序员求职的关键。本文将深入解析如何利用Python高效采集智联招聘上的岗位信息&#xff0c;助你在2024年的职场竞争中脱颖而出。通过实战代码示例&#xff0c;揭示网络爬虫背后的秘密&#xff0c;让你轻松掌握这一必备技…...

《机器学习by周志华》学习笔记-决策树-02

1、剪枝处理(Pruning) 1.1、背景概念 上文「决策树01」的学习中,我们了解了著名的3种决策树算法ID3、C4.5、CART。这3种决策树算法最根本的核心就是根据特征选择离散属性作为节点来搭建树结构,运用搭好的结构进行推理。 剪枝(pruning)则就是将搭好的决策树去掉一些「非叶节…...

centos Python3.6升级3.8

CentOS系统上升级Python3.6到3.8版本。 步骤 1. 更新系统 在开始升级Python之前&#xff0c;首先需要确保系统是最新的。可以使用以下命令更新CentOS系统&#xff1a; sudo yum update 2. 安装依赖项 升级Python之前&#xff0c;需要安装一些依赖项。运行以下命令安装这些依赖…...

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于竞价空间预测的虚拟电厂日前竞价策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...

CST中利用SPICE语言自定义复杂lumped element电路的实战指南

1. 突破CST自带元件的限制&#xff1a;为什么需要SPICE语言 刚开始用CST做电路仿真时&#xff0c;我也觉得自带的RLC元件够用了——直到遇到一个带滤波功能的耦合器项目。当时需要模拟一个包含寄生参数的复杂匹配网络&#xff0c;自带的并联RLC元件死活调不出理想的频响曲线。这…...

Pixel Dimension Fissioner 镜像深度配置:环境变量与启动参数详解

Pixel Dimension Fissioner 镜像深度配置&#xff1a;环境变量与启动参数详解 1. 为什么需要深度配置&#xff1f; 当你第一次部署Pixel Dimension Fissioner镜像时&#xff0c;默认设置可能已经能满足基本需求。但随着使用场景的复杂化&#xff0c;你会发现很多情况下需要根…...

【OFDM通信】基于matlab室内NOMA-OFDM-VLC系统仿真【含Matlab源码 15240期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…...

【数字信号调制】基于matlab GMSK调制解调系统【含Matlab源码 15239期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…...

银河麒麟V10 SP1下使用rsync实现多客户端定时数据备份(避坑指南)

银河麒麟V10 SP1多客户端数据同步全链路配置与优化实战 在IT运维工作中&#xff0c;数据备份如同氧气般不可或缺。想象一下&#xff0c;当数十台客户端设备同时运行时&#xff0c;如何确保关键业务数据能够安全、高效地集中备份&#xff1f;银河麒麟V10 SP1作为国产操作系统的…...

别光看公式了!用Multisim 14.0手把手仿真这8个经典运放电路(附工程文件)

别光看公式了&#xff01;用Multisim 14.0手把手仿真这8个经典运放电路&#xff08;附工程文件&#xff09; 在电子工程的学习过程中&#xff0c;运算放大器&#xff08;Op-Amp&#xff09;无疑是一个让人又爱又恨的存在。爱的是它强大的功能和广泛的应用&#xff0c;恨的是那些…...

Windows 11终极优化指南:用Win11Debloat免费提升51%系统性能

Windows 11终极优化指南&#xff1a;用Win11Debloat免费提升51%系统性能 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简…...

Ubuntu服务器上配置KVM虚拟化环境:从零搭建Windows开发环境

1. 为什么要在Ubuntu服务器上跑Windows&#xff1f; 很多开发者可能都有这样的困惑&#xff1a;明明手头有性能强劲的Ubuntu服务器&#xff0c;但某些开发工具只能在Windows环境下运行。比如Visual Studio、SQL Server Management Studio这些微软系工具&#xff0c;或者某些行业…...

工业能量:04.选型小Tips:预算2000元玩转工厂电源

04.选型小Tips:预算2000元玩转工厂电源(新手也能选对不踩坑,PLC机器人稳稳的)** 在工厂里,最昂贵的不是设备,而是“停机一秒的代价”。 哎,师傅们,槐树底下风儿吹得正凉快,今天咱不拆原理、不讲高端配置,就聊最接地气的——2000块钱怎么给车间PLC和机器人挑个靠谱心脏…...

零代码操作!FUTURE POLICE亮色界面详解:从上传到下载SRT全流程

零代码操作&#xff01;FUTURE POLICE亮色界面详解&#xff1a;从上传到下载SRT全流程 1. 认识FUTURE POLICE&#xff1a;高精度字幕对齐工具 你是否遇到过这样的困扰&#xff1f;精心制作的视频字幕总是与语音不同步&#xff0c;手动调整时间轴既耗时又费力。FUTURE POLICE正…...