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

📄 ds1302.h

📁 12864液晶显示多功能电子时钟
💻 H
字号:
/*ds1302为串行时钟芯片,利用三个IO口的配合,便可把芯片里的秒、分、时、星期、年月日等数据读出来
 *该源程序主要是秒、分、时读出来,并送往连接P0与P2口的6位8段数码管显示*/




unsigned char  sec,min,hour,day,mon,week,year;

/*===============================================================================/
 *函数名称:clock_out
 *入口参数:dd
 *函数功能:写入指令或数据
/===============================================================================*/
void clock_out(unsigned char dd)
{

	unsigned char i;
	ACC=dd;
	for(i=8;i>0;i--)
	{
		if((ACC&0x01)==1)
		 clock_dat=1;
		 else clock_dat=0;
		 clock_clk=1;
		 
		 clock_clk=0;
		 ACC=ACC>>1;
    }
}
/*===============================================================================/
 *函数名称:write_clock
 *入口参数:命令ord,数据dd
 *函数功能:时钟调整
/================================================================================*/
void write_clock(unsigned char ord,unsigned char dd)
{
	clock_clk=0;
	clock_Rst=0;
	clock_Rst=1;
	clock_out(ord);
	clock_out(dd);
	clock_clk=1;
	clock_Rst=0;

}

/*==============================================================================/
 *函数名称:init_1302
 *函数功能:ds1302初始化
/=============================================================================*/
void init_1302(void)
{
	write_clock(0x8e,0x00);
	write_clock(0x8c,0x08);
	write_clock(0x8a,0x02);
	write_clock(0x88,0x0b);
	write_clock(0x86,0x20);
	write_clock(0x84,0x00);
	write_clock(0x82,0x00);
	write_clock(0x80,0x00);
	write_clock(0x90,0xa5);
	write_clock(0x8e,0x80);
}
/*=================================================================================/
 *函数名称:clock_in
 *返回  值:ACC
 *函数功能:输出数据
/=================================================================================*/
unsigned char clock_in(void)
{

	unsigned char i;
	ACC=0;
	for(i=8;i>0;i--)
	{
		ACC=ACC>>1;
		if(clock_dat==1)
			ACC|=0x80;
			clock_clk=1;
			clock_clk=0;
    }
	return(ACC);
}
/*****************************************************************************/
//DS1302读数据(底层协议)
unsigned char read_clock(unsigned char ord){
	unsigned char dd,k;
	k=0x00;
	clock_clk=0;
	clock_Rst=0;
	clock_Rst=1;
	clock_out(ord);
	dd=clock_in();
	clock_clk=1;
	clock_Rst=0;
	k=dd>>4;
	dd=dd&0x0f;
	dd=dd+k*10;
	return (dd);
}

void read_clocks(void)
{
	sec=read_clock(0x81);
	min=read_clock(0x83);
	hour=read_clock(0x85);
	day=read_clock(0x87);
	mon=read_clock(0x89);
	week=read_clock(0x8b);
	year=read_clock(0x8d);
}

//程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -