IO口实时时钟芯片DS1302的应用实例
时钟芯片DS1302的用法

单片机玩到此时,很想玩TFT真彩屏,但如果不玩一玩汉显字符液晶屏,就总觉得少了些什么,说实话,我对时钟制作并不很感兴趣,因为家里走针的、蹦字的计时器、定时器大小有七八个,还不算手机和电脑的时钟,而要想玩汉显屏,则做时钟算是最合适的了,也难怪杜洋老师会在这上下功夫,毕竟没有那家公司会让咱初学者去搞工控或商品。
前些时,在网上淘了一只LCD-12864模块,已经点亮并通过了简单的测试,准备做杜洋的时钟,准备技术资料时,在网上找到了一篇关于时钟芯片DS1302的应用文章,觉得不错,转帖于此以资共享。
时钟芯片DS1302可靠起振的方法作者:不详出处:不详DS1302是Dallas公司生产的一种实时时钟芯片。
它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。
另外,它还能提供31字节的用于高速数据暂存的RAM。
鉴于上述特点,DS1302已在许多单片机系统中得到应用,为系统提供所需的实时时钟信息。
一、 DS1302的主要特性1. 引脚排列图1 DS1302引脚排列图(见附图)DS1302的引脚排列如图1所示,各引脚的功能如下:X1,X2——32768Hz晶振引脚端; RST——复位端; I/O——数据输入/输出端;SCLK——串行时钟端; GND——地; VCC2,VCC1——主电源与后备电源引脚端。
2. 主要功能: DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器、实时时钟电路以及用于高速暂存的31字节RAM。
DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。
其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。
ds1302用法

ds1302用法时钟ic_ds1302的应用之一……基础知识2021-11-0613:09在网上看了很久,发现初学者最有兴趣的就是ds1302时钟电路,也很自然,它是个做出来就让你觉得最实用的电路了,但实际上制做上并不简单,首先你要让你的显示部分(不管是数码管还是lcd)调试通过。
然后把ds1302接好,调试正确了才能在成功显示时间和日期。
下面我们就来说说ds1302的用法。
ds1302的图如下:ds1302就是美国dallas公司面世的一种高性能、低功耗的实时时钟芯片,额外31字节静态ram,使用spi三线USB与cpu展开同步通信,并可以使用突发性方式一次传输多个字节的时钟信号和ram数据。
实时时钟可以提供更多秒、分后、时、日、星期、月和年,一个月大与31天时可以自动调整,且具备闰年补偿功能。
工作电压长约2.5~5.5v。
使用双电源供电(主电源和水泵电源),可以设置水泵电源电池方式,提供更多了对后背电源展开涓细电流电池的能力。
下面就是标准的接线电路图:各引脚功能如下:插槽号名称功能①vcc2主电源②、③x1,x2接32768hz晶振④gnd地线⑤rst复位⑥i/0数据输入输出⑦sclk串行时钟⑧vccl后备电源ds1302有关日历、时间的寄存器共计12个,其中存有7个寄存器(念时81h~8dh,写下时80h~8ch)就是放置秒、分后,小时、日、月、年、周数据的,放置的数据格式为bcd码形式它的内部时间寄存器如下:这张表呢是ds1302内部的7个与时间、日期有关的寄存器图和一个写保护寄存器,我们要做的就是将初始设置的时间、日期数据写入这几个寄存器,然后再不断地读取这几个寄存器来获取实时时间和日期。
这几个寄存器的说明如下:1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(ch)。
当起始上电时该边线为1,时钟振荡器暂停,ds1302处在低功耗状态;只有将秒寄存器的该边线重写为0时,时钟就可以开始运行。
DS1302使用手册

S ODS1302 涓流充电时钟保持芯片的原理与应用摘要 本文概括介绍了 DS1302 时钟芯片的特点和基本组成 通过实例详细说明了有关功能的应用软件 关于 DS1302 各寄存器的详细位控功能请参考 D ALLAS 达拉斯公司的相应产品资料概述DS 1302 是 D ALLAS 公司推出的涓流充电时钟芯片 内含有一个实时时钟/日历和31 字节静态 R AM 通过简 单的串行接口与单片机进行通信 实时时钟/日历电路提供秒 分 时 日 日期 月 年的信息 每月的天 数和闰年的天数可自动调整 时钟操作可通过 AM/PM 指示决定采用 24 或 12 小时格式 DS1302 与单片机之 间能简单地采用同步串行的方式进行通信 仅需用到三个口线 1 RE 复位 2 I/ 数据线 3 SCLK 串行时钟时钟/RAM 的读/写数据以一个字节或多达 31 个字节的字符组方式通信 DS1302 工作时功耗很 低 保持数据和时钟信息时功率小于 1mW DS1302 是由 DS1202 改进而来 增加了以下的特性 双电源管脚用于主电源和备份电源供应 Vcc1为可 编程涓流充电电源 附加七个字节存储器 它广泛应用于电话 传真 便携式仪器以及电池供电的仪器仪表等 产品领域 下面将主要的性能指标作一综合 z 实时时钟具有能计算 2100 年之前的秒 分 时 日 日期 星期 月 年的能力 还有闰年调整的能力 z 31 8 位暂存数据存储 R AM z 串行I /O 口方式使得管脚数量最少 z 宽范围工作电压 2.0 5.5V z 工作电流 2.0V 时,小于 300nA z读/写时钟或 R AM 数据时 有两种传送方式 单字节传送和多字节传送字符组方式z 8 脚 D IP 封装或可选的 8 脚 S OIC 封装根据表面装配z 简单 3 线接口z 与 T TL 兼容Vcc=5V z 可选工业级温度范围 -40+85 z 与 D S1202 兼容 z在 D S1202 基础上增加的特性 对 V cc1 有可选的涓流充电能力 双电源管用于主电源和备份电源供应 备份电源管脚可由电池或大容量电容输入 附加的 7 字节暂存存储器1 DS1302 的基本组成和工作原理 D S 1302 的管脚排列及描述如下图及表所示管脚描述管脚配置X1 X2 32.768KHz 晶振管脚GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚订单信息部分# 描述DS1302 串行时钟芯片8 脚D IPDS1302S 串行时钟芯片8 脚S OIC200milDS1302Z 串行时钟芯片8 脚S OIC150mil2.DS1302 内部寄存器CH: 时钟停止位寄存器2的第7位12/24 小时标志CH=0 振荡器工作允许bit7=1,12 小时模式CH=1 振荡器停止bit7=0,24 小时模式WP: 写保护位寄存器2的第5位:AM/PM 定义WP=0 寄存器数据能够写入AP=1 下午模式WP=1 寄存器数据不能写入AP=0 上午模式TCS: 涓流充电选择DS: 二极管选择位TCS=1010 使能涓流充电DS=01 选择一个二极管TCS=其它禁止涓流充电DS=10 选择两个二极管DS=00 或11, 即使T CS=1010, 充电功能也被禁止RS 位电阻典型位00没有没有01R12K10R24K11R38KDS1302 与微控制器的接口软件及功能应用举例下面首先给出基本的接口软件然后举例说明各种功能的应用1 写保护寄存器操作当写保护寄存器的最高位为0 时允许数据写入寄存器写保护寄存器可以通过命令字节8E 8F 来规定禁止写入/读出写保护位不能在多字节传送模式下写入Wri te_Ena ble:MO V Com man d,#8Eh;命令字节为8EMO V Byt eCn t,#1;单字节传送模式MO V R0,#Xm tDa t数据地址覆给R0MO V XmtDat,#00h数据内容为0写入允许AC ALL Sen d_B yte调用写入数据子程序RE T返回调用本子程序处当写保护寄存器的最高位为1时禁止数据写入寄存器W rit e_D isa ble:MO V Com man d,#8Eh;命令字节为8EMO V Byt eCn t,#1;单字节传送模式MO V R0,#Xm tDa t数据地址覆给R0MO V XmtDat,#80h数据内容为80h禁止写入AC ALL Sen d_B yte调用写入数据子程序RE T返回调用本子程序处以上程序调用了基本数据发送(Send_By te)模块及一些内存单元定义,其源程序清单在附录中给出下面的程序亦使用了这个模块2 时钟停止位操作当把秒寄存器的第7位时钟停止位设置为0 时起动时钟开始Osc_Ena ble:MOV C omma nd,#80h ; 命令字节为80MOV B yteC nt,#1 ; 单字节传送模式MOV R0,#X mtDa t数据地址覆给R0MOV X mtDa t,#00h 数据内容为0振荡器工作允许ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处当把秒寄存器的第7位时钟停止位设置为1时时钟振荡器停止HT1380进入低功耗方式Osc_Dis able:M OV C omma nd,#80h;命令字节为80M OV B yteC nt,#1;单字节传送模式M OV R0,#X mtDa t数据地址覆给R0M OV X mtDa t,#80h数据内容为80h振荡器停止A CALL S end_Byte调用写入数据子程序R ET返回调用本子程序处3. 多字节传送方式当命令字节为B E 或B F 时DS1302 工作在多字节传送模式8 个时钟/日历寄存器从寄存器0 地址开始连续读写从0位开始的数据当命令字节为FE 或FF 时DS1302 工作在多字节RAM 传送模式31 个RAM 寄存器从0地址开始连续读写从0 位开始的数据例如写入00 年 6 月21日星期三13 时59 分59 秒程序设置如下W rit e_M ultipl ebyt e:MOV C omm and,#0BEh;命令字节为B EhMOV B yte Cnt,#8;多字节写入模式此模块为8个MOV R0,#XmtD at数据地址覆给R0MOV X mtD at,#59h秒单元内容为59hMOV X mtD at+1,#59h分单元内容为59hMOV X mtD at+2,#13h时单元内容为13hMOV X mtD at+3,#21h日期单元内容为21hMOV X mtD at+4,#06h月单元内容为06hMOV X mtD at+5,#03h星期单元内容为03hMOV X mtD at+6,#0年单元内容为00hMOV X mtD at+7,#0写保护单元内容为00hACA LL S end_By te调用写入数据子程序RET返回调用本子程序处读出寄存器0-7 的内容程序设置如下Rea d_M ultipl eby te:MOV C omm and,#0BFh;命令字节为B FhMOV B yte Cnt,#8;多字节读出模式此模块为8个MOV R1,#Rcv Dat 数据地址覆给R1ACALL R ece ive_By te调用读出数据子程序RET 返回调用本子程序处以上程序调用了基本数据接收(Recei ve_Byt e)模块及一些内存单元定义,其源程序清单在附录中给出下面的程序亦使用了这个模块4. 单字节传送方式例如写入8时12 小时模式程序设置如下Wri te_Sin gle byt e:M OV Co mma nd,#84h; 命令字节为84hM OV By teC nt,#1; 单字节传送模式M OV R0,#X mtD at数据地址覆给R0M OV Xm tDa t,#88h数据内容为88h A CAL LSend_Byte 调用写入数据子程序RET 返回调用本子程序处上面所列出的程序模块Write_Enab le W rit e_Di sabl e Osc_Enable Osc_D isab le与单字节写入模块Write_Singlebyte 的程序架构完全相同仅只是几个入口参数不同本文是为了强调功能使用的不同才将其分为不同模块另外,与涓流充电相关的设定也是单字节操作方式,这里就不再单独列出, 用户在使用中可灵活简略下面模块举例说明如何单字节读出小时单元的内容.Read_Si ngl eby te:M OV Co mma nd,#85h; 命令字节为85hM OV By teC nt,#1; 单字节传送模式M OV R1,#R cvD at数据地址覆给R1A CAL L Re cei ve_Byt e调用读出数据子程序R ET返回调用本子程序处DS1302 应用电路原理图P87LPC764 单片机选取内部振荡及内部复位电路附录数据发送与接收模块源程序清单; CPU 工作频率最大不超过20MHz;******************************************************************************************** ;P87LPC762/4主控器发送接受数据程序; 说明本程序是利用P hilips公司的P87LPC764 单片机任何具有51内核或其它合适的单片机都可在此作为主控器的普通I/O 口(如P1.2/P1.3/P1.4)实现总线的功能对总线上的器件本程序采用D S1302进行读写操作命令字节在C ommand 传送字节数在B yteCnt 中所发送的数据在X mtDat 中所接收的数据在R cvDat 中;******************************************************************************************** ;P87LPC762/4主控器总线发送接受数据程序头文件;内存数据定义BitCnt data 30h ; 数据位计数器Byt eCn t data 31h ; 数据字节计数器Command data 32h ; 命令字节地址RcvDat D ATA40H; 接收数据缓冲区XmtDat D ATA50H; 发送数据缓冲区;端口位定义IO_DAT A b it P1.3; 数据传送总线SCLK b it P1.4; 时钟控制总线RST bi t P1.2; 复位总线;******************************************************************************************** ;发送数据程序;名称:S end_By te;描述:发送Byte Cnt个字节给被控器D S1302;命令字节地址在C ommand 中;所发送数据的字节数在B yteCnt 中发送的数据在X mtDat 缓冲区中;******************************************************************************************** Send_Byt e:CLR RST ;复位引脚为低电平所有数据传送终止NO PCLR SC LK清时钟总线NO PSETB RST ;复位引脚为高电平逻辑控制有效NO PM OV A,Command 准备发送命令字节M OV Bi tCn t,#08h传送位数为8S_By te0:RRC A将最低位传送给进位位CM OV IO_DA TA,C位传送至数据总线NO PSETB SC LK时钟上升沿发送数据有效NO PCLR SC LK清时钟总线D JNZ Bi tCn t,S_By te0位传送未完毕则继续NO PS_By te1:准备发送数据M OV A,@R0 传送数据过程与传送命令相同M OV Bi tCn t,#08hS_By te2:RRC AM OV IO_DA TA,CNO PS ETB SC LKNO PC LR SC LKD JNZ Bi tCn t,S_By te2I NC R0发送数据的内存地址加1D JNZ By teC nt,S_B yte1字节传送未完毕则继续NO PC LR RST逻辑操作完毕清R STR ET;*************************************************************************************** ;接收数据程序;;名称:Rece ive_By te;描述:从被控器D S1302 接收Byte Cnt个字节数据;命令字节地址在C ommand 中;所接收数据的字节数在B yteCnt 中接收的数据在R cvDat 缓冲区中;*********************************************************************************** Rece ive_By te:CLR RST ;复位引脚为低电平所有数据传送终止NO PCLR SC LK清时钟总线NO PS ETB RST;复位引脚为高电平逻辑控制有效M OV A,Com man d准备发送命令字节R_By te0:M OV Bi tCn t,#08h传送位数为8RRC A将最低位传送给进位位CM OV IO_DA TA,C位传送至数据总线NO PSETB SC LK时钟上升沿发送数据有效NO PCLR SC LK清时钟总线D JNZ BitCnt,R_Byte0 位传送未完毕则继续NO PR_By te1:准备接收数据CLR A清类加器C LRC清进位位CM OV Bi tCn t,#08h接收位数为8R_By te2:NO PM OV C,IO_DAT A数据总线上的数据传送给CRRC A从最低位接收数据SETB SC LK时钟总线置高NO PCLR SC LK时钟下降沿接收数据有效D JNZ BitCnt,R_Byte2 位接收未完毕则继续M OV@R1,A 接收到的完整数据字节放入接收内存缓冲区I NC R1 接收数据的内存地址加1D JNZ By teC nt,R_B yte1字节接收未完毕则继续NO PCLR RST 逻辑操作完毕清R STR ET;============================================================================== =============== E ND。
给出DS1302的典型应用原理图

给出DS1302的典型应用原理图1. 概述本文将介绍DS1302实时时钟芯片的典型应用原理图。
DS1302是一款非易失性实时时钟芯片,在许多电子产品中被广泛使用。
它具有低功耗、精确计时等优点,适用于需要具备时间功能的电路设计。
2. DS1302原理图下面是DS1302的典型应用原理图(供参考):电源电路:--------------VCC --- 5V电源GND --- 接地--------------数据通信和控制线:---------------------------RST --- 复位信号IO --- 数据输入/输出SCLK --- 时钟信号CE --- 芯片使能信号---------------------------外部时钟电路:--------------------R --- 32.768kHz晶振C --- 晶振接地--------------------3. DS1302应用原理图解析•电源电路:DS1302芯片需要提供5V电源和接地,确保芯片正常工作。
•数据通信和控制线:RST、IO、SCLK和CE是DS1302与其他电路进行数据通信和控制的接口线。
RST用于复位芯片,IO用于数据的输入和输出,SCLK为时钟信号,CE为芯片的使能信号。
•外部时钟电路:DS1302芯片需要连接一个外部的32.768kHz晶振,以提供精确的时钟输入。
4. DS1302应用原理图使用说明1.连接电源电路:将VCC引脚连接至5V电源,将GND引脚连接至接地。
2.连接数据通信和控制线:根据实际需求,将RST、IO、SCLK和CE引脚连接至其他电路。
3.连接外部时钟电路:将R引脚连接至外部32.768kHz晶振,将C引脚接地。
5. 注意事项•在连接DS1302芯片时,务必确保正确连接电源和接地,以避免芯片损坏。
•在连接数据通信和控制线时,需要按照芯片的说明书来引脚连接,避免误接或引脚连接错误。
•外部时钟电路的连接需要注意晶振的正确极性,并确保晶振稳定工作。
DS1302 时钟芯片的原理与应用

DS1302 时钟芯片的原理与应用DS1302 是DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM 通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES 复位2 I/O 数据线3 SCLK串行时钟时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mWDS1302 是由DS1202 改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc1 为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域下面将主要的性能指标作一综合实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力还有闰年调整的能力31 8 位暂存数据存储RAM串行I/O 口方式使得管脚数量最少宽范围工作电压2.0 5.5V工作电流2.0V 时,小于300nA读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配简单3 线接口与TTL 兼容Vcc=5V可选工业级温度范围-40 +85与DS1202 兼容在DS1202 基础上增加的特性对Vcc1 有可选的涓流充电能力双电源管用于主电源和备份电源供应备份电源管脚可由电池或大容量电容输入附加的7 字节暂存存储器1 DS1302 的基本组成和工作原理DS1302 的管脚排列及描述如下图及表所示管脚描述X1 X2 32.768KHz 晶振管脚GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚订单信息部分# 描述DS1302 串行时钟芯片8 脚DIPDS1302S 串行时钟芯片8 脚SOIC 200milDS1302Z 串行时钟芯片8 脚SOIC 150mil2. DS1302 内部寄存器CH: 时钟停止位寄存器2 的第7 位12/24 小时标志CH=0 振荡器工作允许bit7=1,12 小时模式CH=1 振荡器停止bit7=0,24 小时模式WP: 写保护位寄存器2 的第5 位:AM/PM 定义WP=0 寄存器数据能够写入AP=1 下午模式WP=1 寄存器数据不能写入AP=0 上午模式TCS: 涓流充电选择DS: 二极管选择位TCS=1010 使能涓流充电DS=01 选择一个二极管TCS=其它禁止涓流充电DS=10 选择两个二极管DS=00 或11, 即使TCS=1010, 充电功能也被禁止RS 位电阻典型位00 没有没有01 R1 2K10 R2 4K11 R3 8K管脚配置DS1302 与微控制器的接口软件及功能应用举例下面首先给出基本的接口软件然后举例说明各种功能的应用1 写保护寄存器操作当写保护寄存器的最高位为0 时允许数据写入寄存器写保护寄存器可以通过命令字节8E 8F 来规定禁止写入/读出写保护位不能在多字节传送模式下写入Write_Enable:MOV Command,#8Eh ;命令字节为8EMOV ByteCnt,#1 ;单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#00h 数据内容为0 写入允许ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处当写保护寄存器的最高位为1 时禁止数据写入寄存器Write_Disable:MOV Command,#8Eh ;命令字节为8EMOV ByteCnt,#1 ;单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#80h 数据内容为80h 禁止写入ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处以上程序调用了基本数据发送(Send_Byte)模块及一些内存单元定义, 其源程序清单在附录中给出下面的程序亦使用了这个模块2 时钟停止位操作当把秒寄存器的第7 位时钟停止位设置为0 时起动时钟开始Osc_Enable:MOV Command,#80h ; 命令字节为80MOV ByteCnt,#1 ; 单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#00h 数据内容为0 振荡器工作允许ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处当把秒寄存器的第7 位时钟停止位设置为1 时时钟振荡器停止HT1380 进入低功耗方式Osc_Disable:MOV Command,#80h ;命令字节为80MOV ByteCnt,#1 ;单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#80h 数据内容为80h 振荡器停止ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处3. 多字节传送方式当命令字节为BE 或BF 时DS1302 工作在多字节传送模式8 个时钟/日历寄存器从寄存器0 地址开始连续读写从0 位开始的数据当命令字节为FE 或FF 时DS1302 工作在多字节RAM 传送模式31 个RAM 寄存器从0 地址开始连续读写从0 位开始的数据例如写入00 年6 月21 日星期三13 时59 分59 秒程序设置如下Write_Multiplebyte:MOV Command,#0BEh ;命令字节为BEhMOV ByteCnt,#8 ;多字节写入模式此模块为8 个MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#59h 秒单元内容为59hMOV XmtDat+1,#59h 分单元内容为59hMOV XmtDat+2,#13h 时单元内容为13hMOV XmtDat+3,#21h 日期单元内容为21hMOV XmtDat+4,#06h 月单元内容为06hMOV XmtDat+5,#03h 星期单元内容为03hMOV XmtDat+6,#0 年单元内容为00hMOV XmtDat+7,#0 写保护单元内容为00hACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处读出寄存器0-7 的内容程序设置如下Read_Multiplebyte:MOV Command,#0BFh ;命令字节为BFhMOV ByteCnt,#8 ;多字节读出模式此模块为8 个MOV R1,#RcvDat 数据地址覆给R1ACALL Receive_Byte 调用读出数据子程序RET 返回调用本子程序处以上程序调用了基本数据接收(Receive_Byte)模块及一些内存单元定义, 其源程序清单在附录中给出下面的程序亦使用了这个模块4. 单字节传送方式例如写入8 时12 小时模式程序设置如下Write_Singlebyte:MOV Command,#84h ; 命令字节为84hMOV ByteCnt,#1 ; 单字节传送模式MOV R0,#XmtDat 数据地址覆给R0MOV XmtDat,#88h 数据内容为88hACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处上面所列出的程序模块Write_Enable Write_Disable Osc_Enable Osc_Disable与单字节写入模块Write_Singlebyte 的程序架构完全相同仅只是几个入口参数不同本文是为了强调功能使用的不同才将其分为不同模块另外,与涓流充电相关的设定也是单字节操作方式,这里就不再单独列出,用户在使用中可灵活简略下面模块举例说明如何单字节读出小时单元的内容.Read_Singlebyte:MOV Command,#85h ; 命令字节为85hMOV ByteCnt,#1 ; 单字节传送模式MOV R1,#RcvDat 数据地址覆给R1ACALL Receive_Byte 调用读出数据子程序RET 返回调用本子程序处DS1302 应用电路原理图P87LPC764 单片机选取内部振荡及内部复位电路附录数据发送与接收模块源程序清单; CPU 工作频率最大不超过20MHz;******************************************************************** ************************; P87LPC762/4 主控器发送接受数据程序; 说明本程序是利用Philips 公司的P87LPC764 单片机任何具有51 内核或其它合适的单片机都可在此作为主控器的普通I/O 口(如P1.2/P1.3/P1.4)实现总线的功能对总线上的器件本程序采用DS1302进行读写操作命令字节在Command 传送字节数在ByteCnt 中所发送的数据在XmtDat 中所接收的数据在RcvDat 中;******************************************************************** ************************;P87LPC762/4 主控器总线发送接受数据程序头文件;内存数据定义BitCnt data 30h ; 数据位计数器ByteCnt data 31h ; 数据字节计数器Command data 32h ; 命令字节地址RcvDat DATA 40H ; 接收数据缓冲区XmtDat DATA 50H ; 发送数据缓冲区;端口位定义IO_DATA bit P1.3 ; 数据传送总线SCLK bit P1.4 ; 时钟控制总线RST bit P1.2 ; 复位总线;******************************************************************** ************************;发送数据程序;名称:Send_Byte;描述:发送ByteCnt 个字节给被控器DS1302;命令字节地址在Command 中;所发送数据的字节数在ByteCnt 中发送的数据在XmtDat 缓冲区中;******************************************************************** ************************Send_Byte:CLR RST ;复位引脚为低电平所有数据传送终止NOPCLR SCLK 清时钟总线NOPSETB RST ;复位引脚为高电平逻辑控制有效NOPMOV A,Command 准备发送命令字节MOV BitCnt,#08h 传送位数为8S_Byte0:RRC A 将最低位传送给进位位CMOV IO_DATA,C 位传送至数据总线NOPSETB SCLK 时钟上升沿发送数据有效NOPCLR SCLK 清时钟总线DJNZ BitCnt,S_Byte0 位传送未完毕则继续NOPS_Byte1: 准备发送数据MOV A,@R0 传送数据过程与传送命令相同MOV BitCnt,#08hS_Byte2:RRC AMOV IO_DATA,CNOPSETB SCLKNOPCLR SCLKDJNZ BitCnt,S_Byte2INC R0 发送数据的内存地址加1DJNZ ByteCnt,S_Byte1 字节传送未完毕则继续NOPCLR RST 逻辑操作完毕清RSTRET;******************************************************************** *******************;接收数据程序;;名称:Receive_Byte;描述:从被控器DS1302 接收ByteCnt 个字节数据;命令字节地址在Command 中;所接收数据的字节数在ByteCnt 中接收的数据在RcvDat 缓冲区中;******************************************************************** ***************Receive_Byte:CLR RST ;复位引脚为低电平所有数据传送终止NOPCLR SCLK 清时钟总线NOPSETB RST ;复位引脚为高电平逻辑控制有效MOV A,Command 准备发送命令字节MOV BitCnt,#08h 传送位数为8R_Byte0:RRC A 将最低位传送给进位位CMOV IO_DATA,C 位传送至数据总线NOPSETB SCLK 时钟上升沿发送数据有效NOPCLR SCLK 清时钟总线DJNZ BitCnt,R_Byte0 位传送未完毕则继续NOPR_Byte1: 准备接收数据CLR A 清类加器CLR C 清进位位CMOV BitCnt,#08h 接收位数为8R_Byte2:NOPMOV C,IO_DATA 数据总线上的数据传送给CRRC A 从最低位接收数据SETB SCLK 时钟总线置高NOPCLR SCLK 时钟下降沿接收数据有效DJNZ BitCnt,R_Byte2 位接收未完毕则继续MOV @R1,A 接收到的完整数据字节放入接收内存缓冲区INC R1 接收数据的内存地址加1DJNZ ByteCnt,R_Byte1 字节接收未完毕则继续NOPCLR RST 逻辑操作完毕清RSTRETEND(文章出处电子爱好者)。
DS1302时钟芯片实例讲解

Page 13
Page 14
驱动程序
Page 15
Page 4
DS1302的寄存器:
DS1302有关于日历、时间的寄存器共有12个。其中七个 寄存器(读时81H--8DH,写时80H--8CH),存放的数据 格式是BCD码形式。
Page 5
注意: 注意:
1)、小时寄存器(85H、84H)的位7用来定义DS1302 是运行12小时模式还是24小时模式。为高时是12小时模 式。在12小时模式时,位5为1是下午(PM)。在24小时 模式时,位5是第二个10小时位。 2)、秒寄存器(81H、80H)的位7定义为时钟暂停标志 (CH)。当CH=1时,时钟振荡器停止,DS1302为低能 耗状态,CH=0时,时钟正常运行。 3)、控制寄存器(8FH、8EH)位7为写保护位,其他7 位均置0。在任何对时钟和RAM写操作之前,WP位必须 置0。当WP=1时,写保护位防止对任意寄存器进行写操 作。
Page 11
小时寄存器 1 日寄存器 月寄存器 1 1
星期寄存器 1 年寄存器 1
寄存器名称
D 7 1
D6 RAM/C K 0 0 0 1 1 1 1
D D4 D3 D2 5 A A3 A2 A1 4 0 0 1 0 0 1 1 0 1 0 1 0 … 1 1 1DS1302时钟芯片实例讲解
11-嵌本班--赵晶
DS1302的简介:
Page 2
DS1302外部引脚分配及功能:
X1、X2:32.768KHz晶振接入引脚。 X1、X2:32.768KHz晶振接入引脚。 晶振接入引脚 GND: GND: 接 地。 CE:复位引脚,低电平有效, CE:复位引脚,低电平有效,操作时高电 平。 I/O:数据输入/输出引脚, I/O:数据输入/输出引脚,具有三态功 能。 SCLK:串行时钟输入引脚。 SCLK:串行时钟输入引脚。 Vcc1: 工作电源引脚。 Vcc1: 工作电源引脚。 Vcc2: 备用电源引脚。 Vcc2: 备用电源引脚。
实时时钟芯片DS1302在教学中的研究与应用

_
_
_
u 8 c o d e S e g C o d e口: { 0 x 3  ̄0 x 0 6 ’ 0 x S b ,O x 4 f ,0 x 6 6 , 0 x 6 d , O x 7 d ,0 x 0 7 ,0 x 7 ‘0 x 6 £ O x O 0 } ; v o i d DS13 0 2 I n i t i a  ̄ v o i d DS 1 3 0 2S e t T i m e ( u 8 v o i d DS1 3 02 Ge t T i me ( u 8
s b i t I O=P 2 1 ; / / D S 1 3 0 2数据口 P 1 . 1 s b i t R S T:P 2 2 ; / / D S 1 3 0 2片选 口 P 1 . 2 / / 秒分时 日 月星期年 u 8 n o w [ ] = ( O x 3 q 0 x 0 &O x 3 1 , O x 0 5 , 0 x O 4 , O x 1 6 } ;
科 技论 坛
实时时钟芯片 DS 1 3 0 2 在教学 中的研究与应用
张继峰
( 东北石油大学秦 皇岛分校 , 河北 秦 皇岛 0 6 6 0 0 4 ) 摘 要: D S 1 3 0 2是 美国 D a l l a s公 司推 出的一种 高性能、 低功耗 、 带 R A M 的实时时钟 芯片。通过研 究 D S 1 3 0 2芯 片原理 , 应用方法 及典型 电路分析 , 使 学生掌握芯 片应用方法和手段。在硬 件编程 中, 掌握三线接 口与 C P U进行 同步通信 , 中断应 用, 定 时应 用, 最终达到
P2 0、 P21 、 P2 2。
n o p _ 0  ̄
d a t > > =1 ; , / 数据右移—位
DS1302实时时钟芯片应用

DS1302实时实钟芯片应用(一)DS1302概述DS1302是DALLAS公司生产的绢流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与微控制器进行通信。
具有秒、分、时、日、周、月、年信息。
每月的天数和闰年的天数可自动调整。
时钟和RAM的读/写可以以一个字节或多达31个字节的形式进行传输。
DS1302工作时的功耗很低,保持数据和时钟信息时所需功率小于1mW。
有主电源和备用电源。
(二)DS1302的主要性能A. 实时时钟能计算到2099年B. 31字节静态RAMC. 串口通信方式D. 电压范围2~5.5V,2V时工作电流小于300nAE. 温度范围-40~+85℃(三)引脚及功能(四)DS1302的命令字每一次数据传送都由一字节命令字开始,其后紧跟一字节数据或多字节数据。
命令字如下:读写DS1302内部RAM命令字如下:(五)DS1302的数据传送通过把/RST拉至高电平来启动数据传送,将/RST拉至低电平则可终止数据传送,I/O引脚变为高阻状态。
数据输入时,在时钟的上升沿数据必须有效,而数据位在时钟的下降沿输出。
上电时,在Vcc≥2.5V之前,/RST必须为逻辑0。
此外,当把/RST拉至逻辑1时,SCLK必须为逻辑0。
跟随在写命令字节的8个SCLK周期之后,在下8个SCLK周期的上升沿输入数据字节,如果有额外的SCLK 周期,它们将被忽略,数据从最低位(位0)开始传送。
跟随在读命令字节的8个时钟周期之后,在下8个时钟周期的下将沿输出数据字节。
注意:被传送的第一个数据位发生在写命令字节的最后一位之后和第一个下将沿。
只要/RST保持高电平,如果有额外的时钟周期,它们将重新发送数据字节,这一操作使之具有连续的多字节的读能力。
另外,在时钟的每一个上升沿,I/O引脚为三态。
数据从最低位开始是传送。
DS1302的多字节读写:对时钟/日历寄存器进行多字节读写时,其命令字节BFH为读,BEH为写;当对RAM 进行多字节读写时,其命令字节FFH为读,FEH为写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.5
DS1302的读写时序
不仅要向寄存器写入控制字。还需要读取相应寄存器 的数据。要想与DS1302通信,首先要先了解DS1302的控
日历、 时钟寄存器及其控制字对照表 7 6 5 4 A3 0 0 0 0 0 0 0 0 1 1 3 A2 0 0 0 0 1 1 1 1 0 1 2 A1 0 0 1 1 0 0 1 1 0 1 1 A0 0 1 0 1 0 1 0 1 0 1 0 RD/W 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0
//秒 //分 //时 //日 //月 //星期 //年
time1[4]=d&0x0f; time1[5]=(d>>4)&0x0f; } void set_time(void) { v_W1302(0x8e,0x00); v_W1302(0x80,0x80); v_W1302(0x82,min); v_W1302(0x84,hou); v_W1302(0x86,day); v_W1302(0x88,mon); v_W1302(0x8c,yea); v_W1302(0x80,0x00); v_W1302(0x8e,0x80); } 以上函数为DS1302.H文件,在主函数中要调用该函数
源,外接32.768kHz晶振。RST是复位/片选线,通过把
RST输入驱动置高电平来启动所有的数据传送。RST输入
有两种功能:首先,RST接通控制逻辑,允许地址/命令序 列送入移位寄存器;其次,RST提供终止单字节或多字节 数据的传送手段。 当RST为高电平时,所有的数据传送被初始化,允许 对DS1302进行操作。如果在传送过程中RST置为低电平, 则会终止此次数据传送,I/O引脚变为高阻态。上电运
/************************************************************************** 程序描述:该程序能通过和单片机连接的按键调整并设置DS1302的时间,并能将 从DS1302中读出的时间在六个七段数码管上显示,P0口驱动数码管的各段,P2口 低六位连接到六个数码管的公共端,数码管为共阳。 **************************************************************************/ #include <reg51.h> #include <intrins.h> #include "DS1302.h" #define uchar unsigned char #define uint unsigned int code seven_tab[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; code bit_select[6] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; uint get_time_flag; uchar dot,flash,a,b,c,d; uchar year,month,day,hour,minute,second,week; uchar key1_state,key2_state,key3_state,key4_state,ttt; static uchar key1_flag=0; //定义静态变量 sbit key1 = P3^0; //定义4个按键的端口 sbit key2 = P3^1; sbit key3 = P3^2; sbit key4 = P3^3; /************时间延迟函数**************/
sbit ACC7=ACC^7; uchar time1[6]; char counter[3]; uchar sec,min,hou,day,mon,yea; void Init1302(void); void v_W1302(uchar ucAddr, uchar ucDa); uchar uc_R1302(uchar ucAddr); void get_time(void); void set_time(void); /*********往DS1302写入1Byte数据**************/ void v_WTInputByte(uchar ucDa) { uchar i; ACC= ucDa; for(i=8; i>0; i--) { T_IO = ACC0; //*相当于汇编中的 RRC T_CLK = 1; T_CLK = 0; ACC =ACC>> 1; } } /**********从DS1302读取1Byte数据********************/
提BCD码表示的时间和日期的器件。主系统与RTC间的通
信可通过并行口也可通过串行口,并行器件速度快但需 较大的底板空间和较昂贵,串行器件体积较小且价格也 相对便宜。 希望读者在学完本节后,能完成相关的电路设计,并
掌握如下知识点:
◆掌握时钟芯片DS1302的原理、特性及选择;
◆51单片机和时钟芯片DS1302的接口电路设计;
器。
DS1302是DS1202的升级产品,与DS1202兼容,但
增加了主电源/后背电源双电源引脚,同时提供了对后背电
源进行涓细电流充电的能力。
6.3 DS1302的引脚功能及内部结构
下图14-1示出DS1302的实物图及引脚排列,其中Vcc1 为后备电源,VCC2为主电源。在主电源关闭的情况下,也 能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较 大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。 当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡
寄存器名称 秒寄存器 分寄存器 时寄存器 日寄存器 月寄存器 周寄存器 年寄存器 写保护寄存器 慢充电寄存器 时钟突发秒寄存器
1 RAM/CK A4 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1
DS1302内部主要寄存器功能如下表所示
DS1302内部主要寄存器功能表 命令字 名称 读 秒寄存器 分寄存器 80H 82H 写 81H 83H 00-59 00-59
取值范围 7 6 5 4 3 2 1 0
各位内容
CH 0
10SEC 10MIN
SEC MIN
时寄存器
日寄存器 月寄存器 周寄存器
84H
86H 88H 8AH
85H
87H 89H 8BH
6.6 DS1302的程序设计
1)DS1302和单片机连接接示意图
2)DS1302应用程序设计流程图如下所示:
图6-5
DS1302应用程序设计流程图
3)应用程序清单如下:
程序用按键设置秒、分、时,用液晶LCD1602显示设
置的时间。 /************************************************* 程序描述:以下程序为DS1302的头函数文件,在建立项 目的时候该部分要保存为DS1302.H。该头文件中有对 DS1302基本的单字节读写函数,取时间函数,设置时间 函数,在主函数中要调用这些函数。 ************************************************ /
} /*******取出时间并处理,以便送数码管显示*********/ void get_time(void) { uchar d; d=uc_R1302(0x81); counter[0]=d/16*10+d%16; //十六进制转换为BCD码 time1[0]=d&0x0f; time1[1]=(d>>4)&0x0f; d=uc_R1302(0x83); counter[1]=d/16*10+d%16; //十六进制转换为BCD码 time1[2]=d&0x0f; time1[3]=(d>>4)&0x0f; d=uc_R1302(0x85); counter[2]=d/16*10+d%16; //十六进制转换为BCD码
制字。DS1302的控制字见5.4节内容。控制字的最高有效
位(位7)必须是逻辑1,如果它为0。则不能把数据写入到 DS1302中。位6:如果为0,则表示存取日历时钟数据, 为1表示存取RAM数据;位5至位1(A4~A0):指示操作单 元的地址;位0(最低有效位):如为0。表示要进行写操
作,为1表示进行读操作。控制字总是从最低位开始输出。
的控制字节说明 1)DS1302的控制字节的最高有效位(位7)必须是逻 辑1,如果它为0,则不能把数据写入到DS1302中:位6如 果为0,则表示存取日历时钟数据,为1表示存取RAM数
据;位5至位1指示操作单元的地址:最低有效位(位0)为0
表示要进行写操作,为1表示进行读操作,控制字节总是
从最低位开始输出。
1-12或0-23
1-28,29,30,31 1-12 1-7
12/24
0 0 0
0
0 0 0
A/P
HR
HR
DATE MONTH 0 DAY
10DATE 0 0 10M 0
年寄存器
8CH
8DH
0-99
10YEAR
YEAR
其中CH:时钟停止位;为0时振荡器工作;为1时振
荡器停止;AP=1时为下午模式,为0时上午模式DS1302
v_W1302(0x80,0x00); v_W1302(0x82,0x59); v_W1302(0x84,0x10); v_W1302(0x86,0x01); v_W1302(0x88,0x08); v_W1302(0x8a,0x03); v_W1302(0x8c,0x07); v_W1302(0x8e,0x80);