单片机的扩展设计课件_第1页
单片机的扩展设计课件_第2页
单片机的扩展设计课件_第3页
单片机的扩展设计课件_第4页
单片机的扩展设计课件_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

单片机的扩展设计8.1外部程序存储器扩展NEXTHOME在使用MCS-51系列单片机时,当单片机无片内ROM或应用程序大于片内程序存储器时,必须通过外接ROM来构成、扩充系统的程序存储区。当使用外部存储器来扩展系统时,必须占用单片机的P0、P2口作为外部电路的数据、地址总线。此时,P0、P2口就不能作为通用的I/O端口。在系统扩展时,外部电路与单片机连接的依据是单片机访问外部存储器的时序,所以正确的理解时序是硬件电路设计的关键。在访问外部程序存储器时,由单片机的ALE/PRO引脚将低8位地址锁存到地址总线上,/PSEN引脚自动输出外部程序存储器的选通信号,并读取相应的指令。BACKNEXTHOME8.1.1常用外部程序存储器扩展的外部程序存储器需要具有存储数据非易失的特性,所以需要采用EPROM或E2PROM。1、可擦除程序存储器EPROM用户可以多次编程。编程加写脉冲后,某些存储单元的PN结表面形成浮动栅,阻挡通路,实现信息写入。用紫外线照射可驱散浮动栅,原有信息全部擦除,便可再次改写。2、电可改写程序存储器E2PROM既可全片擦除也可字节擦除,可在线擦除信息,又能失电保存信息,同时具备RAM、ROM的优点。但写入时间较长。BACKNEXTHOMEP2.7:::P2.0P0.7:::P0.0ALE/EAPsenCEA14::A8A7O7::::::A0O0OED7Q7

D0Q0CP2725632KROMMCS-51/CE=P2.7(A15)完整的地址信号MCS-51与32KROM的连接BACKNEXTHOME外部ROM的状态与地址线A15的关系表ROM引脚/CEA14~A8A7~A0地址范围ROM工作状态单片机引脚A15P2口P0口00000000001111111100000000111111110000H~07FFH选中11000000001111111100000000111111118000HFFFFH未选中BACKNEXTHOME下图是E2PROM2816的管脚示意图,与MCS-51单片机的连接同27256。BACKNEXTHOME8.1.2访问外部程序存储器的时序A15-A8(PC)A7-A0OPA7-A0常数存储器数据输出控制/Psen地址总线(高八位)P2口地址数据总线(低8位)P0口S1S2S6S5S4S3373地址锁存信号ALEA15-A8(DPTR+A)ABBACKNEXTHOME

P0、P2口作地址和数据总线。其中P0口作为地址和数据复用总线,前半部(A段)作地址总线,后半部(B段)作为数据总线。外部程序存储器ROM的操作步骤如下:

1,单片机必须为其提供完整的地址信息;

2,ROM芯片的/CE端=0,选中该芯片;

3,在满足上述条件的基础上,当ROM的/OE=0时(B时间段),存储器输出数据的三态门打开,并将与输入地址相对应的存储单元中的指令(数据)向外输出,单片机通过P0口将指令送至CPU内部。

74LS373锁存器:将A时间段P0口输出的低位地址进行保存,使ROM在B时间段仍然可以得到完整的地址信号。片外存储器访问时序说明(以27256位例)8.1.3外部程序存储器的容量扩展当一片ROM芯片的容量不够,需要使用2片以上的芯片进行容量扩展时,可以通过译码电路实现。BACKNEXTHOMEP2.7P2.6P2.5P2.4P2.0P0口ALEPsen/CE0A12A8A78K×8A0/OE1O0~O774LS373Cy7BA

0y/CE1A12A8A78K×8A0/OE1O0~O7/CE7A12A8A78K×8A0/OE1O0~O7MCS–5174LS138P2.7~P2.5138输出选中ROMP2.4~P0.0有效地址范围000Y0=0第1片0000H~1FFFH0000H~1FFFH001Y1=0第2片0000H~1FFFH2000H~3FFFH010Y2=0第3片0000H~1FFFH4000H~5FFFH011Y3=0第4片0000H~1FFFH6000H~7FFFH100Y4=0第5片0000H~1FFFH8000H~9FFFH101Y5=0第6片0000H~1FFFHA000H~BFFFH110Y6=0第7片0000H~1FFFHC000H~DFFFH111Y7=0第8片0000H~1FFFHE000H~FFFFH采用LS138译码器实现ROM扩展示意表BACKNEXTHOME【小结】:1,单片机的P0、P2口作为地址数据总线;2,P0口为数据、地址复用总线,所以必须加入八位锁存器74LS373来锁存P0口的低八位地址。3,外接ROM是靠Psen信号来打开数据三态门,使ROM中的指令通过P0口送入单片机内部。4,存储器的容量M与其地址线条数n的关系:M=2n5,当使用两片ROM扩展时,可以使用一个反向器实现容量的扩展,通过ROM芯片的/CE端实现。6,当使用2片以上的ROM芯片扩展时,就要使用译码器实现存储容量的扩展,译码器的输入与高位地址相连接,输出端分别与各ROM芯片的/CE连接(如前图所示)。7,当外接ROM的高八位地址线与P2口高八位线没有完全用足时,要注意外存储的地址重叠问题。BACKNEXTHOME8.2外部数据存储器的扩展存储器中的信息可读可写,但失电后会丢失信息。双极型:由TTL电路组成基本存储单元,存取速度快。

MOS型:由CMOS电路组成基本存储单元,集成度高、功耗低。

SRAM:静态RAM。存储单元使用双稳态触发器。

DRAM动态RAM:使用电容作存储元件,需要刷新电路。集成度高,反应快,功耗低,但需要刷新电路。8.2.1常用外部数据存储器1、分类BACKNEXTHOME2、结构外部数据存储器(RAM)的内部结构如下图所示,其引脚与ROM大致相同,增加了R/W(OE/WE)读写允许线,用于打开数据通道,决定数据的传送方向和传送时刻。工作方式CSOER/WDi读001DOUT写010DIN禁止1××ZBACKNEXTHOMEBACKNEXTHOMEBACKNEXTHOMEMCS-51与32KRAM的连接示意图62648KRAMP2.5P2.4::P2.0P0.7:::P0.0ALERDWRCEA12::A8A7O7::::::A0O0OEWED7Q7

D0Q0CPMCS-51/CE=P2.5(A12)3、连接8.2.2访问外部数据存储器的时序与程序存储器扩展原理相同,数据存储器的扩展也是使用P0、P2口作为地址、数据总线。

1,当使用MOVX@Ri指令时,系统使用P0口输出低8位地址信号,高8位地址信号由P2口输出;

2,当使用MOVX@DPTR指令时,P0口输出DPTR提供的低八位地址信号,P2口自动输出DPTR提供的高八位地址信号。

3,不论哪种情况,P0口都是地址/数据复用总线,因此仍要使用74LS373来锁存P0口的地位地址信号。与ROM扩展不同:使用访问外部RAM指令MOVX时,在时序中将产生/RD或/WR信号,因此将此信号与外RAM的读(/RD)、写(/WR)控制端相连接就实现系统对外RAM的读写控制。BACKNEXTHOME设外部RAM2000H单元中有一个数x,且DPTR中已存有该数地址2000H.则CPU执行外部ROM中的指令: MOVX A,@DPTR ;将外RAM的X送ABACKNEXTHOMES1S2S6S5S4S3S1S2S6S5S4S3ALEA15-A8(PC)A15-A8(DPH)A7-A0指令A7-A0(DPL)数据RDP2口P0口选中外部RAMWR选中外部RAMPsen8.2.3多片外部数据存储器的扩展P2.7P2.6P2.5P2.4P2.0ALEP0口/WR/RD/CEA12A8A76264A0/WE/OEO0~O774LS373Cy7BA

0y/CEA12A8A76264A0/WE/OEO0~O7/CEA12A8A76264A0/WE/OEO0~O7MCS–5174LS138需要使用多片RAM进行容量扩展时,同样可以通过译码电路实现。BACKNEXTHOME8.3I/O接口扩展设计及应用如果系统使用了外部存储器时,P0、P2口和P3口都被外存储器占用,留给用户的只有P1口。因此I/O端口的扩展是使用MCS-51作为嵌入式控制器进行硬件设计中经常遇到的问题:8.3.1可编程并行I/O接口芯片8255A1,8255A的内部结构和引脚功能

8255A是Intel公司生产的标准外围接口芯片,它采用NMOS工艺制造,用单一+5V供电,有40根引脚;具有A、B、C三个端口共24条I/O线,可以通过编程的方法来设定端口的各种功能;由于8255A的功能强,又能方便地与各种微机系统连接,同时不需要附加外部电路,因而得到了广泛的应用。BACKNEXTHOMEA口C口高四位B口C口低四位A组控制器B组控制器数缓冲据器读制写逻控辑PA7-0PB7-0PC7-4PC3-0D7-D0/RD/WRA0A1RESET/CSBACKNEXTHOME8255的内部结构图(一):内部结构:由四部分组成。1,A口,B口和C口:

A口:8位数据输出缓冲/锁存,输入缓冲/锁存的I/O端口。

B,C口:8位数据输出缓冲/锁存,输入缓冲的I/O端口。2,A组控制器,B组控制器接收CPU发送的控制字并确定8255的工作模式,其中A组控制器控制A口和C口的高4位;B组控制器控制B口和C口的低4位。3,数据缓冲器:双向8位,用于传送CPU与8255之间的数据和控制字。4,读写控制器:接收CPU送来的读(/RD),写(/WR)和片选(/CS)等信号,用于对8255的读写控制。BACKNEXTHOME(二)引脚功能:40脚DIP封装。1,数据总线D7~D0,与内部数据缓冲器连接,用来传送CPU与8255之间的数据字、控制字。2,控制总线: RESET:复位线,高电平有效; /CS:片选信号,低电平有效; /RD,/WR读写命令线:低电平有效; A0,A1:地址输入线,用于选中A口,B口,C口和控制寄存器。3,并行I/O总线(24条): PA7~PA0:双向I/O总线,可由控制字设定为输入、输出或输入输出双向方式; PB7~PB0:双向I/O总线,可由控制字设定为输入或输出方式; PC7~PC0:双向I/O总线,可以设定为传送I/O数据(模式0)或控制/状态信息(模式1,2);4,电源线: Vcc和GND.BACKNEXTHOME未选中XXXXXX1写控制字控制口C3H01110写C口C2H01100读C口C口C2H10100写B口C1H01010读B口B口C1H10010写A口C0H01000读A口A口C0H10000功能端口端口地址/WR/RDA1A0/CS8255控制信号功能、地址表(设/CS=C0H)BACKNEXTHOME2,8255A的工作方式及设置BACKNEXTHOME8255A有三种工作模式:模式0,模式1,和模式2。用户可以通过“8255A工作方式选择控制字”来设定所需的工作模式。(1)模式0:基本的输入/输出方式(2)模式1:选通输入、选通输出方式:A口、B口作为输入或输出,C口做联络线(3)模式2:A口的双向选通(输入/输出)方式(一)工作方式的设置8255有两个控制字:“方式控制字”和“C口置复位控制字”。两者以控制字的D7=1或D7=0来区别。“工作方式选择控制字”:用于确定三个端口的输入或输出等;D7:控制字标志位。1表明为“方式控制字”,0表明为C口置复位控制字;D6,D5:A组方式选择位。00:模式0,01:模式1,1X:模式2。D4:A口输入/输出控制位。=0时A口用于输出;=1时A口用于输入。D3:C口高4位输入/输出控制位。=0时C口高4位用于输出;=1用于输入。BACKNEXTHOMED2:B组方式选择位。D2=0时,B组设定为模式0;=1时,设定为模式1。D1:B口输入/输出控制。D1=0时,B口用于输出;=1时,B口用于输入。D0:C口低4位输入/输出控制。=0时用于输出;=1时,用于输入。D0D1D2D3D4D5D6D7=1标志位A组方式选择A口、C口高4B组方式B口、C口低4“C口单一置位复位控制字”:

使C口各位在模式1,2时单独置位或复位,以实现某些控制功能。如:设置或清除A口、B口的中断允许位等。D7:控制字标志位。=0表明为“C口单一支复位控制字”。D6~D4:不用。D3~D1:C口选择位。三位二进制数(000~111),确定C口中8个位(D7~D0)中的某一位。D0:置复位控制位。D0=0时,复位;D0=1时,置位。BACKNEXTHOMED0D1D2D3XXXD7=0标志位=0D6-D4位不用C口位选择位置复位控制位(二)模式0:基本的输入/输出方式在模式0时,CPU可以对8255A无条件的进行I/O数据传送,数据可以在8255A对应的锁存器中锁存。同样,外设的I/O数据同样可以送到各端口得到锁存或缓冲。也可以将某些位设定为外设的状态输入位,CPU通过查询状态与外设进行异步I/O数据传送。【注意】:当端口的输入/输出特性设定后,数据流是单向的; 作为输入端口时,只有A口的数据能够锁存; C口虽分为上、下四位,但操作时必须作为一个整体。BACKNEXTHOME【例】:设8255A的基本地址为0FFF8H,试编程将A口和C口的高4位设定为模式0的输出方式,B口和C口的低4位设定为模式0的输入方式。【解】: MOV DPTR,#0FFFBH ;控制寄存器地址送DPTR MOV A,#10000011B ;方式控制字83H送A MOV @DPTR,A ;控制字83H送控制寄存器(三)模式1:选通输入、选通输出方式A口、B口均可独立的设置为这种工作模式;在这种模式下,A口、B口通常用于传送与它们相连外设的I/O数据。而此时,C口作为A口、B口与外设之间的联络握手信号,可以实现CPU与外设之间以“中断”的方式进行异步I/O数据传送;在这种模式下,A口和B口的数据都能被锁存。模式1下C口各位定义如下:C口各位模式1模式2输入方式输出方式双向I/O方式PC7I/O/OBFa/OBFaPC6I/O/ACKa/ACKaPC5IBFaI/OIBFaPC4/STBaI/O/STBaPC3INTRaINTRaINTRaPC2STBb/ACKb由B口模式决定PC1IBFb/OBFb由B口模式决定PC0INTRbINTRb由B口模式决定BACKNEXTHOMEBACKNEXTHOMEINTR:8255A发出的中断请求信号,经反相后送单片机。IBF:8255A发出“输入缓冲器满”信号。/OBF:输出缓冲器满信号/STB:外设发出的“选通信号”,用于8255A的数据锁存用。/ACK:外设发出通知8255A的“已接收到数据”的应答信号。【例】:8255的模式1:选通输入方式(A口)P08031/INT0D7-D0PAPC4PC5PC3D7-D0输入设备INTEa/STBaIBFaINTRa12BACKNEXTHOME1,当外设输入数据到PA口时,自动的向/STBa发出一个低电平选通信号;2,8255A收到/STBa上的负脉冲后作两件事:一是将数据存入A口输入缓冲/锁存器中;二是输入“缓冲器满”的IBFa高电平信号,通知外设已收到数据。3,8255A检测到/STBa变为高电时,将INTRa变高向CPU申请中断。4,CPU响应中断后,从A口读取数据,并在读走数据后8255A撤掉INTRa信号,并使IBFa变低通知外设送下一个字节的数据。(四)模式2:A口的双向(输入/输出)方式只有A口具有模式2方式。此时,PA口为双向I/O总线。

1,当PA作输入口时,由/STBa和IBFa信号控制,过程同模式1的输入操作。

2,当PA作输出口时,由/OBFa和/ACKa控制,工作过程同模式1的输出操作。模式2非常适应像终端一类的外设,如键盘、显示器等设备。BACKNEXTHOMEP08031/INT0D7-D0PAD7-D0输入设备PC7INTE1/OBFa/ACKaINTRaPC6PC4PC5PC3IBFa/STBa+INTE23,8255A的应用举例设计要求:A口设为输入口,输入数据存入DATA0中;B口和C口设为输出口,分别从DATA1和DATA2取数据输出。/RD/WRP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALE89C51

D7Q7D6Q6D5Q5D4Q4D3Q3D2Q2D1Q1D0Q074LS373G/E/RD/WRRESET/CS

PC口

8255AA1A0

PB口D7D6D5D4D3D2PA口D1D0/CS=FF7XHA口:FF70HB口:FF71H,C口:FF72H,控制口:FF73HBACKNEXTHOMEBACKNEXTHOME程序清单: ORG 0100HSTART: MOV A,#90H ;方式0,A输入,B、C 输出 MOV DPTR,#0FF73H ;8255A控制口地址送指针 MOVX @DPTR,A ;控制字送8255A控制寄存器 MOV DPTR,#0FF70H ;A口地址送指针 MOVX A,@DPTR ;从A口输入数据到A MOV DATA0,A ;输入数据存入DATA1单元 MOV DPTR,#0FF71H ;B口地址送指针 MOV A,DATA1 ;从内存DATA1单元中取数 MOVX @DPTR,A ;数据从B口输出 MOV DPTR,#0FF72H ;C口地址送指针 MOV A,DATA2 ;从内存DATA2单元中取数 MOVX @DPTR,A ;数据从C口输出00001001标志位A组方式选择A口、C口高4B组方式B口、C口低48.3.2可编程RAM及并行I/O接口芯片8155H

8155H是Intel公司生产的可编程多功能接口芯片,它采用NMOS工艺制造,用单一+5V供电,有40根引脚;内部具有两个可编程的8位并行I/O口、一个6位并行I/O口、一个14位定时器以及256字节的RAM存储器;由于8155H的功能强,可以直接与MCS-51系列单片机连接,同时不需要附加外部电路,因而单片机应用系统中最常用的一种接口芯片。1,8155H的逻辑结构及引脚BACKNEXTHOMEBACKNEXTHOMEBACKNEXTHOMEBACKNEXTHOMEBACKNEXTHOME2,8155H中RAM和I/O端口的编址

8155共有256个字节RAM,可以安排在64k字节外RAM空间的任一区域中,具体由CE、IO/M与MCS-51单片机的高位地址线的连接方法确定。单片机访问时应使CE=0,IO/M=0;片内单元由AD0~AD7确定。

8155的I/O部分有7个可编程程序寄存器,如图所示。单片机要访问这些寄存器必须使CE=0、IO/M=1。其命令寄存器(只写)、状态寄存器(只读),合用一个地址,所以8155安排了6个端口,由AD2~AD0三位编码确定,BACKNEXTHOME3,8155H的编程设置及工作方式PAPBPC1PC2IEAIEBTM1TM2D7D6D5D4D3D2D1D0对8155H的设置是通过写入控制命令寄存器的命令字来实现的。命令寄存器只能写入,不能读出,其具体格式及定义如下:BACKNEXTHOME0:A口输入;1:A口输出0:B口输入;1:B口输出00(ALT1):基本I/O方式,C口为输入01(ALT2):基本I/O方式,C口为输出02(ALT3):A口选通I/O,B口基本I/O,C口高三位输出,低三位为联络信号03(ALT4):选通方式,C口为联络信号命令字和状态字PAPBPC1PC2IEAIEBTM1TM2D7D6D5D4D3D2D1D0A口中断:0禁止,1允许B口中断:0禁止,1允许定时器工作方式:00=无操作01=停止计数10=计满后停止11=开始计数BACKNEXTHOME关于定时器控制位(TM1,TM2)的补充说明:当TM1,TM2=11时,装入计数长度和方式后立即开始计数,若计数器正在计数,则待计数器溢出后以新装入的计数长度和方式进行计数。INTRAABFINTEAINTRBBBFINTEBTIMER×D7D6D5D4D3D2D1D0在8155H中,其状态寄存器是与命令寄存器共用一个地址,只能读出,不能写入,读出的数据为表示8155H当前状态的状态字A口中断请求A口缓冲器满/空A口中断允许B口中断请求B口缓冲器满/空B口中断允许定时器中断BACKNEXTHOME8155H的工作方式(1)存储器方式此方式下8155H相当于一个256字节的外部RAM,此时要求I/M=0,CE=0,单片机通过AD0~AD7对其寻址并进行读写操作。BACKNEXTHOMEP0口AD0~AD7ALEALEP2.0I/MCERDRDWRWRP2.7(2)I/O方式BACKNEXTHOME基本I/O方式:当命令字中的PC1、PC2设置为00或01时,选择的工作方式为方式1或方式2,即基本I/O方式,这时不用联络信号,C口可以做为输入(方式1)或输出(方式2)。选通I/O方式:当命令字中的PC1、PC2设置为10或11时,选择的工作方式为方式3或方式4,即选通I/O方式:方式3:规定A口为选通I/O口,B口为基本I/O口,C口高3位为数据输出线,C口的低3位作为A口的联络线

PC0→AINTR PC1→ABF PC2←ASTB

方式4:规定A口、B口均为选通I/O、C口的低3位作为A口的联络线(与方式3相同),C口的高3位作为B口的联络线。

PC3→BINTR PC4→BBF PC5←BSTBBACKNEXTHOMEC口在两种I/O工作方式下的定义BSTB(B口选通)输出输出输入PC5BBF(B口缓冲器满)输出输出输入PC4BINTR(B口中断)输出输出输入PC3ASTB(A口选通)ASTB(A口选通)输出输入PC2ABF(A口缓冲器满)ABF(A口缓冲器满)输出输入PC1AINTR(A口中断)AINTR(A口中断)输出输入PC0ALT4ALT3ALT2ALT1选通I/O方式通用I/O方式C口(3)计数器/定时器方式

8155H中有一个14位减1计数器,可对从Tin端输入的脉冲进行减法计数,计数终值为0。设置了两个8位寄存器,其中14位用于存放计数值,最高两位规定定时器的输出方式。对定时器的编程:首先将计数常数及定时器输出方式写入定时器寄存器中,对定时器的启停控制则是通过命令寄存器实现的。BACKNEXTHOMET0T1T2T3T4T5T6T7D7D6D5D4D3D2D1D0T8T9T10T11T12T13M1M2D7D6D5D4D3D2D1D0低8位高8位两个8位寄存器数据格式M1M2方式00011011定时器输出波形单个方波连续方波单个脉冲连续脉冲BACKNEXTHOME8155H的定时器/计数器与MCS-51单片机内部的定时器/计数器在功能上是相同的,都有计数和定时两种功能,本质都是计数,溢出后发出信号并可触发中断。在两个寄存器中,低14位组成计数器,高两位决定TMROUT的输出方式,如下表所示。8155H中的计数/定时器与MCS-51单片机内部计数/定时器的比较BACKNEXTHOME

8155H的计数/定时器为减法计数,而MCS-51单片机内部计数/定时器为加法计数,因此二者确定计数初值的方法是不同的。

MCS-51单片机内部的计数/定时器有多种工作方式,而8155H的计数/定时器只有一种固定的工作方式,即14位计数。

MCS-51单片机内部的计数/定时器有两种计数脉冲,当定时工作时由芯片内部提供固定频率的计数脉冲;当计数工作时由芯片外部引入计数脉冲。而8155H的计数/定时器不论定时还是计数,必须由外部提供计数脉冲到TMRIN引脚。

MCS-51单片机内部的计数/定时器,在计数溢出时自动置位TCON中的TF位,以供用户查询或触发中断;而8155H的计数/定时器在计数溢出时却是通过TMROUT引脚向外部发出一个脉冲信号。【注意】:8155H的计数/定时器在计数过程中,寄存器中的数值并不直接表示外部输入的脉冲数。4,8155H与MCS-51系列单片机的连接BACKNEXTHOMEP0口AD0~AD7ALEALEP2.0I/MCERDRDWRWRP2.7TINTOUT【注意】:若要使用8155H的计数/定时器时,需在其输入(TMRIN)和输出(TMROUT)引脚接入适当连接信号。8.3.3使用普通TTL芯片扩展并行I/O接口BACKNEXTHOME当需要扩展的I/O口要求不高,且地址线被占用不多时,可采用普通的TTl芯片进行扩展,通常用74LS244(8位三态缓冲器及总线驱动器)扩展输入口,用74LS373(8D锁存器)扩展输出口,如图所示。在使用TTL芯片扩展接口时,还应注意两点:(1)I/O地址的安排,如果扩展的接口不多,则可用线选寻址,在如下图中P2.0来选择一个输入口和一个输出口。线选法未能使地址空间得到充分利用,对于RAM和I/O口容量较大的系统,可用74LS138作为地址译码器,译码出的信号作为片选信号。(2)总线负载能力的扩大:P0口作地址/数据总线时,其负载能力为8个LSTTL电路,P2口作为地址总线时,其负载能力为4个LSTTL电路,如果超过必须增加总线驱动器,如:74LS244(单向)、74LS245(双向)等。BACKNEXTHOME8.4A/D、D/A的接口设计在单片机应用系统中,经常要用到模拟量/数字量(A/D)、数字量/模拟量(D/A)转换器,因此本节介绍A/D、D/A转换器的工作原理及与单片机的接口方法。8.4.1D/A转换器的原理及应用1,D/A转换器的转换原理BACKNEXTHOMED/A转换器D7:D0tV数字量输入模拟量输出D/A转换器就是将数字量转换成模拟量输出,其工作过程如下图所示:T型电阻网络构成的D/A转换器:T型网络如下图所示:Iout=I3+I2+I1+I0RRRRR2R2R2R2RVR3210I3I2I1I0Iout分析0,1,2,3各点对地的电阻(=R)分析各点电压和I3,I2,I1,I0电流:因为 I3=I总×1/2所以I3=VR/(2×R)= U2=VR/2所以I2=VR/(2×2R)= U1=U2/2=VR/4所以I1=VR/(4×2R)= U0=U1/2=VR/8所以I0=VR/(8×2R)=BACKNEXTHOMERRRRR2R2R2R2RVREFI3I2I1I0b3b2b1b0四位DAC寄存器-+RfIRfIout1Vout电流/电压变换Vout=-Iout×RfIout2BACKNEXTHOME2,DAC0832芯片介绍8位输入寄存器8位DAC寄存器8位T型电阻网络DI7DI6DI5DI4DI3DI2DI1DI0ILE/CS/WR1/WR2/XFERM1M3VREFIout2Iout1RfbGNDRf=1允许输入=0锁存数据阻断新数据=1允许输入进行转换=0锁存数据阻断新数据DAC0832内部结构示意图BACKNEXTHOMEBACKNEXTHOME8位输入数据寄存器:存放CPU送来得数据,由M1控制;8位DAC寄存器:存放待转换的数据,由M3控制;带有开关的8位T型电阻网络:输出与数字量对应的模拟电流。DAC0832芯片引脚介绍:数字量输入线DI7~DI0:第1级缓冲控制线:

ILE:允许数字量输入线,高电平有效。

/CS:片选线,低电平有效。

/WR1:写命令控制线,低电平有效。

ILE=1,/CS,/WR1=0时,M1为1,数据进入输入寄存器。反之,条件不满足时,M1=0,锁存器锁存数据。第2级缓冲控制线(控制DAC转换时间):

/WR2:写命令控制线,低电平有效。

/XFER:输入传送控制线,低电平有效。

/WR2=0,/XFER=0时,M3为1,数据进入DAC寄存器,通过T型电阻网络实现DAC转换。反之,条件不满足时,M3=0,锁存器锁存数据。

DAC寄存器不接收前面输入寄存器的数据。BACKNEXTHOME输出线:

Rfb:与外接运算放大器的输出端相连。

Iout1、Iout2:模拟电流输出线,分别与运算放大器的反相端、同相端连接。电源线:

VCC:电源输入线,+5V~+15V之间。

VREF:参考电压输入线,-10V~+10V范围内,由基准电源提供。

DGND:数字电源地。

AGND:模拟电源地。-+IRfVout电流/电压变换DAC0832Iout1Iout2RfbMCS-51单片机与DAC0832芯片的连接:实际电路中常将DAC0832内部两个缓冲器中的一个接成直通方式,如将后级的DAC寄存器直通(/XFER,/WR2=0),用单片机的/WR与DAC0832的/WR1连接。这样,一旦数据进入输入寄存器DAC就开始进行转换。使用: MOVR0,#0FEH ;来选定DAC0832的片选/CS MOVX@R0,A;指令产生/WR信号使数据进入0832进行转换(A中为待转换的数字N)。/WRP0口ALE/WR1/WR2/XFERRfb/CSIout1ILEIout2DI7~DI0锁存器译码器+5V-+VoutFEHBACKNEXTHOMEBACKNEXTHOME【例】:使用DAC0832作波形发生器,分别输出锯齿波、三角波和方波。Voutt/WR1/WR2/XFERRfb/CSIout1ILEIout2DI7~DI0-+Vout1,锯齿波发生器程序: ORG 1000HSTART:MOV R0,#0FEH MOVX @R0,A INC A SJMP START END【说明】:单极性输出VoutVoutt/WR1/WR2/XFERRfb/CSIout1ILEIout2DI7~DI0-+VoutBACKNEXTHOME2,三角波发生器程序: ORG 1000HSTART:CLR A MOV R0,#0FEHDOWN: MOVX @R0,A INC A JNZ DOWNUP: MOVX @R0,A DEC A JNZ UP SJMP DOWN END【说明】:单极性输出VoutBACKNEXTHOME3,方波发生器程序: ORG 1000HSTART:MOV R0,#0FEHLOOP:MOV A,#00H MOVX @R0,A ACALL DELAY MOV A,#0FFH MOVX @R0,A ACALLDELAY SJMP LOOPDELAY:: END【说明】:单极性输出VoutVoutt/WR1/WR2/XFERRfb/CSIout1ILEIout2DI7~DI0-+Vout8.4.2A/D转换器的原理及应用A/D转换器用于实现模拟量向数字量的转换。按转换原理可分为四种:计数式、双积分式、逐次比较式及并行式,目前最常用的是双积分式和逐次比较式。1,A/D转换器的转换原理逐次比较式A/D转换器原理控制电路N位D/A转换网络N位寄存器SAR模拟电压输入VXA/D转换数据输出启动时钟状态+-比较器VXVSBACKNEXTHOMEBACKNEXTHOME工作过程如下:1,N位寄存器首先形成10000000;经DAC转换后送比较器与VX相比较;2,若VX>VS时,比较器通知N位寄存器保留最高位“1”。若VX<VS时,比较器通过控制器将最高位“1”清除(因为VX小于量程的一半127)。3,N位寄存器对次高位置1,再重复上面的过程,确定该位是“1”或“0”。4,经过8次比较确定了N位计数器从D7~D0的8位数据。整个过程由输入一个“启动”信号开始,到“状态”端输出一个标志信号结束。双积分式A/D转换器原理电子开关计数器控制逻辑数据输出标准时钟比较器积分器VXVREF0VRVXABtT1正比于输入电压固定积分时间T0固定斜率反向积分BACKNEXTHOME工作过程如下:1,首先对输入电压VX进行固定时间(T0)积分;2,对经过反向后的基准电压VR进行积分,直至比较器输出翻转。3,在对基准电压进行积分时,内部计数器开始对标准时钟进行计数。4,电压比较器输出翻转后停止计数,这时计数器中的数据即为A/D转换的数据。特点及常用型号:

逐次比较式A/D转换器的优点是速度快,转换精度较高;但抗干扰能力差且价格较高,其转换时间大约在几微秒到几百微秒之间。常用的型号有ADC08系列和AD574系列等。双积分式A/D转换器的优点是转换精度高,抗干扰能力强,价格便宜;缺点是转换速度慢,大约每秒几十次左右,因此常用于速度要求不高的场合。常用的型号有ICL71系列等。BACKNEXTHOME【注】:本课程以讲授逐次比较式A/D转换器为主。2,逐次比较式8位A/D转换器ADC0809ADC0809是典型的8位8通道逐次比较式A/D转换器,采用CMOS工艺制造。ADC0809的内部逻辑结构ADC0809的内部逻辑结构图BACKNEXTHOME八路模拟开关地址锁存IN026IN127IN228IN31IN42IN53IN64IN75A25B24C23ALE22+-比较器VXVS控制电路逐次比较寄存器SAR树状开关256电阻网络三态输出寄存器VccGNDVR(+)VR(-)11131216EOC7D721D620D519D418D38D215D114D017START6CLOCK10OE9BACKNEXTHOMEADC0809的引脚IN0~IN7:八路模拟电压输入端;ALE: 地址锁存控制信号;A~

C: 地址输入线,A为低位;START: 启动脉冲输入端,其中上升沿清SAR,下降沿启动ADC工作;EOC: 转换结束标志。此线输出高电平时表明转换完成。D7~D0: 数字量输出线。OE: 输出三态控制线。输入高电平时,引脚D7~D0上输出转换后的8位数字量。CLOCK: 时钟输入端。为ADC提供640KH的逐次比较脉冲时序。Vref(+)、

Vref(-):参考电压输入,为电阻网络提供电压。Vref(+)、

Vref(-)可以与Vcc和GND连接。Vcc、GND:电源和地。BACKNEXTHOME/RD/WRP0口MCS-51ALE/INT1OESTARTALEADC0809CBAD7~D0CLOCKEOC地址锁存器地址译码器++P0.2P0.1P0.0分频器F0HMCS-51单片机与ADC0809的连接使用MOVX@Ri,A指令启动ADC,A中为通道代码,Ri=F0H(/WR)使用MOVXA,@Ri

指令来读ADC的数据,Ri=F0H,(/RD)使用中断方式为ADC0809服务。【例】:试编程对IN0-IN7上的模拟电压采集并送到内部RAM30H开始的单元,设ADC地址为0F0H。 ORG 0A00H ;主程序START: MOV R1,#30H ;数据区指针R1赋初值30H MOV R4,#08H ;计数器R4赋初值08H MOV R2,#00H ;通道代码送R2 SETB EA SETB EX1 ;开/INT1中断 SETB IT1 ;设/INT1为边沿触发 MOV R0,#0F0H ;ADC地址送间址寄存器R0 MOV A,R2 ;通道代码送累加器A MOVX @R0,A ;送通道代码并启动ADC SJMP $ ;等待中断。。。。

ORG 0013H LJMP CINT1BACKNEXTHOME ORG 0100HCINT1: MOV R0,#0F0H ;中断服务程序 MOVXA,@R0 ;读入ADC数据 MOV @R1,A ;存入转换的数据 INC R1 ;修改数据区指针R1 INC R2 ;修改通道代码寄存器R2 MOV A,R2 ;通道代码送累加器A MOVX@R0,A ;送下一个通道代码并启动ADC DJNZ R4,LOOP ;若未采集完转LOOP CLR EX1 ;采集完时,关中断LOOP: RETI ;中断返回 ENDBACKHOME8.5键盘与显示接口设计8.5.1键盘接口BACKNEXTHOME键盘按其结构形式可分为编码式键盘和非编码式键盘两大类。编码式键盘是由其内部硬件逻辑电路自动产生被按键的编码。这种键盘使用方便,但价格较贵。单片机系统中普遍使用非编码式键盘。这类键盘应主要解决以下几个问题:(1)键的识别;(2)如何消除键的抖动;(3)键的保护。在以上几个问题中,最主要的是键的识别。非编码式键盘的连接与工作原理1.非编码式键盘的连接非编码式键盘一般采用独立连接式和矩阵排列式,如下图所示。BACKNEXTHOME+5V+5V独立连接式矩阵排列式行01232.非编码式键盘的工作原理对于独立连接式,只要不断扫描输入口,当输入数据全为“1”时,则无键盘按下。而对于矩阵排列式,则通常采用行扫描法。所谓行扫描法,就是通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所连接的输出端口得到的是全“1”信号;如果有键按下的话,则得到的是非全“1”信号。BACKNEXTHOME3.如何消除键的抖动由于按键为机械开关结构,因此机械触点的弹性及电压突跳等原因,往往在触点闭合或断开的瞬间会出现电压抖动,如下图所示。人按键的时间最快大约为20毫秒。4.键的保护键的保护是指当有双键或多键同时按下时会出现什么问题以及如何加以解决。以上图所示为例,若在同一行上有两个键同时按下,从硬件上来说,不会出现什么问题;从软件上来说,由于这时读入的列代码中出现了两个0,由此代码与行值组合成的键特征值就超出了原设定键的范围,因此也就查不出有效的键值来。一旦出现这样情况,一般作为废键处理。BACKNEXTHOME键盘接口电路1、独立连接式由于独立连接式的按键数量一般较少,因而可以直接连接到单片机的I/O口上,通过读I/O口指令来查询是否又按键被按下。BACKNEXTHOME2、矩阵排列式在一般情况下,单片机本身的I/O口会用作其它目的,则通常通过外扩I/O接口芯片来构成键盘接口电路,较常用的是8155、8255A等接口芯片。下图是采用8155接口芯片构成8×4键盘的接口电路,其中A口为输入,作为列线;C口为输出,作为行线(只用了PC0~PC3四根口线)。具体过程如下:首先,为了提高效率,一般先快速检查整个键盘中是否有键按下;然后,再确定按下的是哪一个键。其次,再用逐行扫描的方法来确定闭合键的具体位置。方法是:先扫描第0行,即输出1110(第0行为“0”,其余7行为“1”),然后读入列信号,判断是否为全“1”,是则扫描第1行。再次,若发现有键被按下,则延时一段时间后再次读入数据,若数据不为全“1”,且位置与上次读入数据相同,则可确定有键被按下,转去执行相应的服务程序。最后,重新开始第一步骤。采用8155的键盘接口电路BACKNEXTHOMEBACKNEXTHOME8.5.2LED

温馨提示

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

评论

0/150

提交评论