DS1302时钟芯片

介绍:DS1302是由美国DALLAS公司研发的具有涓细节电流充电能力的低功耗实时时钟。通过简单的串行接口与微处理器通讯。它可以对年、月、日、时、分、秒进行即使,并且具有润年补偿功能。


一、引脚介绍:

 SCLK:串行时钟

I / O :数据输入 / 输出

CE:芯片使能


二、寄存器地址 / 定义 /地址操作

 WP(写保护功能):1开启,0关闭。

三、时序结构:

1、初始化:便于整个时序构成

void DS1302_Init()
{
	DS1302_CE=0;
	DS1302_SCLK=0;
	
}

2、字节写:在CE高电平期间,SCLK上升沿期间发送一位。(器件地址+数据)

 代码:

/**
   *   @brief       写入一个数据
   *   @param       地址 + 数据
   *   @retval         无
**/


void DS1302_writByte(unsigned char Command,Data)
{
	unsigned char i;
	DS1302_CE=1;        //拉高CE
	
	for(i=0;i<8;i++)   //寄存器地址写入
	{
	DS1302_IO=Command&(0x01<<i);   //按位写入,低位在前
	DS1302_SCLK=1;           //  写入一位
	DS1302_SCLK=0;	          
	}
	
	for(i=0;i<8;i++)   //数据写入
	{
	DS1302_IO=Data&(0x01<<i);   //按位写入,低位在前
	DS1302_SCLK=1;
	DS1302_SCLK=0;	
	}
	
	DS1302_CE=0;
	
}

3、字节读:在CE高电平期间,器件地址在SCLK上升沿写入,数据在SCLK下降沿读出

代码:

/**
   *   @brief       读出一个数据
   *   @param         地址
   *   @retval        char
**/



unsigned char DS1302_ReadByte(unsigned char Command)
{
   	unsigned	char i,Data=0x00;  
		Command|=0x01;           //寄存器地址 最低位  置1
		DS1302_CE=1;             //拉高CE

		for(i=0;i<8;i++)    //将地址按位(低位在前)写入
	{
		DS1302_IO=Command&(0x01<<i);  
		DS1302_SCLK=1;
		DS1302_SCLK=0;     
	}
		
	for(i=0;i<8;i++)       //读出数据(低位在前)
	{
		if(DS1302_IO)
		{
			Data|=(0x01<<i);   
		}
		DS1302_SCLK=1;
		DS1302_SCLK=0;
		
	}
		DS1302_CE=0;
		DS1302_IO=0;
	
	return Data;
}

四、数据存储/转换:

数据存储:在DS1302中的数据都是以BCD码(十六进制)得形式存储的。所以,写入数据要将十进制转换成十六进制读出数据要将十六进制转换为十进制

十进制 -> 十六进制:

            Data/10*16+Data%10

十六进制 -> 十进制:

            Data/16*10+Data%16

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值