新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > I2C实时时钟/日历芯片在8051系统中的应用

I2C实时时钟/日历芯片在8051系统中的应用

作者:时间:2012-03-07来源:网络收藏

3 概述

图7所示为PCF8563的具体电路图,对图中石英晶片频率的调整,笔者给出3种可行性方法,供参考:

51.gif

方法1:定值OSCI电容。计算所需的电容平均值,用此值的定值电容,通电后在CLKOUT管脚上测出的频率应为32.768kHz,测出的频率值偏差取决于石英晶片本身,电容偏差和器件之间的偏差平均为±5×10 -6。平均偏差可达5分钟/年。

方法2:OSCI微调电容。可通过调整OSCI管脚的微调电容式振荡器的频率来获得更高的精度,此时可测出通电时管脚CLKOUT上的信号频率为32.768kHz。

方法3:OSCI输出。直接测量管脚OSCI的输出。

4 程序范例

以下的C语言源程序是用8051单片机的普通I/O口(如P0.0/P0.4)模拟实现 PCF8563的/的操作,有字节写/读两种状态。程序中从地址的读地址为0A3H,写地址为0A2H.所发送的数据字节为9个,发送的初始数据在rom_sed[9]中,rom_sed[9]定义了寄存器中当前发送的值:控制/状态寄存器1为0,控制/状态寄存器2为0,秒寄存器为 0,分钟寄存器55,小时寄存器为23,日寄存器为31,星期寄存器为6,月/世纪寄存器为0x12,年寄存器为0x99(即1999年12月31日23 点55分0秒),当程序运行一段时间(5分钟)后,从地址寄存器 02H开始读数据,数据存放在rom_rec7中,发现变量rom_rec7变为2000年1月1日0点0分。若外转帐电路有显示,则时间可以显示在面板上。
#included:.h>
#define byte unsigned char
sbit scl=0x81; //定义串行I/O口
sbit sda=0x80;
idata byte rom_sed[9];
idata byte rom_rec[7];
idata byte j,k;
bit flag,flag1;
void delay(void) //延时子程序
{data byte i;
for(i=0;i6;i++);
}
void I_start(void) //发送总线起始条件子程序
{sda=1;
;
scl=1;
delay();
sda=0;
delay();
scl=0;
;
}



评论


相关推荐

技术专区

关闭