单片机模拟I2C总线及24C02读写实例(c源代码),24C02 read / write process
关键字:单片机模拟I2C总线及24C02读写实例(c源代码)
单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(c源代码)
/* 51系列单片机在使用时,有时需要模拟I2C总线, */
/* 这里举出一个实例(读写串行EEPROM芯片at2402) */
/* 这里举出一个实例(读写串行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;
}
/**********以下为读写24c02的函数**********/见下一页面
下一页
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
发布评论请先 登录
相关推荐
热点推荐
Onsemi N24C02/04/08/16:高性能I²C EEPROM的卓越之选
在电子设计领域,EEPROM是一种至关重要的存储元件,而Onsemi的N24C02、N24C04、N24C08和N24C16系列I²
芯伯乐24C02/24C04/24CXX:百万次擦写非易失性存储器的解决方案
的首选方案。无论是消费电子、工业控制还是物联网设备,都能见到它的身影。一产品概述24C02/24C04/24Cxx系列是基于IIC总线协议的串行电可擦除存储器(E
【沁恒CH585开发板免费试用体验】I2C 读写EEPROM (三)
(\"\\\\r\\\\n\");
}
}
printf(\"I2C(AT24C02) Read and write test successful\\\\r
发表于 08-05 22:25
【沁恒CH585开发板免费试用体验】I2C 读写EEPROM (二)
;);
}
}
printf(\"I2C(AT24C02) Read and write test successful\\\\r\\\\n\");
}
4.2 实验现象
发表于 08-05 22:13
【RA-Eco-RA4M2开发板评测】I2C读取EEPROM(二)
就行。
值得注意的是,这里的从机地址是7位,代码中自动左移了。
然后让软件自动生成配置代码即可。
6.2 基于I2C的EEPROM读写实现
发表于 04-28 23:14
基于APM32F407如何制作I2C EEPROM(AT24C02型号)的MDK-Keil下载算法
基于APM32F407如何制作I2C EEPROM(AT24C02型号)的Keil下载算法,这样在我们下载代码时可以一键把数据烧录到EEPROM中。
I2C总线通信原理 如何设计I2C总线电路
I2C总线通信原理 I2C(Inter-Integrated Circuit)总线是一种用于集成电路之间进行通信的串行通信协议。它最早由飞利浦公司(现被恩智浦电子收购)于1982年推出
I2C总线的优缺点分析
设备之间的通信,这大大减少了所需的引脚数量,降低了硬件成本。此外,由于其简单性,I2C总线也易于实现和维护。 2. 多主机和多从机支持 I2C
I2C总线的工作模式介绍
在现代电子系统中,I2C总线作为一种多主机、多从机的串行通信协议,扮演着至关重要的角色。它允许多个设备共享同一总线,进行数据传输,从而简化了系统设计并降低了成本。
I2C总线与单片机的连接
在现代电子系统中,单片机(MCU)是核心控制单元,而I2C总线作为一种多主机、多从机的串行通信协议,因其简单、高效和节省引脚的特性而被广泛应用于各种电子设备中。
I2C总线应用实例分析
。I2C总线使用两条线进行通信:数据线(SDA)和时钟线(SCL)。这种双线制设计使得I2C总线能够在多个设备之间共享,而不需要为每个设备单独布线。 应用
I2C总线与SPI总线的比较
在现代电子系统中,微控制器与各种外设之间的通信是必不可少的。I2C和SPI是两种流行的串行通信协议,它们各自具有独特的特点和应用场景。 I2C总线 I2C是一种多主机、多从
《DNESP32S3使用指南-IDF版_V1.6》第二十章 IIC_EEPROM实验
24C02设备的读操作地址为:0xA1;写操作地址为:0xA0。在前面已经说过IIC总线的基本读写操作,那么我们就可以基于IIC总线的时序的上,理解
发表于 12-21 09:31

单片机模拟I2C总线及24C02读写实例(c源代码),24C02 read / write process
评论