DS1302涓流充电时钟保持芯片的原理与应用

更新时间:2023-04-13 21:46:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

广州周立功单片机发展有限公司 Tel: (020)87535042 87583987 138******** c6a6d3370b4c2e3f572763bf 1 DS1302涓流充电时钟保持芯片的原理与应用

摘要本文概括介绍了DS1302时钟芯片的特点和基本组成通过实例详细说明了有关功能的应用软件关于 DS1302各寄存器的详细位控功能请参考DALLAS 达拉斯

公司的相应产品资料 概述

DS 1302是DALLAS

公司推出的涓流充电时钟芯片

内含有一个实时时钟/日历和31字节静态

RAM 通过简

单的串行接口与单片机进行通信

实时时钟/

日历电路提供秒

日期

年的信息每月的天

数和闰年的天数可自动调整

时钟操作可通过AM/PM 指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信

仅需用到三个口线1RES

复位2I/O

数据线3

SCLK

串行时钟时钟/RAM 的读/写数据以一个字节或多达31

个字节的字符组方式通信DS1302工作时功耗很低保持数据和时钟信息时功率小于

1mW

DS1302是由DS1202改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc1为可

编程涓流充电电源附加七个字节存储器

它广泛应用于电话

传真便携式仪器以及电池供电的仪器仪表等产品领域

下面将主要的性能指标作一综合z

实时时钟具有能计算2100

年之前的秒分

日期

星期

月年的能力还有闰年调整的能力z 318位暂存数据存储RAM z

串行I/O 口方式使得管脚数量最少z 宽范围工作电压

2.0 5.5V z

工作电流 2.0V 时,小于300nA z

读/写时钟或RAM

数据时

有两种传送方式单字节传送和多字节传送

字符组方式z

8脚DIP 封装或可选的8脚SOIC

封装

根据表面装配z

简单3线接口z

与TTL

兼容Vcc=5V z

可选工业级温度范围

-40

+85z

与DS1202兼容z 在DS1202基础上增加的特性

对Vcc1有可选的涓流充电能力

双电源管用于主电源和备份电源供应

备份电源管脚可由电池或大容量电容输入

附加的7字节暂存存储器1DS1302的基本组成和工作原理

DS 1302的管脚排列及描述如下图及表所示

广州周立功单片机发展有限公司 Tel: (020)87535042 87583987 138******** c6a6d3370b4c2e3f572763bf 2管脚描述

X1

X232.768KHz 晶振管脚 GND

地RST

复位脚I/O

数据输入/输出引脚SCLK

串行时钟Vcc1,Vcc2

电源供电管脚订单信息

部分# 描述

DS1302

串行时钟芯片8脚DIP

DS1302S

串行时钟芯片8脚SOIC 200mil DS1302Z 串行时钟芯片8脚SOIC 150mil 2. DS 1302内部寄存器

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

R12K 10

R24K 11

R38K

管脚配置

广州周立功单片机发展有限公司 Tel: (020)87535042 87583987 138******** c6a6d3370b4c2e3f572763bf 3 DS1302与微控制器的接口软件及功能应用举例下面首先给出基本的接口软件然后举例说明各种功能的应用1

写保护寄存器操作 当写保护寄存器的最高位为0时

允许数据写入寄存器写保护寄存器可以通过命令字节8E 8F 来 规定禁止写入/

读出

写保护位不能在多字节传送模式下写入

Write_Enable:

MOV Command,#8Eh ;命令字节为8E

MOV ByteCnt,#1 ;单字节传送模式

MOV R0,#XmtDat

数据地址覆给R0 MOV XmtDat,#00h 数据内容为0

写入允许

广州周立功单片机发展有限公司 Tel: (020)87535042 87583987 138******** c6a6d3370b4c2e3f572763bf 4 ACALL Send_Byte

调用写入数据子程序 RET

返回调用本子程序处 当写保护寄存器的最高位为1时

禁止数据写入寄存器

Write_Disable:

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

MOV ByteCnt,#1 ; 单字节传送模式 MOV R0,#XmtDat 数据地址覆给R0

MOV XmtDat,#00h 数据内容为0

振荡器工作允许

ACALL Send_Byte 调用写入数据子程序 RET 返回调用本子程序处

当把秒寄存器的第7

位时钟停止位设置为1

时时钟振荡器停止HT 1380

进入低功耗方式 Osc_Disable:

MOV Command,#80h ;命令字节为80

MOV ByteCnt,#1 ;单字节传送模式 MOV R0,#XmtDat 数据地址覆给R0

MOV 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 ;命令字节为BEh

MOV ByteCnt,#8 ;

多字节写入模式

此模块为8

个 MOV R0,#XmtDat

数据地址覆给R0 MOV XmtDat,#59h 秒单元内容为59h

广州周立功单片机发展有限公司 Tel: (020)87535042 87583987 138******** c6a6d3370b4c2e3f572763bf 5 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

返回调用本子程序处 读出寄存器0-7

的内容

程序设置如下 Read_Multiplebyte:

MOV Command,#0BFh ;命令字节为BFh

MOV ByteCnt,#8 ;

多字节读出模式

此模块为8个 MOV R 1

,#RcvDat

数据地址覆给R 1 ACALL Receive_Byte

调用读出数据子程序 RET

返回调用本子程序处 以上程序调用了基本数据接收(Receive_Byte)模块及一些内存单元定义, 其源程序清单在附录中给

出下面的程

序亦使用了这个模块 4. 单字节传送方式

例如写入8时12

小时模式

程序设置如下

Write_Singlebyte: MOV Command,#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 的程序架构完全相同

仅只是几个入口参数不同

本文是为了强调功

能使用的不同才将其分为不同模块

另外,与涓流充电相关的设定也是单字节操作方式,这里就不再单独列出,

用户在使用中可灵活简略 下面模块举例说明如何单字节读出小时单元的内容.Read_Singlebyte:

MOV Command,#85h ; 命令字节为85h

MOV ByteCnt,#1 ; 单字节传送模式

MOV R 1,#RcvDat

数据地址覆给R 1 ACALL Receive_Byte

调用读出数据子程序 RET 返回调用本子程序处

广州周立功单片机发展有限公司 Tel: (020)87535042 87583987 138******** c6a6d3370b4c2e3f572763bf 6 DS 1302

应用电路原理图

P87LPC764单片机选取内部振荡及内部复位电路

附录数据发送与接收模块源程序清单

; CPU 工作频率最大不超过20MHz

;********************************************************************************************

; P87LPC762/4主控器发送接受数据程序 ;

说明本程序是利用Philips 公司的P87LPC764单片机任何具有51内核或其它合适的单片机都可在此 作为主控器的普通I/O 口(如P 1.2/P 1.3/P 1.4)实现总线的功能对总线 上的器件本程序采用DS 1

302

进行读写操作命令字节在

Command 传送字节数在ByteCnt 中所发送的数据在XmtDat 中所接收

的数据在RcvDat

;******************************************************************************************** ;P87LPC762/4主控器总线发送接受数据程序头文件

;内存数据定义

BitCnt data 30h ; 数据位计数器

ByteCnt data 31h ; 数据字节计数器

Command data 32h ; 命令字节地址

RcvDat DATA 40H ; 接收数据缓冲区

XmtDat DATA 50H ; 发送数据缓冲区

;端口位定义

IO_DATA bit

P 1.3 ; 数据传送总线 SCLK bit P 1.4 ; 时钟控制总线

RST bit P 1.2 ; 复位总线

;******************************************************************************************** ;发送数据程序

;名称:Send_Byte

;描述:

发送

ByteCnt 个字节给被控器DS 1302

;命令字节地址在Command 中

;所发送数据的字节数在ByteCnt

中发送的数据在XmtDat 缓冲区中

;******************************************************************************************** Send_Byte:

CLR RST ;

复位引脚为低电平

所有数据传送终止 NOP

CLR SCLK

清时钟总线

NOP

广州周立功单片机发展有限公司 Tel: (020)87535042 87583987 138******** c6a6d3370b4c2e3f572763bf 7 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_Byte 1

:

准备发送数据

MOV A,@R0 传送数据过程与传送命令相同 MOV BitCnt,#08h

S_Byte2:

RRC A

MOV IO_DATA,C

NOP

SETB SCLK

NOP

CLR SCLK

DJNZ BitCnt,S_Byte2 INC R0

发送数据的内存地址加1 DJNZ ByteCnt,S_Byte 1

字节传送未完毕则继续 NOP

CLR RST

逻辑操作完毕清RST RET

;***************************************************************************************;接收数据程序;

;名称:Receive_Byte

;描述:从被控器DS 1302

接收ByteCnt 个字节数据;命令字节地址在Command 中

;所接收数据的字节数在ByteCnt

中接收的数据在RcvDat 缓冲区中

;***********************************************************************************Receive_Byte:

CLR RST ;

复位引脚为低电平

所有数据传送终止 NOP

CLR SCLK

清时钟总线 NOP

SETB RST ;复位引脚为高电平

逻辑控制有效 MOV A,Command 准备发送命令字节

广州周立功单片机发展有限公司 Tel: (020)87535042 87583987 138******** c6a6d3370b4c2e3f572763bf 8 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_Byte 1:

准备接收数据 CLR A

清类加器 CLR C

清进位位C MOV BitCnt,#08h

接收位数为8R_Byte2:

NOP MOV C,IO_DATA

数据总线上的数据传送给C RRC A

从最低位接收数据 SETB SCLK

时钟总线置高 NOP CLR SCLK

时钟下降沿接收数据有效 DJNZ BitCnt,R_Byte2

位接收未完毕则继续 MOV @R 1,A

接收到的完整数据字节放入接收内存缓冲区 INC R 1

接收数据的内存地址加1 DJNZ ByteCnt,R_Byte 1

字节接收未完毕则继续 NOP CLR RST

逻辑操作完毕清RST RET

;============================================================================================= END

本文来源:https://www.bwwdw.com/article/i7ul.html

Top