单片机模拟I2C总线及24C02读写实例

发布时间:2023-07-18  

单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(c源代码)

/* 51系列单片机在使用时,有时需要模拟I2C总线, */
/* 这里举出一个实例(读写串行EEPROM芯片at2402) */


/************************************************************************/
/* Name:AT24C02存储器的读写程序,用到I2C总线,含相对独立的I2C总线读写函数 */
/* Language: C51单片机编程语言 */
/* Platform: Win98,Intel Celeron 433 Processor,伟福仿真器仿真8751 */
/* Author: StephenZhu javasdk@163.com */
/* Date: 2003年5月21日,5月22日,5月29日 */
/* Version: 1.1.1 */
/* Others: None */
/************************************************************************/
#include
#include
#include
#define DELAY_TIME 60 /*经实验,不要小于50!否则可能造成时序混乱*/
#define TRUE 1
#define FALSE 0
sbit SCL=P1^7;/*假设由P1.7和P1.6控制*/
sbit SDA=P1^6;
/********** Function Definition函数定义 ************/
void DELAY(unsigned int t) /*延时函数*/
{
while(t!=0)
t--;
}
void I2C_Start(void)
{
/*启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME);
SDA=0;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void I2C_Stop(void)
{
/*终止I2C总线,当SCL为高电平时使SDA产生一个正跳变*/
SDA=0;
SCL=1;
DELAY(DELAY_TIME);
SDA=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void SEND_0(void) /* SEND ACK */
{
/*发送0,在SCL为高电平时使SDA信号为低*/
SDA=0;
SCL=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
void SEND_1(void)
{
/*发送1,在SCL为高电平时使SDA信号为高*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME);
SCL=0;
DELAY(DELAY_TIME);
}
bit Check_AcknowLEDge(void)
{
/*发送完一个字节后检验设备的应答信号*/
SDA=1;
SCL=1;
DELAY(DELAY_TIME/2);
F0=SDA;
DELAY(DELAY_TIME/2);
SCL=0;
DELAY(DELAY_TIME);
if(F0==1)
return FALSE;
return TRUE;
}
void WriteI2CByte(char b)reentrant
{
/*向I2C总线写一个字节*/
char i;
for(i=0;i<8;i++)
if((b< SEND_1();
else
SEND_0();
}

char ReadI2CByte(void)reentrant
{
/*从I2C总线读一个字节*/
char b=0,i;
for(i=0;i<8;i++)
{
SDA=1; /*释放总线*/
SCL=1; /*接受数据*/
DELAY(10);
F0=SDA;
DELAY(10);
SCL=0;
if(F0==1)
{
b=b<<1;
b=b|0x01;
}
else
b=b<<1;
}
return b;
}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    CAN协议栈与LIN协议栈介绍;CAN协议栈 汽车CAN协议栈是一种软件组件,用于实现汽车电子系统中的CAN总线通信功能。它包含了一系列的功能软件,用于处理CAN总线的......
    帮助客户降低协议转换的时间、人力成本和工程复杂度。 而在未来,可能会出现CANCAN FD总线CAN XL总线的应用情况,自然也会出现相应的能兼容CANCAN FD、CAN XL总线......
    ,Motorola,Intel等半导体制造商相继开发出了支持CAN协议的集成芯片,更是推动了CAN总线的应用。目前,CAN总线在数控机床、医疗设备、工业控制等领域也取得了广泛的应用。1993年,国际......
    总线的应用范围广,在实际应用中,环境相当复杂,一些静电(ESD)、浪涌(Surge)等干扰很容易耦合到总线上,并直接作用于CAN总线接口。一般的CAN总线收发器芯片静电(ESD)、浪涌(Surge......
    技术之一。 CAN总线具有现场总线的特点,适合于分布式系统的应用。目前,国内已具有一定的 CAN总线产品的开发能力,其应用成本也随之降低,所以,在传统控制系统的改造中 CAN总线技术得到了比较广泛的应用......
    接线形式少了二极通信线且抗干扰能力增强,从而使接线形式更为简单、造价更低,因此,RS-485总线基本上独霸了以单片机为核心的分布式多机测控系统通信物理层的应用。但随着科技的发展,RS-485总线的总线效率低、系统......
    CAN总线的基本结构组成?为什么CAN总线会应用于汽车行业?;关于CAN总线,其特点如下: • 它使用一对双绞线电缆。 • 可在同一个CAN 总线上可以连接多个ECU。 • 减少......
    汽车多线束之间的互相干扰。6.无需点对点连接,完美解决汽车布线问题。 其实CAN总线最初就是为汽车的电子控制系统而设计的,因为它在组网和通信功能上的优点以及高性价比的特点,决定了它在许多领域有广阔的应用......
    从基础的车身控制到高级的驾驶辅助系统等多个方面。CAN总线因其高可靠性、低成本和灵活性,在汽车电子领域得到了广泛的应用。随着汽车向电动化、智能化发展,对于CAN总线的依赖预计将继续增长。 在全球范围内,CAN技术......
    ,write,release等操作。 4 结语 随着工业控制系统性能的提高,以太网在工业上的应用也会越来越广泛。在此详细介绍了一种嵌入式网关的设计与实现。作为连接以太网和现场总线的纽带,实现以太网与CAN现场总线......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>