一种新型的时钟日历芯片 DS12C887 作者:重庆大学光电工程学院 林国清 李见为 王崇文 来源:《国外电子元器件》 摘要:简要介绍了美国 DALLAS 公司的新型时钟日历芯片 DS12C887 的功能特性 和内部控制寄存器参数,给出了 DS12C887 与 8031 单片机的电路连接图,同时给 出了用 C51 编写的初始化程序和获取内部时间的程序。 关键词:时钟 单片机 DS12C887 1 器件特性 DS12C887 实时时钟芯片功能丰富,可 以用来直接代替 IBM PC 上的时钟日历芯片 DS12887,同时,它的管脚也和 MC146818B、DS12887 相兼容。 由于 DS12C887 能够自动产生世纪、 年、月、日、时、分、秒等时间信息,其内 部又增加了世纪寄存器,从而利用硬件电路 解决子“千年”问题;DS12C887 中自带有锂电 池,外部掉电时,其内部时间信息还能够保 持 10 年之久;对于一天内的时间记录,有 12 小时制和 24 小时制两种模式。在 12 小时 制模式中,用 AM 和 PM 区分上午和下午; 时间的表示方法也有两种,一种用二进制数 表示,一种是用 BCD 码表示;DS12C887 中 带有 128 字节 RAM,其中有 11 字节 RAM 用来存储时间信息,4 字节 RAM 用来存储 DS12C887 的控制信息,称为控制寄存器, 113 字节通用 RAM 使用户使用;此外用户还 可对 DS12C887 进行编程以实现多种方波输 出,并可对其内部的三路中断通过软件进行 屏蔽。 2 引脚功能 DS12C887 的引脚排列如图 1 所示,各管脚的功能说明如下: GND、VCC:直流电源,其中 VCC 接+5V 输入,GND 接地,当 VCC 输入为+5V 时,用 户可以访问 DS12C887 内 RAM 中的数据,并可对其进行读、写操作;当 VCC 的输入小于 +4.25V 时,禁止用户对内部 RAM 进行读、写操作,此时用户不能正确获取芯片内的时间信 息;当 VCC 的输入小于+3V 时,DS12C887 会自动将电源发换到内部自带的锂电池上,以保证 内部的电路能够正常工作。 MOT:模式选择脚,DA12C887 有两种工作模式,即 Motorola 模式和 Intel 模式,当 MOT 接 VCC 时,选用的工作模式是 Motorola 模式,当 MOT 接 GND 时,选用的是 Intel 模式。本 文主要讨论 Intel 模式。 SQW:方波输出脚,当供电电压 VCC 大于 4.25V 时,SQW 脚可进行方波输出,此时用 户可以通过对控制寄存器编程来得到 13 种方波信号的输出。 AD0~AD7:复用地址数据总线,该总线采用时分复用技术,在总线周期的前半部分,出 现在 AD0~AD7 上的是地址信息,可用以选通 DS12C887 内的 RAM,总线周期的后半部分出 现在 AD0~AD7 上的数据信息。 AS:地址选通输入脚,在进行读写操作时,AS 的上升沿将 AD0~AD7 上出现的地址信 息锁存到 DS12C887 上,而下一个下降沿清除 AD0~AD7 上的地址信息,不论是否有效, DS12C887 都将执行该操作。 DS/RD:数据选择或读输入脚,该引脚有两种工作模式,当 MOT 接 VCC 时,选用 Motorola 工作模式,在这种工作模式中,每个总线周期的后一部分的 DS 为高电平,被称为数 据选通。在读操作中,DS 的上升沿使 DS12C887 将内部数据送往总线 AD0~AD7 上,以供外 部读取。在写操作中,DS 的下降沿将使总线 AD0~AD7 上的数据锁存在 DS12C887 中;当 MOT 接 GND 时,选用 Intel 工作模式,在该模式中,该引脚是读允许输入脚,即 Read Enable。 R/W:读/写输入端,该管脚也有 2 种工作模式,当 MOT 接 VCC 时,R/W 工作在 Motorola 模式。此时,该引脚的作用是区分进行的是读操作还是写操作,当 R/W 为高电平时 为读操作,R/W 为低电平时为写操作;当 MOT 接 GND 时,该脚工作在 Intle 模式,此时该作 为写允许输入,即 Write Enable。 CS:片选输入,低电平有效。 IRQ:中断请求输入,低电平有效,该脚有效对 DS12C887 内的时钟、日历和 RAM 中的 内容没有任何影响,仅对内部的控制寄存器有影响,在典型的应用中,RESET 可以直接接 VCC,这样可以保证 DS12C887 在掉电时,其内部控制寄存器不受影响。 在 DS12C887 内有 11 字节 RAM 用来存储时间信息,4 字节用来存储控制信息,其具体垢 地址及取值如表 1 所列。 由表 1 可以看出:DS12C887 内部有控制寄存器的 A-B 等 4 个控制寄存器,用户都可以在 任何时候对其进行访问以对 DS12C887 进行控制操作。 表 1 DS12C887 的存储功能 地 址 功 能 取值范围 取值范围十进制数 二进制 BCD 码 0 秒 0~59 00~3B 00~59 1 秒闹铃 0~59 00~3B 00~59 2 分 059 00~3B 00~59 分闹铃 0~59 00~3B 00~59 12 小时模式 0~12 01~0C AM, 81~8C PM 01~12AM, 81~92PM 24 小时模式 0~23 00~17 00~23 时闹铃,12 小时制 1~12 01~0C AM, 81~8C PM 01~12AM, 81~92PM 时闹铃,24 小时制 0~23 00~17 00~23 6 星期几(星期天=1) 1~7 01~07 01~07 7 日 1~31 01~1F 01~31 8 月 1~12 01~0C 01~12 9 年 0~99 00~63 00~99 10 控制寄存器 A 11 控制寄存器 B 12 控制寄存器 C 13 控制寄存器 D 50 世纪 0~99 NA 19,20 3 4 5 3 应用 在各种设备、家电、仪器、工业控制系统中,可以很容易地用 DS12C887 来组成时间获取 单元,以实现各种时间的获取。图 2 是用 8031 单片机和 DS12C887 构成的时间获取电路图, 其中 DS12C887 的基地址为 7F00H,相应的程序采用 C51 语言编写(以 Intel 工作模式为 例)。 由 8031 单片机和 DS12C887 构 成的时间获取电路的初始化程序如 下: XBYTE[0x7F00+0x0B]=0x82; XBYTE[0x7F00+0x0A]=0xA0; XBYTE[0x7F00+0x0A]=0x20; XBYTE[0x7F00+0x0B]=0x02; /*所有的中断禁止,24 小时制, BCD 码模式*/ 以下均获取时间程序: unsigned char data t-century; unsigned char data t-year; unsigned char data t-month; unsigned char data t-date; unsigned char data t-week; unsigned char data t-hour; unsigned char data t-minute; unsigned char data t-second; if((XBYTE[7F00+0x0A]&0x80)!=0){ t-century=XBYTE[0x7F00+0x32];/*读取世纪*/ t-year=XBYTE[Ox7F00+0x09];/*读取年份*/ t-month=XBYTE[Ox7F00+0x08];/*读取月份*/ t-date=XBYTE[Ox7F00+0x07];/*读取日期*/ t-week=XBYTE[Ox7F00+0x06];/*读取星期几*/ t-hour=XBYTE[Ox7F00+0x04];/*读取小时*/ t-minute=XBYTE[DS12887+0x02];/*读取分钟*/ t-second=XBYTE[Ox7F00+0x00];}/*读取秒*/ 4 结束语 Dallas 公司的时钟日历芯片 DS12C887 功能丰富,使用简单,可能性高,是时间产生电路 的良好选择。