欢迎来到天天文库
浏览记录
ID:41852154
大小:210.56 KB
页数:4页
时间:2019-09-03
《RTC实时时钟方案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实时时钟的缩写是RTC(Real_TimeClock)oRTC是集成电路,通常称为时钟芯片。我们这里除了要提供精确的实时时间,而且需要在主电源掉电时,还可以工作,需要外加电池供电。常用的时钟芯片分为并行接口和串行接口两大类,并行时钟芯片数据传送速率较快,但连线多,不利于缩小产品体积,且占用较多的CPU端口资源。串行时钟芯片只需要占用CPU的2-3条I/O口线,可大人减小产品体积线接口。DS1302是由美国DALLAS公司推出的具有涓流充电能力的低功耗实吋吋钟芯片。DS1302可以対年、月、口、周、时、分、秒进行计时,且具有闰年补偿等多种功能,工作电压为2.0-5.5Vo这种电路
2、接口简单、价格低廉、使川方便,被广泛采川。DS1302的引脚排列,其中Vcc2为主电源,VCC1为后备电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vccl或Vcc2两者中的较大者供电。当Vcc2大于Vccl+O.2V时,Vcc2给DS1302供电。当Vcc2小于Vccl吋,DS1302由Vccl供电。XI和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平來启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST
3、为高电平时,所冇的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,1/0引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),SCLK为时钟输入端。下图为DS1302的引脚功能图:F面给出仿真图:LM016Ldata:16-18-10tine[08^20:06@3鱼总童山S5S833SSU1189«29■30■31">XTAL1XTAL2RSTPSENALEEAAT89C51PI4P15P16P1712V-iiii^一P
4、OO/ADOP0.1/AD1P0.2WD2P03ZAD3P04ZAD4P0.5/AD5P0.6^D6P0.7/AD7P20/A8P21/A9P22/A10P23/A11P24/A12P25ZA13P2.&A14P27/A15P3Q/RXDP3.1/TXDP3.2flWP3.3^NTrP34/TOP35(ri_P38^P37/RD■39■38■37■3G^35■34■33■32■21■22■23■11■12■13■14应■16■17LU28VCC1VCC2X1RSTSCLKVOX2DS1302RP11■3«4・6-6»7«£■BRESPACzL□X1―
5、—CRd6、RYST4I人4二■3■从上图可以看出DS13O2的使用还是非常方便的,我们需要外部晶振,通常选用32.768kHz的品振,还有就是供电,仿真直接将VCC1和VCC2接到了一起,实际上使用吋,我们可以将VCC2接到我们CPU的供电,然后VCC1使用备用电池即可。这样可以在断电的情况F也能达到计时的冃的。除此Z外,操作芯片的时序也非常简单,以下是工作的程序:sbitrst=P3AO;//dsl3O2sbitsclk=P3Al;//时钟sbitio=P3A2;//数据口//发送一个字节(8位)-一〃向DS13O2写一个字节voidsend(uchardt){uchari;for(i7、=0;i<8;i++){sclk=O;io=dt&0x01;//取第一*位dt»=l;//左移一位sclk=l;//上升沿有效}}//……写地址、数据——〃向DS13O2写入voidwrite(ucharaddr,uchardat)rst=O;sclk=O;rst=l;send(addr);//发送地址send(dat);//发送数据rst=l;}〃…读取8位•…ucharreceive(){uchari;uchardat=O;〃循环8次for(i=0;i<8;i++)sclk=l;dat»=l;sclk=O;//T降沿读取io=l;//读引脚前置一if(io==l)dat8、=9、0x80;}//此吋dat为16进制比如说0x10dat=(dat/16)*10+dat%16;〃转化为10进制,现在是10;return(dat);//返回值}〃■…读时钟・ucharread(ucharaddr){uchardat=0;rst=0;sclk=0;rst=l;send(addr);//发送地址dat二receive。;//接收rst=O;return(dat);}DS1302有12个寄存器,其中有7个寄存器与口历、时钟相关,存放的数据位为BCD码形式,其FI历、时间寄存器及
6、RYST4I人4二■3■从上图可以看出DS13O2的使用还是非常方便的,我们需要外部晶振,通常选用32.768kHz的品振,还有就是供电,仿真直接将VCC1和VCC2接到了一起,实际上使用吋,我们可以将VCC2接到我们CPU的供电,然后VCC1使用备用电池即可。这样可以在断电的情况F也能达到计时的冃的。除此Z外,操作芯片的时序也非常简单,以下是工作的程序:sbitrst=P3AO;//dsl3O2sbitsclk=P3Al;//时钟sbitio=P3A2;//数据口//发送一个字节(8位)-一〃向DS13O2写一个字节voidsend(uchardt){uchari;for(i
7、=0;i<8;i++){sclk=O;io=dt&0x01;//取第一*位dt»=l;//左移一位sclk=l;//上升沿有效}}//……写地址、数据——〃向DS13O2写入voidwrite(ucharaddr,uchardat)rst=O;sclk=O;rst=l;send(addr);//发送地址send(dat);//发送数据rst=l;}〃…读取8位•…ucharreceive(){uchari;uchardat=O;〃循环8次for(i=0;i<8;i++)sclk=l;dat»=l;sclk=O;//T降沿读取io=l;//读引脚前置一if(io==l)dat
8、=
9、0x80;}//此吋dat为16进制比如说0x10dat=(dat/16)*10+dat%16;〃转化为10进制,现在是10;return(dat);//返回值}〃■…读时钟・ucharread(ucharaddr){uchardat=0;rst=0;sclk=0;rst=l;send(addr);//发送地址dat二receive。;//接收rst=O;return(dat);}DS1302有12个寄存器,其中有7个寄存器与口历、时钟相关,存放的数据位为BCD码形式,其FI历、时间寄存器及
此文档下载收益归作者所有