您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > DS1302中文资料-带源代码
DS1302DS1302DS1302DS1302中文资料中文资料中文资料中文资料DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM可通过简单的串行接口与单片机进行通信可提供:--秒分时日日期月年的信息--每月的天数和闰年的天数可自动调整--可通过AM/PM指示决定采用24或12小时格式--保持数据和时钟信息时功率小于1mWDS1302DS1302DS1302DS1302引脚引脚引脚引脚X1X232.768KHz晶振管脚GND地CE复位脚I/O数据输入/输出引脚SCLK串行时钟Vcc1,Vcc2电源供电管脚各引脚的功能为各引脚的功能为各引脚的功能为各引脚的功能为:Vcc1Vcc1Vcc1Vcc1:主电源;Vcc2Vcc2Vcc2Vcc2:备份电源。当Vcc2Vcc1+0.2VVcc2Vcc1+0.2VVcc2Vcc1+0.2VVcc2Vcc1+0.2V时,由Vcc2Vcc2Vcc2Vcc2向DS1302DS1302DS1302DS1302供电,当Vcc2Vcc2Vcc2Vcc2Vcc1Vcc1Vcc1Vcc1时,由Vcc1Vcc1Vcc1Vcc1向DS1302DS1302DS1302DS1302供电。SCLKSCLKSCLKSCLK:串行时钟,输入,控制数据的输入与输出;I/OI/OI/OI/O:三线接口时的双向数据线;CECECECE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CECECECE开始控制字访问移位寄存器的控制逻辑;其次,CECECECE提供结束单字节或多字节数据传输的方法。参考电路参考电路参考电路参考电路:如上图所示:DS1302DS1302DS1302DS1302与单片机的连接也仅需要3333条线:CECECECE引脚、SCLKSCLKSCLKSCLK串行时钟引脚、I/OI/OI/OI/O串行数据引脚,Vcc2Vcc2Vcc2Vcc2为备用电源,外接32.768kHz32.768kHz32.768kHz32.768kHz晶振,为芯片提供计时脉冲。实际电路实际电路实际电路实际电路::::VccVccVccVcc_5V_5V_5V_5V::::为电路中的为电路中的为电路中的为电路中的主电源;主电源;主电源;主电源;Vcc2Vcc2Vcc2Vcc2,也就是,也就是,也就是,也就是BT1BT1BT1BT1为为为为备份电源。当备份电源。当备份电源。当备份电源。当Vcc2Vcc1+0.2VVcc2Vcc1+0.2VVcc2Vcc1+0.2VVcc2Vcc1+0.2V时,时,时,时,由由由由Vcc2Vcc2Vcc2Vcc2向向向向DS1302DS1302DS1302DS1302供电,当供电,当供电,当供电,当Vcc2Vcc2Vcc2Vcc2Vcc1Vcc1Vcc1Vcc1时,由时,由时,由时,由Vcc1Vcc1Vcc1Vcc1向向向向DS1302DS1302DS1302DS1302供电供电供电供电CLKCLKCLKCLK和和和和I/OI/OI/OI/O虽然和虽然和虽然和虽然和IICIICIICIIC总线接在一条引脚上总线接在一条引脚上总线接在一条引脚上总线接在一条引脚上,,,,但但但但DS1302DS1302DS1302DS1302其实并不是其实并不是其实并不是其实并不是使用使用使用使用IICIICIICIIC总线,而是一种三线式总线,总线,而是一种三线式总线,总线,而是一种三线式总线,总线,而是一种三线式总线,DS1302DS1302DS1302DS1302内部结构:内部结构:内部结构:内部结构:DS1302DS1302DS1302DS1302内部包括:内部包括:内部包括:内部包括:Powercontrol:电源控制模块Inputshiftregisters:输入移位寄存器Commandandcontrollogic:通讯与逻辑控制器Oscillatoranddivider:晶体振荡器及分频器DS1302的内部主要组成部分虽然有:移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。DS1302DS1302DS1302DS1302控制字:控制字:控制字:控制字:控制字的最高有效位(位7777)必须是逻辑1111,如果它为0000,则不能把数据写入到DS1302DS1302DS1302DS1302中。位6666:如果为0000,则表示存取日历时钟数据,为1111表示存取RAMRAMRAMRAM数据;位5555至位1111(A4A4A4A4~A0A0A0A0):指示操作单元的地址;位0000(最低有效位):如为0000,表示要进行写操作,为1111表示进行读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLKSCLKSCLKSCLK时钟的上升沿时,数据被写入DS1302DS1302DS1302DS1302,数据输入从最低位(0000位)开始。同样,在紧跟8888位的控制字指令后的下一个SCLKSCLKSCLKSCLK脉冲的下降沿,读出DS1302DS1302DS1302DS1302的数据,读出的数据也是从最低位到最高位。DS1302DS1302DS1302DS1302时序:时序:时序:时序:如图,所示CE输入驱动高启动所有的数据传输。CE输入有两个功能。首先,CE打开控制逻辑,允许访问的移位寄存器的地址/命令序列。其次,CE提供了一个终止单字节或多字节数据传输方法。一个时钟周期是由一个下降沿之后的上升沿序列。对于数据传输而言,数据必须在有效的时钟的上升沿输入,在时钟的下降沿输出。如果CE为低,所有的I/O引脚变为高阻抗状态,数据传输终止。对于数据输入:开始的8个SCLK周期,输入写命令字节,数据字节在后8个SCLK周期的上升沿输入。数据输入位0开始。对于数据输出:开始的8个SCLK周期,输入一个读命令字节,数据字节在后8个SCLK周期的下降沿输出。注意,第一个数据字节的第一个下降沿发生后,命令字的最后一位被写入(Notethatthefirstdatabittobetransmittedoccursonthefirstfallingedgeafterthelastbitofthecommandbyteiswritten.),命令字节的最后一位被写入。当CE仍为高时。如果还有额外的SCLK周期,DS1302将重新发送数据字节,这使DS1302具有连续突发读取的能力。DS1302DS1302DS1302DS1302驱动程序分析开始设置CE为高在上升沿按位传输地址字读取或写入相应地址的数据结束设置CE为低/************************************************/************************************************/************************************************/****************************************************名称::::ucharucharucharucharDS1302Read()DS1302Read()DS1302Read()DS1302Read()****说明::::先写地址,后读数据****功能::::从cmdcmdcmdcmd相应地址中读取一个字节的数据****调用::::DS1302WriteByte(),DS1302ReadByte()DS1302WriteByte(),DS1302ReadByte()DS1302WriteByte(),DS1302ReadByte()DS1302WriteByte(),DS1302ReadByte()****输入::::cmd:cmd:cmd:cmd:要写入的控制字节****输出::::dat:dat:dat:dat:读取的数据*************************************************/*************************************************/*************************************************/*************************************************/ucharDS1302Read(ucharcmd){uchardat;RST=0;////////初始CECECECE线置为0000SCLK=0;////////初始时钟线置为0000RST=1;////////初始CECECECE置为1111,传输开始DS1302WriteByte(cmd);////////传输命令字,要读取的时间////日历地址dat=DS1302ReadByte();////////读取要得到的时间////日期SCLK=1;////////时钟线拉高RST=0;////////读取结束,CECECECE置为0000,结束数据的传输returndat;////////返回得到的时间////日期}/************************************************/************************************************/************************************************/****************************************************名称::::DS1302WriteDS1302WriteDS1302WriteDS1302Write****说明::::先写地址,后写数据****功能::::向cmdcmdcmdcmd相应地址中写一个字节的数据****调用::::DS1302WriteByte()DS1302WriteByte()DS1302WriteByte()DS1302WriteByte()****输入::::cmd:cmd:cmd:cmd:要写入的控制字,dat:,dat:,dat:,dat:要写入的数据****输出::::无*************************************************/*************************************************/*************************************************/*************************************************/voidDS1302Write(ucharcmd,uchardat){RST=0;////////初始CECECECE线置为0000SCLK=0;////////初始时钟线置为0000RST=1;////////初始CECECECE置为1111,传输开始DS1302WriteByte(cmd);////传输命令字,要写入的时间////日历地址DS1302WriteByte(dat);////////写入要修改的时间////日期SCLK=1;////////时钟线拉高RST=0;////////读取结束,CECECECE置为0000,结束数据的传输}/************************************************/************************************************/************************************************/****************************************************名称::::DS1302WriteBy
本文标题:DS1302中文资料-带源代码
链接地址:https://www.777doc.com/doc-5258111 .html