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