📄 main.c
字号:
/*******************************************************************
PCF8653实验程序
程序说明:向PCF8653中写入初始时间值:2008年1月5日,星期三,15点18分56
秒后,在从其中读出数据后通过串口通信发送到显示装置进行显示
*******************************************************************/
#include <INIF.h>
#include <I2C.h>
#include <lcd1602.h>
uchar xdata Time_Data[16]={0};
void JDQ1();
void JDQ2();
long jj;
main()
{
uchar p[7]={0x56,0x18,0x15,0x05,0x02,0x01,0x08};
//2008 年1 月5 日星期三 15 点 18 分56 秒<倒序>
//uchar m[3]={0x19,0x15,0x05};
uchar m[1]={0x19};
uchar n[2]={0x80,60};
uchar afing;
uchar clear=0x00;
uchar kaizhong=0x03;
uchar q[7];
uchar i;
bit bp;
for(i=0;i<7;i++)
{
bp=ISendStr(PCF8563,SUBADDR+i,p+i,1); //向PCF8563各时钟寄存器写入初始数据
}
ISendStr(PCF8563,SUBADDRb,m,1);
IRcvStr(PCF8563,SUBADDRc,&kaizhong,1);
lcd1602init(); //液晶初始化
SDA = 1;
SCL = 1;
PORT = 0x03; //8155的A,B口作为输出,C为输入口
lcd_clear( ); //液晶清屏
while(1)
{
//读PCF8563各时钟寄存器
for(i=0;i<7;i++)
{
bp=IRcvStr(PCF8563,SUBADDR+i,q+i,1);
}
//屏蔽无效位
q[0]&=0x7F;//second
q[1]&=0x7F;//minute
q[2]&=0x3F;//hour
q[3]&=0x3F;//day
q[4]&=0x07;//week
q[5]&=0x1F;//month
q[6]&=0xFF;//year
//送显示器显示
Time_Data[0] = q[6]/16+'0';
Time_Data[1] = q[6]%16+'0';
Time_Data[2] = q[5]/16+'0';
Time_Data[3] = q[5]%16+'0';
Time_Data[4] = q[3]/16+'0';
Time_Data[5] = q[3]%16+'0';
Time_Data[6] = ' ';
Time_Data[7] = q[4]%16+'1';
Time_Data[8] = ' ';
Time_Data[9] = q[2]/16+'0';
Time_Data[10] = q[2]%16+'0';
Time_Data[11] = q[1]/16+'0';
Time_Data[12] = q[1]%16+'0';
Time_Data[13] = q[0]/16+'0';
Time_Data[14] = q[0]%16+'0';
IRcvStr(PCF8563,SUBADDRc,&afing,1);
if(afing&0x08)
{
//lcd_string(Time_Data,1);
JDQ1();
ISendStr(PCF8563,SUBADDRc,&clear,1);
ISendStr(PCF8563,SUBADDRd,n,2);
}
if(afing&0x04)
{
//lcd_string(Time_Data,1);
JDQ2();
ISendStr(PCF8563,SUBADDRc,&clear,1);
ISendStr(PCF8563,SUBADDRd,n,2);
}
lcd_string(Time_Data,2);
}
}
void JDQ1()
{
P1_4=0; //继电器导通
}
void JDQ2()
{
P1_4=1;
for(jj=0;jj<10000;jj++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -