目前,绝大多数时钟系统都采用专用时钟芯片计时。本实例采用PHILIPS公司生产的时钟芯片PCF8563。它内部有16个8位寄存器、1个自增的地址寄存器、1个定时器、1个报警器和1个400kHz的I 2 C总线接口。它能提供年、月、日、星期、小时、分钟、秒信息,采用I 2 C总线协议设计,与单片机的连接十分简单。
PCF8563具有以下特性。
①在32.768kHz的晶振下工作,提供年、月、日、星期、小时、分钟、秒信息。
②具有世纪标志。
③工作电压范围:1.0~5.5V。
④低休眠电流:典型值为0.25μA( V DD =3.0V,Temp=25℃)。
⑤具有400kHz的I 2 C接口( V DD =1.8~5.5V)。
⑥可编程时钟输出,频率为32.768kHz、1024Hz、32Hz、1Hz。
⑦具有报警和定时功能。
⑧具有掉电检测器。
⑨内部集成振荡器。
⑩具有片内电源复位功能。
⑪I 2 C总线从地址:读,0A3H;写,0A2H。
⑫具有开漏中断引脚。
PCF8563的引脚描述如表4-1所示。
表4-1 PCF8563的引脚描述
PCF8563的引脚排列如图4-2所示。
图4-2 PCF8563的引脚排列
PCF8563内部有16个8位寄存器,从00开始编址,地址范围是00H~0FH。在这些寄存器中并不是所有的位都可用。地址为00H、01H的寄存器作为控制/状态寄存器,地址为02H~08H的寄存器作为时钟寄存器,地址为09H~0CH的寄存器作为报警寄存器,地址为0DH的寄存器用于控制CLKOUT引脚的输出频率,地址为0EH和0FH的寄存器分别作为定时器控制寄存器和定时器寄存器。报警方式可以是分钟报警、小时报警、日报警、星期报警等。当PCF8563内部某个时钟寄存器被读出时,其他时钟寄存器的内容被锁存,这样可以避免在读取时间的过程中时钟寄存器内部发生变化。
通过读/写PCF8563中的寄存器,可以实现读/写时间、日期及报警值。PCF8563中的寄存器分为两类:一类是控制PCF8563工作的寄存器,如表4-2所示;另一类是用于时间、日期计数的寄存器,如表4-3所示。
表4-2 控制/状态寄存器概况表
表4-3 计数寄存器概况表
控制/状态寄存器1主要用于控制时钟的运行,地址为00H,其格式如表4-4所示。
表4-4 控制/状态寄存器1的格式
控制/状态寄存器2主要用于中断控制,包含定时器中断的允许位、报警中断的允许位及中断请求标志位,地址为01H,其格式如表4-5所示。
表4-5 控制/状态寄存器2的格式
秒寄存器用于存放当前时间的秒数值,采用BCD码格式,最高位用于指示时钟/日历数据是否可靠。该寄存器的地址为02H,其格式如表4-6所示。
表4-6 秒寄存器的格式
分钟寄存器用于存放当前时间的分钟数值,采用BCD码格式,地址为03H,其格式如表4-7所示。
表4-7 分钟寄存器的格式
小时寄存器用于存放当前时间的小时数值,采用BCD码格式,地址为04H,其格式如表4-8所示。
表4-8 小时寄存器的格式
日寄存器用于存放当前日期的日数值,采用BCD码格式。PCF8563根据当前月份自动设置日的最大值,大月为31,小月为30,二月为28,闰年的二月为29。该寄存器的地址为05H,格式如表4-9所示。
表4-9 日寄存器的格式
月/世纪寄存器用于存放当前日期的月数值,最高位为世纪指示位。该寄存器采用BCD码格式,地址为07H,格式如表4-10所示。
表4-10 月/世纪寄存器的格式
年寄存器用于存放当前日期的年数值,采用BCD码格式,地址为08H,其格式如表4-11所示。
表4-11 年寄存器格式表
PCF8563有多种报警方式,可以采用分钟报警、小时报警、日报警及星期报警。每种报警方式由对应的寄存器控制,报警寄存器的格式一致,最高位AE表示该报警方式是否有效,其余位表示报警数值,采用BCD码格式。当报警寄存器中写入合法的分钟、小时、日或星期报警数值且相应的AE为0时,若当前的时间数值与之相等,则标志位AF置1,AF值必须由软件清零。若AE为1,则相应的报警将被忽略。各报警寄存器的格式分别如表4-12~表4-14所示。
表4-12 分钟报警寄存器的格式
表4-13 小时报警寄存器的格式
表4-14 日报警寄存器的格式