蓝桥杯—DS1302

本文介绍了如何使用官方提供的DS1302读写函数来设置和读取时分秒数据,并处理BCD码在数码管中的显示。涉及管脚配置、时序控制以及驱动函数的使用示例。
摘要由CSDN通过智能技术生成

目录

1.管脚

2.时序&官方提供的读写函数

3.如何使用读写函数

4.如何在数码管中显示在DS1302中读取出的数据?


1.管脚

2.时序&官方提供的读写函数

/*	# 	DS1302代码片段说明
	1. 	本文件夹中提供的驱动代码供参赛选手完成程序设计参考。
	2. 	参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、运行速度和试题
		中对单片机时钟频率的要求,进行代码调试和修改。
*/								

//
void Write_Ds1302(unsigned  char temp) 
{
	unsigned char i;
	for (i=0;i<8;i++)     	
	{ 
		SCK = 0;
		SDA = temp&0x01;
		temp>>=1; 
		SCK=1;
	}
}   

//
void Write_Ds1302_Byte( unsigned char address,unsigned char dat )     
{
 	RST=0;	_nop_();
 	SCK=0;	_nop_();
 	RST=1; 	_nop_();  
 	Write_Ds1302(address);	
 	Write_Ds1302(dat);		
 	RST=0; 
}

//
unsigned char Read_Ds1302_Byte ( unsigned char address )
{
 	unsigned char i,temp=0x00;
 	RST=0;	_nop_();
 	SCK=0;	_nop_();
 	RST=1;	_nop_();
 	Write_Ds1302(address);
 	for (i=0;i<8;i++) 	
 	{		
		SCK=0;
		temp>>=1;	
 		if(SDA)
 		temp|=0x80;	
 		SCK=1;
	} 
 	RST=0;	_nop_();
 	SCK=0;	_nop_();
	SCK=1;	_nop_();
	SDA=0;	_nop_();
	SDA=1;	_nop_();
	return (temp);			
}

3.如何使用读写函数

以时分秒为例

在写中

void Set_Rtc(unsigned char* ucRtc)
{
    Write_Ds1302_Byte(0x8e,0x00);
    Write_Ds1302_Byte(0x84,ucRtc[0]);
    Write_Ds1302_Byte(0x82,ucRtc[1]);
    Write_Ds1302_Byte(0x80,ucRtc[2]);
    Write_Ds1302_Byte(0x8e,0x80);
}

void Read_Rtc(unsigned char* ucRtc)
{
    unsigned char i;
    for(i=0;i<3;i++)
        ucRtc[i] = Read_Ds1302_Byte(0x85-2*i);
}

记得加入DS1302的驱动中声明函数,并在变量声明中定义数组

unsigned char ucRtc[3] = {0x23,0x59,0x55}  //上电显示默认时间   23 59 55

需要在初始化区域中调用Set_Rtc();函数,参数写ucRtc

在信息读取区域中调用Read_Rtc();函数,参数写ucRtc

4.如何在数码管中显示在DS1302中读取出的数据?

因为在DS1302中使用的是BCD码,需要进行处理

需要对十位和个位进行相除和取余,11则是横杠的显示 在共阳极数码管中为

1011 1111,0xbf,在数码管数组中放入第11位

仿真显示效果

在DS1302中均是先写地址,再写数据,先打开保护再对需要操作的RTC进行操作然后再关闭保护保证数据的稳定性(保护只有写的时候需要) 

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

绝迹刻本

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

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

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

打赏作者

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

抵扣说明:

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

余额充值