控系统可能不允许。而在系统中采用DS1302则能很好地解决这个问题。 DS1302的性能特性如下:
·实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数; ·用于高速数据暂存的31×8位RAM; ·最少引脚的串行I/O; ·2.5~5.5V 电压工作范围; ·2.5V时耗电小于300nA;
·用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式; ·简单的3线接口;
·可选的慢速充电(至VCC1)的能力。
DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:VCC1 在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;VCC2在双电源系统中提供主电源,在这种运用方式中,VCC1 连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由VCC1或VCC2中较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。
DS1302数据操作原理:DS1302在任何数据传送时必须先初始化,把RST
脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。
图3-4-1 DS1302管脚图
如果在传送过程中置RST为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在VCC >=2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的管脚图如图3-4-1所示,表3-4-2为各引脚的功能。
引脚号 1 2,3 引脚名称 VCC2 X1,X2 功能 主电源 振荡源,外接32768HZ晶振 4 5 6 GND RST I/O 地线 复位/片选线 串行数据输入/输出端(双向) 7 8 SCLK VCC1 串行时钟输入端 后备电源 表3-4-2 DS1302引脚功能表
DS1302的控制字如图3-4-3所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为逻辑0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取RAM数据。位5~1(A4~A0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。
图3-4-3 控制字节的含义
为了提高对32个地址的寻址能力(地址/命令位1~5=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节。不管是否写了全部31字节,所写的每一字节都将传送至RAM。数据读写程序如图3-4-4所示。
≈
I/O 0 1 2 345670124567R/W A0 A1 A2 A3 A4 R/C 1 ≈ DATA I/O BYTE
DATA I/O BYTE
图3-4-4数据读写程序
DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的
数据位为BCD码形式,其日历、时间寄存器及其控制字见表3-4-5,其中奇数为读操作,偶数为写操作。 寄存器 名称 秒 分 地址 00H 01H 命令码 数据范围 写 80H 82H 读 81H 83H 00~59 00~59 01~12 或00~23 01~28,29 30,31 01~12 01~07 7 6 5 4 3 2 1 0 寄存器中各位的内容 CH 秒数据 0 12/ 24 分数据 10/ AP 时 02H 84H 85H 0 时数据 日 03H 86H 87H 0 0 日数据 月 星期 年 04H 05H 06H 88H 9AH 8CH BEH 89H 8BH 0 0 0 0 0 0 月数据 0 0 星期数据 8DH 00~99 BFH — 年数据 — 多字节读写 表3-4-5 片内时钟数据寄存器
3.4.2 DS1302 在本设计中的应用
实时时钟芯片DS1302采用串行数据传输,可为掉电保护电源提供可编程的充电功能,也可以关闭充电功能,芯片采用32768Hz晶振。要特别说明的是,备用电源BT1可以用电池或超级电容(10万μF以上)。虽然DS1302在主电源掉电后耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。如果断电时间较短(几小时或几天),可以用漏电较小的普通电解电容代替(100μF就可以保证1小时的正常走时),本设计采用3V的锂电子电池。DS1302在第一次加电后,需进行初始化操作。初始化后就可以按正常方法调整时间。DS1302的时钟电路如图3-4-6所示。
图3-4-6 DS1302时钟电路
3.5 键盘电路
本设计用到四个独立式键盘分别接到P1口的低4位,为保证P1口低4位在按键无按下时为高电平,特在P1口的低四位外接上拉电阻。键盘电路如图3-5所示。按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。因此本设计采用独立式按键,直