您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 基于时钟芯片DS1302的万年历的设计
基于时钟芯片DS1302的万年历的设计摘要:首先介绍了时钟芯片DS1302的概况,然后对其读时序进行了详细分析。设计了基于DS1302的电子万年历,包括硬件电路的设计和软件程序的设计,并在Proteus软件中进行了仿真实验。实验结果表明,该电子万年历具有工作可靠、结构简单等优点。关键词:DS1302单片机万年历ProteusDesignofCalendarBasedonClockChipDS1302Abstract:First,theclockchipDS1302isintroduced,thenthereadingtimingisanalyzedindetails.TheE-calendarisdesignedbasedonDS1302,includinghardwareandsoftwareprogram,andtheSimulationExperimentisachievedinProteus.TheexperimentalresultshowsthatthisE-calendarownstheadvantagesofreliabilityandsimplestructure.Keywords:DS1302;MCU;Calendar;Proteus1时钟芯片DS1302简介[1,2]DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的低功耗实时时钟芯片,它可以对年、月、日、周、日、时、分、秒进行计时,并能够对每月的天数和闰年的天数进行自动调整,时钟可以采用24小时制,也可以采用12小时制。DS1302功耗很低,保持数据和时钟信息时功率小于1uW,在没有电源供电的情况下,可以工作长达10年的时间。其管脚如图1所示,具体各管脚功能如下:(1)和为电源管脚,其中为主电源,为备用电源。当时,由给DS1302提供电源;当时,则由作为电源。DS1302的工作电压范围较宽:2.0~5.5V,在应用中可以将直接与单片机等电源相连。(2)X1,X2为晶振管脚,DS1302工作时,要求X1,X2外接32.768KHz的晶振。(3)CE为芯片使能管脚,也可标注为管脚[3]。DS1302正常工作时,需要其为高电平。(4)SCLK为串行读写时钟信号。(5)I/O为数据输入输出管脚。(6)GND为地管脚。DS1302与单片机等微处理器接口时,可以采用简单的同步串行工作方式,仅需要三个口线与单片机相连:(1)CE管脚、(2)I/O管脚、(3)串行时钟SCLK管脚。DS1302内部有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码,其日历、时间寄存器及其控制字如表1所示[1,4]。此外,DS1302内部还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。对于开发者来说,主要使用DS1302内部的这12个寄存器。如果在开发系统中,微处理器的RAM空间不够等,也可以使用DS1302内部的RAM空间。DS1302内部还有31个RAM单元,每个单元为8位。31个单元对应着62个命令控制字:C0H~FDH,共62个,其中奇数为读操作,偶数为写操作。当然,也可以一次性地读写这31个单元,命令控制字分别为FEH(写)、FFH(读),这种方式称为突发方式。2DS1302的读写时序对于一个可编程电子器件的使用,除了了解它的基本特性之外,最重要的就是它的时序图。对于开发者来说,一定要理解所用器件的时序图,否则难以掌握其应用。在本文中设计了基于DS1302和89C51单片机的万年历,主要完成对DS1302的读操作,所以这里重点介绍其读操作时序。DS1302的读操作时序如图2所示。可以看出,首先传送命令字,然后才读取数据。由于是串行出入/输出,数据要按位依次传输。注意命令字的传输都是在SCLK的上升沿时发生,而数据的传输是在SCLK的下降沿发生的。结合读操作时序图的分析,可以得知读取某一个寄存器中内容时的编程思路。将读取命令字存放在单片机的R1寄存器中,然后传送给累加器A,在经过带进位的循环移位指令,将数据最低位送入进位标志位Cy中,执行位操作指令把Cy中的内容传送给DS1302的I/O管脚。将SCLK变为高电平,产生一个上升沿,则在I/O管脚上的数据就进入了DS1302的内部,即完成了一个二进制位的传输。从上图中可以看出,当SCLK依次来8个上升沿,即可完成一个命令字的传输。当完成命令字的传输之后,就可以进行数据的读取。每一位二进制数由DS1302内部移到I/O管脚上,是发生在SCLK的下降沿。所以先将SCLK变为低电平,产生下降沿,然后通过位操作指令将数据读入到进位标志位Cy中。如此循环执行8次,即可完成一个字节数据的读取。3硬件电路设计选择89C51单片机和DS1302的CE()、SCLK和I/O管脚分别接89C51单片机的P3.1、P3.4和P3.5。DS1302接了32.768kHz的晶振,以及接了3V的电池,作为备用电源。显示部分采用了14个共阳极数码管,其段码输入端(A~G,DP)与P0口相连。89C51的P2口低4位作为4线-16线译码器74HC154的输入端,选择其前14个输出作为14个数码管的扫描信号,数码管的显示采用动态扫描方法。由于所用的数码管为共阳极数码管,而74HC154的输出低电平有效,所以其输出均连接了反相器。89C51的P3.0管脚连接154的使能端E1和E2。电路图如图3所示,这是在Proteus软件中绘制的硬件电路图。4软件设计在本程序中,要完成对年、月、日、时、分、秒的读取,并送给数码管进行显示。对应的读取命令字分别为:8DH、89H、87H、85H、83H、81H。程序设计时是先从秒开始读取的,结合前面所分析的读取一个命令字对应信息的程序流程,先将81H命令字送入寄存器R1中。然后调用读子程序,再将读取的秒的个位和十位分开,分别查表显示。采用同样的方法,读取分钟、小时、日、月、年的信息,并进行显示。程序设计流程如图4所示。在Keil软件中,编写如上的程序,并编译运行,产生HEX文件。在Proteus软件中,将HEX文件加载到89C51中,进行仿真实验,结果如图3所示。5结语在本项目中,设计了基于时钟芯片DS1302的万年历,可以看出,该系统电路简单、成本低、系统运行稳定。在本系统中,没有星期的显示,读者可以自行增加。另外可以考虑增加按键,即增加按键用来调整时间和日期,这需要用到DS1302的写时序,其操作过程和读时序非常类似,这里不再详述。参考文献[1]DS1302datasheet[EB/OL][2]DS1302[EB/OL].[3]姚德法,张洪林.串行时钟芯片DS1302的原理与使用[J].信息技术与信息化,2006,1.[4]许果,殷海波.基于DS1302的智能停车收费系统[J].自动化技术与应用,2010,5.
本文标题:基于时钟芯片DS1302的万年历的设计
链接地址:https://www.777doc.com/doc-4905289 .html