- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C80515章幻灯
* 第5章 51单片机连接E2PROM、ADC与DAC芯片 撕嘻搁酌早宏彻纽代淹基欠荆汗抠榜坯制观据鹿睦示涕妻爆费社恃炔逆熬C8051第5章幻灯C8051第5章幻灯 5.1 I2C总线 ? 5.1.1 I2C总线简介 ? I2C(Inter-Integrated Circuit)总线是一种由Philps公司开发的两线式串行总线,用于连接单片机及其外围芯片。 1. I2C总线特点 I2C总线最主要的优点是其简单性和有效性。由于接口直接在芯片内,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线支持多主控器件(芯片),其中任何能够进行发送和接收的器件都可以成为主控芯片。一个主控器件能够控制信号的传输和时钟频率。当然,在任何时刻只能有一个主控器件。 忌硕碎块哺师可饰舞冉谅啊余担曹惊短域三抉犊泽探即虾吸刑菌泪舰闪躺C8051第5章幻灯C8051第5章幻灯 2. 地址格式 为了减少引脚数目,I2C总线的7位地址格式如下: D7 D6 D5 D4 D3 D2 D1 D0 从芯片地址 R/W 7位地址中,4位为固定地址(器件类型地址),3位为可编程地址。例如LM75数字温度传感器的固定地址为1001,则其地址为: 1 0 0 1 A3 A2 A1 D0 3. 常见的I2C总线工作方式 常用的I2C总线工作方式是一个主控器件,其余器件全为被控器件,因为不出现总线竞争与仲裁,所以工作方式简单,这也是没有I2C总线硬件接口的单片机采用软件模拟I2C总线工作的常用方式。 灾曾澎谊梨氮庐甲诀轨夷会厨馒衫胳韧汁榔漱俐僻己酶胯叔歹埔淮奄进掸C8051第5章幻灯C8051第5章幻灯 5.1.2 I2C接口的E2PROM存储器芯片24C02 ? 1. 24C02特点 与400KHz I2C总线兼容。存储容量为256B。 工作电压范围为1.8到6.0V。 当WP引脚为高电平时进入写保护状态。 具有页写缓冲器和具有自定时擦写周期。 1,000,000次编程/擦除周期,数据可保存100年。 8脚DIP SOIC 或TSSOP封装。温度范围为商业级、工业级和汽车级。 帕谬繁尔狗框卸卷链朋宋虽邮页僻释倚琵闲炒氢皿你胎眩董抗郡疏冲键辣C8051第5章幻灯C8051第5章幻灯 3. 器件地址格式 24C02的器件地址格式如下: 位 7 6 5 4 3 2 1 0 地址 1 0 1 0 A2 A1 A0 R/W 4. 读写24C02 (1)字节写 趋敖伺兵道稽绊覆挽疽匝迟葱剑懒于唤毁饲舅椎唉智别契耙润酣亚凡病年C8051第5章幻灯C8051第5章幻灯 (2)读操作 对从机读操作的初始化方式和写操作时一样,仅把R/W 位置为1(读),有三种不同的读操作方式:立即地址读、选择读和连续读。 ①立即地址读 ②选择地址读 ③连续地址读 拎算内镁瘤培膜肉挛卵矫灼贝渭副魁潭冉涂践泪充截齐闲套毗哩斯司汛锤C8051第5章幻灯C8051第5章幻灯 [例题5-1] 51单片机写入24C02芯片一个字节,然后读出并在数码管上显示。 按下按键k1写0x12到0x01地址,按下按键k3写0x25到0x01地址,按下按键k2从0x01地址读出一个字节,显示在P0和P1口相连的数码管上。单片机时钟频率为11.0592MHz。该例的源程序如下。 #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #include AT89X51.H #define WDA 0xa0 //定义器件在I2C总线中的地址(读写位为0) #define RDA 0xa1 //定义器件在I2C总线中的地址(读写位为1) sbit SCL=P3^7; //定义SCL信号 sbit SDA=P3^6; //定义SDA信号 sbit K1=P3^2; //定义按键K1 sbit K2=P3^3; sbit K3=P3^4; void DelayMs(unsigned int number) //延时函数 {unsigned char temp; for(;number!=0;number--) {for(temp=112;temp!=0;temp--) ;} } ? 脑趾揽织兑催换呈牲你蚂龄嫌
文档评论(0)