SPI协议和DS1302的使用

文章目录

  • 一、DS1302电路图
  • 二、SPI协议介绍
  • 三、SPI时序
    • 1.写字节
    • 2.读字节
  • 四、DS1302编程
    • 1、写字节
    • 2、读字节
    • 3.编程

一、DS1302电路图

SPI协议和DS1302的使用_第1张图片

SPI协议和DS1302的使用_第2张图片

二、SPI协议介绍

SPI是串行外设接口(Serial Perpheral Interface)的缩写

三、SPI时序

SPI协议和DS1302的使用_第3张图片

1.写字节

void write_ds1302(unsigned char dat)
{
	unsigned char i;
	SCK=0;
	for(i=0;i<8;i++)
	{
		if(dat&0x01)
		{
			SDA_SET;// IO=1
		}
		else
		{
			SDA_CLR;// IO=0
		}
		SCK_SET;//SCK=1
		SCK_CLR;//SCK=0
		dat=dat>>1;
	}
}

2.读字节

unsigned char read_ds1302(void)
{
	unsigned char i.dat=0;
    for(i=0;i<8;i++)
    {
        dat=dat>>1;
        if(SDA_R)// if SDA=1
        {
            dat|=0x80;//最高位 置1
        }
        else
        {
            dat&=0x7F;//最高位 置0
        }
        SCK_SET;//SCK=1
        SCK_CLR;//SCK=0
    }
    return dat;
}

四、DS1302编程

SPI协议和DS1302的使用_第4张图片

1、写字节

void ds1302_write_byte(unsigned char add,unsigned char dat)
{
    RST_CLR;//RST引脚置底,实现DS1302初始化
    SCK_CLR;//SCK引脚置底,实现DS1302的初始化
    
    RST_SET;//启动DS1302总线,RST=1电平置高 RST是CE引脚
    addr=addr&0xFF;//将最低位置0,启动写  addr是IO引脚
    write_ds1302(addr);//写入目标地址:addr,保证是写操作,写之前将最低位置0
    
    write_ds1302(dat); //写入数据
    RST_CLR; //停止DS1302总线
}

2、读字节

unsigned char ds1302_read_byte(unsigned char addr)
{
	unsigned char temp;
    RST_CLR;//RST脚置低,实现DS1302初始化
    SCK_CLR;//SCK脚置低,实现DS1302初始化
    
    RST_SET;//启动DS1302总线,RST=1,电平置高
    addr=addr|0x01;//将最低位置1
    write_ds1302(addr);//写入目标地址:addr,保证是读操作,写之前将最低位置高
    temp=read_ds1302();//从DS1302中读出一个字节的数据
    RST_CLR;//停止DS1302总线
    return temp;
}

3.编程

SPI协议和DS1302的使用_第5张图片

void set_sfr(uchar shi,uchar fen,uchar miao)//设置时分秒
{
    write_ds1302(0x8e,0);//把wp置0,把写保护关掉
    write_ds1302(0x80,(miao/10)*16+miao%10);
    write_ds1302(0x80,(fen/10)*16+fen%10);
    write_ds1302(0x80,(shi/10)*16+shi%10);
}
void read_sfr(void)
{
    write_ds1302(0x8F);
    shi=read_ds1302(0x85)/16*10+read_ds1302(0x85)%16;
    fen=read_ds1302(0x83)/16*10+read_ds1302(0x83)%16;
    miao=read_ds1302(0x81)/16*10+read_ds1302(0x81)%16;
}

你可能感兴趣的:(51单片机)