单片机原理与接口技术8ppt课件_第1页
单片机原理与接口技术8ppt课件_第2页
单片机原理与接口技术8ppt课件_第3页
单片机原理与接口技术8ppt课件_第4页
单片机原理与接口技术8ppt课件_第5页
已阅读5页,还剩213页未读 继续免费阅读

下载本文档

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

文档简介

8-0绪8-1扩展三总线的产生8-2扩展程序存储器8-3扩展数据存储器8-4简单并行I/O的扩展8-5扩展8155可编程外围并行接口芯片8-6扩展8255可编程外围并行接口芯片8-7串行扩展总线接口技术,第八章单片机系统扩展及接口技术,1,8-0绪,为什么要扩展如何扩展,2,89C51单片机芯片内集成了计算机的基本功能部件,已具备了很强的功能。一块芯片就是一个完整的最小微机系统,但片内存储器的容量、并行I/O端口、定时器等内部资源都还是有限的。根据实际需要,89C51单片机可以很方便地进行功能扩展。扩展应尽量采用串行扩展方案。通过SPI或I2C总线扩展E2PROM、A/D、D/A、显示器、看门狗、时钟等芯片,占用MCU的I/O口线少,编程也方便。,3,接口电路(这里指并行接口)作为单片机与外设间的缓冲界面应具备以下功能:每个端口都具有数据锁存和缓冲功能,以便暂存数据和信息每个端口都具有与CPU进行信息交换的应答信号;具有片选与控制引脚,以作为CPU选中本芯片的片选端和传送控制命令的被控端;可用程序选择工作方式和功能,即通常讲的可编程。,89c51,RAM,ROM,I/O接口,地址总线(AB),数据总线(DB),控制总线(CB),图89c51系统扩展及接口结构,4,8.1扩展三总线的产生,图扩展的三总线,通常情况下,微机的CPU外部都有单独的地址总线、数据总线和控制总线。,5,图地址总线扩展电路,6,一、片外三总线的结构,如图:1、地址总线(AddressBus,AB)2、数据总线(DataBus,DB)3、控制总线(ControlBus,CB),7,二、系统扩展的实现,以P0口作地址/数据总线以P2口的口线作高位地址线控制信号线其中包括:ALE/PSEN/EA/RD和/WR,8,8.2扩展程序存储器,1、访问程序存储器的控制信号(1)ALE(2)/PSEN(3)/EA2、操作时序(1)应用系统中无片外RAM,如图8-4(a)(2)应用系统中接有片外RAM,如图8-4(b),一、访问片外程序存储器的操作时序,9,第一机器周期,S1,S2,S3,S4,S5,S6,第二机器周期,S1,S2,S3,S4,S5,S6,PCH输出,PCH输出,PCH输出,PCH输出,PCL输出,指令输入,PCL输出,指令输入,PCL输出,指令输入,PCL输出,指令输入,指令输入,PCL输出有效,PCL输出有效,PCH输出,PCH输出,ALE,PSEN,RD,P2,P0,图8-48051访问片外ROM操作时序图,(a),RET,10,第一机器周期,S1,S2,S3,S4,S5,S6,第二机器周期,S1,S2,S3,S4,S5,S6,PCH输出,PCH输出或P2输出,PCH输出,PCL输出,指令输入,地址输出,数据输出,PCL输出,指令输入,指令输入,PCL输出有效,PCL输出有效,PCH输出,PCH输出,ALE,PSEN,RD,P2,P0,数据地址(低8位)输出有效,数据输入,图8-48051访问片外RAM操作时序图,(b),RET,11,由图8-4(b)可以看出:(1)将ALE用作定时脉冲输出时,执行一次MOVX指令会丢失一个脉冲。(2)只有执行MOVX指令时的第二个机器周期期间,地址总线才由数据存储器使用。,12,二、扩展EPROM,单片机的程序存储器扩展使用只读存储器芯片。只读存储器简称为ROM(ReadOnlyMemory)。ROM存储器是由MOS管阵列构成的,以MOS管的接通或断开来存储二进制信息。按照程序要求确定ROM存储阵列中各MOS管状态的过程叫ROM编程。根据编程方式的不同,ROM共分为以下5种:,1、常用的程序存储器芯片,13,(1)掩膜ROM掩膜ROM简称为ROM,其编程是由半导体制造厂家完成的。即在生产过程中进行编程。因编程是以掩膜工艺实现的,因此称掩膜ROM,或写为maskROM。(2)可编程ROM(PROM)这种ROM芯片只能写入一次,其内客一旦写入就不能再进行修改。一次写入就是一次可编程OTP(OneTimeProgramble),因此通常把可编程ROM(PROM)写为otpROM。(3)紫外线擦除可改写ROM(EPROM)(4)电擦除可改写ROM(EEPROM或E2PROM)(5)快擦写ROM(flashROM),14,典型的EPROM芯片有Intel公司的2716(2K8)、2732(4K8)、2764(8K8)、27128(16K8)、27256(32K8)、27512(64K8)等。,2732-4KEPROM,2732引脚功能,A7A6A5A4A3A2A1A0O0O1O2GND,VccA8A9A11OE/VppA10CEO7O6O5O4O3,2732,A0-A11,地址线,CE,输出允许/编程电源,OE/Vpp,O0O7,数据线,片选线,图8-52732管脚配置,15,2、扩展8KBEPROM,图8-6是用8031地址线直接外扩8KBEPROM的系统连接图。图中,由8031、74LS373和2764构成单片机最小系统。2764的/CE引脚为片选信号输入端,低电平有效。图中,/CE接地表示选中该2764芯片。该片选信号决定了2764的8KB存储器在整个8031扩展程序存储器64KB空间中的位置。根据上述电路的接法,2764占有的扩展程序存储器地址空间为0000H1FFFH。,16,P1.0,P1.7,VCC,VSS,20,40,1,8,XTAL1,XTAL2,19,18,8051,+5V,+5V,RST,EA,9,31,10,11,12,13,14,15,16,17,P3.0(RXD),P3.1(TXD),P3.2(INT0),P3.3(INT1),P3.4(T0),P3.5(T1),P3.6(WR),P3.7(RD),PSEN,ALE,29,30,P2.0,P2.7,P0.1,P0.7,28,39,32,D0,D1,D2,D3,D4,D5,D6,D7,Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,VCC,GND,G,OE,A7,A6,A5,A4,A3,A2,A1,A0,A12,A13,A11,A10,A9,A8,VCC,GND,OE,D0,D1,D2,D3,D4,D5,D6,D7,CE,VPP,276427128,+5V,+5V,74LS373,21,图8-6扩展16KBEPROM27128系统连接图,返回1,返回2,17,3、扩展16KBEPROM,其扩展方法与2764的扩展方法基本一样,不同之处只是P2口的高位地址线根据不同容量的芯片分别接到相应的地址线上,如图8-6。27128与2764一样,也是28个引脚;与2764不同的是增加了一根地址线(A13,26引脚),而2764的26引脚为空脚(NC)。27128的地址范围是0000H3FFFH。,18,8.3扩展数据存储器,扩展数据存储器空间地址同外扩程序存储器一样,由P2口提供高8位地址,P0口分时提供低8位地址和用作8位双向数据总线。片外数据存储器RAM的读和写由8051的/RD(P3.7)和/WR(P3.6)信号控制,而片外程序存储器EPROM的输出端(/OE)由读选通/PSEN信号控制。,19,一、常用的数据存储器芯片,数据存储器就是随机存储器。随机存储器(RandomAccessMemory)简称为RAM。按其工作方式,RAM又分为静态(SRAM)和动态(DRAM)两种。,20,一、常用的数据存储器芯片,静态RAM,只要电源加上,所存信息就能可靠保存。动态RAM使用的是动态存储单元,需要不断进行刷新以便周期性地再生,才能保存信息。动态RAM的集成密度大,集成同样的位容量,动态只RAM所占芯片面积只是静态RAM的四分之一。此外动态RAM的功耗低,价格便宜。但动态存储器会增加刷新电路,因此只适应于较大系统,而在单片机系统中很少使用。,21,1、静态RAM(SRAM)芯片,目前常用的静态RAM芯片有6116、6264、62256、628128等。它们的引脚排列如图8-7所示。,A7,A6,A5,A4,A3,A2,A1,A0,O0,O1,O2,GND,Vcc,A8,A9,WE,OE,A10,CE,O7,O6,O5,O4,O3,6116,A7,A6,A5,A4,A3,A2,A1,A0,O0,O1,O2,GND,Vcc,A8,A9,WE,OE,A10,CE,O7,O6,O5,O4,O3,62256,A14,A12,A13,A11,图8-7常用静态RAM芯片引脚图,22,2、E2PROM,E2PROM既具有ROM的非易失性的优点,又具有RAM一样随机地进行读/写。既可以扩展为片外EPROM,也可以扩展为片外RAM。,A7,A6,A5,A4,A3,A2,A1,A0,I/O0,I/O1,I/O2,GND,Vcc,A8,A9,WE,OE,A10,CE,I/O7,I/O6,I/O5,I/O4,I/O3,RDY/BUSY,A12,NC,A11,图8-8E2PROM2864A引脚图,23,二、访问片外RAM的操作时序,1、读片外RAM操作时序读片外RAM周期时序如图8-9(a)所示。2、写片外RAM操作时序写片外RAM周期时序如图8-9(b)所示。,24,S1,P2,P1,P2,P1,P2,P1,P2,P1,P2,P1,P2,P1,S2,S3,S4,S5,S6,指令输入浮空,数据输入浮空,地址浮空,A7A0浮空,地址A15A8浮空,ALE,PSEN,RD,P2,P0,P2,P1,P2,P1,P2,P1,P2,P1,P2,P1,P2,P1,指令输入浮空,数据输出,地址浮空,A7A0,地址A15A8浮空,ALE,PSEN,WR,P2,P0,(a)片外数据存储器读时序,(b)片外数据存储器写时序,图8-98051访问片外RAM操作时序图,返回,25,三、8051扩展2KBRAM,图8-10所示电路为8051、8751地址线直接外扩2KB静态RAM6116的连线图。地址为0000H07FFH。,26,P1.0,P1.7,VCC,VSS,20,40,1,8,XTAL1,XTAL2,19,18,8051,+5V,+5V,RST,EA,9,31,10,11,12,13,14,15,16,17,P3.0(RXD),P3.1(TXD),P3.2(INT0),P3.3(INT1),P3.4(T0),P3.5(T1),P3.6(WR),P3.7(RD),PSEN,ALE,29,30,P2.0,P2.7,P0.1,P0.7,28,39,32,D0,D1,D2,D3,D4,D5,D6,D7,Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,VCC,GND,STB,OE,A7,A6,A5,A4,A3,A2,A1,A0,A10,A9,A8,VCC,GND,OE,I/O0,I/O1,I/O2,I/O3,I/O4,I/O5,I/O6,I/O7,CE,VSS,6116,+5V,+5V,8282,21,WE,图8-108051扩展2KBRAM,27,四、8031外扩32KBEPROM和32KBRAM,图8-11所示电路为8031片外扩展32KBEPROM和32KBRAM连线图。62256的地址为0000H7FFFH;27256的地址为0000H7FFFH;,28,21,28,30,32,39,17,29,16,WR,RD,PSEN,A0,A0,A0,A7,A14,A14,G,OE,D0,D7,D0,D7,D7,D0,+5V,+5V,GND,GND,CE,CE,OE,WE,OE,ALE,P0.0,P0.7,P2.7,P2.0,89c51,74LS373,27256,62256,图8-118031片外扩展32KBRAM和32KBEPROM,29,8.4简单并行I/O的扩展,图8-13所示为8031单片机与开关、LED发光二极管的接口电路。开关状态输入显示程序如下:LOOP:MOVA,#OFHMOVP1,AMOVA,P1SWAPAMOVP1,AAJMPLOOP,一、I/O的直接输入/输出,30,P1.0,P1.3,P1.4,P1.7,8031,K0,K3,乒乓开关插孔,发光二极管插孔,LED0,LED3,图8-138031单片机与开关(键)和LED接口,返回,硬件图,31,二、简单I/O接口的扩展方法,图8-14采用74LS244作扩展输入,74LS273(8-D锁存器)作扩展输出。图中244和273的地址都为FEFFH。实现的功能是:按下任意键,对应的LED发光。其程序如下:LOOP:MOVDPTR,#FEFFH;数据指针指向扩展I/O口地址MOVXA,DPTR;向244读入数据,检测按钮MOVXDPTR,A;向273输出数据,驱动LEDSJMPLOOP;循环,32,P0.0,P0.7,89c51,WR,RD,P2.0,D0,D1,D2,D3,D4,D5,D6,D7,Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,CLK,CLR,D0,D1,D2,D3,D4,D5,D6,D7,Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,G,LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7,+,+,+5V,K0,K1,K2,K3,K4,K5,K6,K7,74LS244,74LS273,图8-1474系列芯片扩展,返回,33,8155片内具有256B静态RAM,2个8位、1个6位的I/O口和1个14位“减1”计数器。可以扩展单片机的I/O口、定时器、外部数据存储器RAM。一、8155芯片的结构及引脚8155的逻辑结构及引脚如图8-15和图8-16所示。,7.5扩展8155可编程外围并行接口芯片,34,8155芯片的内部结构,256B静态RAM,A,定时器,B,C,口A,PA0PA7,口B,PB0PB7,PC0PC5,口C,IO/M,AD0AD7,CEALERDWRRESET,定时器输入,定时器输出,接单片机,接外设,接外设,接外设,图8-158155内部结构框图,35,8155引脚功能,PC3PC4PC5IO/MCERDWRALEAD0AD1AD2AD3AD4AD5AD6AD7Vss,VccPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA0,TIMERIN,RESET,TIMEROUT,图8-168155芯片的引脚,36,IO/M,RD、WR,37,二、8155的RAM和I/O口地址RAM地址-当IO/M加低电平:此时AD0-AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是:00000000-11111111分别指向8155RAM的256个存储单元。I/O口地址-当IO/M加高电平:此时AD0-AD7(仅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具体端口地址分配是:,38,8155的RAM和I/O口编址,39,三、8155的寄存器,8155可编程接口芯片内部共有7个寄存器,如下图所示。,PC,PB,PA,定时器,定时器,命令,状态,8位内部总线命令,定时方式,6,8,8,图8-178155/8156内部寄存器,40,1、命令(指令)寄存器及编程,确定PA口的工作方式,确定PB口的工作方式,0输入方式,1输出方式,确定PC口的工作方式,00ALT1(见表7-6),11ALT2,01ALT3,10ALT4,0禁止该口中断,1允许该口中断,确定PA口的中断状态,确定PB口的中断状态,定时器/计数器命令,00不影响定时器/计数器工作。,01如果定时器/计数器已工作,则停止它的工作;如果定时器/计数器未工作,则不影响它。,10在定时器/计数器溢出(TC)后停止它的工作。,11连续方式:当计数器被赋初值后,立即启动定时器/计数器;当它正在工作时,则在TC后立即启动,并按新的方式和新的时间常数工作。,D0,D1,D2,D3,D4,D5,D6,D7,图8-188155命令寄存器功能框图,返回,41,表7-6PC口工作方式,返回1,返回2,返回3,42,2、状态寄存器,D0,D1,D2,D3,D4,D5,D6,D7,A口中断申请,B口中断申请,A口缓冲器满/空(输入/输出),A口中断允许,B口缓冲器满/空(输入/输出),B口中断允许,定时器/计数器中断申请(当计数器溢出使这位为高,读状态寄存器或启动新的计数时,这位恢复),图7-198155的状态寄存器格式,43,3、PA寄存器它的I/O地址为001B。4、PB寄存器它的I/O地址为010B。5、PC寄存器它的I/O地址为011B。当PC0PC5用作控制口时,PC0PC2位分配给PA口,PC3PC5位分配给PB口。具体功能见表7-6。6、定时器/计数器其格式如图7-20所示。,44,定时常数的范围可以是2H3FFFH之间的任何数值。定时器的启动和停止命令送命令寄存器(00H)的最高两位。定时器/计数器是递减计数器,它对输入的脉冲计数,当计数器达到终点计算数值时可从定时器/计数器输出端输出一个脉冲或方波。高字节寄存器中的M1、M2两位是确定定时器/计数器输出波形的控制位。其输出波形如图7-21所示。,计数长度低8位,地址为:100B,计数长度高6位,地址为:101B,定时器方式,图7-20定时器/计数器寄存器格式,45,开始计数,终止计数,M2M1,00单个方波,01连续方波,10单个脉冲,11连续脉冲,图7-218155定时器输出波形,46,1、作片外256KBRAM与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/M脚接低电平。2、作扩展I/O使用这时IO/M脚接高电平,PA、PB、PC的口地址的低8位分别位01H、02H、03H(设地址无关位为0时)。8155的C口可以设置成四种工作方式,见表8-6。(1)I/O的工作方式选择基本I/O工作方式(如图8-18):选通I/O工作方式:见表8-6选通输入/输出逻辑(ALT4时)如图8-22所示。,四、8155的使用,47,在输入操作时,/STB是外设送来的选通信号。当/STB有效后(低电平),把输入数据装入8155,然后BF信号变高,以反映8155的缓冲器已装满;在/STB信号恢复为高电平时,INTR信号变高,向CPU申请中断。当CPU开始读取输入数据(/RD信号下降沿)时,INTR信号恢复低电平;读取数据完毕后(/RD信号上升沿),使BF信号恢复低电平,一次数据输入结束。在输出操作时,/STB是外设的应答信号。,PA,PC0,PC1,PC2,PC3,PC4,PC5,PB,WR,RD,AINTR,BINTR,ABF,BBF,ASTB,BSTB,I/O(设备数据线),I/O(设备数据线),(至中断请求输入线),(至中断请求输入线),(至设备),(至设备),(来自设备),(来自设备),8155,图8-22选通输入/输出逻辑,48,(2)I/O的状态查询8155用状态寄存器锁存I/O口和定时器的当前状态,供单片机查询用。3、作定时器扩展(1)定时器的方式选择8155片内有一个14位减法计数器,可对输入脉冲进行减1计数。外部又两个定时器引脚端TIMERIN和TIMEROUT。(2)定时器的编程,49,五、8031与8155的接口及简单程序,1、8031与8155的连接方法8031可以直接和8155连接而不需要任何外加逻辑,可以直接为系统增加256B片外RAM,22位I/O口线及一个14位定时器。8031与8155的连接方法如图8-23所示。,50,图中连接状态下的地址编号如表8-8所示,图8-238155和8031的连接方法,P2.7,返回,51,表8-88155提供的RAM和I/O口地址,图8-23,52,2、8155的基本操作软件例:将8155设置为I/O口和定时器工作方式,A口定义为基本输入方式,B口定义为基本输出方式,定时器作为方波发生器。对输入脉冲进行24分频(8155中定时器最高计数频率为4MHz),则8155的操作程序如下:MOVDPTR,#7F04H;指向定时器低8位MOVA,#18H;计数常数0018H24MOVXDPTR,A;装入计数常数低8位INCDPTR;指向定时器高8位MOVA,#40H(01000000B);设置定时器方式为连续方波输出(M2M1=01)MOVXDPTR,A;装入定时器高8位MOVDPTR,#7F00H;指向命令/状态口MOVA,C2H(11000010B);命令控制字设定A口为基本输入方式,B口为基本输出方式,并启动定时器MOVXDPTR,A,53,8-6扩展8255可编程外围并行接口芯片,54,3个8位并行口:PA,PB,PC可通过编程設置工作方式,0、1、2,55,40引脚PA口,8位,PA0PA7具有8位数据输出锁存器、缓冲器具有8位数据输入缓冲器PB口,8位,PB0PB7具有8位数据输出锁存器、缓冲器具有8位数据输入缓冲器PC口,8位,PC0PC78位数据输出锁存器8位数据输入缓冲器可分为两个4位端口作为端口A、B的选通方式操作时的状态控制信号,1、8255的内部结构和引脚,56,数据口D0D7,双向三态数据总线缓冲器地址选通信号,A0,A1,CS读写控制信号,RD,WR复位控制信号-RESET高电平有效清零控制寄存器所有端口为输入方式电源VCC,GND,1、8255的内部结构和引脚,57,58,A组和B组控制电路。根据CPU写入命令字控制8255A工作方式“A组控制”控制A口和C口高4位“B组控制“控制B口和C口低4位根据命令字控制端口按位”置位“或”复位“-C口,59,8255A-端口选择表,地址00对应A口地址01对应B口地址10对应C口地址11对应控制字口,60,2、并行接口芯片8255A-工作方式、控制字,三种工作方式通过向控制寄存器输入命令字选择工作方式方式0基本输入输出方式方式1选通输入输出方式方式2双向传送方式(仅PA口)方式控制字(图),61,2、并行接口芯片8255A-工作方式、控制字,62,并行接口芯片8255A-端口C的置位/复位,通过写入8255A控制端口的命令字置位复位用于分别控制C口每一位的状态命令字中,D6D5D4三位未使用,63,并行接口芯片8255A-端口C的置位/复位,64,方式0:,基本输入输出方式,直接向端口写或者从端口读数据2个8位端口+2个4位端口任一端口都可以做输入/输出输出锁存输入无锁存方式0时,4个端口(A、B、CH、CL)具有16种组合方式不能将某端口的部分位做输入、部分位做输出,65,方式1:,选通输入输出方式端口A、B作为数据输入输出,端口C某些位做控制或状态信息方式1功能基本功能用作一个或两个选通端口每个端口可作为输入或输出每个端口包括8位数据,固定的3条控制线用于提供中断逻辑若只有一个端口工作于方式1,其余8+5可以由控制字决定工作于方式0两个端口工作于方式1时,C口剩余2位可由指令设置作为输入或输出,同样具有置位/复位功能,66,方式1输入,端口A,67,方式1输入,端口B,68,方式1输入-控制信号,STB(STROBE,STBA,STBB)选通输入,低电平有效外设提供的输入信号,有效时将外设来的数据送入锁存器STBAPC4,STBBPC2IBF(IBFA,IBFB)(InputbufferFull)输入缓冲器满,高电平有效8255A输出状态信号,表示输入锁存器有数据由STB信号置位(STB信号送入数据),RD信号上升沿使其复位IBFAPC5,IBFBPC1,69,方式1输入-控制信号,INTR(INTRA,INTRB)中断请求信号(InterruptRequest),高电平有效8255A输出信号,用于请求中断服务当STB为高电平,IBF为高电平,INTE中断允许为1时,有效RD信号的下降沿清除INTRAPC3,INTRBPC0中断允许信号INTEA由PC4的置位复位控制,1有效INTEB由PC2的置位复位控制,1有效,70,方式1输出,端口A,71,方式1输出,端口B,72,方式1输出-控制信号,OBF(OutputBufferFull)输出缓冲器满,低电平有效8255A输出控制信号,表示输出缓冲器有数据由WR信号上升沿置低电平,外设ACK信号使其复位OBFAPC7,OBFBPC1ACK(Acknowledge)外设响应信号,低电平有效表示8255A输出给外设的数据已经送达外设ACKAPC6,ACKBPC2,73,方式1输出-控制信号,INTR中断请求信号,高电平有效外设接收数据后用来向CPU提出中断,请求继续输出数据ACK为高电平,OBF高电平,INTE使能,INTR即有效WR上升沿使其复位INTRAPC3,INTRBPC0中断允许信号INTEA由PC6的置位复位控制,1有效INTEB由PC2的置位复位控制,1有效,74,方式1输入、输出组合,端口A选通输入,端口B选通输出端口C之PC6、PC7作普通I/O,D3位确定工作方式,端口A选通输出,端口B选通输入端口C之PC4、PC5作普通I/O,D3位确定工作方式,75,方式2,用在单一8位总线上发送和接收(仅限PORTA)可工作于查询或中断方式一个8位双向总线端口,PortA一个5位控制端口,PortC,用于PortA的控制和状态信息输入输出锁存PORTB没有方式2,但可工作在方式0、1,76,方式2,77,INTRA,输入输出方式时中断请求信号,高电平有效OBF输出缓冲器满信号,低电平,外设已把数据送到端口AACK响应信号,低电平,ACK启动A口的三态输出缓冲器送出数据,否则输出缓冲器处于高阻状态INTE1与输出缓冲器相关的中断允许寄存器,PC6置位/复位控制STB选通输入,低电平,外设将数据送入输入缓冲器IBF,输入缓冲器满,高电平,指示外设数据已进入输入缓冲器INTE2,与输入缓冲器相关的中断允许寄存器,由PC4置位/复位控制方式控制字端口A工作于方式2时,端口B可工作于方式0或方式1、输入或输出,78,8255A与89C51接口,8255A地址:PA=7CH,PB=7DH,PC=7EH,控制口7FH,79,8255A-控制字设置:,端口A:方式0输入端口B:方式1输出端口C上半部(PC7PC4):输出端口C下半部(PC3PC0):输入控制字:10010101=95H代码片段写控制字Movr0,#7FHMovA,#95HMovxr0,A,80,对端口C的置位/复位端口C的每一位可用指令设置1或0对PC5置位的控制字0 xxx1011=0BH最高位0,标志位三位xxx,无关位101,PC51,置1、置位程序MOVR1,#7FH;控制口地址MOVA,#0BH;控制字MOVXR1,A;写入控制字,81,对端口C的置位/复位对PC6复位的控制字0 xxx1100=0CH110,PC60,置0、复位程序MOVR2,#7FH;控制口地址?MOVA,#0CH;控制字MOVXR2,A;写入控制字,82,8255A与打印机接口,u80打印机接口Centronic接口,标准打印机接口DB7DB0-数据线,单向接收DSTB数据选通信号,输入BUSY忙信号,输出ACK应答信号,输出,83,8255A与打印机接口,u80打印机接口工作过程CPU送出8位数据通过DSTB信号控制打印机接收数据总线上的数据打印机开始打印,BUSY有效打印完成,打印机给ACK信号,准备接收下一个数据,84,8255A与打印机接口电路,数据端口,85,待打印数据:40H4FH内,ASCII码8255A工作于方式0,端口A工作于基本输入/输出方式:输出,端口C上半部分作为控制信息,PC7给出DSTB信号:输出端口C下半部分输入状态信息:PC0接BUSY,PC1接ACK控制码D7D6D5D4D3D2D1D01000000181H,86,打印程序:PRINT:MOVR0,#7FH;控制端口地址MOVA,#81H;8255A控制字MOVXR0,A;写控制字MOVR1,#40H;输出数据首地址MOVR2,#0FH;R2数据长度LOOP:MOVA,R1INCR1MOVR0,#7CH;端口A地址MOVXR0,AMOVR0,#7FH;控制端口地址MOVA,#0EH;PC7的复位控制00001110,87,MOVXR0,A;PC7=0,给出DSTB信号MOVA,#0FH;PC7置位控制字MOVXR0,A;PC7由0变为1,取消选通信号,;使DSTB无效LOOP1:MOVR0,#7EH;口C地址到R0MOVXA,R0;读入口C的值,查询打印机状态ANLA,#01HJNZLOOP1;判断BUSYDJNZR2,LOOP;未打印完数据,继续RET本例采用的是基本输入输出方式,软件判断DSTB,BUSY信号,ACK信号未利用,88,8-7串行扩展总线接口技术,89,89C51单片机功能扩展方便。扩展应尽量采用串行扩展方案通过SPI或I2C总线扩展E2PROM、A/D、D/A、显示器、看门狗、时钟等芯片串行扩展方式占用MCU的I/O口线少,编程也方便。,8-7串行扩展总线接口技术,90,8.7.1SPI串行外设接口总线,SPI:SerialPeripheralInterface,串行外设接口Motorola公司推出的一种同步串行外设接口,它用于MCU与各种外围设备以串行方式进行通信。发送端和接收端同步传送数据(8位数据同步地被发送和接收)SPI设备工作时分主设备(MASTER)和从设备(SLAVE),系统可配置为主或从操作模式。,91,SPI系统只需4条线串行时钟线SCK(SerialClock)主机输入/从机输出数据线MISO(MasterInputSlaveOutput)主机输出/从机输入数据线MOSI(MasterOutputSlaveInput)低电平有效的从机选择线CS(SS)(ChipSelectorSlaveSelect)在SPI接口中,数据的传输只需要1个时钟信号和2条数据线,8.7.1SPI串行外设接口总线,92,1、SPI总线系统的组成,93,单片机与外围扩展器件在时钟线SCK、数据线MOSI和MISO上都是同名端相连。带SPI接口的外围器件都有片选端CS。在扩展多个SPI外围器件时,单片机应分别通过I/O口线来分时选通外围器件当SPI接口上有多个SPI接口的单片机时,应区别其主从地位,在某一时刻只能由一个单片机为主器件。SPI有较高的数据传送速度,主机方式最高速率可达1.05Mb/s,1、SPI总线系统的组成,94,从器件只能在主机发命令时,才能接收或向主机传送数据,数据传送:高位在前,低位在后。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出,同时从输入引脚(MISO)接收的数据逐位移到移位寄存器,1、SPI总线系统的组成,95,SPI总线系统典型时序,96,SPI总线系统主要特性:,全双工3线同步传输主机或从机工作模式提供频率可编程时钟发送结束中断标志写冲突保护总线竞争保护等,97,2、89C51串行扩展SPI外设接口的方法,98,89C51没有SPI接口,可使用软件来模拟SPI的操作,包括串行时钟、数据输入和输出,1)用I/O口线模拟SPI操作,99,MCM2814串行E2PROM,100,MCM2814引脚描述,101,模拟接口时序-上升沿输入,下降沿输出,不同的串行接口外围芯片,它们的时钟时序是不同的对于在SCK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,参考上图中的串行时钟输出方式:P1.1的初始状态为1P1.2为0,允许接口芯片置P1.1为0,MCU输出1位SCK时钟,同时,使接口芯片串行左移,从而输出1位数据至89C51的P1.3(模拟MCU的MISO线)再置P1.1为1,使89C51从P1.0输出1位数据(先为高位)至串行接口芯片至此,模拟1位数据输入/输出完成以后再置P1.1为0,模拟下一位的输入/输出依次循环8次,可完成1次通过SPI传输1字节的操作,102,模拟接口时序-下降沿输入,上升沿输出,对于在SCK的下降沿输入数据和上升沿输出数据的器件使串行时钟输出的初始状态为0允许接口芯片先置P1.1为1,外围接口芯片输出1位数据(MCU接收1位数据)再置时钟为0,外围接口芯片接收1位数据(MCU发送1位数据),可完成1位数据的传送重复这个过程8次,完成一个字节的传送,103,MCM2814与89C51的接口:,P1.0模拟MCU的数据输出端(MOSI)P1.1模拟SPI的SCK输出端(SCK)P1.2模拟SPI的从机选择端(SS)P1.3模拟SPI的数据输入端(MISO),104,MCU串行输入子程序SPIIN:,从MCM2814的SPISO线上接收1字节数据并放入寄存器R0中SPIIN:SETBP1.1;使P1.1(时钟)输出为1CLRP1.2;选择从机MOVR1,#08H;置循环次数SPIN1:CLRP1.1;使P1.1(时钟)输出为0NOP;延时,调节延时时间NOPMOVC,P1.3;从机输出SPISO到进位CRLCA;左移至累加器ACCSETBP1.1;使P1.1(时钟)输出为1DJNZR1,SPIN1;判断是否循环8次(1字节数据)MOVR0,A;1字节数据送R0RET;返回,105,MCU串行输出子程序SPIOUT:,将89C51中R0寄存器的内容传送到MCM2814的SPISI线上SPIOUT:SETBP1.1;使P1.1(时钟)输出为1CLRP1.2;选择从机MOVR1,#08H;置循环次数MOVA,R0;1字节数据送累加器ACCSPIOT1:CLRP1.1;使P1.1(时钟)输出为0NOP;延时NOPRLCA;左移至累加器ACC最高位至CMOVP1.0,C;进位C送从机输入SPISI线上SETBP1.1;使P1.1(时钟)输出为1DJNZR1,SPIOT1;判断是否循环8次(1字节数据)RET;返回,106,MCU串行输入/输出子程序SPIIO:,将89C51中R0寄存器的内容传送到MCM2814的SPISI中,同时从MCM2814的SPISO接收1字节数据存入R0中SPIIO:SETBP1.1;使P1.1(时钟)输出为1CLRP1,2;选择从机MOVR1,#08H;置循环次数MOVA,R0;1字节数据送累加器ACCSPIO1:CLRP1.1;使P1.1(时钟)输出为0NOP;延时NOPMOVC,P1.3;从机输出SPISO送进位CRLCA;左移至累加器ACC最高位至CMOVP1.0,C;进位C送从机输入SETBP1.1;使P1.1(时钟)输出为1DJNZR1,SPIO1;判断是否循环8次(1字节数据)MOVR0,ARET;返回,107,2)用89C51串口实现SPI操作,单片机应用系统中,常用的功能:开关量I/O、A/D、D/A、时钟、显示及打印等。下面分析利用单片机串口与多个串行I/O接口芯片进行接口,108,(1)实时日历时钟,虽然单片机内部的定时器可以通过软件进位计数产生绝对时钟,但由于掉电之后数据丢失,修改麻烦等原因,这样产生的绝对时钟总使设计者感到不满意。因此,对绝对时钟要求较高的场合一般使用外部时钟芯片。HT1380:串行时钟芯片。,109,HT1380,8脚的日历时钟芯片。与单片机交换信息,如图所示X1、X2接晶振,SCLK作为时钟输入端,I/O端为串行数据输入、输出端口,RST是复位引脚只有当RST为高时才能对芯片进行读/写操作。当RST为低时,I/O引脚对外是高阻状态,因此它允许多个串行芯片同时挂靠在串行端口上CPU对它的输入/输出操作可以按串行的方式0(即扩展I/O方式)进行,110,HT1380与单片机接口电路,111,(2)串行LED显示接口芯片MAX7219,可驱动8个LED显示器,与单片机它接口如图所示。Load为芯片选择端当Load位于低电平时,对它进行读/写操作当Load为高电平时,DIN处于高阻状态允许多个串行接口芯片共同使用89C51的串行口89C51的TXD作为移位时钟、RXD作为串行数据I/O端、,112,MAX7219,113,MAX7219与单片机接口电路,114,(3)串行模拟量输入芯片MAX1458,是一个可对差分输入信号(如电桥)进行程控放大,并进行12位A/D转换的芯片。放大与转换电路集成在一个芯片上,与单片机接口如图。既可把转换好的数据通过串口送到CPU,同时也可将转换前的模拟信号输出到显示仪表。当CS为高电平时,可对MAX1458进行读/写。当CS为低电平时,DIO对外处于高阻状态。,115,串行A/D芯片与单片机接口电路,116,串行接口芯片的一般接口规律:,都需要通过单片机的开关量I/O口线进行芯片选择;当芯片未选中时,数据端口均处于高阻状态;与单片机交换信息时均要求单片机串行口以方式0进行;传输数据时的帧格式均要求先传送命令/地址,再传送数据;大都具有下图所示的时序波形:,117,串行接口信号的一般时序图,118,扩展多个串行接口芯片的典型控制器的结构,119,扩展多个串行接口芯片的典型控制器的结构,图所示的控制器电路中,数据采集均由串行接口芯片完成。由于无总线扩展,单片机节余出来的其他资源可以作为打印机输出控制、功能键、中断逻辑等电路。在扩展了系统功能的同时,极大地利用了系统资源,且使接口简单,控制器体积减小,可靠性提高。系统的软件设计与常规的单片机扩展系统类似,只是在芯片选择方面不是通过地址线完成,而是通过I/O口线来实现。,120,8.7.2I2C总线,PHILIPS公司推出的串行总线应用广泛,在很多器件上都配备有I2C总线接口,使用这些器件时一般都需要通过I2C总线进行控制本节简要介绍I2C总线的工作原理,如何用51单片机进行控制以及相应的汇编语言控制程序的编写,121,122,1、I2C总线的概念,I2C总线是一种具有自动寻址、高低速设备同步和仲裁等功能的高性能串行总线,能够实现完善的全双工数据传输。I2C总线只有两根信号线:数据线SDA和时钟线SCL只需将设备I2C总线上所有节点的串行数据线SDA和时钟线SCL分别与总线的SDA和SCL相连即可各节点供电可以不同,但需共地,SDA和SCL需分别接上拉电阻。,123,当执行数据传送时,启动数据发送并产生时钟信号的器件称为主器件;被寻址的任何器件都可看作从器件;发送数据到总线上的器件称为发送器;从总线上接收数据的器件称为接收器。I2C总线是多主机总线,可以有两个或更多的能够控制总线的器件与总线连接。I2C总线还具有仲裁功能,当一个以上的主器件同时试图控制总线时,只允许一个有效,从而保证数据不被破坏。I2C总线的寻址采用纯软件的寻址方法,无需片选线的连接,这样就简少了总线数量,1、I2C总线的概念,124,主机在发送完启动信号后,立即发送寻址字节来寻址被控器件,并规定数据传送方向。寻址字节由7位从机地址(D7D1)和1位方向位(D0,0/1,读/写)组成。当主机发送寻址字节时,总线上所有器件都将该寻址字节中的高7位地址与自己器件的地址比较,若两者相同,则该器件认为被主机寻址,并根据读/写位确定是从发送器还是从接收器。,1、I2C总线的概念,125,I2C总线具有多重主控能力,允许多个作为主控器的电路模块(具有I2C总线接口的单片机)去抢占总线因此挂接在I2C总线上发送器/接收器可以工作在4种工作状态中的任一状态:主控发送器主控接收器被控发送器被控接收器带有I2C总线接口的存储器(RAM或E2PROM)模块只能充当被控发送器或被控接收器,1、I2C总线的概念,126,I2C总线实例,本图说明,127,在图中,假设单片机A要向单片机B发送信息,单片机A首先作为主控器在I2C总线上发送起始信号和时钟,寻址作为被控器的单片机B,并确立信息传送方向。接着,单片机A作为主控发送器便可通过SDA线向被控接收器(单片机B)发送信息,并在信息发送完毕后发送终止信号,以结束信息的传送过程。假设单片机A要从单片机B读取信息

温馨提示

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

评论

0/150

提交评论