51单片机入门教程——DS1302实时时钟

前言

本教程基于B站江协科技课程进行个人学习整理,专为拥有C语言基础的零基础入门51单片机新手设计。既帮助解决因时间差导致的设备迭代调试难题,也助力新手快速掌握51单片机核心知识,实现从C语言理论到单片机实践应用的高效过渡 。

目录

前言

知识储备

1.DS1302的介绍

单片机定时器就能计时,为什么还要使用时钟芯片?

2.引脚的定义和应用电路

1.DIP(直插式封装)、SO(贴片封装)

2.应用电路

1.电源部分

2.时钟部分

3.通信引脚部分

3.小结

3.内部结构图

4.寄存器定义

1.实时时钟

2.命令字

5.时序定义

单字节读

单字节写

总结


知识储备

1.DS1302的介绍

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

RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟芯片

单片机定时器就能计时,为什么还要使用时钟芯片?

1.定时器计时的精度不高

2.定时器计时占用单片机CPU时间

3.定时器计时不能掉电继续运行(最主要的原因

4.时钟芯片具有备用电池,掉电后切换到备用电池模式,即使单片机不工作,也能给时钟芯片提供工作电能,使其不会中断计时,继续运行

2.引脚的定义和应用电路

1.DIP(直插式封装)、SO(贴片封装)

外表不同,内部芯片一模一样,引脚定义也是一模一样

2.应用电路

可以分为三个部分:电源部分,时钟部分,通信引脚部分

1.电源部分

Vcc2(直接与高电平Vcc连接):主电源

Vcc1(与电池的正极连接):备用电源

GND:电源地

Vcc有电时,会对备用电池进行充电,一旦断开,DS1302就会继续利用电池,保持工作状态(前提:电池可充电)

一般来说,我们不需要配置涓细电流充电能力,在掉电模式下,使用备用电池功耗是很低的,DS1302只需要接一个电池就能运行很长一段时间

遗憾的是,我们的开发板中Vcc1并没有与电池连接,后续无法掉电计时,不是程序的问题,是硬件的问题

2.时钟部分

X1、X2:32.768KHz晶振

晶振(石英晶振荡器):

给实时时钟系统提供一个稳定的计数脉冲,晶振经过其内部电路的处理,会输出1Hz的标准频率,而且精度很高

通用情况下,实时时钟的晶振都是32.768KHz(对于实时时钟来说,方便易用,精度也高,就像单片机串口为什么使用11.0592MHz一样)

一般来说,晶振与时钟的稳定脉冲有关,由于晶振的振荡器稳定性特别高,就使晶振产生的时钟频率精度特别高

3.通信引脚部分

将芯片内部的时钟读出,或用它们三个把想要设置的是时间写进去

CE:芯片使能

作用:相当于控制开关

I/O:数据输入/输出                        SCLK:串行时钟

作用:通过专用的串行通信协议,把内部的数据写入和读出

3.小结

DS1302就可以看作是一个小型单片机,它内部有一些特殊的寄存器。寄存器中存的是年、月、周、日、时、分、秒,通过通信协议进行数据交互,就可以实现寄存器中年、月、周、日、时、分、秒的访问和读写

3.内部结构图

并不是说芯片不使能,芯片并不是不工作,而是起到判断作用

当CE为高电平时,I/O、SCLK才有用

当CE为低电平时,I/O、SCLK无效

类似CE在命令控制逻辑内控制着一个开关

当CE为高电平时,开关闭合,I/O、SCLK传出的数据才能被右边的寄存器(蓝色)接收

当CE为低电平时,开关断开,I/O、SCLK传出的数据无法被右边的寄存器(蓝色)接收

4.寄存器定义

1.实时时钟

倒数第二行“WP”是“写保护”,如果“WP”的位置赋“1”,那么写入操作失效,输出操作仍可进行

倒数第一行“TCS”是用来储存涓细电流充电的数据

DS1302内部并不是只有这些寄存器,这些只不过是与时钟有关的寄存器,想了解详情可查看DS1302手册(和商家要)

至于年寄存器的0~99的意思就是最多从2000年计到2099年,2099年之后这芯片就失效了

2.命令字

我们操作DS1302无非就两个方式

(1)在哪 写入 什么

(2)在哪 读入 什么

这连个方式其实就是给DS1302“三个任务”:

1.在哪        2.读还是写        3.什么(内容)

命令字就是用来完成前两个任务(在哪;读或写)

操作RTC(定时时钟),规定最高位7置“1”,CK和WR上面的横线表示CK和WR该位置低电平时有效。

我们要操作DS1302中的定时时钟,就要选择CK,也就是让第6位置"0"

当你想写入数据,在最低为置“0”(RD是读出的意思,WR是写入的意思),如此“写入”这个任务就完成了

并且你想操作秒,那么就控制秒寄存器,在命令字中补全它的地址“80h”转化成二进制“1000 0000”,如此,“在哪”这个任务就完成了

5.时序定义

CE:先置“1”再置“0”,操作才会有效

SCLK:给一固定时钟

I/O:给数据

规定:在时钟的上升沿,I/O上的电平将会被写入;在时钟的下降沿,DS1302就会把数据输出

单字节读

过程:

1.CE置“1”

2.命令字的最低位置“1”.完成命令字写入操作

3.时钟先给上升沿,将I/O上的命令字的电平写入,再给下降沿,DS1302把数据输出给51单片机

单字节写

过程:

1.CE置“1”

2.命令字的最低位置“1”.完成命令字写入操作

3.时钟一直给上升沿,将I/O上的命令字的电平写入,再将51单片机给的数据写入

只有这一段是DS1301操控,其他都是单片机操控

总结

这篇文章是我学习 B 站江协科技 51 单片机入门教程中 “10-1 实时时钟” 部分后的实践总结,同时也可作为新手快速上手 51 单片机实时时钟功能的实用指南。在 51 单片机上运用 DS1302 实时时钟芯片之前,需要先掌握一系列前置知识。由于这些知识要点较多,本文篇幅相对较长。并且,本文内容聚焦于知识储备方面,看似只是知识的罗列,实则涵盖了运用 DS1302 时所必须掌握的核心要点。只有将这些基础知识扎实掌握,在实际应用中,才能更加熟练、得心应手地使用 51 单片机上的 DS1302 芯片进行相关操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值