高精度实时时钟SD2405系列Word文件下载.docx
- 文档编号:18672062
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:21
- 大小:257.09KB
高精度实时时钟SD2405系列Word文件下载.docx
《高精度实时时钟SD2405系列Word文件下载.docx》由会员分享,可在线阅读,更多相关《高精度实时时钟SD2405系列Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
l自动重置的8位倒计时定时器,可选的4种时钟源(4096HZ、64HZ、1HZ、1/60HZ)。
l内置晶振,出厂前已对时钟进行校准,时钟精度为±
5ppm(在25℃±
1℃下),即年误差小于2.5分钟。
l内置时钟精度数字调整功能,可通过程序来调整走时的快慢。
用户采用外置或内置的温度传感器,设定适应温度变化的调整值,可实现在宽温范围内高精度的计时功能(在-10℃~50℃小于5ppm,在-40℃~85℃小于10ppm)。
l内置备电自动切换功能,芯片依据不同的电压自动从VDD切换到VBAT或从VBAT切换到VDD。
l在VBAT模式下,芯片具有中断输出允许或禁止的功能,可满足在备用电池供电时输出中断的需要。
l内置的充电电池及充电电路,累计电池电量超过550mAh,电池使用寿命为5~8年时间;
内置的一次性民用级电池使用寿命为3~5年,一次性工业级电池使用寿命为5~8年时间。
l内置的16kbit~256kbit非易失性SRAM(C/D/E型),其读写次数为100亿次,且内部写延时小于300ns。
l内置的2kbit~256kbitE2PROM(F/B/C/D/E型),其擦写次数100万次
l内置IIC总线0.5秒自动复位功能(从Start命令开始计时),保证时钟数据的有效性及可靠性,避免总线挂死问题。
l内置三个时钟数据写保护位,避免对数据的误写操作,可更好地保护时钟数据。
l内置VBAT模式IIC总线通信禁止功能,从而避免在电池供电时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封装;
有工业级型号,其尾缀加“I”以示区分,如“SD2400API”为SD2400AP的工业级,“P”标志为直插封装形式。
**************************************************
;
奥宇星单片机工作室
Copyright2009aoyuxMcuStudio
AllrightsReserved
作者:
奥宇星
QQ:
393193589
AT89S52晶振频率为11.0592MHz指令周期:
1.085069us
功能说明:
电子日历实例程序
********************************************************************************************/
#include"
reg52.h"
intrins.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitkey=P1^0;
//;
按键控制状态标志
sbitsda=P1^1;
SD7218模拟I2C数据传送位
sbitscl=P1^2;
SD7218模拟I2C时钟控制状态标志
sbitsda_sd2405=P3^4;
SD2405模拟I2C数据传送位
sbitscl_sd2405=P3^5;
SD2405模拟I2C时钟控制状态标志
ucharHours;
//定义-----时
ucharMinutes;
//定义---分
ucharSeconds;
//定义---秒
ucharYear;
//定义------年
ucharMonth;
//定义-----月
ucharDate;
//定义------日期
ucharWeeks;
//定义-----星期
ucharcounter;
//时间按键标志计数器
ucharcounter2;
//日期按键标志计数器
ucharcodeDispTab[]={0,1,2,3,4,5,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf};
//1602:
0~9andA~F数字/字母
voiddelay1(uintz)//延时为1ms
{
ucharx,x1;
for(;
z>
0;
z--)
for(x=0;
x<
114;
x++)
for(x1=0;
x1<
1;
x1++);
}
voiddelay()//30us延时
uchari;
i=30;
while(i>
0)
i--;
voidstar()//开始
sda=1;
delay();
//30us延时
scl=1;
sda=0;
voidstop()//停止
voidack()//应答
{ucharz=0;
while((sda==1)&
&
(z<
50))z++;
//条件判断,sda=1,则没有应答。
如果没有应答则延时:
z<
50,z++;
后返回
scl=0;
//延时
///写一个数据函数
//器件写地址slave_write_address
//字节地址byte_address
//待写入数据data_data
voidwrite(ucharslave_write_address,byte_address,uchardata_data)//写一个数据
uchartemp,temp1,i,ii;
star();
//开始
for(ii=0;
ii<
3;
ii++)//根据I2C资料,和时序图,按顺序送:
器件写地址,字节地址,数据
if(ii==0)
temp=slave_write_address;
//送器件写地址
temp1=slave_write_address;
elseif(ii==1)
temp=byte_address;
//送数据
temp1=byte_address;
elseif(ii==2)
temp=data_data;
temp1=data_data;
for(i=0;
i<
8;
i++)
temp=temp1;
temp=temp&
0x80;
//相与后,把不相关的位清零
if(temp==0x80)//根据前面相与后,判断temp是否等于0x80,是则该位为1
else
temp1=temp1<
<
//向左移出1位
ack();
stop();
//停止
///读一个数据函数
//器件读地址slave_read_address
//读出的数据data_data
read(ucharslave_write_address,ucharslave_write_Directive)//读一个数据
uchartemp,temp1,i,ii,x,data_data;
2;
ii++)//根据I2C文档资料,和时序图,按顺序送:
temp=slave_write_Directive;
temp1=slave_write_Directive;
i++)//开始读数据
//5us延时
//应答
data_data=data_data<
//向左移入1位
if(sda==1)//判断数据线是否是高电平
data_data|=0x01;
//把读到的数据或0X01
//else
//data_data|=0x00;
returndata_data;
//返回读到的数据
//////////////////////////////////////////////////////////////////
//sda_sd2405=P3^4;
//sbitscl_sd2405=P3^5
//
voiddelay_sd2405()//5us延时
_nop_();
voidstar_sd2405()//开始
sda_sd2405=1;
delay_sd2405();
scl_sd2405=1;
while(~sda_sd2405);
//检测数据线是否被钳位
sda_sd2405=0;
voidstop_sd2405()//停止
while(~sda_sd2405)
voidack_sd2405()//应答
{ucharz1=0;
while((sda_sd2405==1)&
(z1<
50))z1++;
scl_sd2405=0;
voidwrite_sd2405(ucharslave_write_address,ucharbyte_address,uchardata_data)//写一个数据
star_sd2405();
//送字节地址
ack_sd2405();
stop_sd2405();
read_sd2405(ucharslave_write_address,ucharbyte_address,ucharslave_read_address)//读一个数据
器件写地址,字节地址,器件读地址
temp=slave_read_address;
//送器件读地址
temp1=slave_read_address;
if(sda_sd2405==1)//判断数据线是否是高电平
voidinit()//0x50是器件写地址;
0xff是待写入的数据或指令)
//TMOD=0x10;
//定时器T1工作于方式1,16位计数器
//TH1=0x4b;
//TL1=0xff;
//EA=1;
//开总中断允许
//ET1=1;
//开定时器T1允许控制
//PT1=1;
//开定时器T1中断为最高优先级
//TR1=1;
//T1开始运行
//write(0x50,0x6a);
//测试指令:
//write(0x50,0x68);
//复位(清除)指令:
//write(0x50,0x61);
//左移指令:
//write(0x50,0x62);
//右移指令:
//write(0x50,0x63);
//循环左移指令:
//write(0x50,0x64);
//循环右移指令:
//Hours=21;
//Minutes=43;
//Seconds=0;
//Year=20;
//Month=20;
//Date=20;
//Weeks=5;
counter=0;
counter2=0;
write(0x50,0x47,0x00);
//数码管初始化
write(0x50,0x46,0x00);
write(0x50,0x45,0x00);
write(0x50,0x44,0x00);
write(0x50,0x43,0x00);
write(0x50,0x42,0x00);
write(0x50,0x41,0x00);
//数码管
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高精度 实时 时钟 SD2405 系列