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

📄 at24.c

📁 AT24C02的驱动,IIC总线接口!加到自己的工程中就可以直接使用,已经调试通过.
💻 C
字号:
#include"AT24.h"
#include "LCM_162.h"
unchar AT_date ;
unchar AT_display[3];
unsigned char code display_ATnumber[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};

void Setting(void)
{
 Lcd_initialize();
 Writecmd(0x80);
 Lcd_string("Capacitance Text");
 Writecmd(0xA8);
 Lcd_string("   Current Value");
 AT_date=read_AT(0x00);
 tunbcd(AT_date);
 Writecmd(0xA8);
 Write_date(display_ATnumber[AT_display[0]]);
 Write_date(display_ATnumber[AT_display[1]]);
 Write_date(display_ATnumber[AT_display[2]]);
 while(1)
  {
   if(Key_read()==2)
     {
	  AT_date++;
	  write_AT(0x00,AT_date);
	  tunbcd(AT_date);
	  Writecmd(0xA8);
	  Write_date(display_ATnumber[AT_display[0]]);
	  Write_date(display_ATnumber[AT_display[1]]);
	  Write_date(display_ATnumber[AT_display[2]]);
	  }
   if(Key_read()==3)
     {
	  AT_date--;
	  write_AT(0x00,AT_date);
	  tunbcd(AT_date);
	  Writecmd(0xA8);
	  Write_date(display_ATnumber[AT_display[0]]);
	  Write_date(display_ATnumber[AT_display[1]]);
	  Write_date(display_ATnumber[AT_display[2]]);
	  }
   if(Key_read()==1)
     break;
   }

 }



/*读AT24C02*/
unchar read_AT (unchar address)	  
  {
   unchar i;
   start24(); 
   senddate(write24);
   clock(); 
   senddate(address);
   clock(); 
   start24();
   senddate(read24);
   clock();
   i=readx(); 
   stop();
   delay(50);
   return(i);
 }

/*写AT24C02*/
void write_AT(unchar address,unchar ATdate)

{ start24(); 
  senddate(write24);
  clock(); 
  senddate(address);
  clock();
  senddate(ATdate);
  clock(); 
  stop(); 
  delay(50);
}
/*24开始信号函数*/
void  start24(void)
{
 AT_sda=low;
 delay(0);
 AT_scl=high;
 delay(0);
 AT_sda=high;
 delay(0);
 AT_sda=low;
 delay(0);
 AT_scl=low;
 delay(0);
}
/*24停止信号函数*/
void stop (void)
{
 AT_sda=low;
 delay(0);
 AT_scl=high;
 delay(0);
 AT_sda=high;
 delay(0);
}
/*24发送数据*/
void senddate(unchar j)
{
unchar i,temp;
temp=j;
 for (i=0;i<8;i++)
   {
    temp=temp<<1;
    AT_scl=0;
	AT_sda=CY;
	AT_scl=1;
    }
AT_scl=0;
AT_sda=1;
}

/*24时钟*/
void clock(void)
{
unchar i=0;
AT_scl=1;
while ((AT_sda==1)&&(i<255))i++;
AT_scl=0;
}

/*读一个字节的数据*/
unchar readx(void)
{
unchar i,j,k=0;
AT_scl=0;
AT_sda=1;
for (i=0;i<8;i++)
{
 AT_scl=1;
 if (AT_sda==1) j=1;
 else j=0;
 k=(k<<1)|j;
 AT_scl=0;
}
return(k);
}

void tunbcd(unchar date2)
{

  AT_display[0]=date2/100;
  date2=date2%100;
  AT_display[1]=date2/10;
  AT_display[2]=date2%10;
 }

void delay(unsigned int um100)		   
{
     unchar usn;
     while(um100!=0)
        {usn=97;
         while(usn!=0)
               {
                usn--;
                }
              um100--;
         }
      }

⌨️ 快捷键说明

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