收藏 分享(赏)

SD2405时钟芯片系列.pdf

上传人:精品资料 文档编号:8857916 上传时间:2019-07-14 格式:PDF 页数:26 大小:356.04KB
下载 相关 举报
SD2405时钟芯片系列.pdf_第1页
第1页 / 共26页
SD2405时钟芯片系列.pdf_第2页
第2页 / 共26页
SD2405时钟芯片系列.pdf_第3页
第3页 / 共26页
SD2405时钟芯片系列.pdf_第4页
第4页 / 共26页
SD2405时钟芯片系列.pdf_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、高精度实时时钟完全解决方案 SD2405 系列 内置电池、晶振、串行 NVSRAM/EEPROM、 12 字节 RAM 、 I IC 接口、多种中断输出、高精度、免调校 SD2400 系列是一种具有内置晶振、支持 IIC 串行接口的高精度实时时钟芯片, CPU 可使用该接口通过 5 位地址寻址来读写片内 32 字节寄存器的数据 (包括时间寄存器、 报警 寄存器、控制寄存器、通用 SRAM 寄存器 ) 。 SD2400 系列 内置晶振 , 该芯片可保证时钟精度为 5ppm(在 25下 ),即年误差小于 2.5 分钟;该芯片内置时钟精度调整功能 ,可以在很宽的范围内校正时钟的偏差 (分辨力 3pp

2、m),通过 外置或 内置的数字温度传感器可设定适应温度变化的调整值,实现在宽温范围内高精度的计时功能。 SD2400 系列内置的一次性 工业级 电池或充电电池可保证 在外部掉电情况下 时钟使用寿命为 5 8 年时间 ;内部具备电源切换电路,当芯片检测到主电源 V DD 掉到电池 电压以下 , 芯片会 自动转为由备电电池供电。 SD2400 系列内置单路定时 /报警中断输出 ,报警中断时间最长可设至 100 年;内置频率中断输出和倒计时中断输出。 SD2400 系列 采用了多种提高芯片可靠性的技术 ,可满足对实时时钟芯片的各种需要,是在选用高精度实时时钟时的理想选择。 l 低功耗: 1.0 A

3、典型值 ( 时钟电路部分, Ta=25 ) 。 l 工作电压: 3.3V 5.5V,工作温度: 民用级 0 70 ,工业级 40 85 。 l 标准 IIC 总线接口方式 , 时钟电路最高速度 400KHZ(4.5V 5.5V)。 l 年、月、日、星期、时、分、秒的 BCD 码输入 /输出 ,并可 通过独立的地址访问各时间寄存器 。 l 闰年自动调整功能 (从 2000 年 2099 年 )。 l 可选择 12/24 小时制式 . l 内置年、月、日、星期、时、分、秒 共 7 字节 的报警数据寄存器及 1 字节 的报警允许寄存器。 l 内置 12 字节通用 SRAM 寄存器 可用于存储用户的一

4、般数据。 l 三种中断均可选择从 INT 脚输出 , 并具有两个中断标志位 . l 可设定 并自动重置 的单路报警中断功能(时间范围 最长 设至 100 年) ,年、月、日、星期、时、分、秒报警共有 96 种组合方式,并有单事件报警和周期性报警两种中断输出 模式 . l 周期性频率中断输 出 : 从 32768 Hz 1/16Hz 1 秒 共十 五 种方波脉冲 . l 自动重置 的 8 位倒计时定时器 ,可选的 4 种时钟源( 4096HZ 、 64HZ 、 1HZ、 1/60HZ ) 。 l 内置晶振,出厂前已对时钟进行校准, 时钟精度为 5ppm(在 25 1 下 ),即年误差小于 2.5

5、 分钟。 l 内置时钟精度数字调整功能,可通过程序来调整走时的快慢。用户采用外置或内置的温度传感器,设定适应温度变化的调整值, 可 实现在宽温范围内高精度的计时功能 (在 -10 50 小于 5 ppm, 在 -40 85 小于 10 ppm) 。 l 内置备电自动切换功能 ,芯片依据不同的电压自动从 V DD 切换到 V BAT 或从 V BAT 切换到 V DD 。 l 在 V BAT 模式下,芯片具有中断输出允许或禁止的功能 , 可满足在备用电池供电时输出中断的需要。 l 内置的充电电池及充电电路,累计电池电量超过 550m Ah,电池使用寿命为 5 8 年时间;内置的一次性民用级电池使

6、用寿命为 3 5 年,一次性工业级电池使用寿命为 5 8 年时间。 l 内置的 16kbit 256kbit 非易失性 SRAM ( C/D/E 型) , 其读写次数为 100 亿次,且内部写延时小于 300ns 。 l 内置的 2kbit 256kbitE 2 PROM ( F/B/C/D/E 型) , 其擦写次数 100 万次 l 内置 IIC 总线 0.5 秒自动复位功能 (从 Start 命令开始计时 ),保证时钟数据的有效性及可靠性 , 避免总线挂死问题。 l 内置三个 时钟数据 写保护位 , 避免对数据的误写操作,可更好地保护时钟数据。 l 内置 V BAT 模式 IIC 总线通信

7、禁止功 能,从而避免在电池供电时 CPU 对时钟操作所消耗的电池电量,也可避免在主电源上 、 下电的过程中因 CPU 的 I/O 端口所输出的不受控的杂波信号对时钟芯片的误写操作,进一步提高时钟芯片的可靠性。 l 内置上电复位电路及指示位 ; 内置电源稳压 , 内部计时电压可低至 1.5V 。 l 芯片管脚 抗 静电 ( ESD)4KV。 l 芯片在兴威帆的评估板上可通过 4KV 的群脉冲 (EFT)干扰。 l 封装形式 :SD2400/2401/2404-24 脚的 DIP 封装 , SD2402/2405/2406-16 脚窄形 DIP 封装 ,SD2403- 8 脚的 DIP 封装 ;

8、有工业级型号,其尾缀加“ I”以示区分,如“ SD2400API”为 SD2400AP 的工业级,“ P”标志为直插封装形式 。 * ; 奥宇星单片机工作室 ; http:/ ; Copyright 2009 aoyux McuStudio ; All rights Reserved ;作者:奥宇星 QQ: 393193589 ;AT89S52 晶振频率为 11.0592MHz 指令周期: 1.085069us 功能说明:电子日历实例程序 ;*/ #include “reg52.h“ #include “intrins.h“ #define uchar unsigned char #defin

9、e uint unsigned int sbit key=P10;/;按键控制状态标志 sbit sda=P11;/;SD7218 模拟 I2C 数据传送位 sbit scl=P12;/;SD7218 模拟 I2C 时钟控制状态标志 sbit sda_sd2405=P34;/;SD2405 模拟 I2C 数据传送位 sbit scl_sd2405=P35;/;SD2405 模拟 I2C 时钟控制状态标志 uchar Hours;/定义 -时 uchar Minutes;/定义 -分 uchar Seconds;/定义 -秒 uchar Year;/定义 -年 uchar Month;/定义 -

10、月 uchar Date;/定义 -日期 uchar Weeks;/定义 -星期 uchar counter;/时间按键标志计数器 uchar counter2;/日期按键标志计数器 uchar code DispTab=0,1,2,3,4,5,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf;/1602: 09 and AF 数字 /字母 void delay1(uint z)/延时为 1ms uchar x,x1; for(;z0;z-) for(x=0;x0) i-; void star()/开 始 sda=1; delay();/30us 延时 scl=1; delay(

11、);/30us 延时 sda=0; delay();/30us 延时 void stop()/停止 sda=0; delay();/30us 延时 scl=1; delay();/30us 延时 sda=1; delay();/30us 延时 void ack()/应答 uchar z=0; while(sda=1) b=b+16; c=a+b; temp=c; return temp; BCD_to_Decimal(uchar temp)/BCD 码转换成十进制 uchar a,b,c; a=temp; b=0; if(a=16) while(a=16) a=a-16; b=b+10; c=

12、a+b; temp=c; return temp; write_weeks()/星期日调整函数 /Weeks=read_sd2405(0x64,0x03,0x65); if(Weeks=0) write(0x50,0x40,8); else write(0x50,0x40,DispTabWeeks); / void key_Value_key()/按键处理 uchar key_Value;/键值缓存 if(key=0) key_Value=read(0x51,0x10);/从 SD7218 读出按键值 while(key);/判断按键是否松开 switch(key_Value) case 13

13、6:/时间菜单按键按键 88 的 BCD 码是 136 if(counter2=0) counter+; if(counter=1) write(0x50,0x78,0xc0);/ else if(counter=2) write(0x50,0x78,0x18);/ else if(counter=3) write(0x50,0x78,0x03);/ else if(counter=4) counter=0; write(0x50,0x78,0x00); break; case 119:/ 保存时间按键按键 77 的 BCD 码是 119 if(counter=3) Seconds=Decim

14、al_to_BCD(Seconds); Minutes=Decimal_to_BCD(Minutes); Hours=Decimal_to_BCD(Hours); /向器件写一个数据 : /( 0x64 是器件写地址; 0x12 是字节地址; 0x00 是待写入的数据) write_sd2405(0x64,0x10,0x80); write_sd2405(0x64,0x0f,0x04); write_sd2405(0x64,0x0f,0x84); write_sd2405(0x64,0x00,Seconds); write_sd2405(0x64,0x01,Minutes); Hours|=0

15、x80; write_sd2405(0x64,0x02,Hours); counter=0; write(0x50,0x78,0x00); break; case 102:/ 日期菜单按键按键 66 的 BCD 码是 102 if(counter=0) counter2+; if(counter2=1) Year=BCD_to_Decimal(read_sd2405(0x64,0x06,0x65); Month=BCD_to_Decimal(read_sd2405(0x64,0x05,0x65); Date=BCD_to_Decimal(read_sd2405(0x64,0x04,0x65);

16、 Weeks=read_sd2405(0x64,0x03,0x65); if(counter2=1) write(0x50,0x47,2);/年 (20) write(0x50,0x46,0); write(0x50,0x45,DispTabYear/10);/年 write(0x50,0x44,DispTabYear%10); write(0x50,0x79,0x0f);/消隐 write(0x50,0x78,0xf0);/闪烁 else if(counter2=2) write(0x50,0x47,DispTabMonth/10);/月 write(0x50,0x46,DispTabMon

17、th%10); write(0x50,0x44,DispTabDate/10);/日期 write(0x50,0x43,DispTabDate%10); write_weeks();/星期日调整函数 write(0x50,0x79,0x26);/消隐 write(0x50,0x78,0xc0);/闪烁 else if(counter2=3) write(0x50,0x78,0x18);/闪烁 else if(counter2=4) write(0x50,0x78,0x01);/闪烁 else if(counter2=5) write(0x50,0x78,0x00);/闪烁 write(0x50

18、,0x79,0x24);/消隐 counter2=0; /counter=0; break; case 85:/ 保存日期按键按键 55 的 BCD 码是 88 if(counter2=4) /向器件写一个数据 : /( 0x64 是器件写地址; 0x12 是字节地址; 0x00 是待写入的数据) write_sd2405(0x64,0x10,0x80); write_sd2405(0x64,0x0f,0x04); write_sd2405(0x64,0x0f,0x84); Year=Decimal_to_BCD(Year); Month=Decimal_to_BCD(Month); Date

19、=Decimal_to_BCD(Date); write_sd2405(0x64,0x03,Weeks); write_sd2405(0x64,0x04,Date); write_sd2405(0x64,0x05,Month); write_sd2405(0x64,0x06,Year); counter2=0; write(0x50,0x78,0x00); write(0x50,0x79,0x24);/消隐 break; case 68:/ 加日期按键按键 44 的 BCD 码是 68 /uchar Year;/定义 -年 /uchar Month;/定义 -月 /uchar Date;/定义

20、 -日期 /uchar Weeks;/定义 -星期 if(counter2=1) Year+; if(Year=100) Year=0; write(0x50,0x45,DispTabYear/10);/年 write(0x50,0x44,DispTabYear%10); else if(counter2=2) Month+; if(Month=13) Month=1; write(0x50,0x47,DispTabMonth/10);/月 write(0x50,0x46,DispTabMonth%10); else if(counter2=3) Date+; if(Date=31) Date

21、=1; write(0x50,0x44,DispTabDate/10);/日期 write(0x50,0x43,DispTabDate%10); else if(counter2=4) Weeks+; if(Weeks=7) Weeks=0; write_weeks();/星期日调整函数 break; case 51:/ 减日期按键按键 33 的 BCD 码是 51 if(counter2=1) if(Year=0) Year=100; Year-; write(0x50,0x45,DispTabYear/10);/年 write(0x50,0x44,DispTabYear%10); else

22、 if(counter2=2) if(Month=1) Month=13; Month-; write(0x50,0x47,DispTabMonth/10);/月 write(0x50,0x46,DispTabMonth%10); else if(counter2=3) Date-; if(Date=1) Date=31; write(0x50,0x44,DispTabDate/10);/日期 write(0x50,0x43,DispTabDate%10); else if(counter2=4) if(Weeks=0) Weeks=7; Weeks-; write_weeks();/星期日调

23、整函数 break; case 34:/ 加时间按键按键 22 的 BCD 码是 34 if(counter2=0) if(counter=1) Hours+; if(Hours=24) Hours=0; else if(counter=2) Minutes+; if(Minutes=60) Minutes=0; else if(counter=3) Seconds+; if(Seconds=60) Seconds=0; led_disp(); break; case 17:/ 减时间按键按键 11 的 BCD 码是 17 if(counter2=0) if(counter=1) if(Hou

24、rs=0) Hours=24; Hours-; else if(counter=2) if(Minutes=0) Minutes=60; Minutes-; else if(counter=3) if(Seconds=0) Seconds=60; Seconds-; led_disp(); break; / void main() init(); while(1) key_Value_key(); if(counter|counter2)=0) /向器件读一个数 据: /( 0x64 是器件写地址; 0x00 是字节地址; 0x65 是器件读地址) Seconds=BCD_to_Decimal(read_sd2405(0x64,0x00,0x65); Minutes=BCD_to_Decimal(read_sd2405(0x64,0x01,0x65); Hours=BCD_to_Decimal(read_sd2405(0x64,0x02,0x65) led_disp();/数码管显示 delay1(200);

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报