『51单片机』 DS1302时钟

这篇具有很好参考价值的文章主要介绍了『51单片机』 DS1302时钟。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 🚩 WRITE IN FRONT 🚩   

  • 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎
  • 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博主、华为云享专家、阿里云专家博主、掘金优秀创作者、全网粉丝量7w+、全网访问量100w+🏅
  • 🆔 本文章内容由 謓泽 原创 如需相关转载请提前告知博主 ⚠
  • 📝 个人主页:謓泽的博客 📃
  • 📣 专栏系列:【51单片机】系列 📃
  • 🧑‍💻 Gitee:謓泽 (wsxsx) - Gitee.com ⭐️
  • 🎁 点赞👍+ 收藏⭐️+ 留言📝​
  • ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 📩

  • 💬 本系列哔哩哔哩江科大51单片机的视频为主以及博主自己码字的总结梳理 📚 

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

DS1302介绍

DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。

RTC(Real Time Clock):实时时钟,是一种集成电路。通常称为时钟芯片,里面内部自带晶振且集成化。

🍈拓展→现在流行的串行时钟电路很多例如『DS1302DS1307PCF8485』等...

这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路。

🍊说明⇢涓细电流充电是用来弥补电池在充满电后由于自放电而造成的容量损失。一般采用脉冲电流充电来实现上述目的。为补偿自放电,使蓄电池保持在近似完全充电状态的连续小电流充电,又称维护充电。采用普通32.768kHz晶振。 

有些人可能会不理解 为什么通过定时器就能够实现定时器时钟的功能。为什么还需要要这个DS1302芯片?

解释⇢首先我们的单片机它的定时器时钟就会有几个缺点。

⒈定时器时钟它的精度不高,它没有时钟芯片这个精度高,说白点就是时钟更加准确性。

⒉定时器时钟会占用我们单片机的CPU时间。因为我们单片机在运行其它东西时候,还需要不断的给这个单片机计算时间。所以就会消耗我们单片机的一个CPU也就是中央处理器。

⒊单片机定时器时钟它是不能够掉电继续运行的,而DS1302时钟芯片却可以。

 『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

芯片手册

芯片手册在我们学习单片机的时候尤为重要,学习单片机一定要学会懂得如何查找芯片手册。可以说在我们以后写一个项目的时候手册对于我们的帮助是极大的。所以,我们一定要学会把手册利用起来。当你买了一个模块或者是芯片的时候叫厂家把手册发过来,就比如这个DS1302商家那里同样也是有的。

DS1302

🍏注⇢在这里我只是会介绍大概意思,具体的可以去叫商家把这个DS1302的手册发给你。

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

直插分装→它的引脚是立起来的直接插在我们PCB板子上的焊盘上的。

⒉贴片分装→它的话就不是插入在我们的PCB板子上了。而是贴在电路板子表面上的像我们开发板的芯片就是我们的贴片分装,那么这两个分装它只是外表不一样。它的内部这个集成芯片的电路都是一模一样的,包括它的引脚定义都是一模一样的,只不过就是一种是大分装直插的,一种是小分装贴片的。

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

如上图所示⇢在上面的话就是DS1302应用电路,当我们在拿到手册的时候那么首先就要把你的硬件打好这样才能够更好的编程。然后硬件它是怎么进行连接的,这个在手册当中也是有的。所以说这就是手册为什么这么重要的原因。 

DS1302 ③个部分

首先这个芯片它有八个引脚大致分为③个部分如下↓

第一部分

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

如上图所示⇢就是我们电源部分的引脚。

其中电源部分的引脚第一个就是(Vcc2)是主电源和我们单片机连接到一起的,然后还有一个电源是(Vcc1)是备用电源。

🍈注⇢它的这个引脚命名也是比较奇特的,一般的人都会觉得Vcc1才是主电源。然后(Vcc2)是备用电源。实际上在这个电路当中它们两是相反的。GND(地)就不用多说了和主电源连接在一起的,给芯片供电。

  • Vcc2就和我们单片机的电源连接在了一起。
  • Vcc1就和我们这个备用电池连接在了一起。

在Vcc1中上面是正极。正极接到了Vcc1,负极接地。

那么有了这个主电源和这个备用电源就可以保证了我们这个时钟芯片的这个电源是非常的充分了。在上电的时候Vcc2当做电源,一旦掉电就切换到备用电池,保证它还能够正常工作。


开发板DS1302原理图

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

🍏注⇢在上述的原理图当中我们可以看到开发板手册这里的Vcc1(备用电源)是并没有接的,那么在我们开发板上的这个是没有接这个备用电池的。所以,我们这里掉电继续走时的现象是看不到了的。所以说我们这个代码断电之后它的这个时钟也会停止。当然这个并不是程序的问题是我们硬件并没有接上备用电池。


第二部分『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

x1和x2固定的接的就是我们的一个晶振(频率32.768KHZ),那么为什么是这个数呢?就是因为在我们通用有关的使用情况之下这个实时时钟都是这个32.768KHZ的晶振。

因为这个对于这个实时时钟来说是方便且精度比较高的,就像是我们单片机的串口一样为什么要使用11.0592KHZ一样比较合适保证精度。晶振这个东西就是给我们实时时钟的系统提供了一个稳定的实时脉冲系统提供1HZ的标准频率,因为我们需要计时的。那么有了这两部分的话我们芯片就可以自己进行独立工作了,把里面的这些时钟呢就可以运行了。

第三部分

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

如上图所示→那么我们单片机需要怎么样如何去获取时间内就需要这三个引脚。

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

利用这③个引脚我们就可以把单片机的内部时钟给读取出来

包括写入时间也是用这③个引脚把时间给写入进去。

这样就可以让我们里面的DS1302工作模式给运行出来。

当然在我们③个引脚是规定了一套协议的,利用这套协议就可以对我们里面的寄存器进行读写。就可以读取以及写入这个时间,这③个引脚和74HC595移位寄存器当中的很类似。

IO和SER(P34)⇢串行数据是对应以及SCLK(P36)⇢叫做串行时钟。注→串行数据是一位一位比特位来进行发送的。

CE就是对IOSCLK这两个使能的在读和写的时候必须保证它为高电平,相当于开关控制。

内部的结构框图

DS1302的内部结构框图如下↓

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

如下图→这一部分就是接的是我们的时钟晶振可以通过内部这些电路的一些设置。经过频率的一些分频阿等等运算之后,就会输出这个1HZ的标准输出频率。

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

如下图→这一部分就是我们时钟的一个内部寄存器,就是说我们这个内部的时间都是存在这个寄存器当中的,31x8的RAM寄存器。就跟我们单片机的寄存器一样,我们只需要对内部寄存器进行读写就可以访问时间了。内部寄存器存储时间。 

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

如下图→这一部分就是我们的访问,怎么写寄存器就是靠这个来的。

🍈注⇢在74HC595的移位寄存器当中我们是只能进行写入的操作而不能进行读出,这个的话是可以进行读出的操作的。

其中这个CE引脚实际上就是一个使能,并不是说芯片不去使能,时钟就不工作。那么这个CE就是用来做一个判断的开关,当CE是高电平的时候你的IO和SCLK才能是有用的。如果CE为低电平那么这些就是无效的。

那么IO和74HC595的SRE是极其类似的,我们的数据是一个一个出去的也就是输出,只不过我们这个还可以读写进去。

SCLK(串行时钟)也和SRCLK是非常类似的,就是它时钟芯片每次来一个上升沿(高电平),我们的这个数据就会每次向下进行一次的移位。

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

寄存器定义 

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

🍀注→在上述图当中地址是从低到高来进行排列的。注→IO数据输入/输出在DS1302也是从低位到高位的。

第一个寄存器存储的就是秒。

第二个寄存器存储的就是分。

第三个寄存器存储的就是小时。

第四个寄存器存储的就是日(1~31)

第五个寄存器存储的就是月(1~12)

第六个寄存器存储的就是年(0~99) 

WP置1(高电平)写入的话是无效的,但是可以读出的。写入的话就要给低电平有效。

TCS就是涓细电流充电能力对电池进行充电。

说明→在上述的寄存器当中都是与时钟有关的寄存器。

地址命令字

那么在这里我们就需要完成两个任务如下↓

⒈在哪(地址-读秒第一个为什么不是分钟) 里写入(我们是写入还是读出) 什么 (写入实际数据是什么,就是设计时间)

⒉在哪里(比如说我想读秒) 读出 什么

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

🍎重点⇢在寄存器定义的那幅图当中,秒所对应的那一行(也就是第二行) READ所对应的那一列(也就是第一列) 方格里边是 81h (十六进制)转换为二进制为1000 0001对应上述图当中。

🍏注→第六位给高电平操作的是RAM给低电平操作的是CK(非) 在最高位上固定为"1".

如果我们需要写入 WR 给上低电平0。

注意看寄存器那幅图当中是分别有WRITE和READ。分别有对应的关系的。

时序定义 

关于地址命令字和数据如何一一对应起来。

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

三大步骤(重点!)

⒈CE置"1"相当于一个开关的作用。

⒉在这里规定了我们要先把最低为给发送过去,在这里也就是R/W(非)设置到IO口上。

⒊SCLK时钟给上一个上升沿(高电平),那么我们的IO口最低为就会被写入到单片机。然后就是把SCLK置回到"0"此时在到IO(地址)口第一位依次类推。

注→I/O命令字(R/W非 ~ 1和数据(D0 ~ D7)是一一对应的(注:一个是指令还有一个是数据)高电平读出。

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

这一部分是完成命令字的写入操作。我们先要发命令字因为我们要告诉到底是写还是读。

『51单片机』 DS1302时钟,【51单片机】系列,物联网,51单片机

这一部分就是实际的数据也就是IO数据输入/输出和上面的操作都是一样的。记住最终再把SCLK给置0以及CE。

📝重点说明→在上述我讲解的是写入数据的,实际上读出数据前半部分也都是一样的(只不过需要改变命令字最低位读"1")紧跟着时钟的下降沿然后就会开始读出这个数据每次读出一个数据来一个下降沿依次类推到最后一位就把SCLK和CE置0.

🍊注→在这些数据当中是完全对应在外面的寄存器上的。

拓展说明如下↓

在写入数据是给单片机写入进去数据的我们是看不到现象的,而当我们想要看到现象是需要把单片机的数据给读出来才行。

在CE(芯片开关)的操作中,CE始终要保持我们的高电平,写完之后再把它清0置低电平。然后整个写入操作它才是有效的。

SCLK(串行时钟)给一个固定的时钟,然后IO(数据输出/输入)就给数据,在时钟的上升沿,IO口的数据将被输入。同时还额外的规定了在时钟的下降沿,DS1302就会把它给的数据进行输出。

下面就是串行输入。所有驱动都是低电平输入/高电平输出 交替。

BCD码 

在DS1302的内部寄存器地址/定义,是用BCD码表示的也就是我们常用到单片机8421码。

BCD码(Binary Coded Decimal‎),用4位二进制数分开分别来表示个位和十位。

例:0001 0011表示13,1000 0101表示85,0001(十位) 1010(个位)不合法(十进制的个位只有0~9,A代表的是10)

在十六进制中的体现:0x13表示13,0x85表示85,0x1A不合法。

BCD码转十进制:DEC=BCD/16*10+BCD%16; (2位BCD十位和个位)

BCD/16把高四位提取出来,BCD%16把低四位提取出来。

十进制转BCD码:BCD=DEC/10*16+DEC%10; (2位BCD十位和个位)

为什么需要进制转换呢?其根本原因就是在写代码的过程当中进制可能不一样,我写的这个代码读出的数据是BCD码而你这个库函数当中存放的Number是十进制的,此时我们应该要把BCD码用公式把它进行一个强转为十进制这样最终得到的才是一个逢十进一的一个数。如果当你直接BCD码存放十进制Number当中会发生以下情况如下👇

0000 1001 = 9
0001 0000 = 10(解码以十进制进行解码)
//十进制转换为十六进制
(1x16^1)+(0x16^0) = 16

🍊说明⇢此时如果是这样的话当我们的数字到9的时候再+1的话就会跳到16的数字。所以,我们需要把BCD码转十进制。

其实可以直接带入进去算下BCD码转十进制 例如下↓拓展:÷(获得高位) %(获得低位)

BCD码(8421码0~15)十进制码是(0~9)我们带入式子来进行计算如下↓

DEC(十进制) = (16/16*10) + (16%16) = 10 这不就相当于是从十六进制转到了十进制吗?同理。当然这个只是一个小技巧,有更加严谨的转换方式。

注→BCD码在单片机中还是以16进制形式存储。文章来源地址https://www.toymoban.com/news/detail-720602.html

到了这里,关于『51单片机』 DS1302时钟的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于51单片机、DS1302时钟模块的电子闹钟设计

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:以下是本篇文章正文内容,下面案例可供参考 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作

    2024年02月02日
    浏览(70)
  • 使用51单片机和DS1302时钟芯片做一个简易的电子时钟

    今天给大家推荐一个51单片机小实验,带你使用51单片机做一款简易的电子时钟,其中计时模块采用DS1302硬件模块,显示采用LCD显示屏,具体怎么实现开来一起看看吧! DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟和31字节静态 RAM,通过简单的串行接口与

    2024年02月11日
    浏览(49)
  • 【单片机】13-实时时钟DS1302

    (rtc for real time clock) (1)时间点和时间段的概念区分 (2)单片机为什么需要时间点【一定的时间点干什么事情】 (3)RTC如何存在于系统中(单片机内部集成 or 单片机外部扩展【DS1302】) 1.数据手册 DS1302中文数据手册 - 豆丁网 2. SPI数字接口 访问 SPI通信协议【DS1302也使用

    2024年02月07日
    浏览(46)
  • 单片机第一季:零基础11——实时时钟DS1302

    目录 1,DS1302 时钟芯片介绍  2,BCD码介绍  3,涉及到的寄存器  3.1,控制寄存器 3.2,日历/时钟寄存器  3.3,DS1302 的读写时序  4,相关代码  这一章我们来学习DS1302 时钟芯片,该芯片是3 线SPI 接口,所以需要使用51单片机的3 个IO 口模拟SPI 时序与DS1302 时钟芯片通信,将时钟

    2024年02月16日
    浏览(60)
  • 蓝桥杯单片机比赛学习:12、DS1302时钟基本原理与使用方法

    DS1302是 DALLAS 公司推出的时钟芯片,内含一个实时时钟/日历和 31字节静态 RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。 但是在我们比赛中一般只需要写/读时钟。 DS1302可以采

    2024年02月02日
    浏览(49)
  • 51单片机数字时钟

    我们学单片机,一般都会写数字时钟编程。它能帮助我们: a. 能够系统性地总结掌握的知识,将单元模块知识有机的结合在一起。 b. 能够充分协调好硬件与软件之间的相互结合,合理设计硬件电路。 c. 掌握单片机 C 语言判断语句、分支语句以及子程序调用等编程知识。

    2024年02月11日
    浏览(45)
  • STC单片机DS1307+ssd1306 oled时钟显示

    📌相关篇《STC单片机DS1302+ssd1306 oled时钟显示》 📍《STC单片机对DS1307读写操作》 ✨效果演示: 🌿实验对象:STC12C5A60S2 🌿屏幕型号:I2C ssd1306 0.96“ oled 🌿晶振频率:11.059MHz 🌿串口波特率:9600 📜串口打印读取信息: 🛠引脚说明 ✨由于屏幕接口ssd1306 0.96“ oled和DS1307的接

    2023年04月09日
    浏览(52)
  • 51单片机实时时钟显示

    51单片机+DS1302+DS18B20+LCD12864 用的IIC通信,写的一个ds3231时钟模块的程序,可更改时间,下面是.h文件里面的部分代码 #ifndef __ds3231_h #define _ ds3231_h #include reg51.h #define uchar unsigned char #define uint unsigned int extern uchar day2,Htemp2,Mtemp2,Stemp2; //星期,时分秒 extern ucharYtemp2,Mtemp2,Dtemp2,Ttem

    2024年02月09日
    浏览(41)
  • 单片机原理与应用课程设计-基于51单片机的时钟日历

    摘 要 本课程设计是基于51单片机的日历时钟设计。作为嵌入式系统中常用的控制器,单片机在各种电子设备和系统中广泛应用。日历时钟作为一个常见的功能模块,在现代生活中具有重要意义。因此,设计一个基于51单片机的日历时钟,不仅有助于我们掌握单片机编程技术和

    2024年02月20日
    浏览(72)
  • 51单片机(数码管可调时钟)

    1.数码管(共阴极)如何显示数字:位选+段选(单个) 位选:138译码器通过P22、P23、P24三个端口输入二进制数(011、000等)来选择连同译码器右边的哪一条线,而这些线又分别连着数码管的LED12345678、决定选择哪一个来显示数字 段选:决定输出什么数字,数码管下方又连着一

    2024年02月05日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包