收藏 分享(赏)

单片机应用_I2C总线.ppt

上传人:pw17869 文档编号:5837602 上传时间:2019-03-19 格式:PPT 页数:50 大小:911KB
下载 相关 举报
单片机应用_I2C总线.ppt_第1页
第1页 / 共50页
单片机应用_I2C总线.ppt_第2页
第2页 / 共50页
单片机应用_I2C总线.ppt_第3页
第3页 / 共50页
单片机应用_I2C总线.ppt_第4页
第4页 / 共50页
单片机应用_I2C总线.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、单片机应用设计 项目实训 I2C总线,学习内容: 一。总线(I2C总线)。 二。 AD、DA转换(PCF8591) 。 三。键盘。 四。数码管显示。 五。通信。(232、485)。 六。步进电机驱动控制。,第一篇 i2C总线 (理论2学时,实践4学时) 学习目的: (1).认识i2C总线的实现原理,简单了解其协议思想。 (2).通过i2C总线,认识器件之间,以及电路与软件的融合思想。 (3).通过i2C总线,使学生能触类旁通的扩展到其它协议类的原理。 (4)通过i2C总线,学习单片机控制原理。,i2C(InterIntegrated Circuit)总线:它是PHILIPS公司开发的双向两线制

2、串行总线,用于连接微控制器及其外围设备,属于器件总线。 i2C总线产生于80年代,最初为音频和视频设备开发,在彩色电视机中大规模应用,如今主要应用于电讯和影音产品,微控制器与各种功能模块的连接,器件之间的互连通信,在计算机服务器的管理中也大量应用。,应用实例图一,应用实例图二,一。 i2C总线特点 简单性( 2线,电路简单,编程方便)有效性,I2C功能器件包括:实时时钟、 LCD驱动、I/O扩展、AD转换器、LED调光、闪光器、LED调光、闪光器、数字温度传感器、数字DIP开关;,i2C总线在IC之间进行双向数据传送,典型速度100Kbit/S,快速模式达400Kbit/S,后来增加了高速模式

3、达3.4Mbit/S。总线的长度可达1000米。 i2C总线上的每个电路和模块都有唯一的地址,像手机拨号一样。每一个IC都可以是主控器(或被控器),都可以是发送器(或接收器)。,二。 I2C总线的工作原理:数据传输的实质是:通过实现数字逻辑的“与”逻辑 来传递二进制1和0的数据。“1”高电平; “0”低电平。,I2C总线接口的实现电路简图,IN=1时,T上拉通,SDA=1; IN=0时,T下拉通,SDA=0。,多个并联,即实现了“与”逻辑。 0锁定总线,1释放总线。,2.1 I2C总线的构成及信号类型: 一。构成: 数据线 SDA时钟线 SCL 二。数据传输的有效规则:1. SCL高电平期间,

4、SDA保持不变,数据有效。2. SCL低电平期间,SDA改变,数据变化有效。 三。应用方式:1. 标准硬件 i2C 端口(硬核)。2. 软件模拟 i2C 端口(可编程器件用软件实现)。,I2C总线的三种信号类型: 开始信号 SCL高电平时,SDA产生高到低的下降沿跳变 结束信号 SCL高电平时,SDA产生低到高的上升沿跳变 应答信号 接收数据的器件在接收到8bit数据后,向发送数据的器件发出低电平信号,表示已收到数据。这个信号由接收数据的器件发出。发送端收到应答信号后,作出分析判断。若未收到应答信号,则判断为受控单元出现故障。,I2C总线数据传送典型信号时序,串行总线上的数据传送时序图:,2.

5、2 总线的工作原理时序图,时间轴,总线数据传送的模拟,(1)总线数据传送的时序要求 为了保证数据传送的可靠性,标准的总线数据传送有着严格的时序要求,如总线上时钟信号的最小低电平周期为4.7us,最小的高电平周期为4us等。 用单片机的普通I/O口模拟总线的数据传送时,单片机的时钟信号都能满足SDA、SCL上升沿、下降沿的时间要求,因此,在时序模拟时,最重要的是保证典型信号。,(2) I2C总线的控制程序实现:,/*I2C的启动程序*/ (时钟线高时,数据线上升沿) Void I2CStart (void) SDA = 1; /释放数据线SomeNOP(); /延时SCL = 1; /时钟线拉高

6、SomeNOP(); /延时SDA = 0; /数据线拉低SomeNOP(); /延时SCL = 0; /时钟线拉低SomeNOP(); /延时 ,/*I2C的停止程序*/ (时钟线高时,数据线上升沿) void I2CStop(void) SDA = 0;SomeNOP();SCL = 1;SomeNOP();SDA = 1;SomeNOP(); ,/*I2C的应答程序*/,void ACK(void) /Acknowledge信号 SDA = 0; /发送0,应答SomeNOP(); SCL = 1;SomeNOP(); /产生时钟高电平SCL = 0;SomeNOP(); void NA

7、CK(void) /没有Acknowledge信号 SDA = 1; /发送1,非应答SomeNOP();SCL = 1;SomeNOP(); /产生时钟高电平SCL = 0;SomeNOP(); ,检测应答位,bit TestAck() bit ErrorBit;SDA=1;SCL=1;ErrorBit=SDA;SCL=0;return(ErrorBit); ,写8位数据,bit Write8Bit(unsigned char input) unsigned char temp;for(temp=8;temp!=0;temp-) SDA=(bit)(input ,读8位数据,unsigned

8、 char Read8Bit() unsigned char temp,rbyte=0;for(temp=8;temp!=0;temp-) SCL=1;rbyte=rbyte1;rbyte=rbyte|(unsigned char)(SDA);SCL=0;return(rbyte); ,控制字 ,起始信号后必须是发送控制字。,控制字格式,高4位为器件识别符(不同的芯片有不同的定义,EEPROM一般应为1010),接着3位为片选,也就是三个地址位,最后1位为读写控制位,当为1时为读操作,为0时为写操作。,顺序读的操作: 下图给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是

9、“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。,顺序读的操作时序图:,顺序写的操作: 与上读操作类似,区别是控制字末位的读写控制位变成0。,读写控制位为0,I2C总线协议 写数据到从机 主机发送器用10 位地址寻址从机接收器,主机发送器用8位地址寻址从机接收器,1nd BYTE,void Write24c02 (unsigned char *Wdata,unsigned char RomAddress,unsigned char number) Start();Write8Bit(WriteDeviceAddress)

10、; TestAck();Write8Bit(RomAddress);TestAck();for(;number!=0;number-) Write8Bit(*Wdata);TestAck();Wdata+;Stop();DelayMs(10); ,I2C总线协议 写数据到从机 主机发送器用8位地址寻址从机接收器,I2C总线协议读从机数据 主机接收器用8位地址寻址从机发送器,1nd BYTE,先启动一个写命令,发送地址给从机。 然后再次启动读命令,读数据。,void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsi

11、gned char bytes) Start();Write8Bit(WriteDeviceAddress);TestAck();Write8Bit(RomAddress);TestAck();Start(); /再次启动Write8Bit(ReadDviceAddress);TestAck();while(bytes!=1) *RamAddress=Read8Bit();Ack();RamAddress+;bytes-;*RamAddress=Read8Bit();NoAck();Stop(); ,I2C总线协议 读从机数据 主机发送器用8位地址寻址从机接收器,在主程序中的调用读写子程序,v

12、oid main(void) Byte buf1=3,4,5,6,7,8;Byte buf2;Write24c02(buf1,0,6);Read24c02(buf2,0,6);if(buf11=buf21)LED1=0;if(buf12=buf22)LED2=0;if(buf13=buf23)LED3=0;if(buf14=buf24)LED4=0;while(1); ,I2C总线协议组合格式 : 主机用10 位地址寻址从机然后发送数据到这个从机并向这个从机读数据,I2C新发展恩智浦(NXP)公司扩展的I2C控制网络:,结束语I2C总线的应用中的注意事项 : 1)严格按照时序图的要求进行操作。

13、 2)总线必须上拉,即在没有控制时,总线为1。在与逻辑中理解为释放总线。 3)程序中为配合相应的传输速率,在对口线操作的指令后,用NOP指令做一定的延时。,(2) 总线典型信号的模拟子程序,启动信号子程序STA STA: SETB P1.0 ;总线启动子程序SETB P1.1NOPNOPCLR P1.1NOPNOPCLR P1.0RET,附汇编语言模拟程序,终止信号子程序STOP,STOP: NOP ;停止子程序CLR P1.1SETB P1.0NOPNOPSETB P1.1NOPNOPCLR P1.0RET,附汇编语言模拟程序,发送应答位子程序MACK,MACK: CLR P1.1 ;应答子

14、程序 SETB P1.0 ;准备发送NOPNOPCLR P1.0SETB P1.1RET,附汇编语言模拟程序,发送非应答位子程序MNACK,MNACK: CLR P1.0CLR P1.1SETB P1.1 ;非应答子程序SETB P1.0 NOPNOPCLR P1.0CLR P1.1RET,附汇编语言模拟程序,(3)总线模拟传送的通用子程序,总线数据模拟传送的通用软件包除了上述基本的启动、停止、发送应答位和发送非应答位子程序外,还有应答位检查(CACK)、发送一个字节数据(WRBYT)、接收一个字节数据(RDBYT)、发送n个字节数据(WRNBYT)、接收n个字节数据(RDNBYT)子程序。,

15、附汇编语言模拟程序, 应答位检查子程序CACK,在应答位检查子程序(CACK)中,设置了标志位,CACK中用F0作标志位,当检查到正常应答位后,F0=0,否则F0=1。 CACK: SETB P1.1 ;设P1.1为输入 SETB P1.0 ;准备读CLR F0MOV A,P1;读P1.1JNB ACC.1,GEND ;判断有无应答SETB F0 ;P1.1为“1”,无应答,F0=1 GEND: CLR P1.0 ;P1.1为“0”,有应答,F0=0NOPRET, 发送一个字节数据(WRBYT)子程序,占用资源:R0,C。 WRBYT:MOV R0,#08H CLR P1.0 CLR C WL

16、P: RLC A JC WR1 AJMP WR2 WLP1: DJNZ R0,WLP RET,WR1:SETB P1.1 SETB P1.0NOPNOPCLR P1.0CLR P1.1AJMP WLP1 WR2:CLR P1.1 SETB P1.0NOPNOPCLR P1.0AJMP WLP1, 接收一个字节数据(RDBYT)子程序,RDBYT: MOV R0,#08H RLP: SETB P1.1 SETB P1.0 MOV A,P1 JNB ACC.1,RD0 AJMP RD1 RLP1: DJNZ R0,RLP RET RD0: CLR C MOV A,R2RLC AMOV R2,A C

17、LR P1.0 AJMP RLP1,RD1: SETB MOV A,R2 RLC A MOV R2,A CLR P1.0 AJMP RLP1, 发送n个字节数据(WRNBYT)子程序,WRNBYT:PUSH PSW MOV PSW,#18H MOV R3,NUMBYT LCALL STA MOV A,SLA LCALL WRBYT LCALL CACK JB F0,WRNBYT MOV R1,MTD WRDA: MOV A,R1 LCALL WRBYT LCALL CACK,LCALL WRBYT LCALL CACK JB F0,WRNBYT INC R1 DJNZ R3,WRDA LCAL

18、L STOP POP PSW RET, 读取n个字节数据(RDNBYT)子程序,RDNBYT:PUSH PSW MOV PSW,#18 MOV R3,NUMBYT LCALL STA MOV A,SLA LCALL WRBYT JB F0,RDNBYT RDN:MOVR1,#MRD RDN1:LCALL RDBY MOV R1,A DJNZ R3,ACK LCALL MNACK LCALL STOP,POP PSWRET ACK: LCALL MACKINC R1 SJMP RDN1,第一篇 AD/DA-PCF8591,(1)AIN0AIN3:模拟输入端; (2)VSS:电源地线; (3)A0

19、A2:地址输入端; (4)SDA:总线数据线; (5)SCL:总线的时钟输入端; (6)OSC:外部时钟输入端/内部时钟输出端; (7)EXT:时钟选择端。为1时,用外部时钟;为0时,用内部时钟; (8)AGND:模拟信号地; (9)VREF:基准电源输入端; (10)AOUT:D/A转换模拟,1. PCF8591的主要特性与引脚功能,2PCF8591的结构与应用原理,控制寄存器其控制字格式如下: D1、D0=00时:模拟量输入通道选择0通道 D1、D0=01时:模拟量输入通道选择1通道 D1、D0=10时:模拟量输入通道选择2通道 D1、D0=11时:模拟量输入通道选择3通道,D2:自动增量

20、选择位,此位有效,A/D转换通道自动循环递增,每次A/D转换结束都自动选择下一通道。 D3、D7:标志位,必须设置为“0”。 D5、D4:模拟量输入方式选择,分别为4路单端输入、3路差分输入、单端与差分混合、两路差分输入4种方式。,D6:模拟量输出允许位,D6=1时激活模拟量输出,3PCF8591的数据操作格式,(1)DAC数据操作格式 S:总线的启始信号(电平由高到低); SLAW:总线的8位寻址字节(写); A:应答信号(低电平); CONBYT:PCF8591的控制字,D/A转换时控制字D6位置1; DATA0DATAn:待转换的二进制数; P:总线的终止信号(电平由低到高)。,(2)A

21、DC数据操作格式,S:总线的启始信号; SLAW:总线的8位寻址字节(写); A:应答信号; CONBYT:PCF8591的控制字; SLAR:总线的8位寻址字节(读); DATA0DATAn:A/D转换的结果; :非应答信号(高电平); P:总线的终止信号。,4PCF8591与8051的接口电路,5. 程序,SLAW0 EQU 90H SLAR0 EQU 91H COMMAND0EQU 40H ORG 0100H MAIN: MOV SP,#70H MOV SLA,#SLAR0MOV NUMBYT,#01HLCALL RDNBYTMOV 31H,MRDMOV MTD,#COMMAND0MOV SLA,#SLAW0MOV NUMBYT,#02HLCALL WRNBYTLJMP MAIN,从通道0采集A/D信号,再通过D/A转换器将信号输出的程序如下:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑环境 > 建筑资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报