0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

454398 2018-09-20 19:41 次阅读

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

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

单片机模拟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;
}
/**********以下为读写24c02的函数**********/见下一页面

下一页
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    STM8S103F3读24C02硬件I2C可以连续读,模拟I2C只能读一个,第二个是0x00为什么?

    24C02硬件I2C可以连续读,模拟I2C只能读一个。第二个是0x00,求助大神指点
    发表于 05-06 07:22

    STM32F103用普通IO口驱动24C02读写不正确的原因?

    以下24C02的驱动好像不稳定,不更换24C02时,读写都正确,但是更换一个24C02,数据就读写不正确,在把之前的正常的
    发表于 04-19 06:12

    通过STM32F103的I2C读写24LC024,超过16个以后读回来的地址上的数不对是怎么回事?

    通过STM32F103的I2C读写24LC024,现在问题是一次读写16个及以内的数据完全正常 ,超过16个以后读回来的地址上的数不对,想问问读写
    发表于 04-18 06:37

    24C02/04/08/16/32/64应用介绍

    电子发烧友网站提供《24C02/04/08/16/32/64应用介绍.pdf》资料免费下载
    发表于 12-07 10:38 2次下载

    I2C总线信号与测试案例(一)

    I2C bus是Inter-IC bus的缩写,意思是IC器件之间的通讯总线I2C 总线的特点如下
    的头像 发表于 11-20 15:45 1426次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>信号与测试案例(一)

    单片机IIC总线及AT24C02的应用

    电子发烧友网站提供《单片机IIC总线及AT24C02的应用.doc》资料免费下载
    发表于 11-16 09:24 2次下载
    <b class='flag-5'>单片机</b>IIC<b class='flag-5'>总线</b>及AT<b class='flag-5'>24C02</b>的应用

    CW32单片机I2C接口读写EEPROM芯片介绍

    CW32单片机I2C接口读写EEPROM芯片介绍
    的头像 发表于 11-09 17:42 848次阅读
    CW32<b class='flag-5'>单片机</b><b class='flag-5'>I2C</b>接口<b class='flag-5'>读写</b>EEPROM芯片介绍

    STM32基础知识:IIC总线操作EEPROM存储模块AT24C02

    本文是IIC总线的实际应用,将带领读者一步一步阅读AT24C02数据手册,看时序图了解如何使用IIC接口EEPROM存储模块AT24C02,并编写代码使用STM32驱动这个模块。
    的头像 发表于 10-26 14:25 1934次阅读
    STM32基础知识:IIC<b class='flag-5'>总线</b>操作EEPROM存储模块AT<b class='flag-5'>24C02</b>

    STM32速成笔记(11)—EEPROM(AT24C02)

    AT24C01/02/04/08/16...是一个1K/2K/4K/8K/16K位电可擦除PROM,内部含有128/256/512/1024/2048个8位字节,AT24C01有一个8
    的头像 发表于 10-24 15:12 2152次阅读
    STM32速成笔记(11)—EEPROM(AT<b class='flag-5'>24C02</b>)

    I2C总线原理详解

    I2C两线式串行总线通讯协议,它是由飞利浦开发的,主要用于连接微控制器及其外围设备之间,它是由数据线SDA和信号线SCL构成的,可发送和接收数据即在MUC和I2C设备之间,I2C
    发表于 10-18 17:20 1854次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>总线</b>原理详解

    24C02写或读数据的时候从不回ACK是什么情况?

    各位高手是否有碰到过对24C02写或读数据的时候从不回ACK 就是我对24C02发送写数据0xa0或发读0xa0 但从不回ACK信号那是什么情况?
    发表于 10-18 06:30

    I2C读写时序分析和实现思路

    上篇推文对I2C总线的特性进行了介绍和描述。对于开发者而言,最重要的是编码I2C读写时序驱动。本篇推文主要总结和分享I2C
    发表于 10-01 16:54 1252次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>读写</b>时序分析和实现思路

    基于MM32F0140的I2C24C02通信

    I2C(Inter-Integrated Circuit)是一种通用的总线协议,实现I2C需要两根信号线完成信息交换
    的头像 发表于 09-28 16:52 2417次阅读
    基于MM32F0140的<b class='flag-5'>I2C</b>与<b class='flag-5'>24C02</b>通信

    I2C串行总线协议是什么?I2C总线有哪些优点?

    I2C串行总线协议是什么?I2C总线有哪些优点? I2C(Inter-Integrated Circuit)是一种串行
    的头像 发表于 09-12 11:18 1262次阅读

    AT24C04芯片驱动程序原理

    1.芯片简介 24c02是一种串行电可擦除只读存储器(以下数据均以AT24C02为例),即eeprom存储器器件,采用的 IIC 总线技术。24c02在许多试验中都有出现。
    的头像 发表于 09-11 11:36 1796次阅读
    AT<b class='flag-5'>24C</b>04芯片驱动程序原理