时钟芯片PPT演示课件_第1页
时钟芯片PPT演示课件_第2页
时钟芯片PPT演示课件_第3页
时钟芯片PPT演示课件_第4页
时钟芯片PPT演示课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020/5/19,泉,第1页,第六讲,1302电子时钟芯片编程与应用,2008年7月17日星期四,泉,第2页,一、1302芯片概述,DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间使用SPI总线,简单地采用同步串行的方式进行通信仅需用到三个口线1、RST复位2、I/O数据线3、SCLK串行时钟,2008年7月17日星期四,泉,第3页,二、管脚描述,X1X232.768KHz晶振管脚GND地RST复位脚I/O数据输入/输出引脚SCLK串行时钟Vcc1,Vcc2电源供电管脚,2008年7月17日星期四,泉,第4页,命令(地址)分配,命令与地址混合编程,2008年7月17日星期四,泉,第5页,命令分布规律,2008年7月17日星期四,泉,第6页,三、命令及其格式,2008年7月17日星期四,泉,第7页,四、读写时序,单个字节写先输出写命令,后输出数据一个周期:RST=1I/O引脚送出数据SCLK上升沿=1=0先输出命令,紧接着输出数据,共16个SCLK,2008年7月17日星期四,泉,第8页,程序模块1写一个字节数据,voidv_W1302(ucharucAddr,ucharucDa)T_RST=0;T_CLK=0;T_RST=1;v_RTInputByte(ucAddr);/*写地址,命令*/v_RTInputByte(ucDa);/*写1Byte数据*/T_CLK=1;T_RST=0;,2008年7月17日星期四,泉,第9页,单个字节写子函数,voidv_RTInputByte(ucharucDa)uchari;ACC=ucDa;for(i=8;i0;i-)T_IO=ACC0;/*相当于汇编中的RRC*/T_CLK=1;T_CLK=0;ACC=ACC1;,2008年7月17日星期四,泉,第10页,2、读单个字节,单个字节读先输出读命令,后读入数据一个周期:RST=1I/O引脚读入数据SCLK上升沿=1=0先输出命令,紧接着读入数据,共16个SCLK,2008年7月17日星期四,泉,第11页,程序模块2读一个字节数据,ucharuc_R1302(ucharucAddr)ucharucDa;T_RST=0;T_CLK=0;T_RST=1;v_RTInputByte(ucAddr);/*写地址,读命令*/ucDa=uc_RTOutputByte();/*读1Byte数据*/T_CLK=1;T_RST=0;return(ucDa);,2008年7月17日星期四,泉,第12页,读个字节数据子函数,voidv_RTInputByte(ucharucDa)uchari;ACC=ucDa;for(i=8;i0;i-)T_IO=ACC0;/*相当于汇编中的RRC*/T_CLK=1;T_CLK=0;ACC=ACC1;,2008年7月17日星期四,泉,第13页,五、时钟控制,1、写多个字节:程序名称:v_BurstW1302T*说明:先写地址,后写数据(时钟多字节方式)*功能:往DS1302写入时钟数据(多字节方式)*调用:v_RTInputByte()*输入:pSecDa:时钟数据地址格式为:秒分时日月星期年控制*8Byte(BCD码)1B1B1B1B1B1B1B1B*返回值:无,2008年7月17日星期四,泉,第14页,voidv_BurstW1302T(uchar*pSecDa)uchari;v_W1302(0 x8e,0 x00);/*控制命令,WP=0,写操作*/T_RST=0;T_CLK=0;T_RST=1;v_RTInputByte(0 xbe);/*0 xbe:时钟多字节写命令*/for(i=8;i0;i-)/*8Byte=7Byte时钟数据+1Byte控制*/v_RTInputByte(*pSecDa);/*写1Byte数据*/pSecDa+;T_CLK=1;T_RST=0;,2008年7月17日星期四,泉,第15页,读多个字节:名称:v_BurstR1302T*说明:先写地址,后读命令/数据(时钟多字节方式)*功能:读取DS1302时钟数据*调用:v_RTInputByte(),uc_RTOutputByte()*输入:pSecDa:时钟数据地址格式为:秒分时日月星期年*7Byte(BCD码)1B1B1B1B1B1B1B*返回值:ucDa:读取的数据,2008年7月17日星期四,泉,第16页,voidv_BurstR1302T(uchar*pSecDa)uchari;T_RST=0;T_CLK=0;T_RST=1;v_RTInputByte(0 xbf);/*0 xbf:时钟多字节读命令*/for(i=8;i0;i-)*pSecDa=uc_RTOutputByte();/*读1Byte数据*/pSecDa+;T_CLK=1;T_RST=0;,2008年7月17日星期四,泉,第17页,六、时钟初始化,名称:v_Set1302*说明:*功能:设置初始时间*调用:v_W1302()*输入:pSecDa:初始时间地址。初始时间格式为:秒分时日月星期年*7Byte(BCD码)1B1B1B1B1B1B1B*返回值:无,2008年7月17日星期四,泉,第18页,voidv_Set1302(uchar*pSecDa)uchari;ucharucAddr=0 x80;/*命令从秒开始,WP=0,写操作*/v_W1302(0 x8e,0 x00);/*控制命令,WP=0,写操作*/for(i=7;i0;i-)v_W1302(ucAddr,*pSecDa);/*秒分时日月星期年*/pSecDa+;ucAddr+=2;/*命令从秒开始,每次加2是下一条*/v_W1302(0 x8e,0 x80);/*控制命令,WP=1,写保护?*/,2008年7月17日星期四,泉,第19页,七、读取DS1302当前时间,名称:v_Get1302*说明:*功能:读取DS1302当前时间*调用:uc_R1302()*输入:ucCurtime:保存当前时间地址。当前时间格式为:秒分时日月星期年*7Byte(BCD码)1B1B1B1B1B1B1B*返回值:无,2008年7月17日星期四,泉,第20页,名称:v_Get1302*说明:*功能:读取DS1302当前时间*调用:uc_R1302()*输入:ucCurtime:保存当前时间地址。当前时间格式为:秒分时日月星期年*7Byte(BCD码)1B1B1B1B1B1B1B*返回值:无,2008年7月17日星期四,泉,第21页,voidv_Get1302(ucharucCurtime)uchari;ucharucAddr=0 x81;/*命令从秒开始,WP=1,读操作*/for(i=0;i7;i+)ucCurtimei=uc_R1302(ucAddr);/*格式为:秒分时日月星期年*/ucAddr+=2;/*命令从秒开始,每次加2是下一条*/,2008年7月17日星期四,泉,第22页,最直接的程序,sbitCLK=P10;file:/与硬件相关的连线clk为DS1302的时钟信号线sbitDAT=P11;file:/DAT为DS1302的I/O数据线sbitRST=P12;file:/RST为DS1302的RST信号线sbitACC0=ACC0;sbitACC1=ACC1;sbitACC2=ACC2;sbitACC3=ACC3;sbitACC4=ACC4;sbitACC5=ACC5;sbitACC6=ACC6;sbitACC7=ACC7;,2008年7月17日星期四,泉,第23页,/*函数名:write(address);/*参数:地址/数据字节/*功能:用于向DS1302输入地址或数据信息,voidwrite(ucharaddress)ACC=address;CLK=0;DAT=ACC0;CLK=1;CLK=0;DAT=ACC1;CLK=1;CLK=0;DAT=ACC2;CLK=1;CLK=0;DAT=ACC3;CLK=1;CLK=0;DAT=ACC4;CLK=1;CLK=0;DAT=ACC5;CLK=1;CLK=0;DAT=ACC6;CLK=1;CLK=0;DAT=ACC7;CLK=1;,2008年7月17日星期四,泉,第24页,/*函数名:read();/*参数:无/*功能:用于从DS1302读出时间数据信息,voidread()/DAT=1;/*注意在进行读操作之前DAT应置1*/CLK=0;ACC0=DAT;CLK=1;CLK=0;ACC1=DAT;CLK=1;CLK=0;ACC2=DAT;CLK=1;CLK=0;ACC3=DAT;CLK=1;CLK=0;ACC4=DAT;CLK=1;CLK=0;ACC5=DAT;CLK=1;CLK=0;ACC6=DAT;CLK=1;CLK=0;ACC7=DAT;CLK=1return(ACC);,2008年7月17日星期四,泉,第25页,/*函数名:W_Byte(address,byte);/*参数:地址,数据/*功能:用于向DS1302指定的地址address输入数据byte,/*/voidW_Byte(ucharaddress,ucharbyte)RST=0;CLK=0;RST=1;write(address);write(byte);RST=0;,2008年7月17日星期四,泉,第26页,/*函数名:R_Byte(address);/*参数:地址/*功能:用于从DS1302指定地址address处读出数据,并将数据存放到ACC中,ucharR_Byte(ucharaddress)RST=0;CLK=0;RST=1;write(address);DAT=1;read();RST=0;return(ACC);,2008年7月17日星期四,泉,第27页,/*函数名:timeset();/*参数:无/*功能:用于设置DS1302的时间,具体时间值存放在time_set7数组中,voidtimeset()uchari;W_Byte(0 x8e,0 x00);for(i=0;i7;i+)W_Byte(0 x80+i+i,time_seti);,2008年7月17日星期四,泉,第28页,/*函数名:readtime();/*参数:无/*功能:用于读取DS1302的当前时间,具体时间值存放在timecur7数组中,voidreadtime()uchari;for(i=0;i7;i+)timercuri=R_Byte(0 x81+i+i);,2008年7月17日星期四,泉,第29页,/*函数名:BCD_to_INT();/*参数:无/*功能:用于将时间BCD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论