AT89S51单片机接口的扩展.ppt

上传人:scccc 文档编号:13020776 上传时间:2021-12-11 格式:PPT 页数:52 大小:1,008.50KB
返回 下载 相关 举报
AT89S51单片机接口的扩展.ppt_第1页
第1页 / 共52页
AT89S51单片机接口的扩展.ppt_第2页
第2页 / 共52页
AT89S51单片机接口的扩展.ppt_第3页
第3页 / 共52页
AT89S51单片机接口的扩展.ppt_第4页
第4页 / 共52页
AT89S51单片机接口的扩展.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《AT89S51单片机接口的扩展.ppt》由会员分享,可在线阅读,更多相关《AT89S51单片机接口的扩展.ppt(52页珍藏版)》请在三一文库上搜索。

1、第9章 AT89S51单片机 的I/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口P0P3,真正用作I/O口线的只有P1口的8位I/O口线和P3口的某些位线。因此,大多需要外部I/O接口的扩展。介绍AT89S51与常用的可编程I/O接口芯片81C55的扩展接口设计。此外还介绍使用廉价的74LSTTL芯片扩展并行I/O接口以及用AT

2、89S51串行口来扩展并行I/O接口的设计。最后介绍使用I/O口控制的声音报警接口。,学习要求1、掌握TTL/CMOS简单I/O芯片的硬件扩展及编程2、熟悉8155芯片的结构、功能、控制字3、掌握8155芯片与89C51的接口及程序设计方法,9.1 I/O接口扩展概述扩展I/O接口与扩展存储器一样,都属于系统扩展的内容。扩展的I/O接口应该具有哪些功能?9.1.1 扩展的I/O接口功能扩展的I/O接口电路主要应满足以下功能要求。1实现和不同外设的速度匹配大多数外设的速度很慢,无法和s量级的单片机速度相比。单片机在与外设间进行数据传送时,只有在确认外设已为数据传送做好准备的前提下才能进行数据传送

3、。外设是否准备好,就需要I/O接口电路与外设之间传送状态信息,以实现单片机与外设之间的速度匹配。,5,2输出数据锁存与外设比,单片机的工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。所以在扩展的I/O接口电路中应有输出数据锁存器,以保证输出数据能为慢速的接收设备所接收。3输入数据三态缓冲数据总线上可能“挂”有多个数据源,为使传送数据时不发生冲突,只允许当前时刻正在接收数据的I/O接口使用数据总线,其余的I/O接口应处于隔离状态,为此要求I/O接口电路能为数据输入提供三态缓冲功能。,6,9.1.2 I/O端口的编址介绍I/O端口编址之前,首先要弄清楚I/O接口和I/O

4、端口的概念。I/O接口是单片机与外设间的连接电路的总称。I/O端口(简称I/O口)是指I/O接口电路中具有单元地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,如数据口,命令口,状态口。当然,并不是所有的外设都一定需要3种端口齐全的I/O接口。每个I/O接口中的端口都要有地址,以便AT89S51通过读写端口来和外设交换信息。常用的I/O端口编址有两种方式,独立编址方式与统一编址方式。,7,1独立编址I/O端口地址空间和存储器地址空间分开编址。优点是I/O地址空间和存储器地址空间相互独立,界限分明。但需要设置一套专门的读写I/O端口的指令和控制信号。2统一编址把I/O端口与数据存储器

5、单元同等对待。I/O端口和外部数据存储器RAM统一编址。因此外部数据存储器空间也包括I/O端口在内。优点是不需专门的I/O指令。缺点是需要把数据存储器单元地址与I/O端口的地址划分清楚,避免数据冲突。,8,9.1.3 I/O数据的传送方式为了实现和不同外设的速度匹配,必须根据不同外设选择恰当的I/O数据传送方式。I/O数据传送方式有:同步传送、异步传送和中断传送。1同步传送同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片机和外部数据存储器之间的数据传送。2查询传送又称有条件传送(也称异步式传送)。通过查询外设“准备好”后,再进行数据传送。优点是

6、通用性好,硬件连线和查询程序简单,但工作效率不高。,9,外部并行I/O口,3中断传送为了提高单片机对外设的工作效率,通常采用中断传送方式,来实现I/O数据的传送。单片机只有在外设准备好后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。采用中断方式可大大提高工作效率。9.1.4 I/O接口电路常用的外围I/O接口芯片:(1)82C55:可编程通用并行接口(3个8位I/O口)。,10,(2)81C55:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256RAM单元,1个14位的减法计数器)。都可以和AT8

7、9S51直接连接,接口逻辑简单。,11,9.2 扩展I/O接口芯片81C55的设计包含256B的RAM存储器(静态),RAM的存取时间为400ns,可编程的两个8位并行口PA和PB,可编程的一个6位并行口PC,以及一个14位的减1计数器。PA口和PB口可工作于基本输入/输出方式(同82C55的方式0)或选通输入/输出方式(同82C55的方式1)。81C55可直接与AT89S51相连,不需增加任何硬件逻辑电路。由于81C55片内集成有I/O口、RAM和减1计数器,因而是被选用的I/O接口芯片之一。9.2.1 81C55芯片介绍介绍81C55芯片基本特性。,12,8155,181C55的结构逻辑结

8、构如图9-1。 图9-1 81C55的逻辑结构,281C55的引脚功能40引脚,采用双列直插式封装,如图9-2所示。 图9-2 81C55的引脚图,14,各引脚功能如下。(1)AD7AD0,为地址/数据线,与AT89S51单片机的P0口相连,用于分时传送地址/数据信息。(2)I/O总线(22条)。PA7PA0为通用I/O线,数据传送方向由写入81C55的命令字决定(图9-3);PB7PB0为通用I/O线,用于传送PB口上的外设数据,数据传送方向也由写入81C55的控制字决定。PC5PC0为数据/控制线,共有6条,在通用I/O方式下,用作传送I/O数据;在选通I/O方式下,用作传送命令/状态信息

9、(见表9-3)。,15,(3)控制引脚RESET:复位输入线,在RESET线上输入一个大于600ns宽的正脉冲时,81C55即可处于复位状态,PA、PB、PC三口也定义为输入方式。 、IO/ : 为片选线,若 =0,则AT89S51单片机选中本81C55工作;否则,本81C55未被选中。IO/ 为I/O端口或RAM存储器选择线,若IO/ =0,则AT89S51单片机选中81C55片内的RAM存储器;若IO/ =1,则AT89S51单片机选中81C55的某一I/O端口。 和 :当 =0且 =1时,81C55被读出数据状态;当 =1且 = 0时,81C55被写入数据状态。,16,ALE:允许地址输

10、入线,高有效。若ALE=1,则81C55允许AT89S51通过AD7AD0线发出地址锁存到81C55片内“地址锁存器”;否则,81C55地址锁存器处于封锁状态。81C55的ALE常和AT89S51的ALE相连。TIMERIN和 :TIMERIN是计数器脉冲输入线,输入的脉冲上跳沿用于对81C55片内的14位计数器减1。 为计数器输出线,当14位计数器减为0时就可以在该引线上输出脉冲或方波,输出脉冲或方波与所选的计数器工作方式有关。(4)电源线。VCC为+5V电源输入线,VSS接地。,17,3CPU对81C55 I/O端口的控制3个端口数据传送方式是由控制字和状态字来决定的。(1)81C55各端

11、口地址分配内部有7个端口,需要3位地址A2A0上的不同组合代码来加以区分。表9-2为端口地址分配以及RAM单元的选择。(2)81C55的控制字有一个控制寄存器和一个状态标志寄存器。工作方式由写入控制寄存器的控制字来确定。控制字格式如图9-13所示。控制寄存器只能写入不能读出。,18,图9-3 81C55的控制字格式,19,控制寄存器中的D3D0位用来设置PA口、PB口和PC口的工作方式。D4、D5位用来确定A口、B口以选通输入/输出方式工作时是否允许中断请求。D6、D7位用来设置计数器的操作。(3)81C55的状态字有一个状态标志寄存器,用来存入PA口和PB口的状态标志。它的地址与控制寄存器地

12、址相同,只能对其读出,不能写入。格式如图9-4所示。,下面仅对状态字中的D6位给出说明。D6为计数器中断状态标志位TIMER。若计数器正在计数或开始计数前,则D6=0;若计数器的计数长度已计满,即计数器减为0,则D6=1,可作为计数器中断请求标志。在硬件复位或对它读出后又恢复为0。9.2.2 81C55的工作方式下面介绍81C55的两种工作方式。,21,图9-4 81C55状态字格式,22,1存储器方式存储器方式用于对片内256B RAM单元进行读/写,若IO/ =0且 =0,则AT89S51可通过AD7AD0上的地址选择RAM存储器中任意单元读/写。2I/O方式分基本I/O和选通I/O两种方

13、式,见表9-3。在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口的应答联络控制。PC口各位应

14、答联络线的定义是在设计81C55时规定的,其分配和命名见表9-3。,24,25,选通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口设定为本工作方式;若命令字D1=1且D3、D2=11,则PB口设定为本工作方式。选通I/O数据的输出

15、过程也和82C55的选通I/O输出情况类似,图9-5(b)所示为选通I/O数据输出的示意图。,26,图9-5 选通I/O方式示意图,27,3内部计数器/计数器及使用14位的计数器/计数器,CPU可通过软件来选择计数长度和计数方式。计数长度和计数方式由写入计数器的控制字来确定。计数器的格式如图9-6所示。 图9-6 81C55计数器的格式其中,T13T0为计数器的计数位;M2、M1用来设置计数器的输出方式。81C55计数器的4种工作方式及对应的 引脚输出波形如图9-7所示。,28,29,图9-7 81C55计数器工作方式及 引脚输出波形,任何时候都可设置计数器长度和工作方式,将控制字写入控制寄存

16、器。如果计数器正在计数,只有在写入启动命令后,计数器才接收新计数长度并按新的工作方式计数。若写入计数器的初值为奇数, 引脚的方波输出是不对称的。例如,初值为9时,计数器的输出,在5个计数脉冲周期内为高电平,4个计数脉冲周期内为低电平,如图9-8所示。 图9-8 计数长度为奇数时的不对称方波输出(长度为9),30,注意,81C55的计数器初值不是从0开始,从2开始。这是因为,如果选择计数器的输出为方波形式(无论是单方波还是连续方波),则规定是从启动计数开始,前一半计数输出为高电平,后一半计数输出为低电平。显然,如果计数初值是0或1,就无法产生这种方波。因此81C55计数器的写入初值范围是3FFF

17、H2H。如果硬要将0或1作为初值写入,其效果将与送入初值2的情况一样。81C55复位后使计数器停止计数。,31,9.2.3 AT89S51单片机与81C55的接口设计及软件编程,1硬件接口电路接口如图9-9所示。直接连接不需外加器件。,33,图9-9 AT89S51单片机与81C55的接口电路,在图9-9中,单片机P0口输出的低8位地址不需要另外加锁存器(81C55片内集成有地址锁存器),而直接与81C55的AD0AD7相连,既可作为低8位地址总线,又可作为数据总线,地址锁存控制直接用AT89S51发出的ALE信号。81C55的 端接P2.7,IO/ 端与P2.0相连。当P2.7=0时,若P2

18、.0=0,则访问81C55的RAM单元。由此可得到图9-19中81C55的各端口以及RAM单元的地址编码,见表9-4。,34,35,281C55的编程根据图9-9接口,介绍对81C55的具体操作。初始化程序设计【例9-6】若PA口定义为基本输入方式,PB口定义为基本输出方式,对输入脉冲进行24分频(81C55计数器的最高计数频率为4MHz),则81C55的初始化程序如下START:MOV DPTR,7F04H;DPTR指针指向计数器低8位MOV A,18H ;计数初值24送AMOVX DPTR,A;计数初值低8位装入计数器INC DPTR;指向计数器高8位,36,MOV A,40H;计数器为连

19、续方波输出MOVX DPTR,A;计数初值高6位装入计数器MOV DPTR,7F00H;指向命令/状态口MOV A,#0C2H;设定命令控制字MOVX DPTR,A;A口基本输入,B口基本输出,开启计数【例9-7】读81C55的7EF1H单元。程序如下:MOVDPTR,#7EF1H;DPTR指针指向81C55的7EF1H单元MOVX A,DPTR;7EF1H单元内容A,37,【例9-8】将立即数41H写入81C55 RAM的7E20H单元。程序如下:MOV A,#41H;立即数AMOV DPTR,#7E20H;DPTR指针指向81C55的7E20H单元MOVX DPTR,A;立即数41H送81

20、C55 RAM的7E20H单元81C55既有RAM又有I/O口,此外,还有计数器。在同时需要扩展RAM 、I/O和计数器的系统中,选用81C55特别经济,是单片机系统中常用的外围接口芯片之一。,38,9.3 利用74LSTTL电路扩展并行I/O口在单片机应用中,有些场合需要降低成本、缩小体积,这时采用TTL电路、CMOS电路锁存器或三态门电路也可构成各种类型的简单输入/输出口。如图9-10所示为一个利用74LS244和74LS273芯片,将P0口扩展成简单的输入/输出口的电路。74LS244作为扩展输入口,8个输入端分别接8个按钮开关。74LS273是8D锁存器扩展输出口,接8个LED发光二极

21、管,以显示8个按钮开关状态。,39,图9-10 74LSTTL I/O扩展举例,当某条输入口线的按钮开关按下时,该输入口线为低电平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。该电路的工作原理如下。当P2.0=0, =0( =1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入AT89S51片内。,41,当P2.0=0, =1 ( =0)时,选中74LS273芯片,CPU通过P0口输出数据锁

22、存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮。总之,在图9-10中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可。,42,输入程序段:MOV DPTR,#0FEFFH;I/O地址DPTRMOVX A,DPTR ; 为低,74LS244数据被读入A中输出程序段:MOV A,#data;数据#dataAMOV DPTR,#0FEFFH;I/O地址#0FEFFHDPTRMOVXDPTR,A; 为低,数据经74LS273口输出,43,【例9-9】编写程序把按钮开关状态通过图9-20

23、的发光二极管显示出来。程序如下:DDIS:MOV DPTR,#0FEFFH ;输入口地址DPTRLP:MOVX A,DPTR;按钮开关状态读入A中 MOVX DPTR,A;A中数据送显示输出口 SJMP LP ;反复连续执行由程序可看出,对于扩展接口的输入/输出就像从外部RAM读/写数据一样方便。图9-10仅仅扩展了两片,如果仍不够用,还可扩展多片74LS244、74LS273之类的芯片。但作为输入口时,一定要求有三态功能,否则将影响总线的正常工作。,44,9.4 用AT89S51单片机的串行口扩展并行口串口的方式0用于I/O扩展。方式0为同步移位寄存器工作方式,波特率为fosc/12。数据由

24、RXD端(P3.0)输入,同步移位时钟由TXD端(P3.1)输出。9.4.1 用74LS165扩展并行输入口图9-11串口扩展两个8位并行输入口。74LS165是8位并行输入串行输出的寄存器。当74LS165的S/ 端由高到低跳变,并行输入端的数据被置入寄存器;当S/ =1,且时钟禁止端(15脚)为低时,允许TXD(P3.1)移位时钟输入,在该脉冲作用下,数据由右向左方向移动。,45,串口扩展,TXD与所有74LS165的CP相连;RXD与74LS165的串行输出端QH相连;P1.0与 S/ 相连,控制74LS165的串行移位或并行输入;15脚接地,允许时钟输入。当扩展多个8位输入口时,相邻两

25、芯片的首尾(QH与SIN)相连。 图9-11 利用74LS165扩展并行输入口,46,【例9-10】从16位扩展口读入5组数据(每组2B),把它们转存到内部RAM 20H开始的单元。 MOVR7,#05H;设置读入组数 MOV R0,#20H;设置内部RAM数据区首址START:CLR P1.0;并行置入数据,S/ =0 SETB P1.0;允许串行移位,S/ =1 MOV R2,#02H;设每组字节数, 即74LS165的个数RXDATA:MOV SCON,#00010000H;设置串口方式0,允许;接收,启动接收过程,47,WAIT:JNB RI,WAIT;未接收完一帧,循环等待 CLR

26、RI;RI标志清“0”,准备下次接收 MOV A,SBUF;读入数据 MOV R0,A;送至RAM缓冲区 INC R0;指向下一个地址 DJNZ R2,RXDATA;未读完一组数据, 继续 DJNZ R7,START;5组数据未读完重新并行置入 ;对数据进行处理,48,串行接收过程采用查询等待的方式,如必要,可改中断方式。9.4.2 用74LS164扩展并行输出口图9-12为串口外接两片74LS164(8位串入并出移位寄存器)扩展两个8位并行输出口的接口电路。 图9-12 利用74LS164扩展并行输出口,49,当串口工作在方式0的发送,串行数据由P3.0(RXD)送出,移位时钟由P3.1(T

27、XD)送出。注意,由于74LS164无并行输出控制端,在串行输入中,其输出端的状态会不断变化,故某些场合,在74LS164输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。【例9-11】将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序。START:MOVR7,#02H;设置要发送的字节个数 MOV R0,#30H;设置地址指针 MOV SCON,#00H;设置串行口为方式0,50,SEND:MOV A,R0 MOV SBUF,A;启动串行口发送过程WAIT:JNB TI,WAIT;一帧未发完,等待 CLR TI INC R0;取下一个数 DJNZ R7,SEND ;未发完,继续,从子程序返回 RET,51,小结及习题:,1、在简单应用系统中,一般采用74系列TTL电路或4000系列CMOS电路芯片,将并行数据输入或输出,一般的TTL芯片的带负载能力强。 2、对于8155的使用范围要多加熟悉 3、8155的工作方式的使用场合,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1