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

📄 dd.c

📁 与320*240相连的DS1302时钟程序
💻 C
字号:
   #include "c8051f340.h"
   #include "intrins.h"
   #define  NOP  _nop_()
   #define  uchar   unsigned char
   sbit    SCLK=P2^2;
   sbit    IO=P2^1;
   sbit    RSTB=P2^0;
 
 
 
   void  delay(uchar i)
   { 
    
     while (i--);
	}

//*****************************RESET  FUNCTION///////////////
   void reset()
   {
    SCLK=0;
    RSTB=0;
	NOP;
	NOP;
	NOP;
	RSTB=1;
   }
//***************************BYTE  WRITE************//
   void  wbyte(uchar w_byte)
   {
        uchar i;
    	for(i=0;i<8;++i)
	   { 
	    IO=0;
	    if(w_byte&0x01) IO=1;
		SCLK=0;
	    delay(10);
		SCLK=1;
        delay(10);
		w_byte>>=1;
       }
   }
//***********************	 BYTE READ******************//
   uchar rbyte()
   {
       uchar i;
	   uchar R_BYTE;
	   uchar TMPBYTE;
       R_BYTE=0X00;
	   IO=1;
	   for(i=0;i<8;++i)
	   {
	     SCLK=1;
         delay(10);
		 TMPBYTE=(uchar)IO;
		 SCLK=0;
		 TMPBYTE<<=7;
		 R_BYTE>>=1;
		 R_BYTE|=TMPBYTE;
	   }
	   return(R_BYTE);
   }

uchar time_data[8]={0,0,0,0,0,0,0,0};//sec,min,hrs,dte,mon,day,yr
uchar time_diplay[14]={0x31,0x35,0x38,0x32,0x39,0x33,0x34,0x33,0x32,0x37,0x31};

//*********************时间初始校准与初始化**************************************
  void time_int_DS1302()      //24小时模式
  {	
    uchar time[8]={0,0,0x12,1,1,1,0,0};//sec,min,hrs,dte,mon,day,yr
    uchar i;
    reset();
    wbyte(0x8e);//写保护控制寄存器
    wbyte(0);//允许写入
    reset();
    wbyte(0x90); //涓流充电控制寄存器
    wbyte(0);    //禁止充电
    reset();
    wbyte(0xbe);           //2000年1月1日12点0分0秒 星期一
    for(i=0;i<8;i++) wbyte(time[i]);    
    reset();
  }


//****************************************************************************
//****************DS1302显示数据	 ASCII码数字转化	   ***********************/
//******************************************************************************

 void  display_xlat()
 { 	
    uchar i,j=0,num1,num2;
    for(i=0;i<7;i++)
	 {  
	  num1=time_data[i]&0x0F;
	  num2=time_data[i];
	  num2>>=4;
	  time_diplay[j]=num1+0x30;
	  time_diplay[j+1]=num2+0x30;
	  j+=2;
	 }
 	
  }

 //**********************时间显示***************************************
  void  time_display_DS1302()
 {  uchar i;
    reset();
    wbyte(0xbf); //burst read          
    for(i=0;i<8;i++) time_data[i]=rbyte();    

    reset();
	display_xlat();
  }






⌨️ 快捷键说明

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