《AT89S51单片机接口的扩展.ppt》由会员分享,可在线阅读,更多相关《AT89S51单片机接口的扩展.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第9 9章章 AT89S51AT89S51单片机单片机 的的I/OI/O扩展扩展1单片机原理及应用单片机原理及应用第第9章章AT89S51单片机接单片机接口的扩展口的扩展2第第9章章 AT89S51单片机接口的扩展单片机接口的扩展9.1 I/O接口的扩展概述接口的扩展概述9.2 扩展扩展I/O接口芯片接口芯片81C55的设计的设计9.3 利用利用74LSTTL电路扩展并行电路扩展并行I/O口口9.4 用用AT89S51单片机的串行口扩展并行口单片机的串行口扩展并行口内容概要内容概要AT89S51有4个I/O口P0P3P0P3,真正用作I/O口线的只有P1P1口口的8位I/O口线和P3P3口口
2、的某些位线。因此,大多需要大多需要外部I/O接口的扩展。介绍AT89S51与常用的可编程I/O接口芯片81C5581C55的扩展接口设计。此外还介绍使用廉价的74LSTTL74LSTTL芯片芯片扩展并行I/O接口以及用AT89S51AT89S51串行口串行口来扩展并行I/O接口的设计。最后介绍使用I/OI/O口控制口控制的声音报警声音报警接口。学习要求学习要求1、掌握TTL/CMOS简单I/O芯片的硬件扩展及编程2、熟悉8155芯片的结构、功能、控制字3、掌握8155芯片与89C51的接口及程序设计方法 9.1 I/O接口扩展概述接口扩展概述扩展I/O接口与扩展存储器一样,都属于系统扩展系统扩
3、展的内容。扩展的I/O接口应该具有哪些功能?9.1.1 9.1.1 扩展的扩展的扩展的扩展的I/OI/O接口功能接口功能接口功能接口功能扩展的I/O接口电路主要应满足以下功能要求。1实现和不同外设的速度匹配实现和不同外设的速度匹配大多数外设大多数外设的速度很慢速度很慢,无法和s量级的单片机速度量级的单片机速度相比。单片机在与外设间进行数据传送时,只有在确认外设已为数据传送做好准备做好准备的前提下才能进行数据传送才能进行数据传送。外设是否准备好,就需要I/O接口电路与外设之间传送状态信传送状态信息息,以实现单片机与外设之间的速度匹配。52输出数据锁存输出数据锁存与外设比,单片机的工作速度快,与外
4、设比,单片机的工作速度快,数据在数据总线上保数据在数据总线上保留的时间十分短暂留的时间十分短暂,无法满足慢速外设的数据接收。所以,无法满足慢速外设的数据接收。所以在扩展的在扩展的I/O接口电路中接口电路中应有输出数据锁存器应有输出数据锁存器,以保证输,以保证输出数据能出数据能为慢速的接收设备为慢速的接收设备所接收。所接收。3输入数据三态缓冲输入数据三态缓冲数据总线数据总线上可能上可能“挂挂”有多个数据源有多个数据源,为使传送数据时,为使传送数据时不发生冲突不发生冲突,只允许当前时刻,只允许当前时刻正在接收数据的正在接收数据的I/O接口使接口使用数据总线用数据总线,其余的其余的I/O接口接口应处
5、于隔离状态应处于隔离状态,为此要求,为此要求I/O接口电路能为数据输入提供三态缓冲功能。接口电路能为数据输入提供三态缓冲功能。69.1.2 I/O9.1.2 I/O端口的编址端口的编址端口的编址端口的编址介绍I/O端口编址端口编址之前,首先要弄清楚I/O接口接口和I/O端端口口的概念。I/O接口接口是单片机与外设间的连接电路的总称。I/O端口端口(简称I/O口)是指I/O接口电路中具有单元地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,如数据口,命令口,状态口数据口,命令口,状态口。当然,并不是所有的外设都一定需要3种端口齐全的I/O接口。每个I/O接口中的端口接口中的端口都要有
6、地址都要有地址,以便AT89S51通过读写端口来和外设交换信息和外设交换信息。常用的I/O端口编址端口编址有两种方式,独立编址方式独立编址方式与统一编址方式统一编址方式。71独立编址独立编址I/O端口地址空间和存储器地址空间分开编址。优点是I/O地址空间和存储器地址空间相互独立,界限分明。但需要设置一套专门的读写I/O端口的指令和控制信号。2统一编址把I/O端口与数据存储器单元同等对待。I/O端口和外部数据存储器RAM统一编址统一编址。因此外部数据存储器空间也包括I/O端口在内。优点优点是不需专门的I/O指令。缺点缺点是需要把数据存储器是需要把数据存储器单元地址与单元地址与I/O端口的地址划分
7、清楚端口的地址划分清楚,避免数据冲突。89.1.3 I/O9.1.3 I/O数据的传送方式数据的传送方式数据的传送方式数据的传送方式为了实现和不同外设的速度匹配速度匹配,必须根据不同外设选择恰当的I/O数据传送方式数据传送方式。I/O数据传送方式有:同步传送、异步传送和中断传送。1同步传送同步传送同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片单片机和外部数据存储器之间机和外部数据存储器之间的数据传送数据传送。2查询传送查询传送又称有条件传送(也称异步式传送)。通过查询外设“准备好”后,再进行数据传送。优点是通用性好,硬件连线和查询程序简单,但
8、工作效率不高。9外部并行外部并行外部并行外部并行I/OI/O口口口口3中断传送中断传送为了提高提高单片机对外设的工作效率工作效率,通常采用中断传送方式,来实现I/O数据的传送。单片机只有在外设准备好只有在外设准备好后,才中断主程序的执行后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。采用中断方式可大大提高工作效率提高工作效率。9.1.4 I/O9.1.4 I/O接口电路接口电路接口电路接口电路常用的外围I/O接口芯片:(1)82C55:可编程通用并行接口(3个8位I/O口)。10(2)81C55:可编程的IO/RAM扩展接
9、口电路(2个8位I/O口,1个6位I/O口,256RAM单元,1个14位的减法计数器)。都可以和AT89S51直接连接,接口逻辑简单。119.2 扩展扩展I/O接口芯片接口芯片81C55的设计的设计包含256B的RAM存储器(静态),RAM的存取时间为400ns,可编程的两个两个8位并行口位并行口PA和和PB,可编程的一个一个6位位并行口并行口PC,以及一个一个14位的减位的减1计数器计数器。PA口和口和PB口可工作口可工作于基本输入于基本输入/输出方式输出方式(同82C55的方式0)或选通输入或选通输入/输出输出方式方式(同82C55的方式1)。81C55可直接与AT89S51相连,不需增加
10、任何硬件逻辑电路。由于81C55片内集成有I/O口、RAM和减1计数器,因而是被选用的I/O接口芯片之一。9.2.1 81C559.2.1 81C55芯片介绍芯片介绍芯片介绍芯片介绍介绍81C55芯片基本特性。1281558155181C55的结构的结构逻辑结构如图图9-1。图图9-181C55的逻辑结构281C55的引脚功能的引脚功能40引脚,采用双列直插式封装,如图图9-2所示所示。图图9-281C55的引脚图的引脚图14各引脚功能如下。(1)AD7AD0,为地址/数据线,与AT89S51单片机的P0口相连,用于分时传送地址/数据信息。(2)I/O总线(总线(22条)。条)。PA7PA0为
11、通用I/O线,数据传送方向由写入81C55的命令字决定(图9-3);PB7PB0为通用I/O线,用于传送PB口上的外设数据,数据传送方向也由写入81C55的控制字决定。PC5PC0为数据/控制线,共有6条,在通用I/O方式下,用作传送I/O数据;在选通I/O方式下,用作传送命令/状态信息(见表9-3)。15(3)控制引脚)控制引脚RESET:复位输入线,在RESET线上输入一个大于600ns宽的正脉冲时,81C55即可处于复位状态,PA、PB、PC三口也定义为输入方式。、IO/:为片选线,若=0,则AT89S51单片机选中本81C55工作;否则,本81C55未被选中。IO/为I/O端口或RAM
12、存储器选择线,若IO/=0,则AT89S51单片机选中81C55片内的RAM存储器;若IO/=1,则AT89S51单片机选中81C55的某一I/O端口。和和:当=0且=1时,81C55被读出数据状态;当=1且=0时,81C55被写入数据状态。16ALE:允许地址输入线,高有效。若ALE=1,则81C55允许AT89S51通过AD7AD0线发出地址锁存到81C55片内“地址锁存器”;否则,81C55地址锁存器处于封锁状态。81C55的ALE常和AT89S51的ALE相连。TIMERIN和和:TIMERIN是计数器脉冲输入线,输入的脉冲上跳沿用于对81C55片内的14位计数器减1。为计数器输出线计
13、数器输出线,当14位计数器减为0时就可以在该引线上输出脉冲或方波输出脉冲或方波,输出脉冲或方波与所选的计数器工作方式有关。(4)电源线。VCC为+5V电源输入线,VSS接地。173CPU对对81C55I/O端口的控制端口的控制3个端口数据传送方式是由控制字和状态字来决定的。(1)81C55各端口地址分配各端口地址分配内部有7个端口个端口,需要3位地址位地址A2A0上的不同组合代码来加以区分。表表9-2为端口地址分配以及RAM单元的选择。(2)81C55的控制字的控制字有一个控制寄存器和一个状态标志寄存器。工作方式由写入控制寄存器控制寄存器的的控制字控制字来确定来确定。控制字格式如图9-13所所
14、示示。控制寄存器只能写入不能读出只能写入不能读出。18图图9-381C55的控制字格式的控制字格式19控制寄存器中的控制寄存器中的D3D0位位用来设置PA口、PB口和PC口的工作方式。D4、D5位位用来确定A口、B口以选通输入/输出方式工作时是否允许中断请求。D6、D7位位用来设置计数器的操作。(3)81C55的状态字的状态字有一个状态标志寄存器,用来存入PA口和PB口的状态标志。它的地址与控制寄存器地址相同地址与控制寄存器地址相同,只能对其读出,不能写只能对其读出,不能写入入。格式如图9-4所示所示。下面仅对状态字中的D6位位给出说明。D6为计数器中断状态标志位中断状态标志位TIMER。若计
15、数器正在计数或开始计数前计数或开始计数前,则D6=0;若计数器的计数长度已计满计数长度已计满,即计数器减为0,则D6=1,可作为计数器中断请求标志。在硬件复位或对它读出后又恢复为0。9.2.2 81C559.2.2 81C55的工作方式的工作方式的工作方式的工作方式下面介绍81C55的两种工作方式两种工作方式。21图图9-481C55状态字格式状态字格式221存储器方式存储器方式存储器方式用于对片内256BRAM单元进行读/写,若IO/=0且=0,则AT89S51可通过AD7AD0上的地址选择RAM存储器中任意单元读/写。2I/O方式方式分基本基本I/O和选通选通I/O两种方式,见表表9-3。
16、在I/O方式下,81C55可选择片内任意端口寄存器读/写,端口地址由A2、A1、A0三位决定(见表9-2)。(1)基本)基本I/O方式方式。本方式下,PA、PB、PC三口用作输入/输出,由图9-13的命令字决定。其中,PA、PB两口的输入/输出由D1、D0决定,PC口口各位由D3、D2状态状态决23定。例如,例如,若把02H的命令字送到81C55命令寄存器,则81C55的PA口和PC口各位设定为输入方式,PB口设定为输出方式。(2)选通)选通I/O方式。方式。由命令字中D3、D2状态设定,PA口和PB口都可独立工作于这种方式。此时,PA口和PB口用作数据口,PC口用作A口和B口的应答联络控制。
17、PC口各位应答联络线的定义是在设计81C55时规定的,其分配和命名见表表9-3。2425选通通I/O方式又可分方式又可分为选通通I/O数据数据输入入和和选通通I/O数据数据输出出两两种方式种方式。选通通I/O数据数据输入入PA口和口和PB口口都可设定为本方式。若命令字中D0=0且D3、D2=10,则PA口设定为本工作方式;若命令字中D1=0且D3、D2=11,则PB口设定为本工作方式。本工作方式和82C55的选通I/O输入情况类似,如图图9-5(a)所示。选通选通I/O数据输出数据输出PA口和口和PB口口都可设定为本方式。若命令字命令字D0=1且且D3、D2=10,则PA口设定为本工作方式;若
18、命令字命令字D1=1且D3、D2=11,则PB口设定为本工作方式。选通I/O数据的输出过程也和82C55的选通I/O输出情况类似,图图9-5(b)所示为选通I/O数据输出的示意图。26图图9-5选通I/O方式示意图273内部计数器内部计数器/计数器及使用计数器及使用14位位的计数器/计数器,CPU可通过软件软件来选择计数长来选择计数长度和计数方式度和计数方式。计数长度和计数方式由写入计数器的控制字来确定。计数器的格式如图图9-6所示。图图9-681C55计数器的格式计数器的格式其中,T13T0为计数器的计数位;M2、M1用来设置计数器的输出方式。81C55计数器的4种工作方式种工作方式及对应的
19、引脚输出波形引脚输出波形如图图9-7所示。2829图9-781C55计数器工作方式及数器工作方式及引脚引脚输出波形出波形任何时候任何时候都可设置计数器长度长度和工作方式,工作方式,将控制字写入控制寄存器。如果计数器正在计数如果计数器正在计数,只有在写入启动命写入启动命令令后,计数器才接收新计数长度才接收新计数长度并按新的工作方式计数。若写入计数器的初值为初值为奇数奇数,引脚的方波输出方波输出是不对不对称称的。例如例如,初值为初值为9时,计数器的输出,在5个计数脉冲周期内为高电平高电平,4个计数脉冲周期内为低电平,如图图9-8所示。图图9-8计数长度为奇数时的不对称方波输出(长度为计数长度为奇数
20、时的不对称方波输出(长度为9)30注意,注意,81C55的计数器初值不是从初值不是从0开始开始,从从2开始开始。这是因为,如果选择计数器的输出为方波形式(无论是单方波还是连续方波),则规定是从启动计数开始,前一半计数输出为高电平,后一半计数输出为低电平。显然,如果显然,如果计数初值是计数初值是0或或1,就无法产生这种方波,就无法产生这种方波。因此81C55计数器的写入初值范围是初值范围是3FFFH2H。如果硬要将硬要将0或或1作为初值写入作为初值写入,其效果将与送入初值初值2的情况一样。81C55复位后使计数器停止计数。319.2.3 AT89S519.2.3 AT89S51单片机与单片机与单
21、片机与单片机与81C5581C55的接口设计及软件编程的接口设计及软件编程的接口设计及软件编程的接口设计及软件编程1硬件接口电路硬件接口电路接口如图图9-9所示。直接连接不需外加器件。33图9-9AT89S51单片机与片机与81C55的接口的接口电路路在在图图9-9中,单片机P0口口输出的低低8位地址不需要另外位地址不需要另外加锁存器加锁存器(81C55片内集成有地址锁存器),而直接与81C55的AD0AD7相连,既可作为低8位地址总线,又可作为数据总线,地址锁存控制直接用AT89S51发出的ALE信号。81C55的端接P2.7,IO/端与P2.0相连。当P2.7=0时,若P2.0=0,则访问
22、81C55的RAM单元。由此可得到图9-19中81C55的各端口以及RAM单元的地址编码,见表表9-4。3435281C55的编程的编程根据图9-9接口,介绍对81C55的具体操作。初始化程序设计初始化程序设计【例例9-6】若PA口定义为基本输入方式,PB口定义为基本输出方式,对输入脉冲进行24分频(81C55计数器的最最高计数频率高计数频率为4MHz),则81C55的初始化程序初始化程序如下START:MOVDPTR,7F04H;DPTR指针指向计数器低指针指向计数器低8位位MOVA,18H;计数初值;计数初值24送送AMOVX DPTR,A;计数初值低;计数初值低8位装入计数器位装入计数器
23、INCDPTR;指向计数器高;指向计数器高8位位36MOVA,40H;计数器为连续方波输出;计数器为连续方波输出MOVXDPTR,A;计数初值高;计数初值高6位装入计数器位装入计数器MOVDPTR,7F00H;指向命令;指向命令/状态口状态口MOVA,#0C2H;设定命令控制字;设定命令控制字MOVXDPTR,A;A口基本输入,口基本输入,B口基本输出,开启计数口基本输出,开启计数【例例9-7】读81C55的7EF1H单元。程序如下:程序如下:MOVDPTR,#7EF1H;DPTR指针指向81C55的7EF1H单元MOVXA,DPTR;7EF1H单元内容A37【例例9-8】将立即数41H写入8
24、1C55RAM的7E20H单元。程序如下:MOVA,#41H;立即数;立即数AMOVDPTR,#7E20H;DPTR指针指向指针指向81C55的的7E20H单元单元MOVXDPTR,A;立即数;立即数41H送送81C55RAM的的7E20H单元单元81C55既有RAM又有I/O口,此外,还有计数器。在同时需要扩展RAM、I/O和计数器的系统中,选用81C55特别经济,是单片机系统中常用的外围接口芯片之一常用的外围接口芯片之一。389.3 利用利用74LSTTL电路扩展并行电路扩展并行I/O口口在单片机应用中,有些场合有些场合需要降低成本、缩小体积,这时采用TTL电路、CMOS电路锁存器或三态门
25、电路也可构成各种类型的简单输入/输出口。如图图9-10所示为一个利用用74LS244和和74LS273芯片芯片,将将P0口扩展成简单的输入口扩展成简单的输入/输出口的电路输出口的电路。74LS244作为扩展输入口,8个输入端个输入端分别接8个按钮开关。74LS273是8D锁存器扩展输出口扩展输出口,接8个个LED发光发光二极管二极管,以显示以显示8个按钮个按钮开关状态。开关状态。39图9-1074LSTTLI/O扩展展举例例当某条输入口线的按钮开关按下时,该输入口线为低电为低电平平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的
26、按钮开关的位置。该电路的工作原理电路的工作原理如下。当P2.0=0,=0(=1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入AT89S51片内。41当P2.0=0,=1(=0)时,选中74LS273芯片,CPU通过P0口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮。总之,在图9-10中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可。42输入
27、程序段:输入程序段:MOVDPTR,#0FEFFH;I/O地址地址DPTRMOVXA,DPTR;为低,为低,74LS244数据被读入数据被读入A中中输出程序段:输出程序段:MOVA,#data;数据;数据#dataAMOVDPTR,#0FEFFH;I/O地址地址#0FEFFHDPTRMOVXDPTR,A;为低,数据经为低,数据经74LS273口输出口输出43【例例9-9】编写程序把按钮开关状态通过图9-20的发光二极管显示出来。程序如下:DDIS:MOV DPTR,#0FEFFH;输入口地址;输入口地址DPTRLP:MOVXA,DPTR;按钮开关状态读入;按钮开关状态读入A中中MOVXDPTR
28、,A;A中数据送显示输出口中数据送显示输出口SJMPLP;反复连续执行;反复连续执行由程序可看出,对于扩展接口的输入/输出就像从外部RAM读/写数据一样方便。图图9-10仅仅扩展了两片,如果仅仅扩展了两片,如果仍不够用,还可扩展多片仍不够用,还可扩展多片74LS244、74LS273之类的芯片之类的芯片。但作为输入输入口时,一定要求有三态功能要求有三态功能,否则将影响总线的正常工作。449.4 9.4 用用用用AT89S51AT89S51单片机的串行口扩展并行口单片机的串行口扩展并行口单片机的串行口扩展并行口单片机的串行口扩展并行口串口的方式方式0用于用于I/O扩展扩展。方式0为同步移位寄存器
29、同步移位寄存器工作方式,波特率为fosc/12。数据由数据由RXD端(端(P3.0)输入)输入,同步移位时钟由TXD端(端(P3.1)输出。9.4.1 9.4.1 用用用用74LS16574LS165扩展并行输入口扩展并行输入口扩展并行输入口扩展并行输入口图9-11串口扩展两个扩展两个8位并行输入口。位并行输入口。74LS165是8位并行输入串行输出的寄存器。当74LS165的S/端由高到低跳变,并行输入端的数据被置入寄存器;当S/=1,且时钟禁止端(15脚)为低时,允许TXD(P3.1)移位时钟输入,在该脉冲作用下,数据由右向左方向移动。45串口扩展串口扩展串口扩展串口扩展TXD与所有74L
30、S165的的CP相连相连;RXD与74LS165的串串行输出端行输出端QH相连;P1.0与S/相连,控制74LS165的串行移位或并行输入;15脚接地,允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。图图9-11利用74LS165扩展并行输入口46【例例9-10】从16位扩展口读入5组数据(每组2B),把它们转存到内部RAM20H开始的单元。MOVR7,#05H;设置读入组数;设置读入组数MOVR0,#20H;设置内部;设置内部RAM数据区首址数据区首址START:CLRP1.0;并行置入数据,;并行置入数据,S/=0SETBP1.0;允许串行移位,;允许串行移位,
31、S/=1MOVR2,#02H;设每组字节数,;设每组字节数,即即74LS165的个数的个数RXDATA:MOVSCON,#00010000H;设置串口方式;设置串口方式0,允许,允许;接收,启动接收过程;接收,启动接收过程47WAIT:JNB RI,WAIT;未接收完一帧,循环等待;未接收完一帧,循环等待CLRRI;RI标志清标志清“0”,准备下次接,准备下次接收收MOVA,SBUF;读入数据;读入数据MOVR0,A;送至;送至RAM缓冲区缓冲区INC R0;指向下一个地址;指向下一个地址DJNZR2,RXDATA;未读完一组数据,;未读完一组数据,继续继续DJNZR7,START;5组数据未
32、读完重新并行置入组数据未读完重新并行置入;对数据进行处理;对数据进行处理48串行接收过程采用查询等待查询等待的方式,如必要,可改中断中断方式方式。9.4.2 9.4.2 用用用用74LS16474LS164扩展并行输出口扩展并行输出口扩展并行输出口扩展并行输出口图图9-12为串口外接两片两片74LS164(8位串入并出移位寄存器)扩展两个8位并行输出口的接口电路。图图9-12利用74LS164扩展并行输出口49当串口工作在方式0的发送,串行数据由串行数据由P3.0(RXD)送出,移位时钟由送出,移位时钟由P3.1(TXD)送出)送出。注意,由于74LS164无并行输出控制端无并行输出控制端,在
33、串行输入中,其输出端的输出端的状态会不断变化状态会不断变化,故某些场合,在74LS164输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。【例例9-11】将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序。START:MOVR7,#02H;设置要发送的字节个数;设置要发送的字节个数MOVR0,#30H;设置地址指针;设置地址指针MOV SCON,#00H;设置串行口为方式;设置串行口为方式050SEND:MOV A,R0MOV SBUF,A;启动串行口发送过程;启动串行口发送过程WAIT:JNB TI,WAIT;一帧未发完,等待;一帧未发完,等待CLR TIINCR0;取下一个数;取下一个数DJNZR7,SEND;未发完,继续,从子程序返回;未发完,继续,从子程序返回RET51小结及习题:小结及习题:1、在简单应用系统中,一般采用74系列TTL电路或4000系列CMOS电路芯片,将并行数据输入或输出,一般的TTL芯片的带负载能力强。2、对于8155的使用范围要多加熟悉 3、8155的工作方式的使用场合