单片机原理及应用8_第1页
单片机原理及应用8_第2页
单片机原理及应用8_第3页
单片机原理及应用8_第4页
单片机原理及应用8_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第8章章 单片机系统扩展单片机系统扩展 目目 录录 8.1 扩展并行三总线扩展并行三总线 8.2 扩展简单并行输入扩展简单并行输入/输出口输出口 8.3 扩展并行数据存储器扩展并行数据存储器 8.4 串行扩展总线接口技术串行扩展总线接口技术 第第8章章 单片机系统扩展单片机系统扩展 本章主要介绍了本章主要介绍了MCS-51单片机系统扩展单片机系统扩展的方法。的方法。通过扩展并行三总线来进行并行总线接通过扩展并行三总线来进行并行总线接口扩展;口扩展;根据各种串行数据传输的特点,通过对根据各种串行数据传输的特点,通过对I/O口编程模拟,实现几种串行总线接口的口编程模拟,实现几种串行总线接口的扩展

2、。扩展。8.1 扩展并行三总线扩展并行三总线 主要内容主要内容 8.1.1 片外三总线结构片外三总线结构 8.1.2 MCS-51系统扩展的实现系统扩展的实现 8.1.3 总线驱动总线驱动8.1.1 片外三总线结构片外三总线结构 通常,微机的通常,微机的CPU外部都有单独的并行外部都有单独的并行地地址总线、数据总线、控制总线址总线、数据总线、控制总线。MCS-51单片机由于引脚的限制,单片机由于引脚的限制,数据总数据总线和地址总线是复用的线和地址总线是复用的。 地址需要锁存:地址需要锁存:为了能把复用的数据总线为了能把复用的数据总线和地址总线分离出来,以便同外部的芯片正和地址总线分离出来,以便

3、同外部的芯片正确的连接,需要在单片机的外部增加地址锁确的连接,需要在单片机的外部增加地址锁存器,从而构成与一般存器,从而构成与一般CPU相类似的三总线相类似的三总线结构,如图结构,如图8-1所示。所示。P2ALE89C51P0PSENWRRD地址地址锁存器锁存器地址总线地址总线数据总线数据总线控制总线控制总线A8A15A0A7D0D78.1.1 片外三总线结构片外三总线结构图图8-1 89C51扩展的三总线扩展的三总线ALEP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0LE OE8D 8Q7D 7Q6D 6Q5D 5Q4D 4Q3D 3Q2D 2Q1D 1QA7A6A5A4A

4、3A2A1A089C5174HC573图图8-2 地址总线扩展电路地址总线扩展电路8.1.1 片外三总线结构片外三总线结构 地址锁存器地址锁存器74HC573与单片机与单片机P0口连接,扩口连接,扩展地址总线,如图展地址总线,如图8-2所示。所示。 74HC573简介简介74HC573是有输出三态门的电平允许是有输出三态门的电平允许8位位锁存器。锁存器。引脚信号如下:引脚信号如下: OE:输出允许端输出允许端,为,为0时芯片有效。时芯片有效。LE:锁存控制端锁存控制端,高电平时,高电平时,锁存器的锁存器的数据输出端数据输出端Q的状态,与数据输入端的状态,与数据输入端D相同,相同,即即锁存器是透

5、明的锁存器是透明的;当;当LE端端从高电平返回从高电平返回到低电平时(下降沿后),到低电平时(下降沿后),输入端的输入端的数据就数据就被锁存在锁存器中被锁存在锁存器中,数据输入端,数据输入端D的变化不的变化不再影响再影响Q端。端。8.1.1 片外三总线结构片外三总线结构 一、地址总线一、地址总线 地址总线地址总线(Address Bus,AB)用于传送)用于传送单片机送出的地址信号,以便进行存储器单单片机送出的地址信号,以便进行存储器单元和元和I/O端口的选择。端口的选择。 地址总线是单向的地址总线是单向的,只能由单片机向外,只能由单片机向外发送信息。发送信息。 地址总线的数目决定了可直接访问

6、的存地址总线的数目决定了可直接访问的存储单元的数目。储单元的数目。 8.1.1 片外三总线结构片外三总线结构 二、数据总线二、数据总线 数据总线数据总线(Data Bus,DB)用于单片机)用于单片机与存储器或与存储器或I/O端口之间的数据传送。端口之间的数据传送。 一般数据总线的位数与一般数据总线的位数与CPU的字长一致,的字长一致,MCS-51单片机的数据总线是单片机的数据总线是8位的。位的。 数据总线是双向的数据总线是双向的,可以进行两个方向,可以进行两个方向的数据传送。的数据传送。三、控制总线三、控制总线 控制总线控制总线(Control Bus,CB)是单片机)是单片机发出的以控制片

7、外发出的以控制片外ROM、RAM和和I/O口读口读/写操作的一组控制线。写操作的一组控制线。 8.1.1 片外三总线结构片外三总线结构8.1.2 MCS-51系统扩展的实现系统扩展的实现 一、以一、以P0口作低口作低8位地址及位地址及8位数据位数据的复用总线的复用总线 复用,复用,即一段时间内作两种或两种以上即一段时间内作两种或两种以上用途。用途。 在这里指在这里指P0口在每个口在每个CPU周期的周期的前半个前半个周期周期输出低输出低8位地址,由地址锁存器锁存,位地址,由地址锁存器锁存,然后由地址锁存器代替然后由地址锁存器代替P0口输出低口输出低8位地址。位地址。后半个周期后半个周期进行进行8

8、位数据的输入输出。位数据的输入输出。 二、以二、以P2口作为高口作为高8位的地址总线位的地址总线 P0口的低口的低8位地址加上位地址加上P2的高的高8位地址就位地址就可以形成可以形成16位的地址总线位的地址总线,达到,达到64KB的寻的寻址能力。址能力。 实际应用中,往往不需要扩展那么多地实际应用中,往往不需要扩展那么多地址,扩展多少用多少口线,剩余的口线仍可址,扩展多少用多少口线,剩余的口线仍可作一般作一般I/O口来使用。口来使用。8.1.2 MCS-51系统扩展的实现系统扩展的实现 三、控制信号线三、控制信号线ALE:地址锁存信号地址锁存信号,用以实现对低,用以实现对低8位位地址的锁存。地

9、址的锁存。PSEN:片外程序存储器读选通信号片外程序存储器读选通信号。EA:程序存储器选择信号。程序存储器选择信号。为为低电平时低电平时,访问访问外部外部程序存储器;为程序存储器;为高电平时高电平时,访问,访问内内部部程序存储器。程序存储器。WR:片外数据存储器写选通信号。片外数据存储器写选通信号。RD:片外数据存储器读选通信号。片外数据存储器读选通信号。8.1.2 MCS-51系统扩展的实现系统扩展的实现8.1.3 总线驱动总线驱动 总线驱动的原因:总线驱动的原因:在单片机应用系统中,在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、扩展的三总线上挂接很多负载,如存储器、并行接口、并

10、行接口、A/D接口、显示接口等,但接口、显示接口等,但总线总线接口的负载能力接口的负载能力有限,因此常常需要通过连有限,因此常常需要通过连接接总线驱动器总线驱动器进行总线驱动。进行总线驱动。 总线驱动器的作用:总线驱动器的作用:对于单片机的对于单片机的I/O口口只相当于增加了一个只相当于增加了一个TTL负载,因此驱动器负载,因此驱动器除了对后级电路驱动外,还能对负载的波动除了对后级电路驱动外,还能对负载的波动变化起隔离作用。变化起隔离作用。 在对在对TTL负载驱动时,负载驱动时,只需考虑驱动电只需考虑驱动电流的大小。流的大小。 在对在对MOS负载驱动时,负载驱动时,MOS负载的输入负载的输入电

11、流很小,更多地要考虑对分布电容的电流电流很小,更多地要考虑对分布电容的电流驱动。驱动。 8.1.3 总线驱动总线驱动 总线驱动器的选择:总线驱动器的选择: 系统总线中地址总线是单向的,因此驱动系统总线中地址总线是单向的,因此驱动器可以选用单向的,如器可以选用单向的,如74LS244,还带有三还带有三态控制,能实现总线缓冲和隔离。态控制,能实现总线缓冲和隔离。 数据总线是双向的,其驱动器也要选用双数据总线是双向的,其驱动器也要选用双向的,如向的,如74LS245。74LS245也是三态的,有也是三态的,有一个方向控制端一个方向控制端DIR。DIR=1时输出时输出(AnBn),),DIR=0时输入

12、(时输入(AnBn)。)。 8.1.3 总线驱动总线驱动8.2 扩展简单并行输入扩展简单并行输入/输出口输出口 89C51有有P0P3四组四组I/O口,但是在某些口,但是在某些特定的场合,可能会出现特定的场合,可能会出现I/O口不够用的情口不够用的情况。这时就需要通过扩展来增加况。这时就需要通过扩展来增加I/O口的数口的数量以满足使用的需要。量以满足使用的需要。 在很多应用系统中,在很多应用系统中,采用采用74系列系列TTL电电路或路或4000系列系列MOS电路芯片,扩展并行数据电路芯片,扩展并行数据输入输出。输入输出。 例例1 在图在图8-4中,当中,当P2.0=0,WR=1,RD=0时,通

13、过时,通过74HC244(扩展输入)(扩展输入)读读入按键状态,当入按键状态,当P2.0=0,WR=0,RD=1时,通过时,通过74HC573(扩展输出)(扩展输出)根据按根据按键状态驱动发光二极管发光。键状态驱动发光二极管发光。 74HC244、74HC573的操作地址均设的操作地址均设为为0 xfeff。8.2 扩展简单并行输入扩展简单并行输入/输出口输出口P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.789C51 WRP2.0RDD0 Q0D1 Q1D2 Q2D3 Q3D4 Q4D5 Q5D6 Q6D7 Q7LE VCCQ0 D0Q1 D1Q2 D2Q3 D3Q4 D4Q

14、5 D5Q6 D6Q7 D7G+74HC57374HC244+5V图图8-4 简单简单I/O接口扩展接口扩展 8.2 扩展简单并行输入扩展简单并行输入/输出口输出口汇编语言程序清单:汇编语言程序清单:MOV30H,#00H ;设一初值设一初值MOVDPTR,#0FEFFH ;设端口地址设端口地址LOOP:MOVXA,DPTR;从从244读键盘新值读键盘新值CJNEA, 30H, NEXT;与上次值比较与上次值比较SJMP LOOP;相等再读键盘值相等再读键盘值NEXT:MOV 30H,A;保存新键盘值保存新键盘值MOVXDPTR,A;从从573输出键盘值输出键盘值SJMP LOOP;继续读取键

15、盘值继续读取键盘值8.2 扩展简单并行输入扩展简单并行输入/输出口输出口8.4 串行扩展总线接口技术串行扩展总线接口技术主要内容主要内容 8.4.1 常用的串行总线接口简介常用的串行总线接口简介 8.4.2 I2C总线总线 8.4.3 SPI串行外设接口总线串行外设接口总线8.4 串行扩展总线接口技术串行扩展总线接口技术 串行扩展总线技术是新一代单片机技术发串行扩展总线技术是新一代单片机技术发展的一个显著特点。展的一个显著特点。 相对于并行总线接口,相对于并行总线接口,串行总线接口有着串行总线接口有着占用占用I/O口线少(一般口线少(一般34根),编程相对简根),编程相对简单,易于实现用户系统

16、软硬件的模块化、标准单,易于实现用户系统软硬件的模块化、标准化等优点。化等优点。 随着串行总线接口技术(随着串行总线接口技术(SPI、I2C等)和等)和各种串行接口芯片的发展,串行总线接口技术各种串行接口芯片的发展,串行总线接口技术越来越受到人们的推崇。越来越受到人们的推崇。8.4.1 常用的串行总线接口简介常用的串行总线接口简介 一、一、I2C(Inter Integrated Circuit) I2C总线是总线是Philips公司推出的芯片间串行公司推出的芯片间串行传输总线。传输总线。 I2C总线是二线制,采用器件地址的硬件总线是二线制,采用器件地址的硬件设置方法,通过软件寻址设置方法,通

17、过软件寻址完全避免了器件的完全避免了器件的片选线寻址方法,从而使硬件系统具有简单片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。灵活的扩展方法。 二、二、SPI SPI总线是总线是Motorola公司提出的一种同步公司提出的一种同步串行外设接口。串行外设接口。 SPI总线是三线制,可直接与多种标准外总线是三线制,可直接与多种标准外围器件直接接口。围器件直接接口。 三、三、Microware Microware总线是总线是NS公司提出的串行同公司提出的串行同步双工通信接口。步双工通信接口。 Microware总线是三线制,由一根数据输总线是三线制,由一根数据输出(出(SO)线、一根数据输入

18、()线、一根数据输入(SI)线和一根)线和一根时钟(时钟(SK)线组成。)线组成。8.4.1 常用的串行总线接口简介常用的串行总线接口简介 四、单总线(四、单总线(1-wire) 单总线及应用:单总线及应用: 1-wire总线是总线是Dallas公司公司研制开发的一种协议,主要用于便携式仪表研制开发的一种协议,主要用于便携式仪表和现场监控系统。和现场监控系统。 单总线结构:单总线结构:是利用一根线实现双向通是利用一根线实现双向通信,由一个总线主节点、一个或多个从节点信,由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数组成系统,通过一根信号线对从芯片进行数据的读取。据的读

19、取。8.4.1 常用的串行总线接口简介常用的串行总线接口简介 五、五、USB(Universal Serial Bus) USB总线及应用:总线及应用:USB总线是总线是Compaq、Intel、Microsoft、NEC等公司联合制定的一等公司联合制定的一种计算机串行通信协议。种计算机串行通信协议。 USB总线的主要优点:总线的主要优点:比较于其他传统接比较于其他传统接口的一个优势是即插即用的实现,即插即用口的一个优势是即插即用的实现,即插即用(Plug-and-Play)也称为热插拔()也称为热插拔(Hot Plugging)8.4.1 常用的串行总线接口简介常用的串行总线接口简介 六、六

20、、CAN(Controller Area Network) CAN总线及应用:总线及应用: CAN总线是德国总线是德国Bosch公司最先提出的多主机局域网总线,公司最先提出的多主机局域网总线,是国际上应用最广泛的现场总线之一。是国际上应用最广泛的现场总线之一。 CAN总线的主要优点:总线的主要优点:在由在由CAN总线构总线构成的单一网络中,理论上可以挂接无数个节成的单一网络中,理论上可以挂接无数个节点。点。8.4.1 常用的串行总线接口简介常用的串行总线接口简介8.4.2 I2C总线总线 一、一、I2C总线的特点总线的特点 I2C总线最主要的优点是其简单性和有效总线最主要的优点是其简单性和有效

21、性。性。 I2C总线的特点:总线的特点:其接口直接集成在组件其接口直接集成在组件之上,因此之上,因此I2C总线占用的空间非常小,减少总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了了电路板的空间和芯片管脚的数量,降低了互联成本。互联成本。 I2C总线的其它优点:总线的其它优点:它支持多主控它支持多主控(Multimastering),其中任何能够进行发),其中任何能够进行发送和接收的设备(节点)都可以成为主控器。送和接收的设备(节点)都可以成为主控器。图图8-9 典型典型I2C总线系统示意图总线系统示意图单片机单片机AA/D、D/A转换器转换器专用集成专用集成电路电路静态静态R

22、AM或或ROMLCD显示器显示器单片机单片机BSDASCL8.4.2 I2C总线总线 I2C总线的主控器:总线的主控器:一个主控器能够控制一个主控器能够控制信号的传输和时钟频率。当然,在任何时间信号的传输和时钟频率。当然,在任何时间点上只能有一个主控器。如图点上只能有一个主控器。如图8-9所示。所示。 I2C总线支持多主和主从两种工作模式总线支持多主和主从两种工作模式多主方式:多主方式:通过硬件和软件的仲裁,主通过硬件和软件的仲裁,主控器取得总线控制权。控器取得总线控制权。 主从方式:主从方式:从器件地址包括从器件地址包括器件编号地器件编号地址址和和引脚地址引脚地址两部分,器件编号地址由两部分

23、,器件编号地址由I2C总线委员会分配,引脚地址由外界电平的高总线委员会分配,引脚地址由外界电平的高低决定。低决定。 器件内部子地址:器件内部子地址:当器件内部有连续的当器件内部有连续的子地址空间时,对这些空间进行连续读写,子地址空间时,对这些空间进行连续读写,子地址会自动加子地址会自动加1。8.4.2 I2C总线总线 CPU发出的控制信号:发出的控制信号:分为地址码和控制分为地址码和控制量两部分。量两部分。 地址码:地址码:用来选址,用来选址,即接通需要控制的电即接通需要控制的电路,确定控制的种类。路,确定控制的种类。 控制量:控制量:决定该调整的类别决定该调整的类别(如对比度、(如对比度、亮

24、度等)亮度等)及需要调整的量。及需要调整的量。这样,各控制电这样,各控制电路虽然挂在同一条总线上,却彼此独立,互路虽然挂在同一条总线上,却彼此独立,互不相关。不相关。8.4.2 I2C总线总线IIC总线的工作原理总线的工作原理(1)IIC总线对数据线上信号的定义:总线对数据线上信号的定义:1)总线空闲状态:)总线空闲状态:时钟信号线和数据信号线均时钟信号线和数据信号线均为高电平。为高电平。2)起始信号:)起始信号:即启动一次传输,时钟信号线是即启动一次传输,时钟信号线是高电平时,数据信号线由高变低。高电平时,数据信号线由高变低。SDASCL起始信号起始信号结束信号结束信号数据位信号数据位信号数

25、据位数据位8.4.2 I2C总线总线3)停止信号:)停止信号:即结束一次传输,时钟信号线是即结束一次传输,时钟信号线是高电平时,数据信号线由低变高。高电平时,数据信号线由低变高。4)数据位信号:)数据位信号:时钟信号线是低电平时,可以时钟信号线是低电平时,可以改变数据信号线电位;时钟信号线是高电平时,应保改变数据信号线电位;时钟信号线是高电平时,应保持数据信号线上电位不变,即时钟是高电平时数据有持数据信号线上电位不变,即时钟是高电平时数据有效。效。5)应答信号:)应答信号:占占1位,数据接收者接收位,数据接收者接收1字节数字节数据后,应向数据发出者发送一应答信号。低电平为应据后,应向数据发出者

26、发送一应答信号。低电平为应答,继续发送;高电平为非应答,结束发送。答,继续发送;高电平为非应答,结束发送。6)控制位信号:)控制位信号:占占1位,主位,主IIC设备发出的读写设备发出的读写控制信号,高为读、低为写(对主控制信号,高为读、低为写(对主IIC设备而言)。设备而言)。控制位在寻址字节中。控制位在寻址字节中。8.4.2 I2C总线总线7)地址信号:)地址信号:为从机地址,占为从机地址,占7位,如下表所位,如下表所示,称之为示,称之为“寻址字节寻址字节”,各字段含义如下:,各字段含义如下:器件地址(器件地址(DA3-DA0):):是是IIC总线接口器件固总线接口器件固有的地址编码,由器件

27、生产厂家给定。如有的地址编码,由器件生产厂家给定。如IIC总线总线EEPROM AT24C的器件地址为的器件地址为1010等。等。引脚地址(引脚地址(A2、A1、A0):):由由IIC总线接口器件总线接口器件的地址引脚的地址引脚A2、A1、A0的高低来确定,接电源者为的高低来确定,接电源者为1,接地者为,接地者为0。读写控制位(读写控制位(R/ W):):1表示主设备读,表示主设备读,0表示主表示主设备写。设备写。7位地址和读写控制位组成位地址和读写控制位组成1个字节。个字节。D7D6D5D4D3D2D1D0DA3 DA2 DA1 DA0A2A1A0R/ W8.4.2 I2C总线总线 二、二、

28、I2C总线的时序总线的时序 I2C总线的信号:总线的信号:I2C总线在传送数据过程总线在传送数据过程中共有三种类型信号,中共有三种类型信号,分别是:开始信号、分别是:开始信号、结束信号和应答信号。结束信号和应答信号。 I2C总线总线 开始信号:开始信号:SCL为高电平时,为高电平时,SDA由高电由高电平向低电平跳变,平向低电平跳变,开始传送数据。开始传送数据。 结束信号:结束信号:SCL为低电平时,为低电平时,SDA由低电由低电平向高电平跳变,平向高电平跳变,结束传送数据。结束传送数据。 应答信号:应答信号:接收数据的接收数据的IC在接收到在接收到8bit数数据后,向发送数据的据后,向发送数据

29、的IC发出特定的发出特定的低电平脉低电平脉冲,冲,表示已收到数据。表示已收到数据。8.4.2 I2C总线总线SDASCL 开始信号允许数据变化开始信号允许数据变化 允许数据变化允许数据变化 允许数据变化允许数据变化 结束信号结束信号图图8-10 I2C总线的时序总线的时序8.4.2 I2C总线总线 如图如图8-10所示,为所示,为I2C总线的一般时序。即总线的一般时序。即起始信号、结束信号、允许数据线改变的条件起始信号、结束信号、允许数据线改变的条件等。等。 三、三、I2C总线的数据传输过程总线的数据传输过程 数据传输时,主机先发送启动信号和时钟数据传输时,主机先发送启动信号和时钟信号,随后发

30、送寻址字节来寻址被控器件,信号,随后发送寻址字节来寻址被控器件,并规定数据传送方向。并规定数据传送方向。 寻址字节由寻址字节由7位从机地址(位从机地址(D7D1)和)和1位位方向位(方向位(D0,读,读0/写写1)组成。)组成。 从机地址包括从机地址包括器件编号地址器件编号地址和和引脚地址引脚地址两两部分。部分。8.4.2 I2C总线总线WR/DA3DA2DA1DA0A2A1A0器件识别码器件识别码器件识别码器件识别码如:如:RTC 1101RTC 1101允许在公用的允许在公用的I I2 2C C总线总线EEPROM 1010EEPROM 1010上同时接上同时接8 8个同类器件个同类器件I

31、 I2 2C C总线器件的总线器件的7 7位从器件(机)地址:位从器件(机)地址:8.4.2 I2C总线总线 从机对地址的响应:从机对地址的响应:当主机发送寻址字节当主机发送寻址字节时,总线上所有器件都将其中的高时,总线上所有器件都将其中的高7位地址与位地址与自己的比较,自己的比较,若相同,则该器件根据读若相同,则该器件根据读/写位写位确定是从发送器还是从接收器。确定是从发送器还是从接收器。 对从接收器:对从接收器:在寻址字节之后,主控发送在寻址字节之后,主控发送器通过器通过SDA线向从接收器发送数据,数据发线向从接收器发送数据,数据发送完毕后发送终止信号,以结束传送过程。送完毕后发送终止信号

32、,以结束传送过程。 对从发送器:对从发送器:在寻址字节之后,主控接收在寻址字节之后,主控接收器通过器通过SDA线接收被控发送器的发送数据。线接收被控发送器的发送数据。8.4.2 I2C总线总线 每传输一位数据,都有一个时钟脉冲相对每传输一位数据,都有一个时钟脉冲相对应。应。时钟脉冲不必是周期性的,它的时钟间时钟脉冲不必是周期性的,它的时钟间隔可以不同。隔可以不同。 I2C总线的备用状态(总线的备用状态(“非忙非忙”状态):状态):SDA和和SCL都为都为“1”;只有当总线处于只有当总线处于“非非忙忙”状态时,数据传输才能被初始化。状态时,数据传输才能被初始化。I2C总线的关闭状态:总线的关闭状

33、态:SCL箝位在低电平。箝位在低电平。 I2C总线上传输的数据和地址字节均为总线上传输的数据和地址字节均为8位,位,且高位在前,低位在后。且高位在前,低位在后。8.4.2 I2C总线总线 数据线数据线SDA上的一般情况:上的一般情况:I2C总线以开总线以开始信号为始信号为启动信号启动信号;接着传输的是;接着传输的是地址和数地址和数据字节据字节,数据字节是没有限制的;每个字节,数据字节是没有限制的;每个字节后必须跟随一个后必须跟随一个应答位应答位(0);全部数据传输);全部数据传输完毕后,以完毕后,以结束信号结束信号结尾。结尾。 SCL的的“线与线与”特性:特性:任一器件的任一器件的SCL为为低

34、电平时,便时时钟线低电平时,便时时钟线SCL变低,变低,SDA上数上数据就被停止传送。据就被停止传送。 8.4.2 I2C总线总线接收器的应答:接收器的应答:正常应答位为正常应答位为0;当接收;当接收器接收到一个字节后器接收到一个字节后无法立即接收下一个字无法立即接收下一个字节时节时,便,便向向SCL线输出低电平线输出低电平而箝住而箝住SCL(SCL=0),迫使,迫使SDA线处于等待状态。线处于等待状态。被控器箝住被控器箝住SCL线为低电平,使主控发送线为低电平,使主控发送器处于等待状态的情况:器处于等待状态的情况:如图如图8-11中的中的A处,处,当接收器在当接收器在A点接收完主控器发来的一

35、个字节点接收完主控器发来的一个字节时,需要处理接收中断而无法继续接收,则时,需要处理接收中断而无法继续接收,则被控器便可箝住被控器便可箝住SCL线为低电平,使主控发线为低电平,使主控发送器处于等待状态,直到被控器处理完接收送器处于等待状态,直到被控器处理完接收中断后,再释放中断后,再释放SCL线。线。8.4.2 I2C总线总线图图8-11 I2C总线的数据传送字节格式总线的数据传送字节格式开始信号开始信号从地址从地址来自接收器来自接收器响应信号响应信号发送器等待发送器等待数据数据来自接收器来自接收器响应信号响应信号方向位方向位停止信号停止信号重复开始信号重复开始信号若传送多个字节则重复若传送多

36、个字节则重复SCLSSDAMSBACKACKR/WP/SA8.4.2 I2C总线总线关于应答信号:关于应答信号:(1)应答信号的发送时刻:)应答信号的发送时刻:数据传输时,数据传输时,发送器每发完一个字节,都要求接收方发回发送器每发完一个字节,都要求接收方发回一个应答信号(一个应答信号(0)。)。 (2)应答信号的过程:)应答信号的过程:发送时钟仍由主发送时钟仍由主控器在控器在SCL上产生。上产生。主控发送器必须在被控主控发送器必须在被控接收器发送应答信号前,预先释放对接收器发送应答信号前,预先释放对SDA线线的控制的控制(SDA1),以便主控器对),以便主控器对SDA线上线上应答信号的检测。

37、应答信号的检测。8.4.2 I2C总线总线 正常应答:正常应答:主控器发送时,被控器接收完每主控器发送时,被控器接收完每个字节需发回应答信号个字节需发回应答信号“0”,主控器据此进行下,主控器据此进行下一字节的发送。一字节的发送。 异常应答:异常应答:如果被控器由于某种原因无法继如果被控器由于某种原因无法继续接收续接收SDA上数据时,可向上数据时,可向SDA输出一个非应答输出一个非应答信号(信号(1),主控器据此便产生一个),主控器据此便产生一个Stop来终止来终止SDA线上的数据传输。线上的数据传输。 主控器接收时也应给被控器发应答信号。主控器接收时也应给被控器发应答信号。主控器接收时的结束

38、应答:主控器接收时的结束应答:当主控器要结束当主控器要结束传输时,必须给被控器发一个非应答信号传输时,必须给被控器发一个非应答信号“1”,令被控器释放令被控器释放SDA线,以便主控器发送线,以便主控器发送Stop信号信号来结束数据的传输,如图来结束数据的传输,如图8-12所示。所示。8.4.2 I2C总线总线图图8-12 I2C总线的应答信号总线的应答信号发送器发送器数据输出数据输出接收器接收器数据输入数据输入主控器主控器时钟线时钟线起始信号起始信号释放总线保持高电平释放总线保持高电平不应答不应答 A应答应答 A应答时钟脉冲应答时钟脉冲SMSB28918.4.2 I2C总线总线 四、四、I2C

39、的数据格式的数据格式 1、主控器写数据、主控器写数据 主机写数据过程:主机写数据过程:整个过程均为主机发送,整个过程均为主机发送,从机接收,数据的方向位从机接收,数据的方向位R/W=0。应答位。应答位ACK由从机发送,当主机产生结束信号后,由从机发送,当主机产生结束信号后,数据传输停止。格式如下:数据传输停止。格式如下:8.4.2 I2C总线总线A/SAData 1AData 2A Data n-1A Data nPSLAWS为开始信号,为开始信号,P为结束信号,为结束信号,A为应答信号,为应答信号, 为非应答信号,为非应答信号,SLA为寻址字节(写),为寻址字节(写),Data 1Data

40、n为被传送的为被传送的n个数据。个数据。为主控器发送,被控器接收。为主控器发送,被控器接收。 为被控器发送,主控器接收。为被控器发送,主控器接收。 WAA8.4.2 I2C总线总线 2、主控器读数据、主控器读数据 主机读数据过程:主机读数据过程:寻址字节为主机发送、寻址字节为主机发送、从机接收,方向位从机接收,方向位R/W=1R/W=1,n n个数据字节均为个数据字节均为从机发送、主机接收。主机接收完全部数据后从机发送、主机接收。主机接收完全部数据后发非应答位(发非应答位(1 1),表明读操作结束。格式如),表明读操作结束。格式如下:下:SSLA RAData 1AData 2AData n-

41、1AData nPSLA RSLA R为寻址字节读。为寻址字节读。 A8.4.2 I2C总线总线 3、主控器读主控器读/ /写数据写数据 改变改变传送方向的传送方向的数据传输过程:数据传输过程:由于读由于读/ /写方写方向有变化,开始信号和寻址字节都会重复一次,向有变化,开始信号和寻址字节都会重复一次,但读但读/ /写方向(写方向(R/WR/W)相反。格式如下:)相反。格式如下:SSLA RAData 1AData 2AData nASrADATA 1ADATA2ADATA n-1ADATA nPSr为重复开始信号,为重复开始信号,Data 1Data n为主控器为主控器的读数据,的读数据,D

42、ATA 1DATA n为主控器的写数据。为主控器的写数据。SLAWA/A8.4.2 I2C总线总线 三、三、I2C总线的应用总线的应用 带有带有I2C接口的单片机:接口的单片机:Cygnal的的 C8051 F0XX系列,系列,Philips的的P87LPC7XX系列,系列,Microchip的的PIC16C6XX系列等。很多外围器系列等。很多外围器件如存储器、监控芯片等也提供件如存储器、监控芯片等也提供I2C接口。接口。 图图8-13为为I2C总线外围扩展示意图。总线外围扩展示意图。8.4.2 I2C总线总线图图8-13 I2C总线外围扩展示意图总线外围扩展示意图 MCU SDA SCLLE

43、D显示器显示器LED驱动驱动控制器控制器SDA SCLLCD显示器显示器LCD驱动驱动控制器控制器SDA SCL键盘键盘I/OSDA SCL打印机打印机I/OSDA SCLSCL SDASRAMSCL SDAE2PROMSCL SDAADC/DACSCL SDARTCSCL SDADTMFVCC8.4.2 I2C总线总线RTC实时时钟,实时时钟,DTMF双音多频编码解码器。双音多频编码解码器。例例8-3 89C52模拟模拟I2C。如图。如图8-14所示。所示。图图8-14 89C51模拟模拟I2C89C52 P1.0P1.1I2C器件器件SCLSDA10K2 VCC 8.4.2 I2C总线总线

44、C语言程序清单:语言程序清单:#include #include /有位操作、空操作等有位操作、空操作等sbit scl=0 x90;/P1.0的地址的地址sbit sda=0 x91;/P1.1的地址的地址void start(void)/发送开始信号发送开始信号 sda=1;scl=1;_nop_(); /延时延时 _nop_();sda=0;_nop_();_nop_();scl=0;8.4.2 I2C总线总线void stop(void) /发送结束信号发送结束信号 sda=0;scl=1; _nop_(); /延时延时_nop_();sda=1;_nop_();_nop_();sda

45、=0;scl=0;8.4.2 I2C总线总线bit tack(void)/检查应答检查应答 sda=1;/准备接收准备接收 scl=1;_nop_();_nop_();if(sda!=0) /判断是否有应答判断是否有应答return sda; /若非应答返回若非应答返回sda scl=0;8.4.2 I2C总线总线void txbyt(unsigned char txdat) /字节发送字节发送 unsigned int i;for(i=0;i8;i+)/一个字节一个字节8次按位循环发送次按位循环发送 if(txdat&0 x80) sda=1;/取最高位,是取最高位,是1发送发送1e

46、lse sda=0;/是是0发送发送0 scl=1;/保持数据有效保持数据有效 _nop_();_nop_();scl=0;/准备改变数据准备改变数据 sda=0;txdat=txdat1; /左移准备取次高位左移准备取次高位 8.4.2 I2C总线总线unsigned char rxbyt(void)/字节接收字节接收 unsigned char rxdat=0; /接收数据存于接收数据存于rxdat unsigned int i;for(i=0;i8;i+) sda=1;/开始接收开始接收 scl=1;if(sda&1)rxdat+=1;elserxdat+=0;rxdat=rxd

47、at1;scl=0;/应答应答 return rxdat;/返回接收到的数据返回接收到的数据8.4.2 I2C总线总线汇编语言程序清单:汇编语言程序清单: SCL EQU P1.0SDA EQU P1.1;发送开始信号;发送开始信号START:SETB SDA SETB SCLNOP;NOP的数目由时钟频率确定的数目由时钟频率确定NOP;此处用此处用NOP来延时来延时 CLR SDANOPNOPCLR SCLRET8.4.2 I2C总线总线;结束信号;结束信号STOP:CLR SDASETB SCLNOPNOPSETB SDANOPNOPCLRSDACLR SCLRET8.4.2 I2C总线总

48、线;应答位检查;应答位检查TACK:SETB SDA SETB SCLNOPNOPCLR 30H;正常标志正常标志 MOV C,SDAJNC TEND; 正常应答转移正常应答转移 SETB 30HTEND:CLR SCLRET8.4.2 I2C总线总线;发送子程序;发送子程序 TXBYT:MOV R4,#08H ;数据长度为数据长度为8位位 TX0:RLC A ; 发送位送入发送位送入CYJC TX1;CY位为位为1转到转到TX1CLR SDA;置为低电平,发送置为低电平,发送0 SETB SCLNOPNOPCLR SCL; 高电平保持数据稳定高电平保持数据稳定DJNZ R4,TX0RET8.

49、4.2 I2C总线总线TX1: SETB SDA SETB SCLNOPNOPCLR SCL; 脉冲变为低电平脉冲变为低电平改变数据 CLR SDADJNZ R4,TX0RET8.4.2 I2C总线总线;字节接收子程序;字节接收子程序 RXBYT:MOV R4,#08HRX0: SETB SDASETB SCLMOV C,SDA ;读入读入SDA引脚状态引脚状态MOV A,R5;数据位储存在;数据位储存在R5 RLC AMOV R5,ACLR SCLDJNZ R4,RX0RET8.4.2 I2C总线总线8.4.3 SPI串行外设接口总线串行外设接口总线 SPI(Serial Periphera

50、l Interface,串行外,串行外围设备接口):围设备接口):是是Motorola公司推出的一种公司推出的一种同步串行通信方式同步串行通信方式,是一种,是一种三线同步总线。三线同步总线。 SPI的特点:的特点:因其硬件功能很强,与因其硬件功能很强,与SPI有有关的软件就相当简单,使关的软件就相当简单,使CPU有更多的时间有更多的时间处理其他事务。处理其他事务。图图8-15为为SPI总线典型结构。总线典型结构。 图图8-15 SPI总线系统典型结构示意图总线系统典型结构示意图 8.4.3 SPI串行外设接口总线串行外设接口总线SCKMOSIMISOMCU(主主)I/OI/OI/OI/OSCK

51、MOSIMISOMCU(从从)CSSCK MOSI MISO外围器件外围器件CSSCK MOSI MISO外围器件外围器件CSSCK MOSI MISO外围器件外围器件CS图图8-15 SPI总线时序图总线时序图 8.4.3 SPI串行外设接口总线串行外设接口总线SPI总线定义:总线定义:串行时钟线(串行时钟线(SCK,同步脉冲),同步脉冲)主机输入主机输入/从机输出数据线(从机输出数据线(MISO,高位在前),高位在前)主机输出主机输出/从机输入数据线(从机输入数据线(MOSI,高位在前),高位在前)从机选择线从机选择线 一、一、用一般用一般I/O口线模拟口线模拟扩展扩展SPI外设接口外设接

52、口 用用P1.0模拟模拟MCU的数据输出端(的数据输出端(MOSI) 用用P1.1模拟模拟SPI的的SCK输出端(输出端(SCK) 用用P1.2模拟模拟SPI的从机选择端(的从机选择端(CS) 用用P1.3模拟模拟SPI的数据输入端(的数据输入端(MISO)8.4.3 SPI串行外设接口总线串行外设接口总线 单片机模拟单片机模拟1位数据输入位数据输入/输出的过程如下:输出的过程如下: MCU输出输出1位位SCK时钟的低电平,使接口时钟的低电平,使接口芯片串行左移,芯片串行左移,1位数据输入至位数据输入至89C52的的P1.3; 再置再置P1.1为为1,使,使89C52从从P1.0输出输出1位数

53、据位数据至串行接口芯片至串行接口芯片 依次循环依次循环8次,完成次,完成1次通过次通过SPI传输传输1个字个字节的操作。节的操作。 在一个在一个CLK中,下降沿输出,上升沿输入,中,下降沿输出,上升沿输入,或反之。或反之。8.4.3 SPI串行外设接口总线串行外设接口总线例例8-4 如图如图8-16所示,所示,MCU串行输入子串行输入子程序程序SPIIN,从,从2814 (E2PROM)的)的SPISO线线上接收上接收1字节数据并放入寄存器字节数据并放入寄存器R7中。中。图图8-16 89C52与与MCM2814的硬件连接图的硬件连接图P1.0P1.1P1.2P1.389C52 5 86 31

54、 72 4MCM2814VCC8.4.3 SPI串行外设接口总线串行外设接口总线C语言程序清单:语言程序清单:#inclued #include sbit sck=0 x91;/P1.1的地址的地址sbit ss=0 x92;/P1.2的地址的地址 sbit miso=0 x93;/P1.3的地址的地址sbit mosi=0 x90;/P1.0的地址的地址 unsigned char spiin(void) /接收子程序接收子程序 unsigned int i;unsigned char tmp=0; /接收到数据暂存于接收到数据暂存于tmp sck=1; /准备开始准备开始 ss=0; /置

55、片选信号置片选信号8.4.3 SPI串行外设接口总线串行外设接口总线for(i=0;i8;i+)sck=0;_nop_();_nop_();if(miso&1) tmp+=1;else tmp+=0;tmp=tmp1;sck=1;return tmp; /接收完,返回数据接收完,返回数据8.4.3 SPI串行外设接口总线串行外设接口总线汇编语言程序清单:汇编语言程序清单:SPIIN:SETBP1.1CLRP1.2MOVR1,#08HSPIN1:CLRP1.1NOPNOPMOVC,P1.3;从机输出送从机输出送C RLCA;左移至累加器左移至累加器ACC SETBP1.1DJNZR1,S

56、PIN1MOVR7,ARET8.4.3 SPI串行外设接口总线串行外设接口总线 例例8-5 MCU串行输出子程序串行输出子程序SPIOUT,将将89C52中中R7寄存器的内容传送到寄存器的内容传送到2814的的SPISI线上。线上。C语言程序清单:语言程序清单:#inclued #include sbit sck=0 x91;/P1.1的地址的地址sbit ss=0 x92;/P1.2的地址的地址 sbit miso=0 x93;/P1.3的地址的地址sbit mosi=0 x90;/P1.0的地址的地址 8.4.3 SPI串行外设接口总线串行外设接口总线 void spiout(unsign

57、ed char tmp) /发送子程序发送子程序 unsigned int i;sck=1;ss=0; for(i=0;i8;i+)sck=0;_nop_();_nop_();if(tmp&0 x80)mosi=1; /判位发送判位发送elsemosi=0;sck=1;tmp=tmp1;/左移准备取次高位左移准备取次高位 8.4.3 SPI串行外设接口总线串行外设接口总线汇编语言程序清单:汇编语言程序清单:SPIOUT:SETB P1.1 CLR P1.2MOV R1,#08HMOV A,R7SPIOT1:CLR P1.1 NOPNOPRLC AMOV P1.0,C ;左移左移ACC最

58、高位至最高位至CSETB P1.1;进位进位C送送SPISI线上线上DJNZ R1,SPIOT1RET8.4.3 SPI串行外设接口总线串行外设接口总线 例例8-6 MCU串行输入串行输入/输出子程序输出子程序SPIIO,将将89C52中中R7的内容传送到的内容传送到2814的的SPISI线线上,同时从上,同时从2814的的SPISO接收接收1字节数据存字节数据存入入R0中。中。同时收发程序同时收发程序:#inclued #include sbit sck=0 x91;/P1.1的地址的地址sbit ss=0 x92;/P1.2的地址的地址 sbit miso=0 x93;/P1.3的地址的地址sbit mosi=0 x90;/P1.0的地址的地址 8.4.3 SPI串行外设接口总线串行外设接口总

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论