时钟部分
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操作控制位和读写控制位,实际写入时秒寄存器的命令字节可能是0x81
或0x80
。 -
分(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