DS1302时钟芯片的原理与应用.pdf

上传人:tbuqq 文档编号:5340623 上传时间:2020-04-20 格式:PDF 页数:12 大小:817.62KB
返回 下载 相关 举报
DS1302时钟芯片的原理与应用.pdf_第1页
第1页 / 共12页
DS1302时钟芯片的原理与应用.pdf_第2页
第2页 / 共12页
DS1302时钟芯片的原理与应用.pdf_第3页
第3页 / 共12页
DS1302时钟芯片的原理与应用.pdf_第4页
第4页 / 共12页
DS1302时钟芯片的原理与应用.pdf_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《DS1302时钟芯片的原理与应用.pdf》由会员分享,可在线阅读,更多相关《DS1302时钟芯片的原理与应用.pdf(12页珍藏版)》请在三一文库上搜索。

1、DS1302 时钟芯片的原理与应用 1 写保护寄存器操作 当写保护寄存器的最高位为0 时,允许数据写入寄存器 ,写保护寄存器可以通过 命令字节 8E 8F 来规定禁止写入 /读出。写保护位不能在多字节传送模式下写入 Write_Enable: MOV Command,#8Eh ;命令字节为 8E MOV ByteCnt,#1 ;单字节传送模式 MOV R0,#XmtDat 数据地址覆给 R0 MOV XmtDat,#00h 数据内容为 0 写入允许 ACALL Send_Byte 调用写入数据子程序 RET 返回调用本子程序处 当写保护寄存器的最高位为1 时禁止数据写入寄存器 Write_Di

2、sable: MOV Command,#8Eh ;命令字节为 8E MOV ByteCnt,#1 ;单字节传送模式 MOV R0,#XmtDat 数据地址覆给 R0 MOV XmtDat,#80h 数据内容为 80h 禁止写入 ACALL Send_Byte 调用写入数据子程序 RET 返回调用本子程序处 以上程序调用了基本数据发送(Send_Byte)模块及一些内存单元定义, 其源程序 清单在附录中给出下面 的程序亦使用了这个模块 2 时钟停止位操作 当把秒寄存器的第7 位时钟停止位设置为0 时起动时钟开始 Osc_Enable: MOV Command,#80h ; 命令字节为 80 MO

3、V ByteCnt,#1 ; 单字节传送模式 MOV R0,#XmtDat 数据地址覆给 R0 MOV XmtDat,#00h 数据内容为 0 振荡器工作允许 ACALL Send_Byte 调用写入数据子程序 RET 返回调用本子程序处 当把秒寄存器的第7 位时钟停止位设置为1 时, 时钟振荡器停止 DS1320 进入 低功耗方式 Osc_Disable: MOV Command,#80h ;命令字节为 80 MOV ByteCnt,#1 ;单字节传送模式 MOV R0,#XmtDat 数据地址覆给 R0 MOV XmtDat,#80h 数据内容为 80h 振荡器停止 ACALL Send_

4、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 ;命令字节为 BEh MOV ByteCnt,#8 ;多字节写入

5、模式此模块为8 个 MOV R0,#XmtDat 数据地址覆给 R0 MOV XmtDat,#59h 秒单元内容为 59h MOV XmtDat+1,#59h 分单元内容为 59h MOV XmtDat+2,#13h 时单元内容为 13h MOV XmtDat+3,#21h 日期单元内容为 21h MOV XmtDat+4,#06h 月单元内容为 06h MOV XmtDat+5,#03h 星期单元内容为 03h MOV XmtDat+6,#0 年单元内容为 00h MOV XmtDat+7,#0 写保护单元内容为00h ACALL Send_Byte 调用写入数据子程序 RET 返回调用本子

6、程序处 读出寄存器 0-7 的内容程序设置如下 Read_Multiplebyte: MOV Command,#0BFh ;命令字节为 BFh MOV ByteCnt,#8 ;多字节读出模式此模块为8 个 MOV R1,#RcvDat 数据地址覆给 R1 ACALL Receive_Byte 调用读出数据子程序 RET 返回调用本子程序处 以上程序调用了基本数据接收(Receive_Byte)模块及一些内存单元定义, 其源程 序清单在附录中给 出下面的程序亦使用了这个模块 4. 单字节传送方式 例如写入 8 时 12 小时模式程序设置如下 Write_Singlebyte: MOV Comma

7、nd,#84h ; 命令字节为 84h MOV ByteCnt,#1 ; 单字节传送模式 MOV R0,#XmtDat 数据地址覆给 R0 MOV XmtDat,#88h 数据内容为 88h ACALL Send_Byte 调用写入数据子程序 RET 返回调用本子程序处 上面所列出的程序模块Write_Enable Write_Disable Osc_Enable Osc_Disable 与单字节写入模块Write_Singlebyte 的程序架构完全相同,仅只是几个入口参 数不同本文是为了强调功 能使用的不同才将其分为不同模块另外,与涓流充电相关的设定也是单字节操 作方式 ,这里就不再单独列

8、出 , 用户在使用中可灵活简略 下面模块举例说明如何单字节读出小时单元的内容. Read_Singlebyte: MOV Command,#85h ; 命令字节为 85h MOV ByteCnt,#1 ; 单字节传送模式 MOV R1,#RcvDat 数据地址覆给 R1 ACALL Receive_Byte 调用读出数据子程序 RET 返回调用本子程序处 DS1302 应用电路原理图 P87LPC764 单片机选取内部振荡及内部复位电路 附录数据发送与接收模块源程序清单 ; CPU 工作频率最大不超过20MHz ;* * ; P87LPC762/4 主控器发送接受数据程序 ; 说明本程序是利用

9、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 ; 命令字节地址 R

10、cvDat 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 复位引脚为低电平所有数据传送终止 NOP CLR SCLK 清时钟总线

11、 NOP SETB RST 复位引脚为高电平逻辑控制有效 NOP MOV A,Command 准备发送命令字节 MOV BitCnt,#08h 传送位数为 8 S_Byte0: RRC A 将最低位传送给进位位C MOV IO_DATA,C 位传送至数据总线 NOP SETB SCLK 时钟上升沿发送数据有效 NOP CLR SCLK 清时钟总线 DJNZ BitCnt,S_Byte0 位传送未完毕则继续 NOP S_Byte1:准备发送数据 MOV A,R0 传送数据过程与传送命令相同 MOV BitCnt,#08h S_Byte2: RRC A MOV IO_DATA,C NOP SETB

12、 SCLK NOP CLR SCLK DJNZ BitCnt,S_Byte2 INC R0 发送数据的内存地址加1 DJNZ ByteCnt,S_Byte1 字节传送未完毕则继续 NOP CLR RST 逻辑操作完毕清RST RET ;* * ;接收数据程序 ; ;名称:Receive_Byte ;描述:从被控器 DS1302 接收 ByteCnt 个字节数据 ;命令字节地址在 Command 中 ;所接收数据的字节数在ByteCnt 中接收的数据在RcvDat 缓冲区中 ;* * Receive_Byte: CLR RST ;复位引脚为低电平所有数据传送终止 NOP CLR SCLK 清时钟

13、总线 NOP SETB RST ;复位引脚为高电平逻辑控制有效 MOV A,Command 准备发送命令字节 MOV BitCnt,#08h 传送位数为 8 R_Byte0: RRC A 将最低位传送给进位位C MOV IO_DATA,C 位传送至数据总线 NOP SETB SCLK 时钟上升沿发送数据有效 NOP CLR SCLK 清时钟总线 DJNZ BitCnt,R_Byte0 位传送未完毕则继续 NOP R_Byte1: 准备接收数据 CLR A 清类加器 CLR C 清进位位 C MOV BitCnt,#08h 接收位数为 8 R_Byte2: NOP MOV C,IO_DATA 数

14、据总线上的数据传送给C RRC A 从最低位接收数据 SETB SCLK 时钟总线置高 NOP CLR SCLK 时钟下降沿接收数据有效 DJNZ BitCnt,R_Byte2 位接收未完毕则继续 MOV R1,A 接收到的完整数据字节放入接收内存缓冲区 INC R1 接收数据的内存地址加1 DJNZ ByteCnt,R_Byte1 字节接收未完毕则继续 NOP CLR RST 逻辑操作完毕清RST RET END 实时时钟电路 DS1302的原理及应用 2009-04-15 20:06 摘 要: 介绍美国 DALLAS 公司推出的具有涓细电流充电能力的低功耗实时时钟电 路 DS1302的结构

15、、工作原理及其在实时显示时间中的应用。它可以对年、月、 日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。给出DS1302在 读写中的 C51程序及流程图,以及在调试过程中的注意事项。 关键词:时钟电路;实时时钟;单片机;应用 1 引言 现在流行的串行时钟电路很多,如DS1302 、 DS1307、PCF8485等。这些电路的 接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302 是 DALLAS 公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据 传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。 采用 普通 32.768kHz 晶振

16、。 2 DS1302的结构及工作原理 DS1302 是美国 DALLAS 公司推出的一种高性能、 低功耗、带 RAM 的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电 压为 2.5V5.5V。采用三线接口与CPU 进行同步通信,并可采用突发方式一次 传送多个字节的时钟信号或RAM 数据。 DS1302内部有一个 318 的用于临时性 存放数据的 RAM 寄存器。 DS1302是 DS1202的升级产品,与 DS1202兼容,但增 加了主电源 / 后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的 能力。 2.1 引脚功能及结构 图 1 示出 DS

17、1302的引脚排列 , 其中 Vcc1 为后备电源, VCC2 为主电源。在主电源 关闭的情况下,也能保持时钟的连续运行。DS1302由 Vcc1或 Vcc2两者中的较 大者供电。当 Vcc2大于 Vcc10.2V 时,Vcc2给 DS1302供电。当 Vcc2 小于 Vcc1 时,DS1302由 Vcc1供电。 X1和 X2是振荡源,外接 32.768kHz 晶振。 RST是复 位/ 片选线,通过把 RST输入驱动置高电平来启动所有的数据传送。RST输入有 两种功能:首先, RST接通控制逻辑,允许地址 / 命令序列送入移位寄存器;其 次,RST提供终止单字节或多字节数据的传送手段。当RST

18、为高电平时,所有的 数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电 平,则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在Vcc2.5V 之前,RST必须保持低电平。只有在SCLK 为低电平时,才能将RST置为高电平。 I/O 为串行数据输入输出端 (双向) ,后面有详细说明。 SCLK始终是输入端。 2.2 DS1302 的控制字节 DS1302 的控制字如图 2 所示。控制字节的最高有效位 (位 7)必须是逻辑 1,如果 它为 0, 则不能把数据写入DS1302中, 位 6 如果为 0, 则表示存取日历时钟数据, 为 1 表示存取 RAM 数据; 位

19、 5 至位 1 指示操作单元的地址 ; 最低有效位 ( 位 0)如为 0 表示要进行写操作,为1 表示进行读操作,控制字节总是从最低位开始输出。 2.3 数据输入输出 (I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302 ,数据 输入从低位即位 0 开始。同样,在紧跟8 位的控制指令字后的下一个SCLK脉冲 的下降沿读出 DS1302的数据,读出数据时从低位0 位到高位 7。 2.4 DS1302 的寄存器 DS1302有 12 个寄存器,其中有7 个寄存器与日历、时钟相关,存放的数据位为 BCD 码形式 , 其日历、时间寄存器及其控制字见表1。 此外, DS1

20、302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及 与 RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所 有寄存器内容。 DS1302与 RAM 相关的寄存器分为两类:一类是单个RAM 单元, 共 31 个,每个单元组态为一个8 位的字节,其命令控制字为C0H FDH ,其中奇 数为读操作, 偶数为写操作; 另一类为突发方式下的RAM 寄存器,此方式下可一 次性读写所有的 RAM 的 31 个字节,命令控制字为FEH( 写)、FFH(读)。 3 DS1302实时显示时间的软硬件 DS1302与 CPU 的连接需要三条线, 即 SCLK(7)、 I/O(6)

21、 、 RST(5)。 图 3 示出 DS1302 与 89C2051的连接图,其中,时钟的显示用LCD 。 3.1 DS1302 与 CPU 的连接 实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只 是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入 DS18B20 , 同时显示实时温度。只要占用 CPU 一个口线即可。 LCD还可以换成 LED , 还可以使用北京卫信杰科技发展有限公司生产的10 位多功能 8 段液晶显示模块 LCM101 ,内含看门狗 (WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置 显示 RAM ,可显示任意字段笔

22、划,具有34 线串行接口,可与任何单片机、IC 接口。功耗低,显示状态时电流为2A ( 典型值 ),省电模式时小于1A,工作 电压为 2.4V3.3V,显示清晰。 3.2 DS1302 实时时间流程 图 4 示出 DS1302的实时时间流程。根据此流程框图,不难采集实时时间。下面 结合流程图对 DS1302的基本操作进行编程: 根据本人在调试中遇到的问题,特作如下说明: DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命 令字节最高位 MSB(D7) 必须为逻辑 1,如果 D7=0 ,则禁止写 DS1302 ,即写保护; D6=0 ,指定时钟数据, D6=1 ,指定

23、RAM 数据; D5 D1指定输入或输出的特定寄 存器;最低位 LSB(D0)为逻辑 0,指定写操作 ( 输入), D0=1,指定读操作 ( 输出) 。 在 DS1302的时钟日历或 RAM 进行数据传送时, DS1302必须首先发送命令字节。 若进行单字节传送, 8 位命令字节传送结束之后,在下8 个 SCLK 周期的上升沿 输入数据字节,或在下8 个 SCLK周期的下降沿输出数据字节。 DS1302与 RAM 相关的寄存器分为两类 : 一类是单个 RAM 单元,共 31 个,每个单 元组态为一个 8 位的字节,其命令控制字为C0H FDH ,其中奇数为读操作,偶 数为写操作; 再一类为突发

24、方式下的RAM 寄存器,在此方式下可一次性读、 写所 有的 RAM 的 31 个字节。 要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F 以上)。虽然 DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好 选用小型充电电池。可以用老式电脑主板上的3.6V 充电电池。如果断电时间较 短(几小时或几天 ) 时,就可以用漏电较小的普通电解电容器代替。100 F 就可 以保证 1 小时的正常走时。 DS1302在第一次加电后,必须进行初始化操作。初 始化后就可以按正常方法调整时间。 4 结论 DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以 用于数据记录, 特别是对某些具有特殊意义的数据点的记录,能实现数据与出现 该数据的时间同时记录。 这种记录对长时间的连续测控系统结果的分析及对异常 数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采 样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间; 若采用单片机计时, 一方面需要采用计数器, 占用硬件资源, 另一方面需要设置 中断、查询等,同样耗费单片机的资源, 而且,某些测控系统可能不允许。 但是, 如果在系统中采用时钟芯片DS1302 ,则能很好地解决这个问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1