基于51单片实现实时时钟(超详细)

 时钟部分

DS1302是低功率实时时钟芯片        RTC:实时时钟,通常被称为时钟芯片,DS1302是其中一种

引脚定义和应用电路

注:1、引脚VCC2是主电源,VCC1是备用电源 ,开发板的VCC1没有接,故看不到开发板掉电时时钟继续走时的现象。

2、32.768hz频率的晶振是对实时时钟比较易用且准确的。

3、晶振(全称叫石英晶体增长器)就是给实时时钟系统提供一个稳定的技术脉冲,晶振经过内部电路的处理会输出1hz标准的频率(频率的精度很高),故晶振是用来计时的。一般来说,晶振都是与时钟,稳定的脉冲有关的。晶振产生的震荡稳定性特别高,它产生的时钟频率精度特别高。

寄存器定义

命令字:总共是一个字节有8位,它的最高位7固定是1;如果操作RAM那么第6位给1,如果操作CK(clock 时钟)第6位给0;第5位到第1位是地址(如果操作秒,地址为00000);最后一位确定读入和写入(RD为read,WR为write)(WR加一横线代表它是0有效或低电平有效),

注:RAM是一种临时性的存储介质,它允许数据被快速读取和写入

注:

在DS1302实时时钟芯片中,有8个与时间相关的寄存器以及一个用于控制涓流充电的寄存器。这些寄存器的5位地址如下:

  • 秒(Seconds):地址 0b00000,对应于二进制地址 00000,十进制地址为 0,写入时需考虑的是RAM操作控制位和读写控制位,实际写入时秒寄存器的命令字节可能是 0x810x80

  • 分(Minutes):地址 0b00001

  • 小时(Hours):地址 0b00010

  • 日期(Date):地址 0b00011

  • 月份(Month):地址 0b00100

  • 星期(Day of Week):地址 0b00101,注意在DS1302中星期日用0表示

  • 年份(Year)的低字节(Least Significant Byte, LSB):地址 0b00110

  • 年份(Year)的高字节(Most Significant Byte, MSB):地址 0b00111

每个寄存器都是8位宽,并且在访问它们时需要通过特定的串行通信协议进行,其中包括一个7位的地址位加上额外的控制位来指示是读操作还是写操作,以及是否针对RAM或时钟寄存器进行操作。例如,对于写入操作,最高有效位(MSB)通常被置为1,而对于读取操作,这个位则会被置为0。

时序定义

(命令字和数据怎么对应起来的就要看时序图)

CE:在整个操作过程中CE要保证高电平,操作之前给CE置1,操作完成之后要给CE置0。

SCLK:在时钟的上升沿IO口写入数据,在时钟的下降沿输出数据。

BCD码

单片机的数据不是以正常的二进制进行存储的,而是以BCD码进行存储的

BCD码,用4位二进制表示1位十进制数

例:0001 0011表示13,1000 0101表示85,0001 1010不合法

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

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

十进制转BCD码:BCD=D

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘~风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值