【蓝桥杯单片机备赛】8.【DS1302】学好了做个小天才智能手表玩玩

学好了或许可以结合OLED、KEY、DS1302做个小闹钟哦

概述

一句话介绍DS1302:可以理解为一个电子手表,里面有31字节的RAM静态内存(只要有电,数据就不会丢失)
关键词:高性能 低功耗 SPI 31字节静态ROM 实时时钟
SPI:一种传输方式
静态ROM:只要有电,数据就不会丢失
【蓝桥杯单片机备赛】8.【DS1302】学好了做个小天才智能手表玩玩_第1张图片
【蓝桥杯单片机备赛】8.【DS1302】学好了做个小天才智能手表玩玩_第2张图片

采用SPI三线接口与MCU同步通信,可采用突发方式一次传送多个字节的时钟参数和RAM数据
附加31字节的静态RAM0
两个存储器: 日历时钟寄存器 + 静态RAM存储器
寄存器:
【蓝桥杯单片机备赛】8.【DS1302】学好了做个小天才智能手表玩玩_第3张图片
【蓝桥杯单片机备赛】8.【DS1302】学好了做个小天才智能手表玩玩_第4张图片
● 在任何对时钟或RAM读写操作之前,WP位必须为0。当WP位为1时,不能对任何时钟日历寄存器或RAM进行写操作(写寄存器:0x80 = 1000 0000,0x00 = 0000 0000)

读地址:READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; //秒分时日月周年
写地址:WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c}; //秒分时日月周年
存时间:TIME[7] = {0x45, 0x59, 0x23, 0x17, 0x02, 0x06, 0x18}; //存储格式是用BCD码:2018年2月17日周六23时59分45秒

实操

底层驱动参考蓝桥杯官方提供的代码,并不需要掌握,调库!!!

初始化函数 void Ds1302_Init(); // 初始化时间日期 / 更新更改后的日期
读取当前时间:void Ds1302_ReadTime(); // 读取实时变化的时间

void Ds1302Init()
{
	unsigned char n;
	Write_Ds1302_Byte(0x8e,0x00);	//	关闭写保护功能
	for(n = 0; n < 7; n ++)
	{
		Write_Ds1302_Byte(WRITE_RTC_ADDR[n],TIME[n]);
	}
	Write_Ds1302_Byte(0x8e,0x80);	//	打开写保护功能	
}

void Ds1302_ReadTime()
{
	unsigned char i;
	for(i = 0; i < 7; i ++)
	{
		TIME[i] = Read_Ds1302_Byte(READ_RTC_ADDR[i]);
	}
}

你可能感兴趣的:(蓝桥杯单片机,单片机,蓝桥杯,AT89C51)