- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IIC总线协议程序
51单片机IO口模拟IIC总线协议
2008-01-13 15:01
2
I C 总线是 Philips 公司提出的一种集成电路 IC 器件之间相连接的总线协
议,其目的是使电子系统(不只限于单片机系统)各个IC 器件之间的连线变得
容易。因为使用传统的并行总线在IC器件之间连接,往往会使得IC 之间连线较
2
多,显得非常复杂。而I C 总线则使IC 器件之间只需SDA、SCL 两条连线就可
2
以传送数据,因而十分方便。由于I C在印刷体中不容易书写(需要上标),所
以实际书写时,还常见到 IIC、I2C 等书写方法,本文采用 IIC 的写法,敬请注
意。关于IIC 总线的知识,请参阅相关书籍,此处不再做进一步介绍。
下面我们用一个使用IIC 总线连接器件的例子来简单说明IIC 总线的仿真。
例.EEPROM24C02是采用IIC 接口的一种常用2Kbit(256×8bit)的存储器。
编写程序使用AT89C51的IO 口模拟实现IIC 总线协议进行通信,并向24C02存
储器内从字节0到字节FF 写入数字0到FF。
51系列单片机本身没有IIC 接口,但一些本身具有IIC 接口的单片机往往是
高端产品,一方面价格不菲,另一方面我们的系统也没有必要使用之。通常我们
就使用软件通过51系列单片机的IO 口来模拟实现IIC 总线通信。
本例事实上比较简单,但需要对IIC 总线时序有较好的理解。源文件如下图
所示(采用C51语言编写):
在Keil 中编辑好源文件以后,接下来就可以建立工程文件并生成相应的源
代码了,然后我们来绘制电路图。
此例的电路图极其简单。只需两个IC,即AT89C51和24C02C,和两个上
拉电阻,而且上拉电阻还可以省略。至于连接,就更为简单了。最后得到绘制好
的电路图如下图所示:
绘制好电路图,我们就可以将前面刚刚生成的程序源代码装入单片机了,
装入以后,下面我们就可以来进行仿真了。
首先点击仿真按钮,系统没有什么反映,只有高低电平变化的颜色。我们
要想查看结果,还要用前文中仿真扩展RAM 存储器的方法,先点击暂停,然后
点击“Debug”菜单下的“I2C Memory Internal Memory – U2”子菜单来打开U2即
EEPROM 存储器24C02C 的内容窗口“I2C Memory Internal Memory – U2”,然
后我们就看到了其中的内容,也就是
我们仿真程序的结果。如下图所示:
从图中我们能清楚地看到我们的仿真结果,程序完全正确地执行了我们的
命令。
当然,如果你过早地点击了暂停按钮,那么你得到的结果可能和上图略有
不同,那可能是因为程序尚未执行完毕。此时你可以继续点击运行按钮,或者点
击单步按钮来仔细查看程序执行过程中24C02C 存储器内容的改变情况。
/*
Acessthe eeprom--24c04
*/
#include intrins.h
#ifndef INT8U
#define INT8U unsigned char
#endif
#ifndef INT8S
#define INT8S signed char
#endif
#ifndef INT16U
#define INT16U unsigned int
#endif
#define I2C_DELAY;_nop_();_nop_();_nop_();_nop_();_nop_(); // =4.7uS
//
// delay 100us
//
void mDelay(INT8U k)
{
INT16U i ;
for(; k0; k--)
{
for(i=0; i93; i++)
;
}
}
//
//OK
//
void I2C_Start(void)
{
SDA = 1;
I2C_DELAY;
SCL = 1;
I2C_DELAY;
SDA = 0;
I2C_DELAY;
I2C_DELAY;
}
//
//OK
//
void I2C_Stop(void)
{
SDA = 0 ;
I2C_DELAY;
SCL = 1 ;
I2C_DELAY;
SDA = 1 ;
I2C_DELAY;
I2C_DELAY;
}
//
//
//
void sendA
您可能关注的文档
- GG-JXB-变压器中性点间隙接地保护成套装置.pdf
- GMP验证运行确认性能确认OQPQ模板.pdf
- GPON 实训指导书 - 移动通信技术与网络实验中心.pdf
- GPRS 环保数据采集系统应用方案一项目需求.pdf
- GPS结合GIS及GPRS建置车队管理系统之应用.pdf
- GrandMA控台自编灯库.pdf
- GSM网频率规划.pdf
- G小调第二十五交响曲莫扎特 单簧管乐谱.pdf
- G小调第二十五交响曲— 莫扎特.pdf
- Hartshorne习题.pdf
- 七章货物的保险.pptx
- 三章国际间接投资.pptx
- 人性假设理论.pptx
- 外研高一英语必修三ModuleIntroduction汇总市公开课获奖课件省名师示范课获奖课件.pptx
- 月相成因优质获奖课件.pptx
- 小学二年级语文课件《狐假虎威》省名师优质课赛课获奖课件市赛课一等奖课件.pptx
- 养羊业概况专题知识讲座.pptx
- 微生物的实验室培养市公开课获奖课件省名师示范课获奖课件.pptx
- 人教版六年级下册式与方程整理与复习市公开课获奖课件省名师示范课获奖课件.pptx
- 必威体育精装版高中精品语文教学:第二单元-第7课-诗三首:涉江采芙蓉、-短歌行、归园田居市公开课获奖课件省名师.pptx
文档评论(0)