精华内容
下载资源
问答
  • 蓝桥杯DS1302官方驱动的修改

    千次阅读 2019-03-06 11:04:49
    相对于DS18B20而言(我写的18B20官方驱动的修改https://blog.csdn.net/weixin_42994525/article/details/88219538)DS1302官方给出的驱动程序修改的地方会比较多一点,原因在于数据的格式问题,关于这个我也写了一篇...

    相对于DS18B20而言(我写的18B20官方驱动的修改https://blog.csdn.net/weixin_42994525/article/details/88219538)DS1302官方给出的驱动程序修改的地方会比较多一点,原因在于数据的格式问题,关于这个我也写了一篇文章大家可以去看一下https://blog.csdn.net/weixin_42994525/article/details/88111554

    下面看一下官方的驱动程序:

    /*
      程序说明: DS1302驱动程序
      软件环境: Keil uVision 4.10 
      硬件环境: CT107单片机综合实训平台 8051,12MHz
      日    期: 2011-8-9
    */
    
    #include <reg52.h>
    #include <intrins.h>
    
    sbit SCK=P1^7;		
    sbit SDA=P2^3;		
    sbit RST = P1^3;   // DS1302复位												
    
    void Write_Ds1302_Byte(unsigned  char temp) 
    {
    	unsigned char i;
    	for (i=0;i<8;i++)     	
    	{ 
    		SCK=0;
    		SDA=temp&0x01;
    		temp>>=1; 
    		SCK=1;
    	}
    }   
    
    void Write_Ds1302( unsigned char address,unsigned char dat )     
    {
     	RST=0;
    	_nop_();
     	SCK=0;
    	_nop_();
     	RST=1;	
       	_nop_();  
     	Write_Ds1302_Byte(address);	
     	Write_Ds1302_Byte(dat);		
     	RST=0; 
    }
    
    unsigned char Read_Ds1302 ( unsigned char address )
    {
     	unsigned char i,temp=0x00;
     	RST=0;
    	_nop_();
     	SCK=0;
    	_nop_();
     	RST=1;
    	_nop_();
     	Write_Ds1302_Byte(address);
     	for (i=0;i<8;i++) 	
     	{		
    		SCK=0;
    		temp>>=1;	
     		if(SDA)
     		temp|=0x80;	
     		SCK=1;
    	} 
     	RST=0;
    	_nop_();
     	RST=0;
    	SCK=0;
    	_nop_();
    	SCK=1;
    	_nop_();
    	SDA=0;
    	_nop_();
    	SDA=1;
    	_nop_();
    	return (temp);			
    }

    从上面的程序我们也能看出来,它没有1302的初始化函数也就是说我们不能向1302写一个我们自己想要或者说题目要求的初值,以及在向1302写数据的时候没有进行数据格式的转变,这样会导致我们的时钟显示会跑飞,就是加到六十之后还在继续往上加,还有就是在读取数据之后也没有进行数据的转换或导致的结果也是会使显示跑飞。

    下面来看一下修改之后的代码:

    #include<STC15F2K60S2.H>
    #include<intrins.h>
    
    #define uchar unsigned char
    #define uint unsigned int
    sbit SCK=P1^7;		
    sbit SDA=P2^3;		
    sbit RST = P1^3; 
    //DS1302初始化
    void DSInit()
    {
    	uchar i;
    	uchar add=0x80;
    	Write_Ds1302(0x8e,0x00);//关闭写保护
    	for(i=0;i<7;i++)
    	{
    		Write_Ds1302(add,ds[i]);
    		add=add+2;
    	}
    	Write_Ds1302(0x8e,0x80);//开启写保护
    }
    //将数据存储到指定数组中 
    void Read_Time()
    {
    	uchar i;
    	uchar add=0x81;
    	Write_Ds1302(0x8e,0x00);//关闭写保护
    	for(i=0;i<7;i++)
    	{
    		shijian[i]=Read_Ds1302(add);
    		add=add+2;
    	}
    	
    	Write_Ds1302(0x8e,0x80);//开启写保护
    }
    //读取DS1302指定地址中的数据
    unsigned char Read_Ds1302 ( unsigned char address )
    {
     	unsigned char i,temp=0x00;
    	uchar dat_low,dat_high;
     	RST=0;
    	_nop_();
     	SCK=0;
    	_nop_();
     	RST=1;
    	_nop_();
     	Write_Ds1302_Byte(address);
     	for (i=0;i<8;i++) 	
     	{		
    		SCK=0;
    		temp>>=1;	
     		if(SDA)
     		temp|=0x80;	
     		SCK=1;
    	} 
     	RST=0;
    	_nop_();
     	RST=0;
    	SCK=0;
    	_nop_();
    	SCK=1;
    	_nop_();
    	SDA=0;
    	_nop_();
    	SDA=1;
    	_nop_();
    	dat_high=temp/16;//将读取的数据进行数据的转换,将寄存器的高四位转化为十进制的十位
    	dat_low=temp%16;//将读取的数据进行数据的转换,将寄存器的低四位转化为十进制的个位
    	temp=dat_high*10+dat_low;	
    	return (temp);			
    }
    //向DS1302写地址和数据
    void Write_Ds1302( unsigned char address,unsigned char dat )     
    {
    	uchar num;
     	RST=0;
    	_nop_();
     	SCK=0;
    	_nop_();
     	RST=1;	
       	_nop_();  
     	Write_Ds1302_Byte(address);	
    	num=(dat/10<<4)|(dat%10);//将数据的高位移入寄存器的高四位,低位移入寄存器的低四位(数据的格式转换)
     	Write_Ds1302_Byte(num);		
     	RST=0; 
    }
    //向DS1302写数据
    void Write_Ds1302_Byte(unsigned  char temp) 
    {
    	unsigned char i;
    	for (i=0;i<8;i++)     	
    	{ 
    		SCK=0;
    		SDA=temp&0x01;
    		temp>>=1; 
    		SCK=1;
    	}
    }  
    

    上面的代码对官方的程序作出了修改,为了方便显示我们对1302写入了初值,也将读取出来的数据保存在了一个指定的数组当中。我把整个完整的代码贴出来,大家我可以直接上电试试看:

    #include<STC15F2K60S2.H>
    #include<intrins.h>
    
    #define uchar unsigned char
    #define uint unsigned int
    sbit SCK=P1^7;		
    sbit SDA=P2^3;		
    sbit RST = P1^3;   // DS1302复位
    uchar code ds[]={55,59,23,10,10,1,16};
    uchar code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
    uchar shijian[7];
    uchar yi,er,san,si,wu ,liu,qi,ba;
    void Init();
    void DSInit();
    void Delay1ms();
    void display1(uchar yi,uchar er);
    void display2(uchar san,uchar si);
    void display3(uchar wu,uchar liu);
    void display4(uchar qi,uchar ba);
    
    void Write_Ds1302_Byte(unsigned  char temp) ;
    void Write_Ds1302( unsigned char address,unsigned char dat );
    unsigned char Read_Ds1302 ( unsigned char address );
    void Read_Time();
    void main()
    {
    	Init();
    	DSInit();
    	yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
    	while(1)
    	{
    		Read_Time();
    		yi=shijian[2]/10;er=shijian[2]%10;san=10;
    		si=shijian[1]/10;wu=shijian[1]%10;liu=10;
    		qi=shijian[0]/10;ba=shijian[0]%10;
    		
    		display1(yi,er);
    		display2(san,si);
    		display3(wu,liu);
    		display4(qi,ba);
    	}
    }
    //DS1302初始化
    void DSInit()
    {
    	uchar i;
    	uchar add=0x80;
    	Write_Ds1302(0x8e,0x00);
    	for(i=0;i<7;i++)
    	{
    		Write_Ds1302(add,ds[i]);
    		add=add+2;
    	}
    	Write_Ds1302(0x8e,0x80);
    }
    //将数据存储到指定数组中 
    void Read_Time()
    {
    	uchar i;
    	uchar add=0x81;
    	Write_Ds1302(0x8e,0x00);
    	for(i=0;i<7;i++)
    	{
    		shijian[i]=Read_Ds1302(add);
    		add=add+2;
    	}
    	
    	Write_Ds1302(0x8e,0x80);
    }
    //读取DS1302指定地址中的数据
    unsigned char Read_Ds1302 ( unsigned char address )
    {
     	unsigned char i,temp=0x00;
    	uchar dat_low,dat_high;
     	RST=0;
    	_nop_();
     	SCK=0;
    	_nop_();
     	RST=1;
    	_nop_();
     	Write_Ds1302_Byte(address);
     	for (i=0;i<8;i++) 	
     	{		
    		SCK=0;
    		temp>>=1;	
     		if(SDA)
     		temp|=0x80;	
     		SCK=1;
    	} 
     	RST=0;
    	_nop_();
     	RST=0;
    	SCK=0;
    	_nop_();
    	SCK=1;
    	_nop_();
    	SDA=0;
    	_nop_();
    	SDA=1;
    	_nop_();
    	dat_high=temp/16;
    	dat_low=temp%16;
    	temp=dat_high*10+dat_low;	
    	return (temp);			
    }
    //向DS1302写地址和数据
    void Write_Ds1302( unsigned char address,unsigned char dat )     
    {
    	uchar num;
     	RST=0;
    	_nop_();
     	SCK=0;
    	_nop_();
     	RST=1;	
       	_nop_();  
     	Write_Ds1302_Byte(address);	
    	num=(dat/10<<4)|(dat%10);
     	Write_Ds1302_Byte(num);		
     	RST=0; 
    }
    //向DS1302写数据
    void Write_Ds1302_Byte(unsigned  char temp) 
    {
    	unsigned char i;
    	for (i=0;i<8;i++)     	
    	{ 
    		SCK=0;
    		SDA=temp&0x01;
    		temp>>=1; 
    		SCK=1;
    	}
    }  
    
    void Init()
    {
    	P2=0XA0;
    	P0=0X00;//关闭蜂鸣器,继电器
    	
    	P2=0X80;
    	P0=0XFF;//关闭LED灯
    	
    	P2=0XC0;
    	P0=0XFF;//选择所有数码管
    	P2=0XFF;
    	P0=0XFF;//关闭所有数码管段选
    }
    
    void display1(uchar yi,uchar er)
    {
    		P2=0XC0;//打开位选573   U8
    		P0=0X01;//选择第一个数码管
    		P2=0XFF;//打开段选573   U7
    		P0=tab[yi];
    		Delay1ms();Delay1ms();
    		
    		P2=0XC0;//打开位选573   U8
    		P0=0X02;//选择第二个数码管
    		P2=0XFF;//打开段选573   U7
    		P0=tab[er];
    		Delay1ms();Delay1ms();
    }	
    
    void display2(uchar san,uchar si)
    {
    		P2=0XC0;//打开位选573   U8
    		P0=0X04;//选择第三个数码管
    		P2=0XFF;//打开段选573   U7
    		P0=tab[san];
    		Delay1ms();Delay1ms();
    		
    		P2=0XC0;//打开位选573   U8
    		P0=0X08;//选择第四个数码管
    		P2=0XFF;//打开段选573   U7
    		P0=tab[si];
    		Delay1ms();Delay1ms();
    }
    
    void display3(uchar wu,uchar liu)
    {
    		P2=0XC0;//打开位选573   U8
    		P0=0X10;//选择第一个数码管
    		P2=0XFF;//打开段选573   U7
    		P0=tab[wu];
    		Delay1ms();Delay1ms();
    		
    		P2=0XC0;//打开位选573   U8
    		P0=0X20;//选择第一个数码管
    		P2=0XFF;//打开段选573   U7
    		P0=tab[liu];
    		Delay1ms();Delay1ms();
    }
    
    void display4(uchar qi,uchar ba)
    {
    		P2=0XC0;//打开位选573   U8
    		P0=0X40;//选择第一个数码管
    		P2=0XFF;//打开段选573   U7
    		P0=tab[qi];
    		Delay1ms();Delay1ms();
    		
    		P2=0XC0;//打开位选573   U8
    		P0=0X80;//选择第一个数码管
    		P2=0XFF;//打开段选573   U7
    		P0=tab[ba];
    		Delay1ms();Delay1ms();
    }
    
    void Delay1ms()		//@11.0592MHz
    {
    	unsigned char i, j;
    
    	_nop_();
    	_nop_();
    	_nop_();
    	i = 11;
    	j = 190;
    	do
    	{
    		while (--j);
    	} while (--i);
    }
    
    

     

    展开全文
  • 由于昨天照着手册写了一下DS1302的驱动程序,发现耗时挺多的,并且在考场上不可能一步步去自己写驱动,所以今天看了一下蓝桥杯提供的DS1302官方驱动程序,发现直接引用还是不行的,程序当中有些小问题需要去修改。...

    由于昨天照着手册写了一下DS1302的驱动程序,发现耗时挺多的,并且在考场上不可能一步步去自己写驱动,所以今天看了一下蓝桥杯提供的DS1302官方驱动程序,发现直接引用还是不行的,程序当中有些小问题需要去修改。下面就对那些需要修改的地方做一个总结吧。
    1.在这里插入图片描述
    这段代码不需要什么修改,没啥问题。
    2.在这里插入图片描述
    需要修改的地方已经标出,SD = 0必须得加,否则会错,博主血的教训。。。。

    3.在这里插入图片描述
    由于手册上说明的寄存器的特殊的地方,十位和个位分别存储在高4位和低四位,所以形参dat不能直接传入写字节函数,需要进行一个转换。

    4.在这里插入图片描述同样,由于手册上说明的寄存器的特殊的地方,十位和个位分别存储在高4位和低四位,所以读出来的值不能直接返回,需要进行一个转换。具体如图。

    其他的初始化和完整的读取实施时间就需要自己去写啦。

    展开全文
  • ds1302 linux驱动

    2013-05-14 11:05:10
    linux2.4的DS1302驱动,使用GPIO模拟的I2C。
  • DS1302蓝桥杯官方驱动

    千次阅读 2017-03-19 19:20:41
    DS1302驱动

    DS1302驱动

    ds1302.c

    #include "ds1302.h"
    /********************************************************************/ 
    /*单字节写入一字节数据*/
    void Write_Ds1302_Byte(unsigned char dat) 
    {
    	unsigned char i;
    	SCK = 0;
    	for (i=0;i<8;i++) 
    	{ 
    		if (dat & 0x01) 	// 等价于if((addr & 0x01) ==1) 
    		{
    			SDA_SET;		//#define SDA_SET SDA=1 /*电平置高*/
    		}
    		else 
    		{
    			SDA_CLR;		//#define SDA_CLR SDA=0 /*电平置低*/
    		}		 
    		SCK_SET;
    		SCK_CLR;		
    		dat = dat >> 1; 
    	} 
    }
    /********************************************************************/ 
    /*单字节读出一字节数据*/
    unsigned char Read_Ds1302_Byte(void) 
    {
    	unsigned char i, dat=0;	
    	for (i=0;i<8;i++)
    	{	
    		dat = dat >> 1;
    		if (SDA_R) 	  //等价于if(SDA_R==1)    #define SDA_R SDA /*电平读取*/	
    		{
    			dat |= 0x80;
    		}
    		else 
    		{
    			dat &= 0x7F;
    		}
    		SCK_SET;
    		SCK_CLR;
    	}
    	return dat;
    }
    
    /********************************************************************/ 
    /*向DS1302 单字节写入一字节数据*/
    void Ds1302_Single_Byte_Write(unsigned char addr, unsigned char dat)
    { 
    
    	RST_CLR;			/*RST脚置低,实现DS1302的初始化*/
    	SCK_CLR;			/*SCK脚置低,实现DS1302的初始化*/
    
    	RST_SET;			/*启动DS1302总线,RST=1电平置高 */
    	addr = addr & 0xFE;	 
    	Write_Ds1302_Byte(addr); /*写入目标地址:addr,保证是写操作,写之前将最低位置零*/	
    	Write_Ds1302_Byte(dat);	 /*写入数据:dat*/
    	RST_CLR;				 /*停止DS1302总线*/
    }
    
    /********************************************************************/ 
    /*从DS1302单字节读出一字节数据*/
    unsigned char Ds1302_Single_Byte_Read(unsigned char addr) 
    { 
    	unsigned char temp;
    	RST_CLR;			/*RST脚置低,实现DS1302的初始化*/
    	SCK_CLR;			/*SCK脚置低,实现DS1302的初始化*/
    
    	RST_SET;	/*启动DS1302总线,RST=1电平置高 */	
    	addr = addr | 0x01;	 
    	Write_Ds1302_Byte(addr); /*写入目标地址:addr,保证是读操作,写之前将最低位置高*/
    	temp=Read_Ds1302_Byte(); /*从DS1302中读出一个字节的数据*/		
    	RST_CLR;	/*停止DS1302总线*/
    	return temp;
    }
    ds1302.h

    #ifndef  __DS1302_H__
    #define  __DS1302_H__
    
    #include<reg52.h>
    #include<intrins.h>
    /********************************************************************/ 
    sbit SCK=P1^7;		
    sbit SD=P2^3;		
    sbit RST=P1^3;
    /********************************************************************/ 
    /*复位脚*/
    #define RST_CLR	RST=0	/*电平置低*/
    #define RST_SET	RST=1	/*电平置高*/
    /*双向数据*/
    #define SDA_CLR	SD=0	/*电平置低*/
    #define SDA_SET	SD=1	/*电平置高*/
    #define SDA_R	SD	/*电平读取*/	
    /*时钟信号*/
    #define SCK_CLR	SCK=0	/*时钟信号*/
    #define SCK_SET	SCK=1	/*电平置高*/
    /********************************************************************/ 
    #define ds1302_sec_addr			0x80		//秒数据地址
    #define ds1302_min_addr			0x82		//分数据地址
    #define ds1302_hr_addr			0x84		//时数据地址
    #define ds1302_date_addr		0x86		//日数据地址
    #define ds1302_month_addr		0x88		//月数据地址
    #define ds1302_day_addr			0x8A		//星期数据地址
    #define ds1302_year_addr		0x8C		//年数据地址
    
    #define ds1302_control_addr		0x8Ee		//写保护命令字单元地址
    #define ds1302_charger_addr		0x90 		//涓电流充电命令字地址			 
    #define ds1302_clkburst_addr	0xBE		//日历、时钟突发模式命令字地址
    /********************************************************************/ 
    
    /********************************************************************/ 
    /*单字节写入一字节数据*/
    extern void Write_Ds1302_Byte(unsigned char dat);
    /********************************************************************/ 
    /*单字节读出一字节数据*/
    extern unsigned char Read_Ds1302_Byte(void);
      
    /********************************************************************/ 
    /********************************************************************/ 
    /*向DS1302单字节写入一字节数据*/
    extern void Ds1302_Single_Byte_Write(unsigned char addr, unsigned char dat);
    /********************************************************************/ 
    /*从DS1302单字节读出一字节数据*/
    extern unsigned char Ds1302_Single_Byte_Read(unsigned char addr);
    
    #endif	 
    /********************************************************************/
    //		     	END FILE
    /********************************************************************/
    



    展开全文
  • 本工程使用了考场所提供的DS1302的底层驱动代码,编写了时钟芯片DS1302的时间显示程序,使用底层驱动代码给程序编写带来了很大便利,但同时官方所给的底层驱动代码是为传统8051单片机所编写的,因此我们需要对其进行...
  • ds1302时钟驱动程序,时间用数码管显示,适合初学单片机的人员参考
  • 安信可esp8266 ,ds1302时钟驱动封装,c和h文件,直接调用即可
  • ds1302驱动

    2011-12-24 16:17:44
    ds1302驱动,可以根据说明书学习,适合初学者使用。
  • DS1302驱动程序,通过测试,可直接移植到项目工程中去,供单片机爱好者学习参考
  • DS1302驱动程序,通过测试,可直接用于工程项目,供单片机爱好者学习参考。
  • DSP2812接DS1302驱动

    2014-12-15 21:39:58
    DSP2812接实时时钟芯片DS1302驱动程序,已经过验证。
  • DS1302驱动程序

    2011-09-27 11:27:05
    时钟芯片DS1302驱动程序,已经测试,可以直接使用
  • MSP430 DS1302驱动

    2017-03-18 23:32:53
    MSP430 DS1302驱动
  • DS1302驱动

    2018-07-14 06:20:31
    // DS1302.c#include &lt;reg52.h&gt;#include &lt;intrins.h&gt;#include "DS1302.h"#define NOP(); _nop_();_nop_();sbit DS1302_Sclk=P2^0;sbit DS1302_IO=P2^1;sbit DS1302_CE=P2^2;/...

    // DS1302.c

    #include <reg52.h>

    #include <intrins.h>
    #include "DS1302.h"
    #define NOP(); _nop_();_nop_();
    sbit DS1302_Sclk=P2^0;
    sbit DS1302_IO=P2^1;
    sbit DS1302_CE=P2^2;
    /**********************************************************
     写一个字节
    ***********************************************************/
    static void Ds1302_WriteByte(uchar temp)
    {
    uchar i;
    for(i=0;i<8;i++)
    {
    _nop_();
    DS1302_Sclk=0;
    DS1302_IO=temp&0x01;
    temp>>=1;
    DS1302_Sclk=1;
    _nop_();
    }
    }
    /****************************************************************
    指定地址写数据
    *****************************************************************/
    void Write_Ds1302(uchar address,uchar dat)
    {
    DS1302_CE=0;
    NOP();
    DS1302_Sclk=0;
    NOP();
    DS1302_CE=1;
    NOP();
    Ds1302_WriteByte(address);
    Ds1302_WriteByte(dat);
    NOP();
    DS1302_CE=0;
    }
    /************************************************************
    指定地址读数据
    *************************************************************/
    uchar Read_Ds1302(uchar address)
    {
    uchar i,temp=0x00;
    DS1302_CE=0;
    NOP();
    DS1302_Sclk=0;
    NOP();
    DS1302_CE=1;
    NOP();
    Ds1302_WriteByte(address);
    for(i=0;i<8;i++)
    {
    if(DS1302_IO)
    temp|=0x80;
    DS1302_Sclk=0;
    temp>>=1;
    NOP();
    DS1302_Sclk=1;
    NOP();
    }
      NOP();
        DS1302_Sclk=0;
      NOP();
      DS1302_CE=0;
    return temp/16*10+temp%16;
    }
    /************************************************************
    设置DS1302
    *************************************************************/
    void Set_Ds1302(uchar address ,uchar dat)
    {
    uchar temp;

            temp=dat/10;
    dat=dat%10;
    temp=dat+temp*16;
    Write_Ds1302(0x8E,0X00);
    Write_Ds1302(address,temp);
    Write_Ds1302(0x8E,0X080);
    }
    /****************************************************************/
    void Set_Ds1302_ram(uchar address ,uchar dat)
    {
    uchar temp;
        temp=dat/10;
    dat=dat%10;
    temp=dat+temp*16;
    Write_Ds1302(0x8E,0X00);
    Write_Ds1302(address,temp);
    Write_Ds1302(0x8E,0X080);

    }  


    //DS1302.h

    #ifndef _DS1302_H

    #define _DS1302_H

    #define uchar unsigned char
    #define uint unsigned int

    void Write_Ds1302(unsigned char address,unsigned char dat);  
    unsigned char Read_Ds1302(unsigned char address);  
    void Set_Ds1302(unsigned char address ,unsigned char dat); 
    void Set_Ds1302_ram(unsigned char address ,unsigned char dat);
    #endif


    展开全文
  • DS1302驱动源码

    2013-10-11 23:16:16
    自己编写经过验证的DS1302驱动源代码
  • ds1302驱动函数

    2011-10-04 11:00:02
    时钟芯片 ds1302 驱动 已经测试过,可直接使用
  • 51单片机DS1302时钟驱动程序,仅有.h文件,无.c文件 /************************************************************************************* ************** ***********************************************...
  • ds1302驱动程序

    2012-01-12 19:14:15
    ds1302驱动程序,供单片机使用,C语言编辑。提供8位数码管直接显示,其它显示请自己根据驱动提供的数组编写。添加.c文件到工程,同时包含.h文件即可。部分说明请看头文件的注释
  • ds1302驱动程序,包括读日期时间星期的函数,和详细的注释。
  • 时钟芯片DS1302驱动

    2018-06-01 17:29:49
    时钟芯片DS1302驱动,包括写,读日期/时间信息,可以移植到各个平台!
  • STM32 DS1302驱动

    2013-01-15 15:24:58
    STM32 DS1302 RTC 时钟 GPIO STM32f103软仿驱动时钟芯片DS1302.
  • DS1302?C语言驱动程序--LCD1602?显示 ? ? //DS1302 RTC drive program //for 51 mcu with LCD1602 display //designed by zhaoliang //2005-6-16 18:30 i nclude <reg51.h> i nclude <intrins.h> //lcd part /*/ #...
  • DS1302驱动代码

    千次阅读 2018-12-09 08:57:41
    DS1302时钟基础使用(含代码) 了解其管脚 X1 X2 32.768KHz 晶振管脚 GND 地 RST 复位脚 I/O 数据输入/输出引脚,具有三态 SCLK 串行时钟 Vcc1,Vcc2(备用电源供电) 电源供电管脚 DS1302 的寄存器及片内RAM 控制...
  • DS1302的使用方式 及 51单片机连接DS1302驱动程序

    千次阅读 多人点赞 2020-08-26 23:01:03
    DS1302充电计时芯片包含一个实时时钟/日历和31个字节的静态RAW。它通过简单的串行接口与微处理器通信。实时时钟/日历提供秒、分钟、小时、日、日期、月份和年份信息。月底的日期自动调整,少于31天,包括闰年的校正...
  • DS1302驱动代码,根据手册写的,亲测可用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,466
精华内容 17,386
关键字:

ds1302官方驱动