您当前的位置:五五电子网电子知识单元电路时钟-定时电路基于PCF8563数字时钟的设计 正文
基于PCF8563数字时钟的设计

基于PCF8563数字时钟的设计

点击数:7545 次   录入时间:03-04 11:37:43   整理:http://www.55dianzi.com   时钟-定时电路

  数字时钟是日常生活中广泛应用的电子产品。下面介绍一种数字时钟的实现方法。系统采用PCF8563作为实时时钟/日历芯片,ZLG7290作为键盘及数码管扫描显示驱动,以蜂鸣器作为闹铃,具有时间显示、闹铃及系统设置等功能。具有功能如下。
  
  ·时间、日期显示:系统时间采用24小时制。正常情况下,系统显示当前的时间,通过切换按键可以在时间显示与日期显示间切换。例如当前系统时间是12点20分22秒,显示格式为12-20-22。当用户按切换键时,系统切换到日期显示,如显示07-10-30。再次按切换按键系统回到时间显示。
  
  ·闹铃功能:当系统时间与用户设置的闹铃时间一致时,闹铃报警。报警时有声、光提示,时间为一分钟。在报警过程中,可以按任意按键取消报警。
  
  ·设置功能:用户可以对系统的时间、日期及闹铃时间进行设置。用户连续按SET键,依次进入日期设置、时间设置、闹铃设置。日期、时间分别采用6位表示,闹铃时间采用4位表示。日期设置时,从年十位开始,时间、闹铃设置从时十位开始。通过ADD键、SUB键对数值进行加、减调整;长按不放时,其值快速加、减。通过NEXT键,在各个数位间移动。
  
  1、典型器件介绍
  
  衡量一个时钟系统的好坏关键是计时精度的问题。现在绝大多数时钟系统都采用专用时钟芯片用于计时。本系统采用PCF8563作为实时时钟/日历芯片。PCF8563内部资源丰富含有16个8位寄存器,一个可自动增量的地址寄存器,一个带有内部集成电容的32.768KHz的振荡器,一个给实时时钟RTC提供源时钟的分频器,一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400kHzIIC总线接口。
  
  PCF8563的管脚描述如下表所示。

PCF8563管脚功能

  PCF8563的管脚排列如下图所示。

PCF8563的管脚排列

  PCF8563芯片内部有16个8位寄存器,从00开始编址,地址范围是00H~0FH。在这些寄存器中并不是所有的位都可用。地址00H,01H的寄存器用于控制寄存器和状态寄存器,内存地址02H~08H的寄存器用于时钟计数器(秒~年计数器),地址09H~OCH的寄存器用于报警寄存器,地址0DH的寄存器用于控制CLKOUT管脚的输出频率,地址0EH和0FH分别用于定时器控制寄存器和定时器寄存器。报警方式可以是分钟报警、小时报警、日报警、星期报警等。当PCF8563芯片内部某个时间寄存器被读出时,所有其他时间寄存器的内容被锁存,这样可以避免在读取时间的过程中时间寄存器内部发生变化。

   数码管时钟的硬件原理图如下图所示,主要包括键盘显示电路、时钟电路、报警电路及单片机电路等。

  数码管时钟的硬件原理图


  
  键盘显示电路主要由ZLG7290芯片外接按键、共阴极LED数码管显示器等组成。按键主要包括数字键、控制键共16个按键,分为2行8列,分别接ZLG7290的SEGA、SEGB、DIG0~DIG7,按键K1~K16的键值分别是1~16。时间、日期采用8位分时显示方式,只需8个数码管。这8个数码管的a~dp段分别接SEGA~SEGH,8个阴极分别接DIG0~DIG7。
  
  时钟电路主要由PCF8563芯片组成,采用I2C接口与单片机连接。报警电路由三极管Ql及蜂鸣器Bl等组成。单片机采用AT89S51,复位电路采用阻容复位方式。

  该数字钟实现功能包括:日期显示,时间显示,闹铃设置,日期和时间修改。主程序中,根据不同的显示标志显示不同的信息,在日期、时间修改状态下,修改位的数目以闪烁方式显示。下面是数码管时钟的程序设计实现:


      

  以下为I2IC总线函数函数及其功能如下表所示。

oid I2C_Init() IIC总线初始化函数 void I2C_Delay() 模拟IIC总线延时 void I2C_Start() 产生IIC总线的起始条件 void I2C_Stop() 产生IIC总线的停止条件 void I2C_PutAck(bit ack) 主机产生应答位(应答或非应答) bit I2C_GetAck() 读取从机应答位(应答或非应答) unsigned char I2C_Read() 从从机读取l字节的数据 void I2C_Write(unsigned char dat) 向IIC总线写1字节的数据 bit I2C_Puts() 主机通过IIC总线向从机发送多字节的数据 bit I2C_Gets() 主机通过IIC总线从从机接收多字节的数

  其中函数I2C_Puts()、bit I2C_Gets()参数较多,具体介绍如下:

  init(void)为初始化程序,该程序功能包括:设置数字时钟上电时的起始时间,设定闹钟控制,设定定时器工作方式,并初始化后续程序中要用到的中间变量。具体函数代码如下:

  以下是ZLG7290的数码管显示及键盘扫描的控制子程序。
  
  子函数SendCmd()向ZLG7290发送显示指令,该函数利用了IIC总线模拟函数包中的多字节发送指令I2C_Puts()函数传递显示指令。代码如下:

 

  子函数display_time()是控制G7290显示时间和闪烁功能的子函数,该函数利用了前述的数码管(低位开始)显示NUM个指定字节子函数SendBuf()实现时间显示,具体代码如下:

  以下是蜂鸣器响闹控制子函数。该函数中,利用变量alarm_flag传递不同响闹状态和要求:

 

  
  



www.55dianzi.com

[1] [2]  下一页


本文关键字:暂无联系方式时钟-定时电路单元电路 - 时钟-定时电路