第8章单片机系统扩展目录8.1扩展并行三总线8.2扩展简单并行输入/输出口8.3扩展并行数据存储器8.4串行扩展总线接口技术第8章单片机系统扩展本章主要介绍了MCS-51单片机系统扩展的方法。通过扩展并行三总线来进行并行总线接口扩展;根据各种串行数据传输的特点,通过对I/O口编程模拟,实现几种串行总线接口的扩展。8.1扩展并行三总线主要内容8.1.1片外三总线结构8.1.2MCS-51系统扩展的实现8.1.3总线驱动8.1.1片外三总线结构通常,微机的CPU外部都有单独的并行地址总线、数据总线、控制总线。MCS-51单片机由于引脚的限制,数据总线和地址总线是复用的。地址需要锁存:为了能把复用的数据总线和地址总线分离出来,以便同外部的芯片正确的连接,需要在单片机的外部增加地址锁存器,从而构成与一般CPU相类似的三总线结构,如图8-1所示。P2ALE89C51P0PSENWRRD地址锁存器地址总线数据总线控制总线A8~A15A0~A7D0~D78.1.1片外三总线结构图8-189C51扩展的三总线ALEP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0LEOE8D8Q7D7Q6D6Q5D5Q4D4Q3D3Q2D2Q1D1QA7A6A5A4A3A2A1A089C5174HC573图8-2地址总线扩展电路8.1.1片外三总线结构地址锁存器74HC573与单片机P0口连接,扩展地址总线,如图8-2所示。74HC573简介74HC573是有输出三态门的电平允许8位锁存器。引脚信号如下:OE:输出允许端,为0时芯片有效。LE:锁存控制端,高电平时,锁存器的数据输出端Q的状态,与数据输入端D相同,即锁存器是透明的;当LE端从高电平返回到低电平时(下降沿后),输入端的数据就被锁存在锁存器中,数据输入端D的变化不再影响Q端。8.1.1片外三总线结构一、地址总线地址总线(AddressBus,AB)用于传送单片机送出的地址信号,以便进行存储器单元和I/O端口的选择。地址总线是单向的,只能由单片机向外发送信息。地址总线的数目决定了可直接访问的存储单元的数目。8.1.1片外三总线结构二、数据总线数据总线(DataBus,DB)用于单片机与存储器或I/O端口之间的数据传送。一般数据总线的位数与CPU的字长一致,MCS-51单片机的数据总线是8位的。数据总线是双向的,可以进行两个方向的数据传送。三、控制总线控制总线(ControlBus,CB)是单片机发出的以控制片外ROM、RAM和I/O口读/写操作的一组控制线。8.1.1片外三总线结构8.1.2MCS-51系统扩展的实现一、以P0口作低8位地址及8位数据的复用总线复用,即一段时间内作两种或两种以上用途。在这里指P0口在每个CPU周期的前半个周期输出低8位地址,由地址锁存器锁存,然后由地址锁存器代替P0口输出低8位地址。后半个周期进行8位数据的输入输出。二、以P2口作为高8位的地址总线P0口的低8位地址加上P2的高8位地址就可以形成16位的地址总线,达到64KB的寻址能力。实际应用中,往往不需要扩展那么多地址,扩展多少用多少口线,剩余的口线仍可作一般I/O口来使用。8.1.2MCS-51系统扩展的实现三、控制信号线ALE:地址锁存信号,用以实现对低8位地址的锁存。PSEN:片外程序存储器读选通信号。EA:程序存储器选择信号。为低电平时,访问外部程序存储器;为高电平时,访问内部程序存储器。WR:片外数据存储器写选通信号。RD:片外数据存储器读选通信号。8.1.2MCS-51系统扩展的实现8.1.3总线驱动总线驱动的原因:在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。总线驱动器的作用:对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。在对TTL负载驱动时,只需考虑驱动电流的大小。在对MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑对分布电容的电流驱动。8.1.3总线驱动总线驱动器的选择:系统总线中地址总线是单向的,因此驱动器可以选用单向的,如74LS244,还带有三态控制,能实现总线缓冲和隔离。数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245也是三态的,有一个方向控制端DIR。DIR=1时输出(An→Bn),DIR=0时输入(An←Bn)。8.1.3总线驱动8.2扩展简单并行输入/输出口89C51有P0~P3四组I/O口,但是在某些特定的场合,可能会出现I/O口不够用的情况。这时就需要通过扩展来增加I/O口的数量以满足使用的需要。在很多应用系统中,采用74系列TTL电路或4000系列MOS电路芯片,扩展并行数据输入输出。例1在图8-4中,当P2.0=0,WR=1,RD=0时,通过74HC244(扩展输入)读入按键状态,当P2.0=0,WR=0,RD=1时,通过74HC573(扩展输出)根据按键状态驱动发光二极管发光。74HC244、74HC573的操作地址均设为0xfeff。8.2扩展简单并行输入/输出口P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.789C51WRP2.0RDD0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q7LEVCCQ0D0Q1D1Q2D2Q3D3Q4D4Q5D5Q6D6Q7D7G++74HC57374HC244+5V图8-4简单I/O接口扩展8.2扩展简单并行输入/输出口汇编语言程序清单:MOV30H,#00H;设一初值MOVDPTR,#0FEFFH;设端口地址LOOP:MOVXA,@DPTR;从244读键盘新值CJNEA,30H,NEXT;与上次值比较SJMPLOOP;相等再读键盘值NEXT:MOV30H,A;保存新键盘值MOVX@DPTR,A;从573输出键盘值SJMPLOOP;继续读取键盘值8.2扩展简单并行输入/输出口8.4串行扩展总线接口技术主要内容8.4.1常用的串行总线接口简介8.4.2I2C总线8.4.3SPI串行外设接口总线8.4串行扩展总线接口技术串行扩展总线技术是新一代单片机技术发展的一个显著特点。相对于并行总线接口,串行总线接口有着占用I/O口线少(一般3~4根),编程相对简单,易于实现用户系统软硬件的模块化、标准化等优点。随着串行总线接口技术(SPI、I2C等)和各种串行接口芯片的发展,串行总线接口技术越来越受到人们的推崇。8.4.1常用的串行总线接口简介一、I2C(InterIntegratedCircuit)I2C总线是Philips公司推出的芯片间串行传输总线。I2C总线是二线制,采用器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。二、SPISPI总线是Motorola公司提出的一种同步串行外设接口。SPI总线是三线制,可直接与多种标准外围器件直接接口。三、MicrowareMicroware总线是NS公司提出的串行同步双工通信接口。Microware总线是三线制,由一根数据输出(SO)线、一根数据输入(SI)线和一根时钟(SK)线组成。8.4.1常用的串行总线接口简介四、单总线(1-wire)单总线及应用:1-wire总线是Dallas公司研制开发的一种协议,主要用于便携式仪表和现场监控系统。单总线结构:是利用一根线实现双向通信,由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。8.4.1常用的串行总线接口简介五、USB(UniversalSerialBus)USB总线及应用:USB总线是Compaq、Intel、Microsoft、NEC等公司联合制定的一种计算机串行通信协议。USB总线的主要优点:比较于其他传统接口的一个优势是即插即用的实现,即插即用(Plug-and-Play)也称为热插拔(HotPlugging)8.4.1常用的串行总线接口简介六、CAN(ControllerAreaNetwork)CAN总线及应用:CAN总线是德国Bosch公司最先提出的多主机局域网总线,是国际上应用最广泛的现场总线之一。CAN总线的主要优点:在由CAN总线构成的单一网络中,理论上可以挂接无数个节点。8.4.1常用的串行总线接口简介8.4.2I2C总线一、I2C总线的特点I2C总线最主要的优点是其简单性和有效性。I2C总线的特点:其接口直接集成在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线的其它优点:它支持多主控(Multimastering),其中任何能够进行发送和接收的设备(节点)都可以成为主控器。图8-9典型I2C总线系统示意图单片机AA/D、D/A转换器专用集成电路静态RAM或ROMLCD显示器单片机BSDASCL8.4.2I2C总线I2C总线的主控器:一个主控器能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控器。如图8-9所示。I2C总线支持多主和主从两种工作模式多主方式:通过硬件和软件的仲裁,主控器取得总线控制权。主从方式:从器件地址包括器件编号地址和引脚地址两部分,器件编号地址由I2C总线委员会分配,引脚地址由外界电平的高低决定。器件内部子地址:当器件内部有连续的子地址空间时,对这些空间进行连续读写,子地址会自动加1。8.4.2I2C总线CPU发出的控制信号:分为地址码和控制量两部分。地址码:用来选址,即接通需要控制的电路,确定控制的种类。控制量:决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。8.4.2I2C总线IIC总线的工作原理(1)IIC总线对数据线上信号的定义:1)总线空闲状态:时钟信号线和数据信号线均为高电平。2)起始信号:即启动一次传输,时钟信号线是高电平时,数据信号线由高变低。SDASCL起始信号结束信号数据位信号数据位8.4.2I2C总线3)停止信号:即结束一次传输,时钟信号线是高电平时,数据信号线由低变高。4)数据位信号:时钟信号线是低电平时,可以改变数据信号线电位;时钟信号线是高电平时,应保持数据信号线上电位不变,即时钟是高电平时数据有效。5)应答信号:占1位,数据接收者接收1字节数据后,应向数据发出者发送一应答信号。低电平为应答,继续发送;高电平为非应答,结束发送。6)控制位信号:占1位,主IIC设备发出的读写控制信号,高为读、低为写(对主IIC设备而言)。控制位在寻址字节中。8.4.2I2C总线7)地址信号:为从机地址,占7位,如下表所示,称之为“寻址字节”,各字段含义如下:器件地址(DA3---DA0):是IIC总线接口器件固有的地址编码,由器件生产厂家给定。如IIC总线EEPROMAT24C××的器件地址为1010等。引脚地址(A2、A1、A0):由IIC总线接口器件的地址引脚A2、A1、A0的高低来确定,接电源者为1,接地者为0。读写控制位(R/W):1表示主设备读,0表示主设备写。7位地址和读写控制位组成1个字节。D7D6D5D4D3D2D1D0DA3DA2DA1DA0A2A1A0R/W8.4.2I2C总线二、I2C总线的时序I2C总线的信号:I2C总线在传送数据过程中共有三种类型信号,分别是:开始信号、结束信号和应答信号。I2C总线开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。8.4.2I2C总线SDASCL开始信号允许数据变化允许数据变化允许数据变化结束信号图8-10I2C总线的时序8.4.2I2C总线如图8-10所示,为I2C总线的一般时序。即起始信号、结束信号、允许数据线改变的条件等。三、I2C总线的数据传输过程数据传