ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:170.69KB ,
资源ID:998805      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-998805.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DS1302时钟芯片的原理与应用.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

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

1、DS1302时钟芯片的原理与应用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 时禁止数据写入

2、寄存器 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 ; 命令字节为 8

3、0MOV ByteCnt,#1 ; 单字节传送模式MOV 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 调用

4、写入数据子程序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 个MO

5、V R0,#XmtDat 数据地址覆给 R0MOV XmtDat,#59h 秒单元内容为 59hMOV 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 返回调用本子程

6、序处以上程序调用了基本数据接收(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_En

7、able Osc_Disable 与单字节写入模块 Write_Singlebyte 的程序架构完全相同,仅只是几个入口参 数不同本文是为了强调功能使用的不同才将其分为不同模块另外,与涓流充电相关的设定也是单字节操 作方式,这里就不再单独列出,用户在使用中可灵活简略下面模块举例说明如何单字节读出小时单元的内容 Read_S in glebyte:MOV Command,#85h ;命令字节为 85hMOV ByteCnt,#1 ;单字节传送模式MOV R1,#RcvDat数据地址覆给R1ACALL Receive_Byte调用读出数据子程序RET返回调用本子程序处亶I更團DS1302应用电路原

8、理图P87LPC764单片机选取内部振荡及内部复位电路 附录数据发送与接收模块源程序清单;CPU工作频率最大不超过20MHz *J*;P87LPC762/4主控器发送接受数据程序;说明本程序是利用Philips公司的P87LPC764单片机任何具有51内核或其它 合适的单片机都可在此作为主控器的普通I/O 口 (如P1.2/P1.3/P1.4实现总线的功能对总线上的器件本 程序采用DS1302进行读写操作命令字节在 Comma nd传送字节数在ByteC nt中所发送的数据在 XmtDat中所接收的数据在RcvDat中 *J*;P87LPC762/4主控器总线发送接受数据程序头文件;内存数据定

9、义BitC nt data 30h ;数据位计数器ByteC nt data 31h ;数据字节计数器Comma nd data 32h ;命令字节地址RcvDat DATA 40H ;接收数据缓冲区XmtDat DATA 50H ;发送数据缓冲区;端口位定义IO_DATA bit P1.3 ;数据传送总线SCLK bit P1.4 ;时钟控制总线RST bit P1.2 ;复位总线 *J*;发送数据程序;名称:Se nd_Byte;描述:发送ByteCnt个字节给被控器DS1302;命令字节地址在 Command 中;所发送数据的字节数在 ByteCnt 中发送的数据在 XmtDat 缓冲区

10、中 *J*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,#

11、08hS_Byte2:RRC AMOV IO_DATA,CNOPSETB SCLKNOPCLR SCLKDJNZ BitCnt,S_Byte2INC R0 发送数据的内存地址加 1DJNZ ByteCnt,S_Byte1 字节传送未完毕则继续NOPCLR RST 逻辑操作完毕清 RSTRET *J*;接收数据程序 ;名称:Receive_Byte; 描述 :从被控器 DS1302 接收 ByteCnt 个字节数据; 命令字节地址在 Command 中;所接收数据的字节数在 ByteCnt 中接收的数据在 RcvDat 缓冲区中 *J*Receive_Byte:CLR RST ;复位引脚为低电平

12、所有数据传送终止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_DA

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

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

15、DALLAS司推出的一种高性能、低功耗、带RAM勺实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电 压为2.5V5.5V。采用三线接口与CPUS行同步通信,并可采用突发方式一次 传送多个字节的时钟信号或 RAM数据。DS1302内部有一个31 X 8的用于临时性 存放数据的RAM寄存器。DS1302是 DS1202的升级产品,与DS1202兼容,但增 加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的 能力。2.1引脚功能及结构图1示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源 关闭的情况下,也能保持时钟

16、的连续运行。 DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1 + 0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1 时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复 位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。 RST俞入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其 次, RST提供终止单字节或多字节数据的传送手段。当 RST为高电平时,所有的数据传送被初始化,允许对 DS1302进行操作。如果在传送过程中 RST置为低电 平,则会终止此次数据传送,I/O引脚变为

17、高阻态。上电运行时,在 Vcc2.5V 之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。 I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。X 二 ;7 SCtX* 55貯】2.2 DS1302的控制字节DS1302的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果 它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据, 为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为 0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。1A4A3A 2制2 出1越2的拾

18、制华节2.3数据输入输出(I/O)在控制指令字输入后的下一个 SCLK寸钟的上升沿时,数据被写入 DS1302数据 输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个 SCLKB冲 的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。2.4 DS1302的寄存器DS1302有 12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为 BCD码形式,其日历、时间寄存器及其控制字见表 1。喪|日历、时间番存嚣及韓控制宇ft忡内疔;. Hn o inn.MT月斛祸硼01-12(1 0 0 1 UMMOXIUtMIIHHHI -U7n r ( 0 ain、KCHNllHflu

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

20、02 与89C2051的连接图,其中,时钟的显示用 LCD3.1 DS1302与CPU勺连接实际上,在调试程序时可以不加电容器,只加一个 32.768kHz的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入 DS18B20同时显示实时温度。只要占用CPU一个口线即可。LCD还可以换成LED 还可以使用北京卫信杰科技发展有限公司生产的 10位多功能8段液晶显示模块LCM101内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置 显示RAM可显示任意字段笔划,具有 3- 4线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为 2卩A (典型

21、值),省电模式时小于1卩A,工作 电压为2.4V3.3V,显示清晰。芒3 rtiw cn追慢曲电席申用用1S 4専此时町,13.2 DS1302实时时间流程图4示出DS1302的实时时间流程。根据此流程框图,不难采集实时时间。下面 结合流程图对DS1302的基本操作进行编程:*inrhiit |Jq = PJM4it I = P3*5sbil BIT7 = ACC7ibi( BiTO = ACCDvoid inpullnlr( umifned char ucda)/8 位数厳打 AftlurKignrd rlhir i;ACC 将雯q人的数放入ACC动数掘r迭for( i = 8; i 0;

22、i-);循环 8 次,7JA 8 位数据. ;从低位到高位ijo = BITO;将ACC-0的值賦给时钟数据线 l_j*lk = 0Ik = 1:住时钟线的上升沿写入1位数据ACC二ACO1;将岛I位数据移至ACCPunsigned char outputbyte(void )/8 位数据读出 晒数(unsigned char i;Ln4 = 1;启动数据传送for(i = 8; i 0; i);读出8位数据,从低位到岛位ACC = ACCI;将前一下降沿读岀的数据右移 1位.从而该次读出的数放人ACU7tJo = l;PI 口输人之前置丨 tjrlk = I21k =0:时钟线下降沿读出1位

23、数据BIT7 = tjo; can not use Pl*7 = ijo for PT7 not;a varientreturn (ACC)/delay 15( 1)inputbyte(ucda)52 0Uq = 1Iunsigned char re302(unsigned char add)/读岀 对应寄存器内容(unsigned char ucda5t = 05 = 0IJK Iinpuibyte(add)/Myl5(l)urde = vutputbyte()5=0rrfunlucxia)Ivoid net 1302 (unsigned char * p/设Kt 时间初值(unsigned

24、 char iunsigned char add = 0x80ktJ302(0x8e 0x00);将控制奇仔群值设为零.混高位允许写for(i=7; i 0;i-);将七个时间初值写入对;应待存器|wrJ3O2(add, * pda);写对应时仲詣拆器的値 pd& + + add + =2:1wrj302(0x8e.0x80);写保护防止干扰形响时;间值Ivoid gelJ302(unsigned char curtimel )/读取 当曹时间值unbiiEhrd chiir h j(wsipied char odd = 0x81khu Ufpi t har ?u-rforti = 0; i

25、Icurtirocli I peJJOitarkl); i对应时钟4F 存器的trt- etidinirl ij = so4:将BCD吗转化成席心十进制St j* - 10wc 二 s4i&(H0Fsec + = j urliim-| i =撫tadd * - 2根据本人在调试中遇到的问题,特作如下说明:DS1302与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命 令字节最高位MSB(D7必须为逻辑1,如果D7=0则禁止写DS1302即写保护; D6=0,指定时钟数据,D6=1,指定RAM数据;D5-D1指定输入或输出的特定寄 存器;最低位LSB(D0)为逻辑0,指定写操作(输入

26、),D0=1,指定读操作(输出)。 在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。 若进行单字节传送,8位命令字节传送结束之后,在下 8个SCLK周期的上升沿 输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。DS1302与 RAM!关的寄存器分为两类:一类是单个RAM单元,共31个,每个单 元组态为一个8位的字节,其命令控制字为C0H- FDH其中奇数为读操作,偶 数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所 有的RAM的 31个字节。要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然 DS130

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2