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

📄 i2c.h

📁 1602字符液晶在89C52单片机上的应用实例和在proteus环境下的仿真实例!
💻 H
字号:
#ifndef __I2C__H
#define __I2C__H

#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//*I2C专用**************//
#define  WRITE24C02    0xA0
#define  READ24C02    0xA1
#define  MSB    0x80

sbit SCL= P2^3;
sbit SDA= P2^4;
/*I2C专用*/

/************************************************************************/
void I2C_delay(void)
{
  _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();
}
/***********************************************************************/
void I2C_start(void)
{
  SDA=1;
  _nop_();
  SCL=1;
  _nop_();
  SDA=0;
  _nop_();
  SCL=0;
  _nop_();
}
/***********************************************************************/
void I2C_stop(void)
{
  SDA=0;
  _nop_();
  SCL=1;
  _nop_();
  SDA=1;
  _nop_();
  SCL=0;
  _nop_();
}
/***********************************************************************/
void I2C_send_0(bit k)
{
  SDA=k;
  I2C_delay();
  SCL=1;
  I2C_delay();
  SCL=0;
}
/***********************************************************************/
void I2C_write_byte(uchar dat)
{
  uchar i;
   for (i=8;i>0;i--)
    {
     SCL=0;
     I2C_delay();
     SDA=(bit)(dat&MSB);
     dat<<=1;
     I2C_delay();
     SCL=1;
     I2C_delay();
    }
    SCL=0;   
}
/***********************************************************************/
uchar I2C_read_byte(void)
{
  uchar i,dat;
   for (i=0;i<8;i++)
    {
     SCL=0;
     I2C_delay();
     SDA=1;
     I2C_delay();
     SCL=1;
     dat<<=1;
        I2C_delay();
     if(SDA)
        dat++;
    } 
    SCL=0;  
     
   return (dat); 
}
/***********************************************************************/
void AT24C02_write(uchar address,uchar dat)
{
 uchar temp;
 temp=dat/10; 
 temp<<=4;
 temp=dat%10+temp;
  
 I2C_start(); 
 I2C_write_byte(WRITE24C02);     
 I2C_send_0(0);
 I2C_write_byte(address);   
 I2C_send_0(0);    
 I2C_write_byte(temp);     
 I2C_send_0(1); 
 I2C_stop();
}
/***********************************************************************/
uchar AT24C02_read(uchar address)
{
 uchar temp,dat;
 I2C_start();
 I2C_write_byte(WRITE24C02);
 I2C_send_0(0);
 I2C_write_byte(address); 
 I2C_send_0(1);
 I2C_stop();
  
 I2C_start();
 I2C_write_byte(READ24C02);
 I2C_send_0(0);
 dat=I2C_read_byte();
 I2C_send_0(1);
 I2C_stop();        
 
 temp=dat/16;
 dat=dat%16;
 dat=dat+temp*10;
 return (dat);
}
AT24C02_Rest()
{
	SDA=0;
	SCL=0;	
}
#endif

⌨️ 快捷键说明

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