第3节-实时时钟DS1302的原理与应用(项目14)

合集下载

DS1302时钟芯片的原理与应用

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 时禁止数据写入寄存器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 时,时钟振荡器停止DS1320 进入低功耗方式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的原理及应用2009-04-15 20:06摘要:介绍美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路DS1302的结构、工作原理及其在实时显示时间中的应用。

实时时钟DS1302的原理与应用

实时时钟DS1302的原理与应用

可编辑ppt
7
表4-3-1 日历、时钟寄存器及其控制字对照表
可编辑ppt
8
表4-3-2 DS1302内部主要寄存器功能表
可编辑ppt
9
其中CH:时钟停止位;为0时振荡器工作;为1时 振荡器停止;AP=1时为下午模式,为0时上午模 式;DS1302的控制字节说明如下: 1.DS1302的控制字节的最高有效位(位7)必须是 逻辑1,如果它为0,则不能把数据写入到DS1302 中:位6如果为0,则表示存取日历时钟数据,为 1表示存取RAM数据;位5至位1指示操作单元的地 址:最低有效位(位0)如为0表示要进行写操作, 为1表示进行读操作,控制字节总是从最低位开 始输出。
可编辑ppt
10
2.在控制指令字输入后的下一个SCLK时钟的上升沿 时数据被写入DS1302,数据输入从低位即位0开 始。同样,在紧跟8位的控制指令字后的下一个 SCLK脉冲的下降沿读出DS1302的数据,读出数据 时从低位0位至高位7。
可编辑ppt
11
4.3.3 DS1302的读写时序
不仅要向寄存器写入控制字。还需要读取相 应寄存器的数据。4.3.3 DS1302的读写时序要想 与DS1302通信,首先要先了解DS1302的控制字。 DS1302的控制字见6.5.4节内容。控制字的最高 有效位(位7)必须是逻辑1,如果它为0。则不能 把数据写入到DS1302中。位6:如果为0,则表示 存取日历时钟数据,为1表示存取RAM数据;位5 至位1(A4~A0):指示操作单元的地址;位0(最 低有效位):如为0。
可编辑操作。 控制字总是从最低位开始输出。在控制字指令输 入后的下一个SCLK时钟的上升沿时,数据被写入 DS1302,数据输入从最低位(0位)开始。同样, 在紧跟8位的控制字指令后的下一个SCLK脉冲的 下降沿,读出DS1302的数据。读出的数据也是从 最低位到最高位。数据读写时序如下图4-3-3所 示。具体操作见驱动程序。

ds1302数字时钟芯片

ds1302数字时钟芯片

《DS1302数字时钟芯片》1. 内置电池备份功能,确保时间信息在断电情况下依然准确无误;2. 精度高,每月误差不超过±30秒;3. 支持秒、分、时、日、月、周、年的计时,满足日常生活和工作需求;4. 通过串行通信接口与单片机或其他设备进行数据交换,操作简单;5. 超低功耗设计,节能环保。

下面,让我们详细了解DS1302数字时钟芯片的内部结构、工作原理及实际应用。

《DS1302数字时钟芯片》二、内部结构与关键特性1. 时钟模块:包含了时钟振荡器、分频器以及时钟计数器。

振荡器采用32.768kHz的晶振,保证了时间的精确度。

分频器将振荡器输出的频率分频至1Hz,供时钟计数器使用。

2. RAM存储器:DS1302内置31字节静态RAM,可用于存储临时数据或用户自定义信息,方便在不干扰时钟运行的情况下进行数据保存。

3. 电源管理模块:DS1302具备掉电保护功能,当外部电源断电时,内置的锂电池可以自动为芯片供电,确保时钟正常运行。

4. 串行接口:采用三线接口(时钟线、数据线、复位线),简化了与外部设备的连接,便于实现数据的同步传输。

三、工作原理1. 初始化:通过复位线将DS1302复位,使其进入待命状态,准备接收命令。

2. 命令发送:单片机或其他控制器通过串行接口向DS1302发送命令,包括读/写时钟数据、RAM数据等。

3. 数据交换:在命令发送后,DS1302根据命令类型进行数据读出或写入操作。

数据传输过程中,时钟线控制数据同步,数据线传输数据位。

4. 数据处理:单片机接收到DS1302的数据后,可进行时间显示、闹钟设置等操作。

四、实际应用1. 智能家居:作为时间基准,用于家庭安防、照明、温控等系统的定时控制。

2. 儿童手表:为孩子提供准确的时间显示,便于家长监控和管理孩子的作息。

3. 工业自动化:在生产线控制、设备维护等领域,实现精确的时间记录和任务调度。

4. 环境监测:结合其他传感器,实现对环境数据的实时采集和记录,为环境保护提供数据支持。

ds1302芯片介绍,ds1302工作原理解析

ds1302芯片介绍,ds1302工作原理解析

ds1302 芯片介绍,ds1302 工作原理解析
时钟小编相信大家见怪不怪了,那幺时钟芯片大家知道是什幺吗?今天我们就来谈谈最常用的时钟芯片ds1302,主要通过ds1302 芯片的介绍和ds1302 芯片的工作原理方面来解析。

ds1302 芯片介绍
DS1302 是美国DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加31 字节静态RAM,采用SPI 三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM 数据。

实时时钟可提
供秒、分、时、日、星期、月和年,一个月小与31 天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5~5.5V。

采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。

DS1302 的外部引脚分配如图1 所示及内部结构如图2 所示。

DS1302 用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现。

实时时钟电路DS1302芯片的原理及应用

实时时钟电路DS1302芯片的原理及应用

实时时钟电路DS1302芯片的原理及应用DS1302是一种实时时钟(RTC)电路芯片,由Dallas Semiconductor (现被Maxim Integrated收购)设计和制造。

它提供了一个准确的时间和日期计时功能,适用于许多应用,例如电子设备、仪器仪表、通讯设备和计算机系统等。

DS1302芯片的原理如下:1.时钟发生器:DS1302芯片内部集成了一个时钟发生器电路,它使用外部XTAL晶体和一个频率分频器来产生准确的时钟信号。

晶体的频率通常为32.768kHz,这是由于此频率具有较好的稳定性。

2.电源管理:DS1302芯片可以使用3V到5.5V的电源供电。

它内部具有电源管理电路,可以自动切换到低功耗模式以延长电池寿命。

3.时间计数器:DS1302芯片内部包含一个时间计数器,用于计算并保存当前时间、日期和星期。

它采用24小时制,并提供了BCD编码的小时、分钟、秒、日、月和年信息。

4.控制和数据接口:DS1302芯片使用串行接口与外部器件进行通信,如微控制器或外部检测电路。

控制和数据信息通过三根线SCLK(串行时钟)、I/O(串行数据输入/输出)和CE(片选)进行传输。

5.电源备份:为了确保即使在电源中断的情况下仍能保持时间数据,DS1302芯片通过附带的外部电池来提供电源备份功能。

当主电源中断时,芯片会自动切换到电池供电模式,并将时间数据存储在内部RAM中。

DS1302芯片的应用包括但不限于以下几个方面:1.时钟和日历显示:DS1302芯片可以直接连接到LCD显示屏、LED显示器或数码管等设备,用于显示当前时间和日期。

2.定时控制:DS1302芯片可以用作定时器或闹钟,在特定的时间触发一些事件。

例如,可以使用它作为控制家庭设备的定时开关。

3.数据记录:由于DS1302芯片具有时间计数功能,它可以用于记录事件的时间戳,如数据采集、操作记录或系统状态记录。

4.电源失效保护:DS1302芯片的电源备份功能可确保即使在电源中断的情况下,时间数据也能被保存,以避免系统重新启动后时间重置的问题。

DS1302时钟芯片

DS1302时钟芯片

第十四讲时钟芯片DS1302DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一种实时时钟/日历和31 字节静态RAM ,通过简朴的串行接口与单片机进行通信。

实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调节。

时钟操作可通过AM/PM 批示决定采用24 或12 小时格式。

DS1302 与单片机之间能简朴地采用同时串行的方式进行通信,仅需用到三个口线:(1)RES 复位(2)I/O数据线(3)SCLK串行时钟。

时钟/RAM 的读/写数据以一种字节或多达31个字节的字符组方式通信。

DS1302 工作时功耗很低保持数据和时钟信息时功率不大于1mW。

DS1302由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★ 双电源管用于主电源和备份电源供应以上是DS1302的某些全方面的预览,下列为DS1302管脚图:1)VCC2:主用电源引脚2)X1、X2:DS1302外部晶振引脚3)GND:地4)RST:复位引脚5)I/O:串行数据引脚,数据输出或者输入都从这个引脚6)SCLK:串行时钟引脚7)VCC1:备用电源1)VCC 为主电源接5V,CX10 为滤波电容2)2、外接32.768K 的晶振3)3、 5、6、7 脚分别与控制器相联,注意外部4.7K 上拉电阻4)4、备用电源脚,注意是3.3V,DS1302 规定备用电源电压稍微低于主用电源下面讲讲DS1302 的具体操作。

实时时钟电路DS1302芯片的原理及应用

实时时钟电路DS1302芯片的原理及应用

实时时钟电路DS1302芯片的原理及应用DS1302芯片是一种低功耗的实时时钟(RTC)电路。

它包含了一个真正的时钟/日历芯片和31个静态RAM存储单元,用于存储时钟和日期信息。

DS1302芯片的工作电压范围为2.0V至5.5V,并且具有极低的功耗,非常适合于移动电子设备和电池供电的应用。

DS1302芯片的原理如下:1.时钟发生器:DS1302芯片内部具有一个实时时钟发生器,它通过晶振和电容电路生成稳定的振荡信号,用于计时。

2.时钟/计时电路:DS1302芯片内部的时钟/计时电路可以精确地计算并保持当前的时间和日期。

它具有秒、分钟、小时、日期、月份、星期和年份等不同的计时单元。

3.RAM存储单元:DS1302芯片包含31个静态RAM存储单元,用于存储时钟和日期信息。

这些存储单元可以通过SPI接口进行读写操作,并且在断电情况下也能够保持数据。

4.控制接口:DS1302芯片通过3线接口与微控制器通信,包括一个时钟线、一个数据线和一个使能线。

这种接口使得与微控制器的通信非常简单,并且能够高效地读写时钟和日期信息以及控制芯片的其他功能。

DS1302芯片的应用如下:1.实时时钟:DS1302芯片可以用作电子设备中的实时时钟。

例如,它可以用于计算机、嵌入式系统、电子游戏等设备中,以提供准确的时间和日期信息。

2.定时器:DS1302芯片的计时功能可以用于设计各种定时器应用。

例如,它可以用于计时器、倒计时器、定时开关等应用中,以实现定时功能。

3.时钟显示:DS1302芯片可以与显示模块结合使用,用于显示当前的时间和日期。

例如,它可以用于数字钟、计时器、时钟频率计等应用中。

4.能量管理:由于DS1302芯片具有低功耗特性,因此它可以用于电池供电的设备中,以实现节能的能量管理策略。

例如,它可以用于手持设备、无线传感器网络等应用中,以延长电池寿命。

综上所述,DS1302芯片是一种低功耗的实时时钟电路,具有精确计时、可靠存储和简单接口等优点,适用于计时、显示和能量管理等各种应用中。

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的原理与使用

串行时钟芯片DS1302的原理与使用

串行时钟芯片DS1302的原理与使用H ow T o Use The Trickle Charge T imekeeping Chip DS1302姚德法3 张洪林Y AO De 2fa ZH ANG Hong 2ling摘 要 本文概括介绍了DS1302时钟芯片的特点和基本组成并通过实例详细说明了有关功能的应用。

关键词 DS1302 突发模式 Abstract In this article ,the features and basic architectures are described ,als o the sam ple programs are given.K eyw ords DS1302 Burst M ode3中国电子科技集团公司第41研究所1 DS1302简介DS1302是DA LLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM 。

由于具备体积小、功耗低、接口容易、占用CPU I/O 口线少、遇闰年自动修正且不存在“千年虫”问题等优点,该芯片被广泛应用于智能化仪器仪表中。

DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三条口线:RES ,I/O 数据线和SC LK 串行时钟。

DS1302的特征如下:※31字节带后备电池的RAM 用于数据存储※串行I/O 口,管脚数量少※宽范围工作电压:2.0~5.5V ※工作电压2.0V 时,电流小于300nA※读/写时钟或RAM 数据时有两种传送方式:单字节传送和突发模式传送※8脚DIP 封装或其他可选封装方式※简单的3线接口※与TT L 兼容(Vcc =5V )※可选工业级温度范围:-40℃~+85℃※与DS1202兼容2 DS1302的结构及工作原理2.1 DS1302的引脚功能及内部结构DS1302的引脚分布和内部结构如图1所示,引脚功能如表1所示。

2.2 DS1302的控制字节DS1302的控制字节如图2所示。

DS1302实时时钟原理与应用

DS1302实时时钟原理与应用

DS1302实时时钟原理与应用
1.原理:
DS1302实时时钟通过一个简单的三线接口与微控制器相连,这三根
线分别是:数据线、时钟线和复位线。

通过这三根线,微控制器可以向
DS1302写入和读取时钟和日期信息。

具体的通信协议可以通过发送特定
的命令字节来实现。

当写入数据时,数据线的电平可以提供有效数据,而
时钟线的上升沿控制数据的传输。

当读取数据时,数据线的电平会反映
DS1302存储器中的信息。

2.应用:
a.数字时钟和日期显示器:DS1302实时时钟可以用来驱动数字时钟
和日期显示器,供人们查看当前时间和日期。

b.考勤系统:DS1302实时时钟可以用来记录员工的考勤信息,如签
到和签退时间。

c.定时器:DS1302实时时钟可以用来控制各种定时器,如定时开关、定时器插座等。

d.定时报警器:使用DS1302实时时钟可以实现定时报警功能,如定
时提醒服药、定时关机等。

e.温度和湿度监测:结合温湿度传感器,DS1302实时时钟可以用来
记录环境的温度和湿度信息,并提供时间戳。

f.数据日志记录器:DS1302实时时钟可以用来记录各种传感器的数据,并提供时间戳,以便后续分析和处理。

总之,DS1302实时时钟是一种非常实用的集成电路,具有精确和可靠的时间计量功能。

它可以广泛应用于各种需要时间记录和计量的电子设备和系统中。

通过合理的设计和应用,我们可以充分发挥DS1302实时时钟的功能,提高系统的可靠性和稳定性。

单片机学习项目 (12) 实时时钟DS1302的原理与应用

单片机学习项目 (12) 实时时钟DS1302的原理与应用

单片机学习项目项目12-实时时钟DS1302的原理与应用一:电路原理图利用数码管显示时间,可以在电子表电路基础上连接DS1302完成,见图5-3-3所示。

6反相器74HC04为动态显示的数码管阳极驱动,中间非门省略。

图中数码管的驱动采用74HC573。

DS1302的SCLK接单片机P3.7, I/O(SDA)端口接P1.0,RST接P1.1;DS1302的X1和X2接32768Hz的标准时钟晶振。

一:程序设计主程序主用作用是调用DS1302子程序,把读取到的是时间信息通过数码管显示出来,由于采用动态显示,因此主程序中要用到定时器中断。

分页显示在定时器中断服务函数中进行。

程序清单如下:#include<reg51.h>#include”ds1302.c”uchar cp1,cp2,cp3;code uchar seven_seg[10] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};code uchar seg_bit[] ={0x01,0x02,0x04,0x08,0x10,0x20};uchar flash;bit conv;void time0_isr(void) interrupt 1 //利用中断对数码管上显示的数据进行刷新{TH0= (65536 –2000) / 256;TL0= (65536 –2000) % 256;cp1++;if(cp1>= 250)//0.5秒{cp1= 0;flash= ~flash; //产生小数点闪烁变量cp2++;if(cp2>= 5){conv= !conv;//产生交替显示变量cp2= 0;}}P0= 0xff;//消隐if(conv== 1){switch(cp3){case0:P0 = seven_seg[sec % 10];break;case1:P0 = seven_seg[sec / 10];break;case2:P0 = seven_seg[min % 10] & (0x7f | flash);break;case3:P0 = seven_seg[min / 10];break;case4:P0 = seven_seg[hour % 10] & (0x7f | flash);break;case5:P0 = seven_seg[hour / 10];break;} }else{switch(cp3){case0:P0 = seven_seg[date % 10];break;case1:P0 = seven_seg[date / 10];break;case2:P0 = seven_seg[month % 10];break;case3:P0 = seven_seg[month / 10];break;case4:P0 = seven_seg[year % 10];break;case5:P0 = seven_seg[year / 10];break;}}P2= seg_bit[cp3];cp3++;if(cp3>= 6)cp3 = 0;}void timer0_init(void) //Timer0初始化{TMOD= 0x01;TH0= (65536 –2000) / 256;TL0= (65536 –2000) % 256;TR0= 1;ET0= 1;EA = 1;}void main(void){uchari = 46;//举例,比如要调整时间,分钟设定为46分i= DEC_BCD_conv(i);timer0_init();write_ds1302_add_dat(0x8e,0x00); //写操作,可以对DS1302调整write_ds1302_add_dat(0x80,0x30); //写秒,30秒write_ds1302_add_dat(0x82,i); //写分,46分write_ds1302_add_dat(0x84,0x12); //写时,12时write_ds1302_add_dat(0x86,0x28); //写日,28日write_ds1302_add_dat(0x88,0x05); //写月,5月write_ds1302_add_dat(0x8a,0x03); //写星期,星期三write_ds1302_add_dat(0x8c,0x12); //写年,(20)12年write_ds1302_add_dat(0x8e,0x80); //写保护while(1){get_ds1302_time();}}一、DS1302驱动程序DS1302驱动程序包含以上操作函数,程序完成后存放在DS1302.c中,用于带有DS1302芯片的单片机系统中。

串行时钟芯片DS1302的原理与使用

串行时钟芯片DS1302的原理与使用
与微控制器的接口及软件控制
VP $!> A $ V D % 与微控制器的接口 充 电 寄 存 器& 时钟突发 此外 " > A $ V D % 还 有 控 制 寄 存 器& 寄存器及与 R .# 相 关 的 寄 存 器 等 ! 时 钟 突 发 寄 存 器 可 一 次性顺序读写除 充 电 寄 存 器 外 的 所 有 寄 存 器 内 容 !> A $ V D % 与R 一类是单个 R 共 .# 相关的寄存器分为两类 " .# 单 元 " 每 个 单 元 组 态 为 一 个 & 位 的 字 节" 其命令控制字为 V $个" 其 中 奇 数 为 读 操 作" 偶 数 为 写 操 作% 再一类为 " SN![ >N" 突发方式下的 R 此方式下可一次性读写所有的 .# 寄存器 " 命令控制字为 [ 写$ & 读$ ! R .# 的 V $ 个字节 " XN# [ [ N# 如图 ( 所示 " 只需要 V 根线就 可 以 实 现 和 微 控 制 器 的 接 口" 控制相对比较容易 !
$!> A $ V D % 简介
内 > A $ V D %是> . ! ! . A 公司推出的涓流充电 时 钟 芯 片 ! 含一个实时时钟"日历和 V $ 字节静态 R .## 由于具 备 体 积 小$ 功耗低 $ 接口容易 $ 占用 " " 遇闰年自动修 ? ‘U S 口 线 少$ 正且不存在 % 千年虫 & 问题等优点 ! 该芯片被广泛应用于智能 化仪器仪表中 # > A $ V D % 与单片机之间能简单地采用 同 步 串 行 的 方 式 进 行通信 ! 仅需用到三条口线’ " R X A! U S 数据线和 A " ! * 串行 时钟 # > A $ V D % 的特征如下 ’ $ 字节带后备电池的 R .# 用于数据存储 ,V " 管脚数量少 S 口! , 串行 U %P D!@P @ Y , 宽范围工作电压 ’ 电流小于 V D Y 时! D D 6 . , 工作电压 %P 单字节 .# 数 据 时 有 两 种 传 送 方 式 ’ , 读"写时钟或 R 传送和突发模式传送 U ? 封装或其他可选封装方式 , &脚 > , 简单的 V 线接口 + ! 兼容 ( Y 2 2 ]@ Y) , 与+ O( Dj ! _& @j , 可选工业级温度范围 ’ A $ % D % 兼容 , 与>

51 DS1302实时时钟 实验(十四)

51 DS1302实时时钟 实验(十四)

实验十四: DS1302实时时钟实验一、 硬件原理图:Ds1302接线图键盘接线二、硬件接线图:华南理工大学无线电爱好者协会F D R 工作室三、实验原理:DS1302 是美国DALLAS 公司推出的一种高性能、低功耗、带RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V ~5.5V 。

采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM 数据。

DS1302内部有一个31×8的用于临时性存放数据的RAM 寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

2.1 引脚功能及结构 图1示出DS1302的引脚排列,其中V cc1为后备电源,V CC2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由V cc1或V cc2两者中的较大者供电。

当V cc2大于V cc1+0.2V 时,V cc2给DS1302供电。

当V cc2小于V cc1时,DS1302由V cc1供电。

X1和X2是振荡源,外接32.768kHz 晶振。

RST 是复位/片选线,通过把RST 输入驱动置高电平来启动所有的数据传送。

RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。

当RST 为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。

上电运行时,在V cc ≥2.5V 之前,RST 必须保持低电平。

只有在SCLK 为低电平时,才能将RST 置为高电平。

I/O 为串行数据输入输出端(双向),后面有详细说明。

SCLK 始终是输入端。

华南理工大学无线电爱好者协会F D R 工作室2.2 DS1302的控制字节 DS1302 的控制字如图2所示。

DS1302的工作原理

DS1302的工作原理

对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表1所示:
A2 0 0 0 0 1 1 1 1 0 1 A1 ຫໍສະໝຸດ 0 1 1 0 0 1 1 0 1
A0 0 1 0 1 0 1 0 1 0 1
RD/W
6
5
4
3
2
1
表1:日历、时钟寄存器与控制字对照表
最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。 DS1302内部寄存器列表如表2所示:
7
寄存器名称
1
秒寄存器 分寄存器 小时寄存器 日寄存器 月寄存器 星期寄存器 年寄存器 写保护寄存器 慢充电寄存器 时钟突发寄存器
1 1 1 1 1 1 1 1 1 1
RAM/CK
0 0 0 0 0 0 0 0 0 0
A4 0 0 0 0 0 0 0 0 0 1
A3 0 0 0 0 0 0 0 0 1 1
DS1302的工作原理
DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。 DS1302的寄存器和控制命令

DS1302时钟芯片的原理与应用

DS1302时钟芯片的原理与应用

DS1302时钟芯片的原理与应用一、DS1302的基本原理1.1DS1302的主要硬件组成DS1302由时钟单元、RAM单元和控制逻辑单元组成。

时钟单元包含实时的年、月、日、时、分和秒,具有自动闰年判断功能;RAM单元用于存储用户数据;控制逻辑单元负责控制读写操作,以及更新时钟和用户数据。

1.2DS1302的工作原理DS1302的工作原理基于周期性的时间计数。

其内部有一组振荡器和计数器,分别产生时钟信号和时间计数。

在供电正常的情况下,DS1302会精确地计时,保持准确的时间。

通过与外部晶振和电源电压的连接,DS1302可以获得准确的参考时钟,确保时间的准确性。

二、DS1302的应用2.1数字时钟2.2计时器2.3定时开关DS1302的时间计数功能可以用于定时开关的设计。

例如,可以使用DS1302来控制家庭照明系统、温室灌溉系统等设备的自动开关功能。

用户可以预先设置开关时间,DS1302会精确地计时,并在预定时间点触发开关操作。

2.4温湿度记录DS1302的RAM单元可以用来存储一些用户数据。

一种常见的应用是温湿度记录。

通过将温湿度传感器与DS1302连接,可以实时获取环境的温度和湿度,并将其存储到DS1302的RAM中。

用户可以随时读取存储的数据,进行分析和处理。

2.5定时闹钟三、DS1302的优点和注意事项3.1优点3.2注意事项在使用DS1302时,需要注意以下几点:-DS1302工作电压范围为2.0V至5.5V,应根据实际需求选择合适的工作电压。

-DS1302的振荡器需要外接一个32.768kHz的晶振,保证时间计数的准确性。

-DS1302的通信接口使用的是串行通信,需要根据具体的控制器和系统设计进行接口匹配。

总结:DS1302是一款功能丰富的实时时钟(RTC)芯片,广泛应用于计时、时间显示和时间记录等领域。

它可以实现数字时钟、计时器、定时开关、温湿度记录、定时闹钟等功能。

DS1302具有精确的时间计数和存储功能,体积小巧、功耗低、价格相对较低,是许多电子应用中的理想选择。

DS1302的工作原理

DS1302的工作原理

DS1302的工作原理DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。

数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。

时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。

DS1302的寄存器和控制命令对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。

此外,DS 1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。

日历、时间寄存器及控制字如表1所示:7 6 5 4 3 2 1 0寄存器名称1 RAM/CK A4 A3 A2 A1 A0 RD/W秒寄存器 1 0 0 0 0 0 0分寄存器 1 0 0 0 0 0 1小时寄存器 1 0 0 0 0 1 0日寄存器 1 0 0 0 0 1 1月寄存器 1 0 0 0 1 0 0星期寄存器 1 0 0 0 1 0 1年寄存器 1 0 0 0 1 1 0写保护寄存器 1 0 0 0 1 1 1慢充电寄存器 1 0 0 1 0 0 0时钟突发寄存器 1 0 1 1 1 1 1表1:日历、时钟寄存器与控制字对照表最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。

DS1302内部寄存器列表如表2所示:命令字取值范围各位内容寄存器名称写读7 6 5 4 3 2 1 0 秒寄存器80H 81H 00-59 CH 10SEC SEC分寄存器82H 83H 00-59 0 10MIN MIN小时寄存器84H 85H 01-12或00-23 12/24 0 A HR HR日期寄存器86H 87H 01-28,29,30,31 0 0 10DATE DATE月份寄存器88H 89H 01-12 0 0 0 10M MONTH周寄存器8AH 8BH 01-07 0 0 0 0 0 DAY年份寄存器8CH 8DH 00-99 10YEAR YEAR表2:DS14302内部主要寄存器分布表DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

实时时钟芯片DS1302在教学中的研究与应用

实时时钟芯片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 ,通过简单的串行接口与单片机进行通信。

实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。

DS1302 与单片机之间能简单地采用同步串行的方式进行,DS1302的引脚命名如图1-1所示。

通信仅需用到三根信号线:(1)CE 片选,(2)I/O 数据线,(3)SCLK 串行时钟,DS1302与CPU 的连接如图1-2所示。

时钟/RAM 的读/写数据以一个字节或多字节的字符组方式通信,DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW 。

DS1302具有双电源管脚,用于主电源和备份电源供应Vcc1,为可编程涓流充电电源附加七个字节存储器,它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域。

DS1302主要的性能指标如下:实时时钟具有能计算2100 年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力31× 8 位暂存数据存储RAM 串行I/O 口方式,使得管脚数量最少宽范围工作电压2.0~ 5.5V工作电流2.0V 时,小于300nA读/写时钟或RAM 数据时有两种传送方式:单字节传送和多字节传送字符组方式8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配简单3 线接口与TTL 兼容Vcc=5V 。

DS1302的读写模式工作时序如图1-3和图1-4所示。

图1-3 单字节读模式图1-4 单字节写模式注:在多字节模式下,SCLK 发出同步脉冲,CS 须持续保持高电平直到多字节操作结束,图1-1 DS1302引脚图1-2 DS1302与CPU 接口DS1302内部寄存器的地址定义如表1-1所示。

表1-1 寄存器的地址及定义实验说明1. DS1302与51单片机的连接IO ——P2.7:串行数据输入/输出引脚SCLK ——P2.6:串行时钟引脚CE ——P2.4:片选CE2. LCD 与单片机连接;************************************************************************* ; LCD Module LMB1602 与单片机连接:;************************************************************************* ; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ;Vss Vdd V o RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 BLA BLK ; 0V +5V 0V P32 P33 P34 ---------------- P1[0..7] ---------------- +5V 0V;*************************************************************************3. LCD 显示功能说明LCD1602显示格式如图1-5所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、电路原理
本项目采用八位数码管显示时间,每两位之间利用 闪烁的“—”号表示走时,见图5-3-3所示。图中数码管的 驱动采用74HC573。DS1302的SCLK接单片机P3.7, I/O(SDA) 端口接P3.5,RST接P3.4;DS1302的X1和X2接32768Hz的标 准时钟晶振。
7
6
54321 0
寄存器名称
1 RAM/CK A4 A3 A2 A1 A0 RD/W
秒寄存器控制字
1
0
0 0 0 0 0 1/0
分寄存器控制字
1
0
0 0 0 0 1 1/0
时寄存器控制字
1
0
0 0 0 1 0 1/0
日寄存器控制字
1
0
0 0 0 1 1 1/0
月寄存器控制字
1
0
0 0 1 0 0 1/0
从由DS1302的读写时序可以看出,在SCLK上升沿来 到时写数据,下降沿来到时读数据,单片机向DS1302中发 送和接收的数据先从低位开始,因此在读写操作中需根据 读写时序完成一个字节的读写。
三、DS1302应用操作
DS1302应用操作包括向DS1302写一字节数据、读一 字节数据、读时间操作和调整时间操作。由于要先发送控 制字,从DS1302读时间需要调用一次写和一次读操作;向 对应地址读一字节数据需要调用两次写一字节数据操作, 此种操作用于调整时间。
//读1302数据
x = x >> 4;
dec
= dec + x * 10;
return(dec);
}
/*十进制到8421BCD码转换*/
uchar DEC_BCD_conv(uchar x)
{
uchar bcd;
bcd = x % 10;
x = x / 10;
x = x << 4;
bcd
= bcd | x ;
0 10DATE DATE
月 寄 存 88H 89H 1-12 器
0
00
10M MONTH
周 寄 存 8AH 8BH 1-7 器
0
00
0
0 DAY
年 寄 存 8CH 8DH 0-99 器
10YEAR
YEAR
写 保 护 8EH 寄存器
WP 0 0
0
00 00
表5-3-2 DS1302内部主要寄存器功能表
名称
控制字 写读
取值范围
各位内容
7
65
4 32 10
秒 寄 存 80H 81H 00-59 器
CH 10SEC
SEC
分 寄 存 82H 83H 00-59 器
0
10MIN
MIN
时 寄 存 84H 85H 1-12 或 0-23 12/24 0 A/P HR HR 器
日 寄 存 86H 87H 1-28,29,30,31 0 器
本节学习一种基于串行通信方式的实时时钟DS1302, 由于该器件端口少占用单片机硬件资源较少、成本低,因 此在与时间有关的单片机系统中广泛应用。
5.3.1 DS1302功能说明
DS1302 是美国DALLAS公司推出的一种高性能、低功 耗、内部带有31字节静态RAM实时时钟。该芯片可以自动生 成公历相关数据,包括年、月、日、时、分、秒和星期, 具有闰年补偿功能。DS1302采用SPI三线接口与MCU进行同 步通信,工作电压为2.5V~5.5V,可以在备用电池供电情 况下低功耗运行,同时该芯片内部提供了对备用电池充电 的功能。
return(bcd);
}
/*获得时间信息函数*/
void get_ds1302_time(void) //获取1302的时间数据(时、分、秒),存入time1数组中
{
uchar d;
} /*结束*/
d = read_ds1302_add(0x81); sec = BCD_DEC_conv(d); d = read_ds1302_add(0x83); min = BCD_DEC_conv(d); d = read_ds1302_add(0x85); hour = BCD_DEC_conv(d); d = read_ds1302_add(0x87); date = BCD_DEC_conv(d); d = read_ds1302_add(0x89); month = BCD_DEC_conv(d); d = read_ds1302_add(0x8b); week = BCD_DEC_conv(d); d = read_ds1302_add(0x8d); year = BCD_DEC_conv(d);
{ uchar i,dat; for(i = 0;i < 8;i++) { scl = 1; scl = 0; dat = dat >> 1; if(sda)dat = dat | 0x80; } return(dat);
} /*对DS1302的某一地址写一字节函数*/ void write_ds1302_add_dat(uchar add,uchar dat) {
(1)DS1302的时间控制字的最高有效位(位7)必须 是逻辑1,如果它为0,则不能把数据写入到DS1302中:位6 如果为0,则表示存取日历时钟数据,为1表示存取RAM数据; 位5至位1指示操作单元的地址,最低有效位(位0)如为0表 示要进行写操作,为1表示进行读操作,控制字节总是从最 低位开始输出。
由于DS1302内部时间寄存器中的时间数据8421BCD码, 因此读出的时间需要进行码制转换;在对DS1302进行时间 调 整 时 , 也 需 要 把 十 进 制 数 据 转 换 成 8421BCD 码 后 写 入 DS1302。
四、DS1302驱动程序
DS1302驱动程序包含以上操作函数,程序完成后存 放在DS1302.c中,用于带有DS1302芯片的单片机系统中。 清单如下:
5.3.3 DS1302的读写时序与驱动程序
一、DS1302读写时序 单片机程序不仅要向DS1302写入控制字,还要读取 相应寄存器的数据。数据读写时序如下图5-3-3所示。根据 时序,我们可以简化对DS1302的操作过程,这是DS1302的 驱动程序设计依据。
CE SCLK
单字节读
I/O R/W A0 A1 A2 A3 A4 /C 1
//读秒 //得到秒 //读分 //得到分 //读小时 //得到小时 //读日 //得到日 //读月 //得到月 //读星期 //得到星期 //读年 //得到年
5.3.4 DS1302应用
利 用 DS1302 时 钟 可 以 设 计 一 个 较 完 整 的 电 子 日 历 , 本项目只要求实现时间信息的显示。功能要求为:程序从 DS1302读取的当前时间信息,利用八个数码管分页显示, 时间显示的格式为:第一页显示“年月日”,经过延时一 段时间后,第二页显示“时分秒”。
/*预处理*/ #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar sec,min,hour,date,month,week,year; sbit rst = P3^4; sbit sda = P3^5; sbit scl = P3^7; /*对DS1302初始化*/ void ds1302_init(void) {
在传送过程中如果RST置为低电平,则会终止此次数 据传送,I/O引脚变为高阻态。因此DS1302上电运行时,在 Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电 平时,才能将RST置为高电平。I/O为串行数据输入输出端 (双向), SCLK始终是输入端。
5.3.2 DS1302的寄存器和控制指令
D0 D1 D2 D3 D4 D5 D6 D7
CE SCLK
单字节写
I/O R/W A0 A1 A2 A3 A4 R/C 1
D0 D1 D2 D3 D4 D5 D6 D7
图5-3-3 DS1302数据读写时序图
二、DS1302基本操作
基本操作含系统对DS1302初始化、写一字节、读一 字节。初始化主要对DS1302的RST、SCLK引脚初始化。RST 置1时才能芯片正常的工作。但DS1302上电开始运行时, RST须保持低电平,只有在SCLK为低电平时,才能将RST置 为高电平。
对DS1302的操作主要是指单片机对其内部寄存器的 操作,DS1302内部共有12个寄存器,其中有7个寄存器存放 时间信息,数据格式为BCD码。此外,DS1302还有年份寄存 器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM控 制相关的寄存器等。时钟突发寄存器可一次性顺序读写除 充电寄存器以外的寄存器。时间控制寄存器见表5-3-1所示, 既地址/命令序列或时间寄存器控制字,读和写与相应时间 寄存器对应,如秒寄存器的控制字0x80为向DS1302内部写 入秒数据,0x81控制字为从DS1302读秒数据。在程序设计 过程中,对时间的读写操作前需增加一条控制指令。
(2)在控制指令字输入后的下一个SCLK时钟的上升 沿时数据被写入DS1302,数据发送从低位即位0开始依次写 入8位。在紧跟8位的控制指令字后的下一个SCLK脉冲的下 降沿读出DS1302的数据,读出数据时从低位0位至高位7。
(3)写保护寄存器控制DS1302时间的写允许操作, WP高电平有效,对应控制字为0x8e。当系统对DS1302进行 时间调整时,必须向写保护寄存器中写入0x00,时间调整 后再写入0x10。
5.3 实时时钟DS1302的原理与应用(项 目14)
单片机系统中常进行一些与时间有关的控制,例如 电子日历、自动测量与控制系统,特别是长时间无人值守 的测控系统,经常需要记录某些具有特殊意义的数据及其 出现的时间。实时时钟(RTC)是一个由晶体控制的,能够向 系统提供精度时间和日期的器件,系统与RTC间的通信可通 过相应的接口完成。
相关文档
最新文档