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

📄 ds1302.c

📁 ds1302,我自己做成功了,可以下载就直接用!
💻 C
字号:
///创建者毛毛虫
////创建时间07 11 06

#pragma small
#include <reg52.h>
#define uchar unsigned char 
#define  uint  unsigned int

sbit clk1302=P1^0;//7
sbit data1302=P1^2;//6
sbit cs1302=P1^1;//5
sbit clk=P2^0;
sbit IO =P2^1;
sbit P02=P2^2;
sbit P03=P2^3;
sbit P04=P2^4;
sbit P05=P2^5;
uint  a[4];  
uchar year ;

unsigned char  led[]={0x3f,0x06,0x5b,0x4f,
                      0x66,0x6d,0x7d,0x07,
                      0x7f,0x6f,0x77,0x7c,
                      0x39,0x5e,0x79,0x71}; 

void write1302(uchar order,uchar byte);
uchar read1302(uchar address);
void init1302();

uchar  set_time[7]={0x00,0x48,0x14,0x31,0x07,0x07,0x07};


void write1302(uchar order,uchar byte)
{
	uchar i;

	cs1302	=0;
	clk1302	=0;

	cs1302	=1;
	for(i=0;i<8;i++)	  //写入地址
	{
		clk1302=0;		
	 	data1302=order&0x01;	 
	 	clk1302=1;
	 	order=order>>1;
	}		

	 for(i=0;i<8;i++)	//对相应的地址写入数据
	 {
	 	clk1302=0; 
	 	data1302=byte&0x01;	
  	  	clk1302=1;
	  	byte=byte>>1;	
	  	
	 }

	clk1302	=0; 
   	cs1302	=0;	
}

uchar read1302(uchar address)
{
	uchar i,shuju,shiwei;
  	
	cs1302	=0;
	clk1302	=0;

	cs1302	=1;	
	for(i=0;i<8;i++)	  //写入地址命令
	{
		clk1302=0;	 
	    data1302=address&0x01;	                  
	 	clk1302=1;
	 	address=address>>1;
	}

	shuju=0;
	for(i=0;i<8;i++)	 //读出当前地址的内容
	{ 	
		shuju=shuju>>1;	
		clk1302=0;		    		
	  	if(data1302==1)
 		shuju=shuju|0x80;	   	 
		clk1302=1;
			
	 }

	clk1302=0;
	cs1302=0;
	
	shiwei=shuju/16;			 //数据整合 因为1302的高4为
    shuju=shuju%16;				 //默认放的十位
	shuju=shiwei*10+shuju;

	return shuju;
}


void init1302()
{ 
	uchar n;
	uchar address=0x80;
	cs1302  = 0;
  	clk1302 = 0;
  	write1302(0x8e,0x00); //允许写入数据
	write1302(0x90,0x00); //禁止涡流充电
	for(n=0;n<7;n++)
	 {
	  	write1302(address,set_time[n]);
		address=address+2;	 
	 }

	 write1302(0x8e,0x80); //写保护,不允许读写

}


void allout(uchar x)
   {
    uchar  i;
    for(i=0;i<8;i++)
	 {
	  if((x&0x80)==0)
	     IO=0;
	  if((x&0x80)!=0)
	     IO=1;
         clk=0;clk=1;
         x<<=1;
	   }
	 }  




 void t2_10()
{
   uint k;
   a[3]=year/1000;
   k=year%1000;
   a[2]=k/100;
   k=k%100;
   a[1]=k/10;
   a[0]=k%10;
}

void delay10ms()                            
{
 uchar m,n,j;
 for(j=2;j>0;j--)
 for(m=10;m>0;m--)
 for(n=100;n>0;n--);
 }
void display()                            
{
	t2_10(); 
    
     allout(led[a[3]]);
     P02=0&0x01;
     P03=0&0x02;
     P04=0&0x04;
     P05=0&0x08;
 delay10ms();


	 allout(led[a[2]]);
     P02=1&0x01;
     P03=1&0x02;
     P04=1&0x04;
     P05=1&0x08;
  delay10ms();

	 allout(led[a[1]]);
     P02=2&0x01;
     P03=2&0x02;
     P04=2&0x04;
     P05=2&0x08;
   delay10ms();


	 allout(led[a[0]]);
     P02=3&0x01;
     P03=3&0x02;
     P04=3&0x04;
     P05=3&0x08;
     delay10ms();
  delay10ms();
}


void main()
{
	 
	while(1)

	{
	init1302();
    year=read1302(0x8d); 
	display();
    }
 
}




⌨️ 快捷键说明

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