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

发布者:Qilin520最新更新时间:2023-07-18 来源: elecfans关键字:单片机  模拟I2C总线 手机看文章 扫描二维码
随时随地手机看文章

单片机模拟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;
}


关键字:单片机  模拟I2C总线 引用地址:单片机模拟I2C总线及24C02读写实例

上一篇:51单片机的启动文件内容
下一篇:基于AT89S52单片机实现激光雷达门控控制系统的软硬件设计

推荐阅读最新更新时间:2024-11-02 18:04

8位串行数码管模块__设计原理图及测试程序
完整的 源 码下载地址:http://www.51hei.com/f/chcxde.rar /***采用2片595驱动,动态扫描原理显示,需要单片机3路IO口(DIO接 P33 SCK接P32 RCK接P34),上电显示时钟****/ #include AT89X51.H unsigned int tcount; unsigned char m; static unsigned char second,minute,hour; unsigned char code fseg ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char c
[单片机]
8位串行数码管模块__设计原理图及测试程序
分时操作系统思想在单片机编程中的应用实现
前言   作为嵌入式系统主控单元——单片机,其软件往往是一个微观的实时操作系统,且大部分是为某种应用而专门设计的。系统程序有实时过程控制或实时信息处理的能力,要求能够及时响应随机发生的外部事件并对该事件做出快速处理。而分时操作系统却是把CPU的时间划分成长短基本相同的时间区间,即“时间片”,通过操作系统的管理,把这些时间片依次轮流地分配给各个用户使用。如果某个作业在时间片结束之前,整个任务还没有完成,那么该作业就被暂停下来,放弃CPU,等待下一轮循环再继续做。此时CPU又分配给另一个作业去使用。由于计算机的处理速度很快,只要时间片的间隔取得适当,那么一个用户作业从用完分配给它的一个时间片到获得下一个CPU时间片,中间有所“停顿”
[单片机]
分时操作系统思想在<font color='red'>单片机</font>编程中的应用实现
单片机一键多功能控制
家知道单片机的IO口资源是非常宝贵的,特别是当我一个工程项目比较大的时候,我们在利用按键的时候,我们除了可以用矩阵键盘以外,我们还有一种办法可以实现减少IO口但却实现多功能的控制。这样就可以为我节省了IO口,那么这个方法是什么呢?这就是我今天刚学的一个按键多种功能的控制。而且这次我还就效果及程序作了一定的讲解,当然我不是一个专业的老师,而且我不是以营利为目的,我只是抱着让我空间见证我的进步,还有让看到我日志,想学单片机而没有一点基础的朋友不要像我走那么多弯路,少走一些弯路的目的。顺便多结交一些热爱单片机的朋友,当然如果你是高手,希望高手们不要见笑。或者您觉得有更好的办法也请您多多指点。我会虚心向您们学习的,大家一起在交流中进步。 参
[单片机]
基于单片机的DTMF信号的译码算法研究
1、引言 双音多频(DTMF)是由贝尔实验室开发的信令方式,通过承载语音的模拟电话线传送电话拨号信息。每个数字利用两个不同频率突发模式的正弦波编码,选择双音方式是由于它能够可靠地将拨号信息从语音中区分出来。一般情况下,声音信号很难造成对DTMF接收器的错误触发。DTMF是"TouchTONe" (早期AT&T的商标)的基础, 替代机械式拨号转盘的按键。 DTMF信号首先用于电话的拨号系统,在频率编码遥控系统及数据编码传输中的应用也很普遍。目前的DTMF译码器中,大多采用通用集成器件(单音译码电路和组合门电路)或专用DTMF信号译码集成电路(如MC145436等)组成译码电路。在很多情况下,DTMF译码器输出的数据仍需送入单片机
[单片机]
基于<font color='red'>单片机</font>的DTMF信号的译码算法研究
ST最新开发工具为了解基于STM32 ARM Cortex-M3 MCU开方便之门
完整的低成本的评估开发工具通过图形界面探索微控制器的性能和功能 中国,2007年11月6日 — 意法半导体(纽约证券交易所:STM)今天公布了一个价格非常低廉的微控制器开发套件STM32 PerformanceStick,这套开发工具是近日推出的基于ARM Cortex-M3内核的STM32系列微控制器的配套产品。ST设计这套紧凑的开发工具是为了便于用户了解新微控制器的功能和性能,特别值得一提的是,用户可以通过一个图形界面查看微控制器在不同条件下的性能特性。为了鼓励和帮助设计工程师修改和重新编写应用程序源代码,工具包还含有示例应用软件和一套完整的Hitex软件工具。 STM32 PerformanceStick是一套功能完整
[焦点新闻]
PIC单片机的输入和输出操作方法介绍
pic单片机是学习单片机人士必定接触的一款器件,因此大家对pic单片机或多或少具备一定了解。而在pic单片机学习过程中,pic单片机内部硬件资源接口是需要大家掌握的基本内容之一。其中,I/O更是pic单片机的实际基础操作。 I/O口单片机作为一个控制器件必定有数据输入和输出。输入量可能是温度、压力、转速等,而输出量可能是开关量和数据,以保证受控过程在规定的范围内运行。数据的输入和输出都需通过单片机内部有关电路,再与引脚构成输入/输出(I/O)端口。PIC16F84单片机芯片有两个I/O端口(PROTA和PORTB)。端口A为5位口,端口B为8位口,共占用13位引脚。每个端口由一个锁存器(即数据存储器中的特殊功能寄存器05H、0
[单片机]
PIC<font color='red'>单片机</font>的输入和输出操作方法介绍
基于凌阳SP-CEA061A单片机的频率计设计方案
1 引言 频率是反映信号特性的基本参量之一,频率测量在应用电子技术领域有着重要的地位,数字化处理技术使得测量仪器设备功能完美,但数字处理的实时性受到处理速度的限制,实时测量对电路的处理速度要求越来越高,目前的微控处理芯片发展速度,出现诸如DSP,FPJA等不同领域的应用芯片。 作为主要应用于数字语音领域的凌阳SP-CEA061A,有着丰富的硬件资源、可低于3V的工作电压、较低的功耗和高达约50MHz的时钟工作频率,相对于通用的51系列、96系列等单片机,无疑有更佳的性能。特别是SPCE061A内置32k字FLASH存储器、多时基选择定时器、两路D/A转换器和一路A/D转换器,使他在便携式测量仪器中应用更有前景。 2 硬件
[单片机]
基于凌阳SP-CEA061A<font color='red'>单片机</font>的频率计设计方案
【GD32 MCU 入门教程】二、GD32 MCU 烧录说明(1)ISP 烧录
GD32 MCU提供了多种烧录方法,可在调试和生产等阶段进行便捷的烧录。GD32目前主要烧录方法有ISP烧录、SWD/JTAG在线下载、脱机烧录三种类型。 ISP烧录:使用串口或USB即可烧录,无需特殊工具支持。可根据协议自行定制下载方式,需要控制BOOT0引脚电平选择启动模式。 SWD/JTAG在线下载:无需切换MCU启动方式,使用仿真器等可进行下载。需使用仿真器和上位机进行操作。 脱机烧录:适用于大批量的产线生产,烧录过程无需PC和软件,可脱机进行烧录,批量烧录效率高。 本章对三种烧录方法有以下三个方面介绍。 1 烧录工具和硬件连接:介绍各烧录方法需使用的工具,以及硬件所需接口。 2 软件操作和烧录流程:介绍烧录软件的
[单片机]
【GD32 <font color='red'>MCU</font> 入门教程】二、GD32 <font color='red'>MCU</font> 烧录说明(1)ISP 烧录
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved