📄 pcf8563.c
字号:
//QQ:32200242 E-Mail:xjj0925@126.com
//功能:轮流静态显示年月 日时 分秒
#include <REG52.h>
#include <DIS.h>
#include <IIC.h>
//#include<zf.h>
#define WC24C02 0xA0 /*定义器件地址*/
#define PCF8563 0xA2 /*定义器件地址*/
#define WRADDR 0x00
#define RDADDR 0x02
unsigned char td[9]={0x00,0x12,0x48,0x30,0x12,0x08,0x03,0x12,0x05};
// 控制状态寄存器1、 控制状态寄存器2、秒、分、时、日、星期、月/世纪、年
unsigned char rd[7],i; /*定义发送缓冲区*/
// 秒、分、时、日、星期、月/世纪、年
unsigned char leddis1[4],leddis2[4],leddis3[4],j; /*定显释缓冲区*/
//年、月/日、时/分、秒
void main()
{
ISendStr(PCF8563,WRADDR,td,0x09);
while(1)
{
IRcvStr(PCF8563,RDADDR,rd,0x07);
zf();
display(leddis1);//显示年:月
delay(0xff); delay(0xff);delay(0xff);delay(0xff);delay(0xff); delay(0xff);delay(0xff);delay(0xff);
display(leddis2);//显示日:时
delay(0xff); delay(0xff);delay(0xff);delay(0xff);delay(0xff); delay(0xff);delay(0xff);delay(0xff);
display(leddis3); //显示分:秒
delay(0xff); delay(0xff);delay(0xff);delay(0xff);delay(0xff);delay(0xff);delay(0xff);delay(0xff);
}
}
//字节拆分
zf()
{
//年
j=i=rd[6];
i&=0xf0;
i>>=4;
leddis1[3]=i;
i=j;
i&=0x0f;
leddis1[2]=i;
//月
i=rd[5];
i&=0x1f;
j=i;
i&=0xf0;
i>>=4;
leddis1[1]=i;
i=j;
i&=0x0f;
leddis1[0]=i;
//日
i=rd[3];
i&=0x3f;
j=i;
i&=0xf0;
i>>=4;
leddis2[3]=i;
i=j;
i&=0x0f;
leddis2[2]=i;
//时
i=rd[2];
i&=0x3f;
j=i;
i&=0xf0;
i>>=4;
leddis2[1]=i;
i=j;
i&=0x0f;
leddis2[0]=i;
//分
i=rd[1];
i&=0x7f;
j=i;
i&=0xf0;
i>>=4;
leddis3[3]=i;
i=j;
i&=0x0f;
leddis3[2]=i;
//秒
i=rd[0];
i&=0x7f;
j=i;
i&=0xf0;
i>>=4;
leddis3[1]=i;
i=j;
i&=0x0f;
leddis3[0]=i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -