51单片机15单片机 时钟芯片DS1302【更新中】
前言
现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。
- 本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路
- 主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。
一、DS18B20芯片介绍
DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。
RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片。
特征
DS1302模块:
二、芯片引脚定义与应用电路
晶振给芯片提供一个时钟源
典型工作电路
51单片机DS1302电路图
蓝桥杯15单片机开发板实际电路
注意51单片机与15单片机使用的I/O口是不同的
该开发板中没有接备用电池,因此掉电再上电之后是初始化设置的时间。
带电池的DS1302模块可以存储时间
引脚名 | 作用 |
---|---|
VCC2 | 主电源 |
VCC1 | 备用电池 |
GND | 电源接地 |
X1,X2 | 32.768kHz晶振 |
CE | 芯片使能 |
IO | 数据输入/输出 |
SCLK | 串行时钟 |
三、寄存器定义
DS1302相关寄存器如下:
- 第一行的 CH(BIT7)表示时钟暂停控制位,这一位置1代表时钟暂停,置0时钟正常运行
- 倒数第二行的 WP(BIT7),这一位置1代表芯片写保护,写入操作无效,置0即可解除芯片写保护,就可以写入数据
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器如上图所示。
此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
四、命令字
- 第0位表示读还是写(置1表示读,置0表示写);
- 第1-5位表示地址(秒地址为0,分钟地址为10,…);
- 第6位表示操作RAM还是时钟CK(置1表示操作RAM,置0表示操作CK);
- 第7位:固定为1;
举个例子:
对时钟操作、秒地址操作、读:
10000001(0x81)
对时钟操作、秒地址操作、写:
10000000(0x80)
这与上面寄存器中的读地址和写地址是对应的。
五、数据流
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
五、时序图与数据读写
时序代码实现部分
#include "DS1302.h"//对端口重新定义,位变量,只进行逻辑判断,非零即真
sbit DS1302_CE = P1^3;
sbit DS1302_IO = P2^3;
sbit DS1302_SCLK = P1^7;#define DS1302_SECOND 0x80 //秒
#define DS1302_MINTUE 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[9]={23,2,9,23,59,55,4};//年 月 日 时 分 秒 星期//上电默认1,先初始化为0
void DS1302_Init(void)
{ DS1302_CE = 0; //DS1302_SCLK = 0;
}//单字节写(命令字,数据)
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;
}//单字节读,用上面的宏定义即可
unsigned char DS1302_ReadByte(unsigned char Command)
{unsigned char Data = 0x00;unsigned char i;Command |= 0x01;//变成读的地址DS1302_CE = 1; for (i = 0; i < 8; i ++) //写命令字{DS1302_IO = Command & (0x01<<i);DS1302_SCLK = 0; //先给0后给1,因为时序图上少一个脉冲DS1302_SCLK = 1;}for (i = 0; i < 8; i ++){DS1302_SCLK = 1; //先给1后给0,模拟时序图DS1302_SCLK = 0;if(DS1302_IO == 1) //读取端口是1{ Data |= (0x01<<i); } //读数据操作}DS1302_CE = 0; DS1302_IO = 0; //修改的地方return Data;
}void DS1302_SetTime(void)
{DS1302_WriteByte(DS1302_WP, 0x00);//解除芯片写保护DS1302_WriteByte(DS1302_YEAR, DS1302_Time[0]/10*16+DS1302_Time[0]%10);//十进制转BCD码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_MINTUE, 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);//此句WP给0x80,打开芯片写保护
}void DS1302_ReadTime(void) //此函数读取时钟芯片的数据,写到数组DS1302_Time里
{unsigned char Temp;Temp = DS1302_ReadByte(DS1302_YEAR);//进去就被 或运算 置1,变成读,读BCD码DS1302_Time[0] = Temp/16*10+Temp%16;Temp = DS1302_ReadByte(DS1302_MONTH);//月DS1302_Time[1] = Temp/16*10+Temp%16;Temp = DS1302_ReadByte(DS1302_DATE);DS1302_Time[2] = Temp/16*10+Temp%16;Temp = DS1302_ReadByte(DS1302_HOUR);DS1302_Time[3] = Temp/16*10+Temp%16;Temp = DS1302_ReadByte(DS1302_MINTUE);DS1302_Time[4] = Temp/16*10+Temp%16;Temp = DS1302_ReadByte(DS1302_SECOND);DS1302_Time[5] = Temp/16*10+Temp%16;Temp = DS1302_ReadByte(DS1302_DAY);DS1302_Time[6] = Temp/16*10+Temp%16;
}
效果
9之后变成16了
原因?
BCD码
十进制 | 十六进制 | BCD码 |
9 | 0000 1001 | 09 |
16 | 0001 0000 | 10 |
介绍BCD码的文章:
【C语言】BCD码、十进制互相转换
这个BIT7 CH 如果给1,时钟就会暂停, 给0是运行的
12/24第四行 BIT7 =0,是24小时模式
如果BIT7 = 1 是12小时模式 BIT5 = 0是AM, BIT5 = 1是PM
写的地址,弄个宏定义
Command(写) | 0x01 = Command(读)
让写的地址 |= 0x01,就是读数据的地址,减少一半的宏定义!!!
参考文章:
DS1302详解
51单片机DS1302实时时钟
单片机常用芯片总结(二)——DS1302时钟芯片
B站视频(链接打不开)
江科大自化协-51单片机入门教程-2020版 程序全程纯手打 从零开始入门【10-1】【10-2】
相关文章:
51单片机15单片机 时钟芯片DS1302【更新中】
前言 现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。 本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路主要特点是采用串行数据传输,可为掉电…...
SaleSmartly(ss客服)带你了解:缩短B2B销售周期的秘诀
缩短B2B销售周期的秘诀:即时聊天 关键词:B2B 销售;即时沟通;SaleSmartly(ss客服) 在B2B销售中,时间就是一切。在某些情况下,买家正在积极寻找即时解决方案,潜在客户以多种…...
九龙证券|A股苏州板块迎来“200+”里程碑
2月10日,跟着裕太微登陆科创板,A股“姑苏板块”正式迎来第201位成员。姑苏也成为继京、沪、深、杭之后,第5个具有A股上市公司总数超越200家的城市。 现在,姑苏不仅生长为位居全国前列的“制作之都”,更成为资本市场高地…...
vcruntime140_1.dll无法继续执行代码,怎么解决这种问题?
经常使用电脑的人,可能对于这个弹出框应该不陌生,“vcruntime140_1.dll无法继续执行代码”,其实会出现这种情况,主要是因为缺少一个动态链接库 (DLL) 文件导致的。这个文件是 Visual C 2015 库的一部分,某些程序需要这…...
正大国际期货:外盘震荡行情的特征及突破信号的确立
投机市场上,趋势交易应该是交易操作理念的灵魂和核心;能够顺应大的趋势,交易将变得简单,也更容易赚到钱。下面正大IxxxuanI详细来给大家讲讲 投资市场是由千万个交易个体所组成的复杂系统,走势具有不确定性࿰…...
【ESP 保姆级教程】玩转emqx数据集成篇④ ——数据桥接之HTTP服务
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-10 ❤️❤️ 本篇更新记录 2023-02-10 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
蓝桥杯算法训练合集十三 1.P06022.P07033.逗志芃的危机4.唯一的小可爱5.JOE的矩阵
目录 1.P0602 2.P0703 3.逗志芃的危机 4.唯一的傻子 5.JOE的矩阵 1.P0602 问题描述 编写一个程序,输入一个4位的自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后用最大数减去最小数,得到一…...
切换分支报错:Untracked Files Prevent Checkout
切换分支报错:Untracked Files Prevent Checkoutgit分支切换 Untracked Files Prevent Checkout本人解决办法:git分支切换 Untracked Files Prevent Checkout 新起的项目在切换master分支到工作分支时,出现下图的问题: Untracked…...
endo-BCN-PEG4-Palmitic,环丙烷环辛炔四聚乙二醇-Palmitic包装灵活
endo-BCN-PEG4-Palmitic,endo环丙烷环辛炔四聚乙二醇-Palmitic反应特点:endo-BCN-PEG4-Palmitic 酯在其末端含有一个 Palmitic基和一个 BCN 基。对点击试剂来说同样会通过不同的小分子PEG进行连接,BCN-PEG-acid、BCN-PEG-NHS ester、BCN-PEG-…...
多传感器融合定位十一-基于滤波的融合方法Ⅱ
多传感器融合定位十一-基于滤波的融合方法Ⅱ1. 编码器运动模型及标定1.1 编码器基础知识1.2 编码器运动模型1.2.1 旋转半径求解1.2.2 角速度求解1.2.3 线速度求解1.2.4 位姿求解1.3 编码器的标定1.3.1 轮子半径标定1.3.2 轮子与底盘中心距离标定2. 融合编码器的滤波方法2.1 核心…...
JAVA使用poi解析execl解决数值被转为科学计数法(如:手机号、身份证号、电话、等)解决方法
1、原由 大家都知道数字在EXCEL表格中存储时有两种表现形式。1.数字作为数值存储。当数字作为数值存储时,单元格中的数字可以参与数学运算。2.数字作为文本存储。当数字作为文本存储时,单元格中的数值不能够参与数学运算。 数字作为文本存储时,如果没有更…...
hive中substring_index()的使用
substring_index(str,delim,count)str:要处理的字符串delim:分隔符count:计数例子:strwww.wikibt.comsubstring_index(str,.,1)结果是:wwwsubstring_index(str,.,2)结果是:www.wikibt如果count是正数,那么就是从左往右数ÿ…...
LocalDateTime设置时间的年、月、日、时、分、秒、纳秒
如何把String/Date转成LocalDateTime参考String、Date与LocalDate、LocalTime、LocalDateTime之间互转 String、Date、LocalDateTime、Calendar与时间戳之间互相转化参考String、Date、LocalDateTime、Calendar与时间戳之间互相转化 方法介绍 withYear(int year) 指定日期的…...
C语言rand和srand用法详解
在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌。在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为ÿ…...
安装作业
1、安装方法 mysql安装常见的方法有四种 序号安装方式说明1yum\rpm简单、快速,不能定制参数2二进制解压,简单配置就可使用 免安装 mysql-a.b.c-linux2.x-x86_64.tar.gz3源码编译可以定制参数,安装时间长 mysql-a.b.c.tar.gz4源码制成rpm包把…...
电压放大器在非共线混频方法检测混凝土中的应用
实验名称:电压放大器在非共线混频方法检测混凝土中的应用研究方向:无损检测测试目的:无损检测是在不损伤或不干扰待测物体的结构材料的情况下,对其内部损伤进行探测的方法。传统无损检测法在仪器携带,操作程序…...
二十四、Gtk4-GtkExpression
GtkExpression是一种基本类型。它不是GObject的后代。GtkExpression提供了一种描述对值的引用的方法。GtkExpression需要求值才能获得值。 它类似于算术计算。 1 2 3 12是一个表达式。给出了计算的方法。3是来自表达式的值。求值是计算表达式并得到值。 GtkExpression是一种…...
Oracle Dataguard(主库为 Oracle rac 集群)配置教程(02)—— Oracle RAC 主库的相关操作
Oracle Dataguard(主库为 Oracle rac 集群)配置教程(02)—— Oracle RAC 主库的相关操作 / 本专栏详细讲解 Oracle Dataguard(Oracle 版本为11g,主库为双节点 Oracle rac 集群)的配置过程。主要…...
midjournery AI绘画使用指南
midjournery AI绘画使用指南 基于Discord的Midjournery配置: https://www.bilibili.com/video/BV16d4y1A7Zq/?spm_id_from333.337.search-card.all.click&vd_source9c3ca9555620bed64bdee27ae49d37cf 使用原则 使用midjournery绘画的原则是给出对脑海中某个…...
iptables防火墙SNAT和DNAT
iptables防火墙SNAT和DNAT一、SNAT原理和应用1、SNAT原理2、SNAT应用环境3、SNAT转换前提条件二、SNAT案列1、实验需求2、实验环境3、实验目的三、DNAT原理和应用1、DNAT原理2、DNAT 应用环境3、DNAT转换的前提条件四、DNAT案列总结一、SNAT原理和应用 1、SNAT原理 SNAT原理:…...
python | 第二章考试题和练习题
一、考试题 1、turtle八边形绘制 问题描述: 使用turtle库,绘制一个八边形。 参考代码: import turtle as t t.pensize(2) for i in range(8):t.fd(100)t.left(45) 2、turtle八角图形绘制 问题描述: 使用turtle库,…...
Mysql 存储引擎设计:xa协议相关接口功能及实现
需要对接的接口以及每个接口的实现 recovery 阶段 此阶段由 xa.cc 文件中的 xarecover_handlerton() 函数完成,它通过三个接口实现与存储引擎的沟通:recover(),commit_by_xid() ,rollback_by_xid()。其流程如下: 此…...
字符串常量池
1.创建对象的思考下面两种创建字符串的方式一样吗?public static void main(String[] args) {//两者一样吗String s1 "hello";String s2 "hello";String s3 new String("hello");String s4 new String("hello");System…...
让技术更有温度,腾讯Light 点亮公益之光
蓝天白云,远处是广东最长跨海大桥——南澳大桥,一艘小船在海面驶过,近处一头中华白海豚露出水面。在第三届腾讯Light技术公益创造营上,海南智渔可持续发展研究中心科学总监郑锐强为我们展现这样一幅人与自然和平相处的美好画面。随…...
电子采购一体化解决方案
企事业数字化转型专家,提供各类应用解决方案。您身边的赋能小助手! 文章目录前言一、当下采购的痛点二、解决方案-供应商管理1.供应商管理三、解决方案-企业询价、供应商报价管理四、解决方案-采购订单五、送货、到货、订单管理总结前言 随着各类产业链…...
SAP COPA 获利能力分析深度解析
一、获利分析配置及相关值概述 二、配置:组织结构 2.1 定义经营范围-KEP8 2.2 维护经营关注点-KEA0 2.3 获利能力分析类型解析 2.4 控制范围分配给经营范围-KEKK 三、配置:数据结构-KEA0 3.1 特征字段 3.1.1 特征字段类别 3.1.2 维护特征字段-K…...
Java学习记录day6
书接上回 类与对象 static关键字 static的作用: 修饰一个属性:声明为static的变量实质上就是一个全局变量,其生命周期为从类被加载开始一直到程序结束;修饰方法:无须本类的对象也可以调用该方法;修饰一个类&#x…...
ubuntu 使用 adb 工具卸载鸿蒙系统预装软件
准备工作 打开 USB 调试 进入 “设置->关于手机” 连续点击版本号, 直到有提示开启了"开发人员选项" 进入 “设置->系统和更新->开发人员选项”, 打开 USB 调式, 顺便可以把"自动系统更新"关了 下载 adb 工具 官方地址: https://developer.an…...
Jmeter in Linux - 在Linux系统使用Jmeter的坑
Jmeter in Linux - 在Linux系统使用Jmeter的坑Jmeter in Linux系列目录:o.a.j.JMeter: Error in NonGUIDriver起因错误分析:解决方案:解析日志没有展示请求和响应信息起因解决方案:注意Jmeter in Linux系列目录: 【如…...
什么是特权访问管理(PAM)
特权访问管理 (PAM) 是指一组 IT 安全管理原则,可帮助企业隔离和管理特权访问、管理特权帐户和凭据、控制谁可以获得对哪些端点的管理访问权限级别,并监视用户对该访问权限执行的操作。 什么是特权访问 特权访问是一种 IT 系统访…...
在哪里找做网站的/网站建设情况
浙江省赛补 IMagic Points 比赛时,我还在一直纠结,5 3这条线为啥不行,结果下来才知道题目不能有重复点没有说,然后fdf说应该是2 7或者 2 5那条线,我也只能通过画图连猜想了。。。 #include <cstdio> #include &l…...
有个专门做装修的网站/硬件优化大师下载
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 数据治理伴随着数据全生命周期的进程,涉及事前规范检查、事中监控管理、事后优化复盘等过程,关键重点领域包括数据质量的可用性、一致性&…...
旅游网站系统建设方案/线上营销课程
其实很早就知道 Request.QueryString["参数"]来得到URL中传递的参数,或者说是得到Get请求方式得到的数据;而Request.Form得到Form表单的提交的数据(这种理解是错误的),今天在使用Jquery的Ajax,当使用Post方式时候&#…...
电商网站管理系统模板下载/整站seo技术搜索引擎优化
本片文章是算法排序系列的第一章,也是我在平台上的第一篇文章,希望自己能够坚持下去,同时本部分算法学习中一定会给出Java或者scala的实现方式(心情好的话也可能是两种语言都有),好了废话不多说,我们切入正题ÿ…...
固始城乡建设局的网站怎么打不开了/2023年的新闻时事热点论文
题目来自lwn的一个带有嘲讽的针对性评论。该文链接如下: https://lwn.net/Articles/808503/ 针对该评论的回应如下: A heavy reliance on BPF is not a bad thing in and out of itself. It makes me remember the GCC scenario: it made pluggability…...
wordpress缩略图幻灯展现/营销知识和技巧
有很大部分的深度技术用户都遇到过win10系统安装失败的问题,其实,造成系统安装失败的原因有很多,比较常见的是安装的过程中出现内部故障,又或者下载的操作系统不完整出现问题等等。大家也不用太慌张,我们可通过重新安装…...