1、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 Co
2、mmand,#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 ; 单字节传送模式MO
3、V R0,#XmtDat 数据地址覆给 R0MOV XmtDat,#00h 数据内容为 0 振荡器工作允许ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处当把秒寄存器的第 7 位时钟停止位设置为 1 时,时钟振荡器停止 DS1320 进入低功耗方式Osc_Disable:MOV Command,#80h ;命令字节为 80MOV ByteCnt,#1 ;单字节传送模式MOV R0,#XmtDat 数据地址覆给 R0MOV XmtDat,#80h 数据内容为 80h 振荡器停止ACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处3. 多字节传送
4、方式当命令字节为 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
5、,#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,#
6、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 数据地址覆给
7、R0MOV XmtDat,#88h 数据内容为 88hACALL Send_Byte 调用写入数据子程序RET 返回调用本子程序处上面所列出的程序模块 Write_Enable Write_Disable Osc_Enable Osc_Disable与单字节写入模块 Write_Singlebyte 的程序架构完全相同,仅只是几个入口参数不同本文是为了强调功能使用的不同才将其分为不同模块另外,与涓流充电相关的设定也是单字节操作方式,这里就不再单独列出,用户在使用中可灵活简略下面模块举例说明如何单字节读出小时单元的内容.Read_Singlebyte:MOV Command,#85h ; 命令字
8、节为 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)实现总线的功能对总
9、线上的器件本程序采用 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 ; 时钟控制总线
10、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 位传送至数据
11、总线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;描述:从
12、被控器 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 清时钟
13、总线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 R
14、ST 逻辑操作完毕清 RSTRETEND实时时钟电路 DS1302 的原理及应用2009-04-15 20:06摘 要:介绍美国 DALLAS 公司推出的具有涓细电流充电能力的低功耗实时时钟电路 DS1302 的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。给出 DS1302 在读写中的 C51 程序及流程图,以及在调试过程中的注意事项。 关键词:时钟电路;实时时钟;单片机;应用 1 引言 现在流行的串行时钟电路很多,如 DS1302、 DS1307、PCF8485 等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本
15、文介绍的实时时钟电路DS1302 是 DALLAS 公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通 32.768kHz 晶振。 2 DS1302 的结构及工作原理 DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302 内部有一个 318 的用于临时性存放数据的 RA
16、M 寄存器。DS1302 是 DS1202 的升级产品,与 DS1202 兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 2.1 引脚功能及结构 图 1 示出 DS1302 的引脚排列,其中 Vcc1 为后备电源,VCC2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于 Vcc10.2V 时,Vcc2 给 DS1302 供电。当 Vcc2 小于Vcc1 时,DS1302 由 Vcc1 供电。X1 和 X2 是振荡源,外接 32.768kHz 晶振。RST是复位/片选
17、线,通过把 RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当 RST 为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。如果在传送过程中 RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在Vcc2.5V 之前,RST 必须保持低电平。只有在 SCLK 为低电平时,才能将 RST置为高电平。I/O 为串行数据输入输出端(双向),后面有详细说明。SCLK 始终是输入端。 2.2 DS1302 的控制字节 DS130
18、2 的控制字如图 2 所示。控制字节的最高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位 6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据;位 5 至位 1 指示操作单元的地址;最低有效位(位0)如为 0 表示要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出。 2.3 数据输入输出(I/O) 在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1302,数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302 的数据,读出数据时从低位 0 位
19、到高位 7。 2.4 DS1302 的寄存器 DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为BCD 码形式,其日历、时间寄存器及其控制字见表 1。 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所
20、有的 RAM 的 31 个字节,命令控制字为 FEH(写)、FFH(读)。 3 DS1302 实时显示时间的软硬件 DS1302 与 CPU 的连接需要三条线,即 SCLK(7)、I/O(6)、RST(5)。图 3 示出DS1302 与 89C2051 的连接图,其中,时钟的显示用 LCD。 3.1 DS1302 与 CPU 的连接 实际上,在调试程序时可以不加电容器,只加一个 32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用 CPU 一个口线即可。 LCD 还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的 10 位多功能 8 段液晶显示模块 LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示 RAM,可显示任意字段笔划,具有 34 线串行接口,可与任何单片机、IC 接口。功耗低,显示状态时电流为 2A (典型值),省电模式时小于1A,工作电压为 2.4V3.3V,显示清晰。 3.2 DS1302 实时时间流程 图 4 示出 DS1302 的实时时间流程。根据此流程框图,不难采集实时时间。下面结合流程图对 DS1302 的基本操作进行编程:
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。