精华内容
下载资源
问答
  • 【蓝桥杯单片机(9)】DS1302时钟芯片学习笔记
    2022-01-29 01:50:00

    备赛目录

    1、DS1302简介

    1.1功能

    DS1302滴充电计时芯片包含实时时钟/日历和31字节的静态RAM。它通过一个简单的串行接口与一个微处理器进行通信。实时时钟/日历提供秒、分钟、小时、天、日期、月和年的信息。月底日期会自动对不足31天的月份进行调整,包括对闰年的修正。该时钟以24小时或12小时的形式运行,并具有AM/PM指示器。

    1.2通信方式

    通过使用同步串行通信,简化了将DS1302与微处理器的接口。只需要三根线就可以与时钟/RAM通信:CE(RST)、I/O(SDA)和SCLK(SCK)。数据可以在一次或多达31字

    更多相关内容
  • 时钟芯片是时钟一个很重要的部分。时钟芯片大多都是由美国DALAS公司生产的,有着低电流充电的作用,并且低消耗电量。下面我们分享下时钟芯片的接口,时钟芯片DS1302原理
  • DS1302时钟芯片详解

    2020-08-02 16:23:05
    本文是对DS1302时钟芯片的详细描述。
  • DS1302时钟全套资料

    2019-01-09 14:26:21
    电子时钟DS1302的全套方案,包含pcb,原理图和源代码;
  • DS1302时钟模块原理

    2018-03-31 22:41:50
    DS1302,,,,时钟模块原理图,,,,,,,,,,,,,,,
  • 时钟芯片DS1302原理及使用

    万次阅读 多人点赞 2019-12-14 23:26:12
    DS1302时钟芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302芯片包含一个用于存储实时时钟/日历的 31 字节...
    一.描述

    DS1302时钟芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302芯片包含一个用于存储实时时钟/日历的 31 字节的静态 RAM,可通过简单的串行接口与微处理器通讯,将当前的是时钟存于RAM。DS1302芯片对于少于 31 天的月份月末会自动调整,并会自动对闰年进行校正。由于有一个 AM/PM 指示器,时钟可以工作在 12 小时制或者 24小时制。

    二.芯片参数
    1.芯片特点
    • 实时时钟计算年、月、日、时、分、秒、星 期,直到 2100 年,并有闰年调节功能
    • 31 x 8 位 通用暂存 RAM
    • 串行输入输出,使管脚数最少
    • 2.0V 至 5.5V 宽电压范围操作
    • 在 2.0V 时工作电流小于 300nA
    • 读写时钟或 RAM 数据时有单字节或多字节(脉冲串模式)数据传送方式
    • 8 管脚 DIP 封装或可选的 8 管脚表面安装 SO 封装
    • 简单的 3 线接口
    • 与 TTL 兼容 (VCC = 5V)
    • 可选的工业温度范围:-40°C to +85°C
    2.引脚说明

    在这里插入图片描述
    DS1302采用的是三线接口的双向数据通信接口,RST是片引脚,低电平有效;SCLK是时钟芯片,为通信提供时钟源;I/O为数据输入输出引脚,用于传输及接收数据;
    DS1302还采用了双电源供电模式,VCC1 连接到备用电源,在VCC2主电源失效时保持时间和日期数据.

    三.参考电路

    在这里插入图片描述
    DS1302芯片基本电路如上图,其中Y2为32.768k外部晶振,为芯片提供时钟源;P2为备用电池,以保证在主电源掉电后,芯片仍可继续运行;D1为二极管,保证电压的单向导通,防止主电源电压过高烧坏备用电池;R6为上拉电阻,增强信号传输的稳定性。

    四.控制程序
    1.时钟数据的读写地址

    在这里插入图片描述
    如上图,为DS1302芯片的时钟数据的读和写的地址,也就是说要实现对芯片控制,就是往这些地址上写入或读出数据。其中:
    读地址为0x81(秒), 0x83(分), 0x85(时), 0x87(日), 0x89(月), 0x8b(星期), 0x8d(年);
    写地址为0x80(秒), 0x82(分), 0x84(时), 0x86(日), 0x88(月), 0x8a(星期), 0x8c(年)

    2.控制时序

    DS1302控制软件最基本的操作为写函数和读函数,其次就是实现初始化函数。

    (1)读时序

    在这里插入图片描述

    /*******************************************************************************
    * 函数功能		   : 读取一个地址的数据
    *******************************************************************************/
    uchar Ds1302Read(uchar addr)
    {
    	uchar n,dat,dat1;
    	RST = 0;
    	_nop_();
    
    	SCLK = 0;//先将SCLK置低电平。
    	_nop_();
    	RST = 1;//然后将RST(CE)置高电平。
    	_nop_();
    
    	for(n=0; n<8; n++)//开始传送八位地址命令
    	{
    		DSIO = addr & 0x01;//数据从低位开始传送
    		addr >>= 1;
    		SCLK = 1;//数据在上升沿时,DS1302读取数据
    		_nop_();
    		SCLK = 0;//DS1302下降沿时,放置数据
    		_nop_();
    	}
    	_nop_();
    	for(n=0; n<8; n++)//读取8位数据
    	{
    		dat1 = DSIO;//从最低位开始接收
    		dat = (dat>>1) | (dat1<<7);
    		SCLK = 1;
    		_nop_();
    		SCLK = 0;//DS1302下降沿时,放置数据
    		_nop_();
    	}
    
    	RST = 0;
    	_nop_();	//以下为DS1302复位的稳定时间,必须的。
    	SCLK = 1;
    	_nop_();
    	DSIO = 0;
    	_nop_();
    	DSIO = 1;
    	_nop_();
    	return dat;	
    }
    
    (2)写时序

    在这里插入图片描述

    /*******************************************************************************
    * 函数功能		   : 向DS1302命令(地址+数据)
    *******************************************************************************/
    void Ds1302Write(uchar addr, uchar dat)
    {
    	uchar n;
    	RST = 0;
    	_nop_();
    	SCLK = 0;//先将SCLK置低电平。
    	_nop_();
    	RST = 1; //然后将RST(CE)置高电平。
    	_nop_();
    
    	for (n=0; n<8; n++)//开始传送八位地址命令
    	{
    		DSIO = addr & 0x01;//数据从低位开始传送
    		addr >>= 1;
    		SCLK = 1;//数据在上升沿时,DS1302读取数据
    		_nop_();
    		SCLK = 0;
    		_nop_();
    	}
    	for (n=0; n<8; n++)//写入8位数据
    	{
    		DSIO = dat & 0x01;
    		dat >>= 1;
    		SCLK = 1;//数据在上升沿时,DS1302读取数据
    		_nop_();
    		SCLK = 0;
    		_nop_();	
    	}	
    		 
    	RST = 0;//传送数据结束
    	_nop_();
    }
    
    (3)初始化
    /*******************************************************************************
    * 函数功能		   : 初始化DS1302.
    *******************************************************************************/
    void Ds1302Init()
    {
    	uchar n;
    	Ds1302Write(0x8E,0X00);		 //禁止写保护,就是关闭写保护功能
    	for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年
    	{
    		Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);	
    	}
    	Ds1302Write(0x8E,0x80);		 //打开写保护功能
    }
    
    3.参考例程

    实现了DS1302的驱动程序,接下来就可以实现DS1302的报时功能了。

    //---DS1302写入和读取时分秒的地址命令---//
    //---秒分时日月周年 最低位读写位;-------//
    uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; 
    uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
    
    //---DS1302时钟初始化2013年1月1日星期二12点00分00秒。---//
    //---存储顺序是秒分时日月周年,存储格式是用BCD码---//
    uchar TIME[7] = {0, 0, 0x12, 0x01, 0x01, 0x02, 0x13};
    
    /*******************************************************************************
    * 函数功能		   : 读取时钟信息
    *******************************************************************************/
    void Ds1302ReadTime()
    {
    	uchar n;
    	for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年
    	{
    		TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
    	}	
    }
    
    void main()
    {
    	LcdInit();
    	Ds1302Init();
    	while(1)
    	{	
    		Ds1302ReadTime();       //读取此时的时间
    		LcdDisplay();	               //显示时间
    	}
    	
    }
    

    如需DS1302相关资料及例程, 请关注公众号,首页回复DS1302获取资料
    在这里插入图片描述

    展开全文
  • 时钟芯片DS1302原理图: 比赛中,官方提供的资源包里会有头文件ds1302.h和源代码ds1302.c。同样是把头文件和源代码添加到工程文件夹当中,然后进行修改即可使用。 代码解析: 修改的地方:在ds1302.c源代码里的...

    时钟芯片DS1302原理图:

     比赛中,官方提供的资源包里会有头文件ds1302.h和源代码ds1302.c。同样是把头文件和源代码添加到工程文件夹当中,然后进行修改即可使用。

    代码解析:

    修改的地方:在ds1302.c源代码里的延时函数后面增加8到12倍的延时,下面是修改完成之后的代码。

    DS1302.c

     /*
      程序说明: 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复位												
    
    unsigned char shijian[]={50,59,23,0,0,0,0};
    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_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
     	SCK=0;	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
     	RST=1; 	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_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_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
     	SCK=0;	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
     	RST=1;	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
     	Write_Ds1302(address);
     	for (i=0;i<8;i++)
    {
    		SCK=0;
    		temp>>=1;
     		if(SDA)
     		temp|=0x80;
     		SCK=1;
    }
     	RST=0;	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
     	SCK=0;	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
    	SCK=1;	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
    	SDA=0;	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
    	SDA=1;	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
    	return (temp);
    }
    

    添加的代码:

     

    void DS_init(void)       //初始化,要在头文件里面进行定义
    {
    	unsigned char i,add;
    	add=0x80;
    	Write_Ds1302_Byte(0x8e,0x00);
    	for(i=0;i<7;i++)
    	{
    		Write_Ds1302_Byte(add,(shijian[i]/10<<4)|(shijian[i]%10));
    		add=add+2;
    	}
    	Write_Ds1302_Byte(0x8e,0x80);
    }
    void DS_get(void)  //要在头文件里面进行定义
    {
    	unsigned char i,add,dat;
    	add=0x81;
    	for(i=0;i<7;i++)
    	{
    		dat=Read_Ds1302_Byte(add);
    		shijian[i]=dat/16*10+dat%16;
    		add=add+2;
    	}
    }

    DS1302.h

    #ifndef __DS1302_H
    #define __DS1302_H
    
    void Write_Ds1302(unsigned char temp);
    void Write_Ds1302_Byte( unsigned char address,unsigned char dat );
    unsigned char Read_Ds1302_Byte( unsigned char address );
    void DS_init(void);        
    void DS_get(void);         
    #endif
    

    实现的功能程序:

    #include <STC15F2K60S2.H>
    #include <intrins.h>
    
    #define uchar unsigned char
    #define uint unsigned int
    	
    uchar SMG_duanma[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xFF};
    uchar yi,er,san,si,wu,liu,qi,ba;
    
    unsigned char shijian[7];
    void Allinit(void);
    void Delayms(int ms);
    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 DS1302_Init(void);
    void DS1302_Get(void);
    
    void main(void)
    {
    	 Allinit();
    	DS1302_Init();
    //	yi=2;er=0;san=2;si=2;wu=0;liu=3;qi=2;ba=0;
    	while(1)
    	{
    		DS1302_Get();
    		yi=shijian[2]/10; er=shijian[2]%10;san=21;
    		si=shijian[1]/10;wu=shijian[1]%10;liu=21;
    		qi=shijian[0]/10;ba=shijian[0]%10;
    		
    		Display1(yi,er);
    		Display2(san,si);
    		Display3(wu,liu);
    		Display4(qi,ba);
    	}
    }
    void Display1(uchar yi,uchar er)
    {
    	P2=0xC0;
    	P0=0x01;
    	P2=0xE0;
    	P0=SMG_duanma[yi];
    	Delayms(1);
    	
    	P2=0xC0;
    	P0=0x02;
    	P2=0xE0;
    	P0=SMG_duanma[er];
    	Delayms(1);
    }
    void Display2(uchar san,uchar si)
    {
    	P2=0xC0;
    	P0=0x04;
    	P2=0xE0;
    	P0=SMG_duanma[san];
    	Delayms(1);
    	
    	P2=0xC0;
    	P0=0x08;
    	P2=0xE0;
    	P0=SMG_duanma[si];
    	Delayms(1);
    }
    void Display3(uchar wu,uchar liu)
    {
    	P2=0xC0;
    	P0=0x10;
    	P2=0xE0;
    	P0=SMG_duanma[wu];
    	Delayms(1);
    	
    	P2=0xC0;
    	P0=0x20;
    	P2=0xE0;
    	P0=SMG_duanma[liu];
    	Delayms(1);
    }
    void Display4(uchar qi,uchar ba)
    {
    	P2=0xC0;
    	P0=0x40;
    	P2=0xE0;
    	P0=SMG_duanma[qi];
    	Delayms(1);
    	
    	P2=0xC0;
    	P0=0x80;
    	P2=0xE0;
    	P0=SMG_duanma[ba];
    	Delayms(1);
    }
    void Allinit(void)
    {
    	P2=0xA0;
    	P0=0x00;
    	
    	P2=0xC0;
    	P0=0xFF;
    	P2=0xE0;
    	P0=0xFF;
    	
    	P2=0x80;
    	P0=0xFF;
    }
    void Delayms(int ms)
    {
    	int i,j;
    	for(i=0;i<ms;i++)
    		for(j=845;j>0;j--);
    }

     

    展开全文
  • DS1302 时钟芯片原理与应用,有详细的汇编源程序和C语言源程序,还有关于DS1302芯片的详细介绍,以及基于DS1302的年历设计,是本人长时间搜集得到的,来之不易,好好利用!
  • 【嵌入式模块】DS1302 时钟定时芯片

    千次阅读 2022-01-23 12:12:27
      DS1302时钟芯片是DALLAS 公司推出的涓流充电时钟芯片,是基于上一代芯片DS1202且与DS1202相兼容。首先来看看它的特性。   总结来说: 内部含有一个实时时钟/日历和31字节的静态RAM。 通过串行接口与单片机...

    参考链接

    CSDN-1
    CSDN-2
    博客园

    概述

      DS1302时钟芯片是DALLAS 公司推出的涓流充电时钟芯片,是基于上一代芯片DS1202且与DS1202相兼容。首先来看看它的特性。
    在这里插入图片描述
      总结来说:

    • 内部含有一个实时时钟/日历31字节的静态RAM
    • 通过串行接口与单片机通信,使用引脚较少。
    • 实时时钟/日历可以提供秒、分、时、日、周、月、年等信息,且每月的天数和闰年的天数都可以自动调整。时钟可以设置为24或12小时格式。【牛批!】
    • 具有双电源,一个主,一个备用(这也是相比于DS1202的改进之处),据说功耗很低。

    引脚与内部结构

    引脚定义

    在这里插入图片描述
      其中CE引脚有一些也被称为RST复位引脚,但功能是一样的。

    在这里插入图片描述

    常用电路

    在这里插入图片描述
      一般如果不需要备用电源VCC1可以不接。

    内部寄存器及RAM分布

      前面提到,DS1302中,有寄存器(共12个,其中7个与时钟有关)和31个字节的RAM,它们的地址及内部数据对应如下表所示
    在这里插入图片描述

    • 前两列代表寄存器读和写时的命令字,相当于是一个地址标识【后面有详解】,BIT7-BIT0为寄存器各位的内容及其代表的含义,最后一列为寄存器中具有数值含义的值的范围。
    • 10 Seconds代表秒的十位数,其他类比。(所以这些用来表示时钟的寄存器属于BCD码
    • 第一个秒寄存器的CH位为0时正常工作,为1时时钟停振,进入低功耗状态。
    • 小时寄存器 BIT 7位用来选择是12小时制还是24小时制。BIT7 = 0时为24小时制,此时BIT5、BIT4组成小时的十位;当BIT7=1时,为12小时制,BIT4为小时的十位,BIT5指示AM还是PM(0为AM,上午;1为PM,下午)
    • 倒数第二个寄存器为写保护寄存器,其中的WP位为1时,有写保护,DS1302只能读不能写。因此在对DS1302写入数据时,要把WP位清零。
    • 最后一个寄存器为涓细电流充电设置寄存器,当主电源掉电时,DS1302会马上调用备用电源供电,该寄存器就是设置备用电源的。只有当四个TCS位为1010时,才会启动涓细电流充电。而两个DS位两个RS位是用来设置充电的二极管数量和电阻阻值的,具体翻阅英文手册。

    RAM
      和寄存器一样,31个字节的RAM也有它独立的读写地址,如下图所示。
    在这里插入图片描述

    工作时序

      了解完了内部结构,接下来就是它的工作时序了,可以说是使用单片机控制最为重要的一环。
      根据DS1302的概述,我们可以总结出它的使用方法:将各种数据写入DS1302的寄存器,以设置它当前的时间以及格式。然后DS1302会按照设置情况运转,如果需要制作电子钟,就用单片机将其寄存器内的数据读出显示即可。
      因此关键在于写入数据以及读出数据两个过程。其时序图如下图所示。
    在这里插入图片描述

    • 从图中我们可以看出,每次写入/读出数据,都必须先写入一个命令字节,其命令字节在内部寄存器中已有完整记录。而且每次只能写入/读出一个字节,即单字节写入/读出。
    • 在写入命令字时,我们可以发现都是上升沿时IO引脚写入数据,在数据段写入时,是下降沿IO引脚锁存数据;数据段读入数据时,是上升沿锁存数据。

    扩展:其他寄存器和RAM
      在DS1302中,还有一个寄存器是用来设置时钟脉冲串的,其地址为BFH(读),BEH(写),设置该寄存器时,可以实现寄存器数据的连续读写,即写入一个命令字,之后连续写入多个字节数据。和单字节写入正好相对,属于另一种写入方式,但一般很少用。还有一个是RAM读写脉冲串设置,功能和时钟脉冲串设置寄存器一样,地址是FFH(读),FEH(写),设置该字节,也可以实现RAM的多字节连续写入。

    例程(51单片机)

    #include "reg52.h"
    #include "intrins.h"
    typedef unsigned char uchar;
    typedef unsigned int uint;   //类型定义
    //---DS1302写入和读取时分秒的地址命令---//
    //---秒分时日月周年 最低位读写位;-------//
    uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; 
    uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
    
    //---DS1302时钟初始化2016年5月7日星期六12点00分00秒。---//
    //---存储顺序是秒分时日月周年,存储格式是用BCD码---//
    uchar TIME[7] = {0, 0, 0x12, 0x07, 0x05, 0x06, 0x16};
    
    /*******************************************************************************
    * 函 数 名         : Ds1302Write
    * 函数功能		   : 向DS1302命令(地址+数据)
    * 输    入         : addr,dat
    * 输    出         : 无
    *******************************************************************************/
    void Ds1302Write(uchar addr, uchar dat)
    {
    	uchar n;
    	RST = 0;
    	_nop_();
    
    	SCLK = 0;//先将SCLK置低电平。
    	_nop_();
    	RST = 1; //然后将RST(CE)置高电平。
    	_nop_();
    
    	for (n=0; n<8; n++)//开始传送八位地址命令
    	{
    		DSIO = addr & 0x01;//数据从低位开始传送
    		addr >>= 1;
    		SCLK = 1;//数据在上升沿时,DS1302读取数据
    		_nop_();
    		SCLK = 0;
    		_nop_();
    	}
    	for (n=0; n<8; n++)//写入8位数据
    	{
    		DSIO = dat & 0x01;
    		dat >>= 1;
    		SCLK = 1;//数据在上升沿时,DS1302读取数据
    		_nop_();
    		SCLK = 0;
    		_nop_();	
    	}	
    		 
    	RST = 0;//传送数据结束
    	_nop_();
    }
    
    /*******************************************************************************
    * 函 数 名         : Ds1302Read
    * 函数功能		   : 读取一个地址的数据
    * 输    入         : addr
    * 输    出         : dat
    *******************************************************************************/
    uchar Ds1302Read(uchar addr)
    {
    	uchar n,dat,dat1;
    	RST = 0;
    	_nop_();
    
    	SCLK = 0;//先将SCLK置低电平。
    	_nop_();
    	RST = 1;//然后将RST(CE)置高电平。
    	_nop_();
    
    	for(n=0; n<8; n++)//开始传送八位地址命令
    	{
    		DSIO = addr & 0x01;//数据从低位开始传送
    		addr >>= 1;
    		SCLK = 1;//数据在上升沿时,DS1302读取数据
    		_nop_();
    		SCLK = 0;//DS1302下降沿时,放置数据
    		_nop_();
    	}
    	_nop_();
    	for(n=0; n<8; n++)//读取8位数据
    	{
    		dat1 = DSIO;//从最低位开始接收
    		dat = (dat>>1) | (dat1<<7);
    		SCLK = 1;
    		_nop_();
    		SCLK = 0;//DS1302下降沿时,放置数据
    		_nop_();
    	}
    
    	RST = 0;
    	_nop_();	//以下为DS1302复位的稳定时间,必须的。
    	SCLK = 1;
    	_nop_();
    	DSIO = 0;
    	_nop_();
    	DSIO = 1;
    	_nop_();
    	return dat;	
    }
    
    /*******************************************************************************
    * 函 数 名         : Ds1302Init
    * 函数功能		   : 初始化DS1302.
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void Ds1302Init()
    {
    	uchar n;
    	Ds1302Write(0x8E,0X00);		 //禁止写保护,就是关闭写保护功能
    	for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年
    	{
    		Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);	
    	}
    	Ds1302Write(0x8E,0x80);		 //打开写保护功能
    }
    
    /*******************************************************************************
    * 函 数 名         : Ds1302ReadTime
    * 函数功能		   : 读取时钟信息
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void Ds1302ReadTime()
    {
    	uchar n;
    	for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年
    	{
    		TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
    	}
    }
    
    

    注意时钟引脚上升沿和下降沿的设定

    展开全文
  • } #ifndef __DS1302_H #define __DS1302_H void Write_Ds1302(unsigned char temp); void Write_Ds1302_Byte( unsigned char address,unsigned char dat ); unsigned char Read_Ds1302_Byte( unsigned char address...
  • 51单片机-DS1302时钟芯片(自己理解的

    万次阅读 多人点赞 2018-03-16 14:32:42
    前言 小编在校工作室无聊,参加了篮桥杯中的51单片机,看到资料的时候,那个写法,都是大神写法,主要我是看不懂啊,幸好...(大神忽略这文章)给大家看一个截图:以上截图只是让你明白 时钟芯片只有三个引脚操作...
  • 一看就会!DS1302实时时钟原理和程序

    千次阅读 多人点赞 2020-05-11 01:31:00
    DS1302是一种串行接口的实时时钟,内部有可编程的日历时钟和31个字节的静态RAM,可以自动进行闰年补偿 工作电压范围宽(2.5V~5.5V),还有对备用电池进行涓流充电功能,可有效延长备用电池的使用寿命 DS1302用于数据...
  • STM32与DS1302设计时钟芯片,超详细

    万次阅读 多人点赞 2017-12-19 16:08:51
    DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数...
  • 每个程序的运行都需要频率这个东西来恒量,所以我们就会需要用到时钟芯片,它才会产生时钟频率。时钟芯片是日常生活中应用最为广泛的消费类电子产品之一。它为人们提供精确的实时时间,可以对年、月、日、周日、时、...
  • DS1307时钟模块 芯片资料,原理图,arduino例程代码.rar
  • DS1302实时时钟 芯片原理图: 引脚图: 需要注意的是,VCC1跟VCC2都外接了电容,只是容量不一样,同常备用电源VCC2的电容值是VCC1电容值的100倍,这也不难理解,如果断电,VCC2将能够提供较长一段时间的电力。 VCC...
  • 通过向寄存器写入命令字实现对DS1302操作。 设置秒寄存器的初始值,需要先写入命令字80H,然后再向秒寄存器写入初始值; 读出某时刻秒值,需要先写入命令字81H,然后再从秒寄存器读取秒值。
  • 51单片机结合DS1302关于Proteus使用,在LCD1602显示当前时间
  • 原理图上的DS1302 按键在上一讲讲过了 LCD1602的代码以后再写 下面展示一些 内联代码片。 main.c #include<STC15F2K60S2.H> #include "DS1302.h" #include "LCD1602.h" #include "Key.h" #include "Timer0.h...
  • 辉光管时钟diy全套开源资料 PCB 源码 51单片机 STC89C52 DS1302时钟芯片 IN14辉光管 辉光管时钟全套开源资料 PCB 源码 51单片机 STC89C52 DS1302时钟芯片 IN14辉光管 【舸轮综合船舶工作室】出品 欢迎关注b站up主:...
  • 该文档包括原理图、源代码,系统的介绍了51单片机和DS1302的应用,显示方式为4位共阴时钟数码管,具有调时功能,原理图和源代码都已验证是可用的。
  • 本小节介绍的实时时钟芯片DS1302,它是一款具有涓细(细小)电流充电能力的低功耗实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302采用串行数据传输,可为掉电保护电源...
  • 该文档包括原理图、源代码,系统的介绍了51单片机和DS1302的应用,显示方式为4位共阴时钟数码管,具有调时功能,原理图和源代码都已验证是可用的。E:\Demo\Keil3\IS EB51M V100 DEMO\ 12Hf i\ds1302.csbit ntds p3 3...
  • 绍了美国DALLAS公司推出的低功耗时钟芯片DS1302的结构和工作原理及其在测量系统中的应用。它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302用于数据记录,特别是对某些具有特殊意义的...
  • DS1302是一种串行接口的实时时钟,高性能、低功耗,内部有可编程的日历时钟和31个字节的静态RAM,可以自动进行闰年补偿 工作电压范围宽(2.5V~5.5V),还有对备用电池进行涓流充电功能,可有效延长备用电池的使用...
  • 51单片机~DS1302时钟 (一)说明: (二)SPI总线原理: (三)日历时钟寄存器: 慢充电: BCD码:
  • ds1302时钟芯片资料

    2010-05-26 23:58:09
    资料有ds1302原理介绍,还有部分功能说明
  •  ---Dallas半导体公司的DS1302涓流充电时钟芯片是一个可编程3线串行接口时钟芯片,可用超级电容或可充电电池备份系统的时间和日期,还提供31字节的非易失SRAM用于数据存储。由DS1302和超级电容构成的电源备份电路如...
  • * 通过本例程了解 DS1302时钟芯片的基本原理和使用 ,理解并掌握DS1302时钟芯片 * * 驱动程序的编写以及实现数字字符在数码管中的显示。 * * *************************************************************...
  • 51单片机--时钟芯片ds1302

    千次阅读 2021-09-23 13:23:14
    1.ds1302的性能指标 1)可以计算2100年之前的秒、分、时、日、星期、月、年,并且可以调整闰年。 2)内部有31个字节静态RAM,供用户访问 3)串行数据传送方式(SPI3线接口) 4)工作电压:2.0~5.5v 5) 工作电流:2v时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,089
精华内容 1,235
关键字:

ds1302时钟芯片工作原理