




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内置晶振、宽温补偿的高精度实时时钟ICSD3088具有电池接口及充电电路、电池电压检测和欠压报警、70字节用户SRAM、96种定时中断输出、温度计及报警输出、8位ID码、贴片SOP16封装D3088是一种具有标准IIC接口的实时时钟芯片,CPU可使用该接口通过7位地址寻址来读写片内122字节寄存器的数据(包括时间寄存器、报警寄存器、控制寄存器、温度寄存器、用户SRAM寄存器及ID码寄存器)。SD3088内置晶振及数字温度计,用户可以不用顾虑因外接晶振、谐振电容等所带来的元件匹配误差问题、晶振温度特性问题及可靠性问题,实现在常温及宽温范围内不需用户干预、全自动、全电源环境补偿的高精度、高可靠计时功能。SD3088内置定时/报警中断输出脚和独立的32K输出脚,报警中断时间最长可设至100年。SD3088内置温度计用于对时钟精度的宽温补偿,同时可设置高低温报警温度值,并可记录温度报警具体的时间。SD3088具有一个后备电池输入脚VBAT,内部的充电电路可对外接的充电电池进行智能充电,也可对电池电量进行检测和欠压报警指示。SD3088内置8字节的ID,每一颗芯片具备唯一的身份识别码。SD3088软件向下兼容SD2068主要性能特点:l低功耗:0.8A典型值(VBAT=3.0V,Ta=25)。l工作电压:2.3V5.5V,工作温度为-40+85。l标准IIC总线接口方式,最高速度400KHZ(4.5V5.5V)。l年、月、日、星期、时、分、秒的BCD码输入/输出,并可通过独立的地址访问各时间寄存器。l闰年自动调整功能(从2000年2099年)。l可选择12/24小时制式.l内置年、月、日、星期、时、分、秒共7字节的报警数据寄存器及1字节的报警允许寄存器,共有96种组合报警 方式,并有单事件报警和周期性报警两种中断输出模式,报警时间最长可设至100年。l周期性频率中断输出:从32768Hz1/16Hz1秒共十五种方波脉冲.l自动重置的三字节共24位的倒计时定时器,可选的4种时钟源(4096HZ、1024HZ、1秒、1分钟),最小定时为244us,最长定时可到31年,通过计算可获得较精确的毫秒级定时值。l三种中断均可选择从INT脚输出,并具有两个中断标志位.l内置70字节通用SRAM寄存器可用于存储用户的一般数据。l具有可控的32768HZ方波输出脚F32K,可以位允许/禁止32K输出。l内置8bit转换结果的数字温度传感器,为了节省电池电量消耗,设为VDD模式下60S间隔测温一次,电池模式600S间隔测温一次。l内置晶振和谐振电容,芯片内部通过高精度补偿方法,实现在宽温范围内高精度的计时功能,其中25精度2KV。l芯片在兴威帆的评估板上可通过4KV的群脉冲(EFT)干扰。lCMOS工艺l封装形式:SOP16(宽度300mil)。管脚设置: 管脚说明:下为:SD3088 51 C语言时钟写程序/*/ 实时时钟SD25XX读写C51演示程序/ AT89S52 11.0592MHz/ E-mail: FAE/ TEL: Last update: 2014/06/15/*#pragma code#include #include /*变量及IO口定义*typedef unsigned char uchar;typedef unsigned int uint;sbitSDA=P34; /EEPROM和RTC共总线sbitSCL=P35;/EEPROM和RTC共总线ucharbat1,bat2,temp;/电池电量和温度uint bat;/电池电量值uchar data18; / EEPROM数据uchar date7; /日期数组 /*date6=year,date5=month,date4=day,date3=week, date2=hour,date1=minute,date0=second*/#definetrue 1#define false 0/*SD30系列函数名*/void I2CWait(void);bit I2CStart(void);void I2CStop(void);void I2CAck(void);void I2CNoAck(void);bit I2CWaitAck(void);void I2CSendByte(uchar demand);uchar I2CReceiveByte(void);bit I2CReadDate(void);uchar ReadOneByte(uchar add);void WriteOneByte(uchar add,uchar date);void Delay(uint nn);bit I2CWriteDate(void);bit WriteTimeOn(void);bit WriteTimeOff(void);/*I2C延时4us*/void I2CWait(void)/4us_nop_();_nop_();_nop_();_nop_();/AT89S52一个nop是1us/*开启SD30系列的I2C总线*/bit I2CStart(void)SDA=1;SCL=1;I2CWait();if(!SDA)return false;/SDA线为低电平则总线忙,退出SDA=0;I2CWait();while(SDA)return false;/SDA线为高电平则总线出错,退出SCL=0;I2CWait();return true;/*关闭SD30系列的I2C总线*/void I2CStop(void)SDA=0;SCL=0;I2CWait();SCL=1;I2CWait();SDA=1;/*发送 ACK*/void I2CAck(void)SDA=0;SCL=0;I2CWait();SCL=1;I2CWait();SCL=0;/*发送NO ACK*/void I2CNoAck(void)SDA=1;SCL=0;I2CWait();SCL=1;I2CWait();SCL=0;/*读取ACK信号*/bit I2CWaitAck(void) /返回为:1=有ACK,0=无ACKSCL=0;SDA=1;/设置SDA为输入I2CWait();SCL=1;I2CWait();while(SDA)SCL=0;return false;SCL=0;return true;/*MCU向SD30系列发送一个字节*/void I2CSendByte(uchar demand) /数据从高位到低位/uchar i=8; while(i-)SCL=0;_nop_();SDA=(bit)(demand&0x80);demand=1;I2CWait();SCL=1;I2CWait();SCL=0;/*MCU从SD30系列读入一字节*/uchar I2CReceiveByte(void) /数据从高位到低位/uchar i=8;uchar ddata=0;SDA=1;/设置SDA为输入while(i-)ddata=1; /数据从高位开始读取SCL=0;I2CWait();SCL=1;I2CWait();/从高位开始 ddata|=SDA;ddata=1if(SDA)ddata|=0x01;SCL=0;return ddata;/*写SD30系列允许程序*/bit WriteTimeOn(void)if(!I2CStart()return false;I2CSendByte(0x64); if(!I2CWaitAck()I2CStop(); return false; I2CSendByte(0x10);/设置写地址10H I2CWaitAck();I2CSendByte(0x80);/置WRTC1=1 I2CWaitAck();I2CStop(); I2CStart();I2CSendByte(0x64); I2CWaitAck(); I2CSendByte(0x0F);/设置写地址0FH I2CWaitAck();I2CSendByte(0xff);/置WRTC2,WRTC3=1 I2CWaitAck();I2CStop(); /*写SD30系列禁止程序*/bit WriteTimeOff(void)if(!I2CStart()return false;I2CSendByte(0x64); if(!I2CWaitAck()I2CStop(); return false; I2CSendByte(0x0F);/设置写地址0FH I2CWaitAck();I2CSendByte(0xb4) ;/置WRTC2,WRTC3=0 I2CWaitAck();I2CSendByte(0x0) ;/置WRTC1=0(10H地址) I2CWaitAck();I2CStop(); /*读SD30系列实时数据寄存器*/bit I2CReadDate(void)uchar n;if(!I2CStart()return false;I2CSendByte(0x65); if(!I2CWaitAck()I2CStop(); return false;for(n=0;n7;n+)daten=I2CReceiveByte();if (n!=6) /最后一个数据不应答I2CAck();I2CNoAck();I2CStop();/*写SD30系列实时数据寄存器*/bit I2CWriteDate(void) /设置时间:2013年2月2日 07:59:55 星期一。 写时间操作要求一次对实时时间寄存器(00H06H)依次写入, /不可以单独对7个时间数据中的某一位进行写操作 , 否则可能会引起时间数据的错误进位. /所以要修改其中某一个数据 , 应一次性写入全部 7 个实时时钟数据.WriteTimeOn(); /使能,开锁if(!I2CStart()return false;I2CSendByte(0x64); if(!I2CWaitAck()I2CStop(); return false;I2CSendByte(0x00); /设置写起始地址 I2CWaitAck();I2CSendByte(0x55); /second I2CWaitAck();I2CSendByte(0x59); /minute I2CWaitAck();I2CSendByte(0x07|0x80); /hour ,二十四小时制 I2CWaitAck();I2CSendByte(0x01); /week I2CWaitAck();I2CSendByte(0x02);/day I2CWaitAck();I2CSendByte(0x02);/month I2CWaitAck();I2CSendByte(0x13);/year I2CWaitAck();I2CStop();WriteTimeOff(); /使能,关锁/*写SD30系列单字节程序*/void WriteOneByte(uchar add, uchar date)WriteTimeOn();I2CStart();I2CSendByte(0x64); I2CWaitAck(); I2CSendByte(add);/设置写地址 I2CWaitAck(); I2CSendByte(date);/写数据I2CWaitAck();I2CStop(); WriteTimeOff(); /*读SD30系列单字节程序*/uchar ReadOneByte(uchar add)uchar buf;I2CStart();I2CSendByte(0x64); I2CWaitAck(); I2CSendByte(add);/设置要读的地址 I2CWaitAck();I2CStart(); I2CSendByte(0x65);/写数据I2CWaitAck();buf=I2CReceiveByte();/读数据I2CNoAck();I2CStop(); return buf;/*设置SD30系列报警中断演示程序*/void WriteALARM(void) /设置报警时间:2012年2月14日 8:00WriteOneByte(0x09,0x08); /8时WriteOneByte(0x0b,0x14);/14日WriteOneByte(0x0c,0x14);/02月WriteOneByte(0x0d,0x14);/12年WriteOneByte(0x0e,0x74);/设置报警允许(使能年、月、日、小时报警)WriteOneByte(0x10,0x92);/设置INT中断选通(INTS1,INTS0),及报警中断总允许位(INTAE)/*关闭SD30XX报警中断程序*/void ClrALARM(void) /关闭报警中断WriteOneByte(0x10,0x90);/*设置SD30XX倒计时中断*/void SetDjs(void) /设置倒计时中断WriteOneByte(0x10,0x0f); /先清倒计时中断总允许位(INTDE)WriteOneByte(0x10,0xf4);/设置周期性中断(IM=1)INT中断选通(INTS1,INTS0),配置倒计时中断总允许位(INTDE)WriteOneByte(0x11,0x30);/选择定时器频率源(TDS1、TDS0)为1/60HZWriteOneByte(0x13,5); /倒计时初值寄存器,设置24位倒计时计数初值(5min)WriteOneByte(0x14,0);/倒计时初值寄存器,设置24位倒计时计数初值(5min)WriteOneByte(0x15,0);/倒计时初值寄存器,设置24位倒计时计数初值(5min)/*关闭SD30XX倒计时中断程序*/void ClrDjs(void) WriteOneByte(0x10,0xf0);/*设置SD30XX频率中断*/void SetFrq(void)WriteOneByte(0x10,0xa1); /选通频率中断(INTS1,INTS0),设置频率中断总允许位(INTFE)WriteOneByte(0x11,0x09);/设置2Hz频率中断/*关闭SD30XX频率中断*/void ClrFrq(void) WriteOneByte(0x10,0xa0);/*尾缀B、C型第一页,F型写EEPROM程序(连续写)*/void WriteEE(uchar sramadd,uchar sramdata)uchar n;I2CStart();I2CSendByte(0xa0); /发送EEPROM写寄存器命令I2CWaitAck(); I2CSendByte(sramadd); /发送访问地址I2CWaitAck(); for(n=0;n8;n+)I2CSendByte(sramdata); /发送数据,数据写入寄存器单元(地址自动加1)。B、C型最多连续发送16个数据,F型最多连I2CWaitAck(); /续发送8个数据,若使用的是NVSRAM则无此限制,可连续写任意多个数据直到存储器的末地址。I2CStop(); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); /总延时10ms /*尾缀D、E型写EEPROM程序(连续写)*/void WriteEEram(uchar sramadd_hi,uchar sramadd_lo,uchar sramdata)uchar n;I2CStart();I2CSendByte(0x0A0);I2CWaitAck();I2CSendByte(sramadd_hi); /先发送高8位地址I2CWaitAck();I2CSendByte(sramadd_lo); /再发送低8位地址I2CWaitAck(); for(n=0;n8;n+)I2CSendByte(sramdata); /发送数据,数据写入寄存器单元(地址自动加1)。D型最多连续发送32个数据,E型最多连I2CWaitAck(); /续发送64个数据,若使用的是NVSRAM则无此限制,可连续写任意多个数据直到存储器的末地址。I2CStop(); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); Delay(250); /总延时10ms,用NVSRAM不需要此延时 /*尾缀B、C型第一页,F型读EEPROM程序(连续读)*/vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025黑龙江哈尔滨市工人文化宫工作人员招聘7人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025广西姆洛甲文化旅游投资有限公司公开招聘1人模拟试卷及答案详解(各地真题)
- 2025河南新乡市长垣市高章士学校招聘模拟试卷及参考答案详解
- 2025贵州黔西南州生态移民局公益性岗位招聘2人模拟试卷及答案详解(典优)
- 2025年吉林松辽水利水电咨询有限责任公司公开招聘模拟试卷有完整答案详解
- 2025内蒙古能源集团有限公司煤电事业部、金山第三热电有限公司招聘30人模拟试卷及答案详解一套
- 2025年洛阳宜阳县选聘县属国有集团公司部长10名模拟试卷及答案详解(历年真题)
- 2025广东湛江市坡头区社会保险基金管理局招聘编外人员1人模拟试卷及1套参考答案详解
- 2025河南郑州市新郑市面向社会聘任政务服务社会监督员、政务服务体验员10人模拟试卷及一套完整答案详解
- 2025河南郑州联勤保障中心二季度社会人才招聘132人考前自测高频考点模拟试题有答案详解
- 地面拆除合同模板怎么写(3篇)
- 2025秋新教材统编版八年级上册道德与法治第十一课 军强才能国安 教案(共2课时)
- 人教PEP版(2024)四年级上册英语全册教案(单元整体教学设计)
- 数控滚齿机操作指导手册
- 平安银行 iq测试题及答案
- 医保智能审核培训课件
- 导管相关性感染的预防与护理
- 2025年大学试题(大学选修课)-TRIZ创新方法历年参考题库含答案解析(5套典型考题)
- 如何培养数学尖子生的讲座
- 2025年义务教育劳动新课程(2025版)标准试题含参考答案
- 专题02选必一Unit2(知识全梳理考点精准练)
评论
0/150
提交评论