⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 8563实时时钟
💻 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 + -