1 / 81

第 9 章 单片机系统的扩展 主讲:朱兆优

第 9 章 单片机系统的扩展 主讲:朱兆优. 本章学习要点: (1) 单片机外部扩展和总线构成原理,串行总线、并行总线扩展技术; (2) 采用线选法、译码法扩展单片或多片存储器、 TTL 芯片的方法; (3) 扩展外部存储器或 TTL 芯片的端口地址编址方法; (4) I 2 C 、 SPI 、 1/2/3Wire 总线的接口和编程应用。. 9.1 单片机系统扩展概述 单片机内部资源不够用,需要外部扩展 RAM 、 ROM 或 I/O 口。 1 、传统的扩展办法 采取外部扩展并行器件,如:

Download Presentation

第 9 章 单片机系统的扩展 主讲:朱兆优

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章 单片机系统的扩展 主讲:朱兆优

  2. 本章学习要点: (1) 单片机外部扩展和总线构成原理,串行总线、并行总线扩展技术; (2) 采用线选法、译码法扩展单片或多片存储器、TTL芯片的方法; (3) 扩展外部存储器或TTL芯片的端口地址编址方法; (4) I2C、SPI、1/2/3Wire总线的接口和编程应用。

  3. 9.1 单片机系统扩展概述 单片机内部资源不够用,需要外部扩展RAM、ROM或I/O口。 1、传统的扩展办法 采取外部扩展并行器件,如: ROM---2764、27128、27256、27512等。 RAM---6264、62128、62256、62512或2864等。 I/O口---8255A、8155H等。

  4. 通过三总线把单片机与外部器件连接起来,进行数据、地址、控制信号的传输。传统的扩展结构如下: 实际上这些器件已经淘汰,也很不实用。

  5. 2、 现代的扩展方法 (1)单片机选型:从外部转到内部,重视单片机选型,根据不同的应用,选择不同性能的单片机芯片。 (2)串行总线扩展:有I2C接口的AT24Cxx系列和SPI接口的W25Xxx系列。 W25X64容量高达8MB, W25Q128容量高达16MB。 因此,今后的片外扩展将以串行总线为主,传统的三总线的应用扩展将出现在以ARM为核心的大系统结构上。

  6. 9.2 单片机系统总线的构造 单片机系统扩展出总线,所有器件都挂接在一条总线上。 9.2.1 单片机系统总线 三大总线 数据总线---与外部器件之间传输数据 地址总线---向外发出地址信号 控制总线---是一组控制信号线

  7. 9.2.2 单片机系统三总线的构造 单片机的三总线分别由P0口、P2口和控制信号构成。三总线构造 如下图:

  8. 9.3 单片机系统的扩展接口 1.片外并行器件的连接方法 (1) 查阅芯片资料 (2) 按引脚功能分类。 (3)同类线相连 (4) 片选信号接地址线。

  9. 2.系统扩展要求 (1) 能区分不同的地址空间,每个存储单元或端口都各有一个地址。 (2) 能够控制不同的芯片,读、写操作时不会相互干扰。 (3) 系统的地址编址不重叠,避免发生数据冲突。

  10. 3.存储器地址分配方法 (1) 线选法 线选法是指直接利用单片机系统的地址线作为扩展芯片的片选信号。 (2) 译码法 把地址用译码器进行译码,然后将译码器的输出信号作为扩展芯片的片选信号。

  11. 9.3.2 扩展的外部单元的编址 编址方法如下: (1) 基本地址计算 (2) 加权地址计算 (3) 空地址线处理 (4) 将加权地址+固定地址,再叠加到基本地址的高位上,得出器件的地址范围。

  12. 例如 假定扩展了2个芯片(IC1、IC2),其连接关系如图9-3所示,要求计算这2个芯片的地址范围。 单片机一次只能访问一个芯片。 基本地址线12根,则基本地址为000~FFFH,加权地址线2根和空线2根(在高4位),

  13. 计算出IC1、IC2的地址空间如 下:

  14. 9.3.3 单片机扩展存储器的接口设计 1.2764和6264的引脚功能 (1) 双向三态数据线8根:D0~D7。 (2) 地址线13根:A0~A12。 (3) 控制线: OE——输出允许控制端(读选通信号输入线),低电平有效; WE——写允许信号输入线,低电平有效; PGM——编程时,编程脉冲的输入端,低电平有效; ——片选信号,低电平有效; CS——片选信号使能端,高电平有效,即当=0,同时CS=1时,芯片才被有效选中。 (4) 电源和地线:+5 V供电。

  15. 2764、6264B引脚排列如图

  16. 2、单片机与存储器的典型接口电路

  17. 确定IC1、IC2和IC3的地址分配如下: IC1:6000H~7FFFH; IC2:A000H~BFFFH; IC3:C000H~DFFFH; 对A100H地址的读操作指令为: MOV DPTR, #0A100H MOVX A,@DPTR 对C200H地址的写操作指令为: MOV A,#Data MOV DPTR, #0C200H MOVX @DPTR,A

  18. 3.操作时序 对程序存储器和数据存储器的操作是严格分开的。 假设执行一个2字节、1周期指令“MOV A,#Data”

  19. 对外部数据存储器的读操作,如 MOVX A,@DPTR

  20. 9.4 I/O端口扩展与设计 传统的I/O端口扩展通常采用8255A/8155H和TTL芯片; 现代的I/O口扩展采取选择片内带有不同端口数量的单片机芯片。 单片机品种多,有5~64个数字I/O引脚

  21. 9.4.1 I/O接口概述 串行I/O接口---采用逐位串行移位的方式传输数据,可以满足速度要求不高的串行设备接口要求; 并行I/O接口---采用并行方式传输数据,可以与外设高速传输数据。

  22. 1.I/O接口的功能 (1) 数据传输速度匹配。 (2) 输出数据锁存。 (3) 输入数据三态缓冲。 (4) 信号或电平变换。

  23. 2.I/O接口与端口的区别 I/O接口(Interface)是CPU与外界的连接电路,是CPU与外界进行数据交换的通道。 I/O端口(Port)是CPU与外设直接通信的地址,通常是把I/O接口电路中能够被CPU直接访问的寄存器或缓冲器称之为端口。

  24. 3. I/O端口的编址 独立编址方式---把I/O端口地址空间和存储器地址空间严格分开,地址空间相互独立,编址界限分明。 统一编址方式---每个I/O端口作为一个外部数据存储器RAM地址单元编址。 8051单片机对I/O端口采用统一编址。

  25. 3.单片机与外设间的数据传送方式 (1) 同步传送方式 (2) 异步传送方式 (3) 中断传送方式

  26. 4.I/O接口电路种类 常用的片外I/O接口芯片: (1)TTL芯片、CMOS器件 (2)可编程并行接口芯片(如8155H、8255A)。 使用可编程I/O接口芯片时,扩展电路繁杂,实际已经很少使用。

  27. 9.4.2 TTL电路扩展并行I/O口 采用TTL电路或CMOS电路的锁存器、三态门,使用总线式或非总线式扩展可以实现与单片机连接。 1.用TTL电路扩展并行I/O端口电路

  28. 例1按图中,LED灯一一对应按键状态,若K1按下对应L1亮,若没有键按下,则LED灯全灭,要求编程用点亮LED灯表示某按键是否按下。其参考程序段如下:例1按图中,LED灯一一对应按键状态,若K1按下对应L1亮,若没有键按下,则LED灯全灭,要求编程用点亮LED灯表示某按键是否按下。其参考程序段如下: MOV DPTR,#0000H ;I/O端口地址→DPTR MOVX A,@DPTR ;读74LS244端口数据→A,产生RD=0。 MOVX @DPTR,A

  29. 2.用串行接口扩展并行输入口 CD4014和74LS165都是具有并行输入和串行移位输出的接口电路,利用这两种芯片可以将单片机的串行接口扩展成为并行输入口,具体接口电路如图

  30. 例2按图从扩展的16位输入口中读入6组数据(每组数2字节),读入的数据存放在片内30H开始的单元。例2按图从扩展的16位输入口中读入6组数据(每组数2字节),读入的数据存放在片内30H开始的单元。 RXDAT:MOV R2,#06 ;设置读入的字节数 MOV R0,#30H ;设置读入数据存放指针 SETB P1.0 START: CLR P1.0 SETB P1.0 ;允许串行移位输入 MOV SCON,#00 ;设置串行口为工作方式0 MOV R3,#02 ;设置每组读入的字节数 READAT: JNB RI,$ CLR RI MOV A,SBUF ;读入数据 MOV @R0,A INC R0 DJNZ R3,READAT DJNZ R2,START RET

  31. 3.用串行接口扩展并行输出口 CD4094和74LS164都是具有串行移位输入、并行输出的接口芯片,可扩展成并行输出口,电路如下:

  32. 例3按照图9-9,把片内30H、31H单元的内容通过串行接口传送到扩展的16位输出口。程序段如下:例3按照图9-9,把片内30H、31H单元的内容通过串行接口传送到扩展的16位输出口。程序段如下: TXDAT:MOV R2,#02 ;设置发送的字节数 MOV R0,#30H ;设置发送数据地址指针 CLR P1.0 ;显示复位清除 START:SETB P1.0 ;禁止复位 MOV SCON,#00 ;设置串行口为工作方式0 MOV A,@R0 MOV SBUF,A ;启动发送数据 JNB RI,$ CLR RI INC R0 ;指针加1 DJNZ R2,START ;判断数据是否发送完毕 RET

  33. 9.5 串行总线的扩展应用 串行总线是芯片间串行数据传输总线,串行总线类型: (1)I2C总线:传输速率400 KB/s。 (2)SPI总线 (3)1/2/3Wire总线

  34. 9.5.1 I2C总线结构与工作原理 1.I2C总线结构及特点 I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据,可在主控器与被控器之间、主控器与主控器之间进行双向传输。结构如下图:

  35. 2.I2C总线特点 (1) 使用2线传输。 (2) 多主竞争中的仲裁和同步。 (3) I2C总线传输数据采用状态码管理方式。 (4) 采用器件地址与引脚地址相结合的方式进行编址。 (5) I2C总线接口的器件都具有应答功能。 (6) I2C总线电气接口输出端是晶体管漏极开路或集电极开路结构,使用时必须外接上拉电阻。

  36. 3.I2C总线的信号及时序定义 (1) 总线上数据的有效性 在时钟线(SCL)为高电平期间,数据线(SDA) 高电平表示传输的数据位为1,低电平表示传输的数据位为0。如图9-11。 (2) 数据传输的起始位和结束位 I2C总线在传送数据过程中有三种类型信号,分别是:起始信号、结束信号和应答信号。如图9-12。

  37. 9.5.2 I2C总线的时序 标准模式传输速率100 KB/s,高速模式传输速率400 KB/s。

  38. 9.5.3 I2C总线上的数据传输格式 1.数据传输时的总线控制 I2C总线上可以连续以8位(1字节)二进制数的方式传输数据。但每启动一次I2C总线,其后的数据传输字节数没有限制。

  39. 2.应答信号 每传送1字节数据后必须跟随等待一个应答信号,表示已收到数据。

  40. 3.数据传送格式 (1) 主控器写操作:指主控器向被寻址的被控器写入n字节数据的操作,数据传输格式如下: (2) 主控器读操作 (3) 主控器读/写操作

  41. 9.5.4 I2C总线的信号模拟与编程技术 • 启动条件:在SCL为高电平时,SDA出现一个下降沿则启动I2C总线。 • 停止条件:在SCL为高电平时,SDA出现一个上升沿则停止使用I2C总线。 • 稳定状态:除了启动和停止状态,在其余状态下,SCL的高电平都对应SDA的稳定数据状态。 设以89C51的I/O口P1.2、P1.3做模拟I2C总线,则常用的子程序如下:

  42. (1) I2C总线启动子程序STAT SCL bit P1.2 SDA bit P1.3 STAT:SETB SDA ;SDA置高电平 SETB SCL ;SCL置高电平 NOP ;延时 NOP CLR SDA ;在SCL=1使SDA产生下降沿 NOP NOP CLR SCL ;SCL拉低,主控制器等待 RET

  43. 2、停止子程序STOP STOP: CLR SDA ;SDA置低电平 SETB SCL ;SCL置高电平 NOP ;延时 NOP SETB SDA ;在SCL=1使SDA产生上升沿 NOP ;延时 NOP CLR SCL ;SCL拉低,主控制器等待 RET

  44. (3) 发送应答位置0子程序MACK MACK: CLR SDA ;SDA置低电平 SETB SCL ;SCL置高电平 NOP ;延时 NOP CLR SCL ;发送0信号,即应答位 SETB SDA RET

  45. (4) 发送非应答位置1子程序NACK NACK: SETB SDA ;SDA置高电平 SETB SCL ;SCL置高电平 NOP NOP CLR SCL ;发送1信号,即非应答位 CLR SDA RET

  46. (5) 应答位检测子程序CACK CACK: SETB SDA ;置SDA为输入方式 SETB SCL ;SCL置1使SDA上数据有效 CLR F0 ;置F0=0 MOV C,SDA ;读SDA信号到C JNC CEND ;若SDA=0为应答,F0=0 SETB F0 ;否则无正常应答,置F0=1 CEND: CLR SCL ;SCL拉低 RET

  47. (6) 发送一字节数据子程序WRBYT WRBYT:MOV R2,#08 ;置一字节8位, WLP: RLC A ;从高位开始逐位移出并发送 JC WR1 ;判断发送1还是0,若发送1则转WR1 AJMP WR0 WLP1: DJNZ R2,WLP ;8位数据未发送完,继续发送 RET WR1: SETB SDA ;置SDA=1,发送1 SETB SCL NOP NOP CLR SCL CLR SDA ;复位SDA AJMP WLP1 WR0: CLR SDA ;置SDA=0,发送0 SETB SCL NOP NOP CLR SCL AJMP WLP1

  48. (7)接收一字节数据子程序RDBYT RDBYT: MOV R0,#08 ;置8位数据长度 RLP: SETB SDA ;置SDA为输入方式 SETB SCL ;置SCL=1,使数据有效 MOV C,SDA ;从数据线上读入一位到C MOV A,R2 RLC A ;把数据位移入到A MOV R2,A CLR SCL ;读一位结束,继续接下一位 DJNZ R0,RLP ;8位数据读完否? RET

  49. 9.6 I2C总线器件的接口应用 AT24Cxx、PCF8563/8583等器件都是目前广泛应用的I2C总线接口的器件。 9.6.1 串行E2PROM存储器接口应用 AT24Cxx广泛应用于汽车电子、水表、电表、煤气表和电视机等电子产品中用做数据保存。

  50. 1.AT24Cxx存储器的主要特性 • 字节写入方式和页写入方式 • 可用电擦写,功耗很低,电压1.8~5.5 V • 1.8 V供电时最高传输速率达100 KHz • 2.7 V或5 V供电时传输速率达400 KHz • 在5 V供电时最大速率达1 MHz (AT24C128/256/512) • 抗干扰能力强

More Related