单片机系统扩展_第1页
单片机系统扩展_第2页
单片机系统扩展_第3页
单片机系统扩展_第4页
单片机系统扩展_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

单片机系统扩展演示文稿目前一页\总数六十六页\编于二十点(优选)单片机系统扩展.目前二页\总数六十六页\编于二十点7.1扩展使用的三总线地址总线:P0-低8位P2-高8位数据总线:P0控制总线:RD、WR、ALE、PSEN

(读、写、地址锁存允许、外部ROM读选通)目前三页\总数六十六页\编于二十点程序存储器的扩展

在8051单片机外部扩展8K字节程序存储器2764的连接图目前四页\总数六十六页\编于二十点数据存储器扩展在8051单片机外部扩展一片8K字节数据存储器6264的连接图目前五页\总数六十六页\编于二十点7.2系统扩展选址方法1、线选法:利用单片机的一根空闲高位地址线(通常采用P2的某根口线)选中一个外部扩展I/O端口芯片,若要选中某个芯片工作,将对应芯片的片选信号端设为低电平,其它未被选中芯片的片选信号端设为高电平,从而保证只选中指定的芯片工作。优点:不需要地址译码器,可以节省器件,减小体积,降低成本缺点:可寻址的器件数目受到很大限制,而且地址空间不连续,这些都会给系统设计带来不便。目前六页\总数六十六页\编于二十点线选法进行外部扩展举例6264的地址范围:高8位地址变化范围P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0110×××××低8位地址变化范围:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0××××××××由此可得6264的地址范围为:C000H~DFFFH。目前七页\总数六十六页\编于二十点8255的地址范围:

高8位地址变化范围:P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.010111111低8位地址变化范围:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0111111××由此可得8255的地址范围为:BFFCH~BFFFH。0832的地址:高8位地址变化范围:P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.001111111低8位地址变化范围:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.011111111由此可得0832的地址为:7FFFH。目前八页\总数六十六页\编于二十点

2、地址译码法

对于容量较大的存储器或I/O端口较多的单片机应用系统进行外部扩展,当芯片所需要的片选信号多于可利用的高位地址线时,就需要采用地址译码法。地址译码法必须采用地址译码器,常用的地址译码器有3-8译码器74LS138、双2-4译码器74LS139等。目前九页\总数六十六页\编于二十点扩展器件片内字节地址数地址编码62648K0000H~1FFFH825543FFCH~3FFFH083217FFFH825549FFCH~9FFFH地址译码进行外部扩展举例目前十页\总数六十六页\编于二十点7.3并行I/O端口扩展芯片

一.8255可编程并行I/O接口扩展芯片

二.8155可编程并行I/O接口扩展芯片目前十一页\总数六十六页\编于二十点7.3.1I/O数据的传送方式为实现和不同外设的速度匹配,须根据不同外设选择恰当的I/O数据传送方式。I/O数据传送方式有:同步传送、异步传送和中断传送。1.同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片机和外部数据存储器之间的数据传送。2.查询传送又称有条件传送(也称异步式传送)。通过查询外设“准备好”后,再进行数据传送。优点是通用性好,硬件连线和查询程序简单,但工作效率不高。12目前十二页\总数六十六页\编于二十点3.中断传送为提高单片机对外设的工作效率,常采用中断传送方式,来实现I/O数据的传送。单片机只有在外设准备好后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。采用中断方式可大大提高工作效率。7.3.2I/O接口电路常用的外围I/O接口芯片:(1)82C55:可编程通用并行接口(3个8位I/O口);13目前十三页\总数六十六页\编于二十点(2)81C55:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256RAM单元,1个14位的减法计数器)。都可以和AT89S51直接连接,接口逻辑简单。7.3.4AT89S51扩展I/O接口芯片82C55的设计先介绍可编程并行I/O接口芯片82C55的应用特性,然后介绍AT89S51与82C55的接口电路以及软件设计。一、82C55芯片简介Intel公司的可编程并行I/O接口芯片,3个8位并行I/O口,3种工作方式,单片机与多种外设连接时的中间接口电路。引脚及内部结构如图9-1和图9-2。14目前十四页\总数六十六页\编于二十点82C55的引脚图82C55的内部结构15目前十五页\总数六十六页\编于二十点(1)引脚说明共40个引脚,引脚功能如下:D7~D0:三态双向数据线,与单片机的P0口连接,用来与单片机之间传送数据信息。CS*:片选信号线,低有效,表示本芯片被选中。RD*:读信号线,低有效,读82C55端口数据的控制信号。WR*:写信号线,低电平有效,用来向82C55写入端口数据的控制信号。Vcc:+5V电源。16目前十六页\总数六十六页\编于二十点PA7~PA0:端口A输入/输出线。PB7~PB0:端口B输入/输出线。PC7~PC0:端口C输入/输出线。A1、A0:地址线,用来选择82C55内部的4个端口。RESET:复位引脚,高电平有效。(2)内部结构如图,3个并行数据输入/输出端口,两种工作方式的控制电路,一个读/写控制逻辑电路和一个8位数据总线缓冲器。各部件的功能如下:17目前十七页\总数六十六页\编于二十点端口PA、PB、PC3个8位并行口PA、PB和PC,都可选为输入/输出工作模式,功能和结构上有差异。PA口:一个8位数据输出锁存器和缓冲器;一个8位数据输入锁存器。PB口:一个8位数据输出锁存器和缓冲器;一个8位数据输入缓冲器。PC口:一个8位的输出锁存器;一个8位数据输入缓冲器。通常PA口、PB口作为输入/输出口,PC口既可作为输入/输出口,也可在软件控制下,分为两个4位端口,作为端口PA、PB选通方式操作时的状态控制信号。18目前十八页\总数六十六页\编于二十点A组和B组控制电路是两组根据AT89S51写入的“命令字”控制82C55工作方式的控制电路。A组控制PA口和PC口的上半部(PC7~PC4);B组控制PB口和PC口的下半部(PC3~PC0),并可用“命令字”来对端口PC的每一位实现按位置“1”或清“0”。数据总线缓冲器数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。19目前十九页\总数六十六页\编于二十点读/写控制逻辑电路接收AT89S51单片机发来的控制信号RD*

、WR*

、RESET、地址信号A1、A0等,然后根据控制信号的要求,端口数据被AT89S51单片机读出,或者将AT89S51单片机送来的数据写入端口。各端口工作状态与控制信号的关系如表9-1。20目前二十页\总数六十六页\编于二十点21目前二十一页\总数六十六页\编于二十点二、工作方式选择控制字及端口PC置位/复位控制字可向82C55控制寄存器写入两种不同的控制字。1.工作方式选择控制字82C55有3种基本工作方式:(1)方式0—基本输入/输出;(2)方式1—选通输入/输出;(3)方式2—双向传送(仅PA口有此工作方式)。3种工作方式方式控制字来决定。格式如图。最高位D7=1,为本方式控制字的标志,以便与另一控制字相区别(最高位D7

=

0)。22目前二十二页\总数六十六页\编于二十点2382C55的方式控制字格式目前二十三页\总数六十六页\编于二十点PC口分两部分,随PA口称为A组,随PB口称为B组。其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1。【例7-5】AT89S51单片机向82C55的控制字寄存器(假设端口地址为FF7FH)写入工作方式控制字95H,根据图9-3所示,可将82C55编程设置为:PA口方式0输入,PB口方式1输出,PC口的上半部分(PC7~PC4)输出,PC口的下半部分(PC3~PC0)输入。#include<absacc.h>#defineCOM8255XBYTE[0xff7f] /*0xff7f为82C55的控制寄存器地址*/#defineucharunsignedchar……voidinit8255(void)24目前二十四页\总数六十六页\编于二十点{ COM8255=0x95; /*工作方式选择控制字写入82C55的控制寄存器*/……}2.PC口按位置位/复位控制字82C55的另一个控制字为PC口按位置位/复位控制字。即PC口8位中的任何一位,可用一个写入82C55控制口的置位/复位控制字来对PC口按位置“1”或清“0”。该功能主要用于位控。PC口按位置位/复位控制字的格式如图所示。【例7-6】AT89S51单片机向82C55的控制字寄存器写入工作方式控制字07H,则PC3置1;08H写入控制口,则PC4目前二十五页\总数六十六页\编于二十点清0。假设82C55的端口寄存器的地址为FF7FH,程序段如下:#include<absacc.h>#defineCOM8255XBYTE[0xff7f]/*0xff7f为82C55的控制寄存器地址*/……voidinit8255(void){ COM8255=0x07;/*PC置/复位控制字写控制寄存器,PC3=1*/COM8255=0x08;/*PC置/复位控制字写入控制寄存器,PC4=0*/……}

26目前二十六页\总数六十六页\编于二十点图PC口按位置位/复位控制字格式目前二十七页\总数六十六页\编于二十点三82C55的3种工作方式1.方式0

基本输入/输出方式。T89S51可对82C55进行I/O数据的无条件传送。例如,AT89S51单片机从82C55的某一输入口读入一组开关状态,从82C55输出控制一组指示灯的亮、灭。并不需要任何条件,外设I/O数据可在82C55的各端口得到锁存和缓冲。因此,方式0称为基本输入/输出方式。方式0下,3个端口都可以由软件设置为输入或输出,不需要应答联络信号。方式0基本功能:28目前二十八页\总数六十六页\编于二十点(1)具有两个8位端口(PA、PB)和两个4位端口(PC的上半部分和下半部分);(2)任何端口都可以设定为输入或输出,各端口的输入、输出共有16种组合。PA口、PB口和PC口均可设定为方式0,并可根据需要,向控制寄存器写入工作方式控制字,规定各端口为输入或输出方式。目前二十九页\总数六十六页\编于二十点【例7-7】假设82C55的控制字寄存器端口地址为FF7FH,则令PA口和PC口的高4位工作在方式0输出,PB口和PC口的低4位工作于方式0输入,初始化程序如下:ucharxdataCOM8255_at_0xff7f /*0xff7f为82C55的控制寄存器地址*/……voidinit8255(void){ COM8255=0x83; /*工作方式选择控制字写入控制寄存器*/……}30目前三十页\总数六十六页\编于二十点2.方式1应答联络的输入/输出工作方式。PA口、PB口皆可设成这种工作方式。方式1下,82C55的PA口和PB口通常用于I/O数据的传送,PC口用作PA口和PB口的应答联络信号线,以实现采用中断方式来传送I/O数据。PC口的PC7~PC0的应答联络线是规定好的,其各位分配如图所示,图中,标有I/O的各位仍可用作基本输入/输出,不作应答联络用。介绍方式1输入/输出时的应答联络信号与工作原理。31目前三十一页\总数六十六页\编于二十点图方式1输入应答联络信号目前三十二页\总数六十六页\编于二十点(1)方式1输入方式1输入应答联络信号如图。其中STB*

与IBF为一对应答联络信号。各应答联络信号的功能如下。STB*:是由输入外设发给82C55的选通输入信号,低有效。IBF:输入缓冲器满,应答信号。82C55通知外设已收到外设发来的且已进入输入缓冲器的数据,高有效。INTR:由82C55向AT89S51单片机发出的中断请求信号,高有效。INTEA:控制PA口是否允许中断的控制信号,由PC4的置位/复位来控制。33目前三十三页\总数六十六页\编于二十点INTEB:控制PB口是否允许中断的控制信号,由PC2的置位/复位来控制。方式1输入如图。下面以PA口的方式1输入为例,介绍方式1输入的工作过程。①当外设向82C55输入一个数据并送到PA7~PA0时,外设自动在STB*上向82C55发送一个低电平选通信号。②82C55收到STB*后,先把PA7~PA0输入的数据存入PA口的输入数据缓冲/锁存器,然后使输出应答线IBF变为高,通知输入外设,PA口已收到它送来的数据。③82C55检测到STB*由低电平变为高电平、IBFA(PC5)为“1”状态和中断允许INTEA(PC4)=1时,使INTRA(PC3)34目前三十四页\总数六十六页\编于二十点图PA口方式1输入工作过程示意图目前三十五页\总数六十六页\编于二十点变为高电平,向单片机发出中断请求。INTEA的状态可由用户通过指令对PC4的单一置位/复位控制字来控制。④单片机响应中断后,进入中断服务子程序来读取PA口的外设发来的输入数据。当输入数据被单片机读走后,82C55撤销INTRA上的中断请求,并使IBFA变低,通知输入外设可传送下一个输入数据。36目前三十六页\总数六十六页\编于二十点(2)方式1输出方式1输出时,应答联络信号如图。OBF*与ACK*

构成一对应答联络信号,应答联络信号功能如下。OBF*:端口输出缓冲器满信号,低有效,它是82C55发给外设的联络信号,表示外设可以将数据取走。ACK*:外设应答信号,低有效。表示外设已把82C55发出的数据取走。INTR:中断请求信号,高有效。表示该数据已被外设取走,向单片机发中断请求,如果AT89S51响应该中断,在中断服务子程序中向82C55写入要输出的下一数据。37目前三十七页\总数六十六页\编于二十点图方式1输出应答联络信号目前三十八页\总数六十六页\编于二十点INTEA—控制PA口是否允许中断,由PC6控制。INTEB—控制PB口是否允许中断,由PC2控制。方式1输出工作示意如图。以PB口的方式1输出为例,介绍工作过程。①AT89S51可以通过“MOVX@Ri,A”指令把输出数据送到B口的输出数据锁存器,82C55收到后便令输出缓冲器满引脚

OBF*

(PC1)变低,以通知输出设备输出的数据已在PB口的PB7~PB0上。②输出外设收到OBF*上低电平后,先从PB7~PB0上取走输出数据,然后使ACKB*

变低电平,以通知82C55输出外设已收到82C55输出的数据。39目前三十九页\总数六十六页\编于二十点

图PB口方式1输出工作过程示意图40目前四十页\总数六十六页\编于二十点③82C55从应答输入线ACKB*收到低电平后就对OBF*和中断允许控制位INTEB状态进行检测,若皆为高电平,则INTRB变为高电平而向单片机请求中断。④AT89S51单片机响应INTRB上中断请求后便可通过中断服务程序把下一个输出数据送到PB口的输出数据锁存器。重复上述过程,完成数据的输出。【例7-8】设置PA口为应答方式输入,PB口为应答方式输出。假设82C55的端口寄存器的地址为FF7FH,程序如下:ucharxdataCOM8255_at_0xff7f /*0xff7f为82C55的控制寄存器地址*/……41目前四十一页\总数六十六页\编于二十点voidinit8255(void){ COM8255=0xb4; /*工作方式选择控制字写入控制寄存器*/……}目前四十二页\总数六十六页\编于二十点3.方式2只有PA口有方式2。图

为工作示意图。方式2是方式1输入和输出组合。PA7~PA0为双向I/O总线。当作为输入口使用,PA7~PA0受STBA

和IBFA控制;当作输出端口使用,PA7~PA0受OBFA*、ACKA*

控制。目前四十三页\总数六十六页\编于二十点图9-9PA口在方式2下的工作示意图目前四十四页\总数六十六页\编于二十点方式2特别适用于像键盘、显示器一类的外部设备,因为有时需要把键盘上输入的编码信号通过PA口送给单片机,有时又需把单片机发出的数据通过PA口送给显示器显示。7.3.4AT89S51单片机与82C55的接口设计1.硬件接口电路如图为AT89S51扩展一片82C55的电路。P0.1、P0.0经74LS373与82C55的A1、A0连接;P0.7经74LS373与片选端CS*相连,其它地址线悬空;82C55的控制线RD*、WR*

直接与单片机RD*和

WR*端相连;单片机数据总线P0.0~P0.7与82C55数据线D0~D7连接。45目前四十五页\总数六十六页\编于二十点2.确定82C55端口地址图中82C55只有3条线与AT89S51地址线相接,片选端CS*、端口地址选择端A1、A0,分别接于P0.7、P0.1和P0.0,其他地址线全悬空。显然只要保证P0.7为低电平时,即可选中82C55;若P0.1、P0.0再为“00”,则选中82C55的PA口。同理P0.1、P0.0为“01”、“10”、“11”分别选中PB口、PC口及控制口。若端口地址用16位表示,其他无用端全设为“1”(也可把无用端全设为“0”),则82C55的A、B、C及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。46目前四十六页\总数六十六页\编于二十点图AT89S51单片机扩展一片82C55的接口电路47目前四十七页\总数六十六页\编于二十点如果没有用到的位取“0”,则4个端口地址分别为0000H、0001H、0002H、0003H,只要保证、A1、A0的状态,无用位设为“0”或“1”均可。3.软件编程在实际设计中,须根据外设的类型选择82C55的操作方式,并在初始化程序中把相应控制字写入控制口。下面根据图9-10,介绍对82C55进行操作的编程。【例7-9】根据上例图,要求82C55的PC口工作在方式0,并从PC5脚输出连续的方波信号,频率为500Hz,参考程序如下:48目前四十八页\总数六十六页\编于二十点#include<reg51.h>#include<absacc.h>#definePA8255XBYTE[0xff7c] /*0xff7c为82C55PA端口地址*/#definePB8255XBYTE[0xff7d] /*0xff7d为82C55PB端口地址*/#definePC8255XBYTE[0xff7e] /*0xff7e为82C55PC端口地址*/#defineCOM8255XBYTE[0xff7f]/*0xff7f为82C55控制寄存器地址*/#defineucharunsignedcharexternvoiddelay_1000us();49目前四十九页\总数六十六页\编于二十点voidinit8255(void){ COM8255=0x85; /*工作方式选择控制字写入控制寄存器*/}voidmain(void){ init8255(void)for(;;){ COM8255=0x0b; /*PC5脚为高电平*/delay_1000us(); /*高电平持续1000微秒*/COM8255=0x0a; /*PC5脚为低电平*/delay_1000us(); /*低电平持续1000微秒*/}}目前五十页\总数六十六页\编于二十点8155可编程并行I/O接口扩展芯片(1)8155内部结构及引脚功能目前五十一页\总数六十六页\编于二十点(2)8155的控制字格式目前五十二页\总数六十六页\编于二十点(3)8155的状态字格式目前五十三页\总数六十六页\编于二十点

8155片内可编程定时/计数器由两个8位寄存器组成,低8位和高6位存放计数初值,最高2位控制定时器的工作方式

(4)8155的定时器使用目前五十四页\总数六十六页\编于二十点(5)8155的端口地址分配AD7AD6AD5AD4AD3AD2AD1AD0选中的寄存器×××××000命令/状态寄存器×××××001PA口×××××010PB口×××××011PC口×××××100定时计数器的低8位寄存器×××××101定时计数器的高6位寄存器及工作方式字(2位)目前五十五页\总数六十六页\编于二十点8155接口扩展举例(1)8255与单片机连接图目前五十六页\总数六十六页\编于二十点8155的端口地址编码为:命令/状态寄存器地址:7F00H,片内RAM字节地址:7E00H~7EFFH,PA口地址:7F01H,PB口地址:7F02H,PC口地址:7F03H,定时计数器低位地址:7F04H,定时计数器高位地址:7F05H。目前五十七页\总数六十六页\编于二十点

若要求8155的PA、PB作为基本输出口,PC作为基本输入口,不允许中断,不启动定时计数器,则命令字为03H,初始化编程下:MOVDPTR,#7F00H;8155命令口地址MOVA,#03HMOVX@DPTR,A;写入命令字(2)8155初始化目前五十八页\总数六十六页\编于二十点

I2C总线是PHILIPS公司开发的一种简单、双向二线制同步串行总线,它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。主要特性如下:总线只有两根线:串行时钟线和串行数据线;每个连到总线上的器件都可由软件以唯一的地址寻址,并建立简单的主/从关系,主器件既可作为发送器,也可作为接收器;它是一个真正的多主总线,带有竞争检测和仲裁电路,可使多主机任意同时发送而不破坏总线上的数据;同步时钟允许器件通过总线以不同的波特率进行通信;同步时钟可以作为停止和重新启动串行口发送的握手方式;连接到同一总线的集成电路数只受400PF的最大总线电容的限制。利用I2C总线进行系统扩展

目前五十九页\总数六十六页\编于二十点

I2C总线接口的电气结构如图所示,组成I2C总线的串行数据线SDA和串行时钟线SCL必须经过上拉电阻Rp接到正电源上,连接到总线上的器件的输出级必须为“开漏”或“开集”的形式,以便完成“线与”功能。SDA和SCL都为双向I/O口线,总线空闲时皆为高电平。总线上数据传送最高速率可达100Kbit/s。I2C总线的电气结构

目前六十页\总数六十六页\编于二十点

I2C总线可以构成多主数据传送系统,但只有带CPU的器件可以成为主器件。主器件发送时钟、启动位、数据工作方式,从器件则接收时钟及数据工作方式。接收或发送则根据数据的传送方向决定。I2C总线上数据传送时的启动、结束和有效状态都由SDA、SCL的电平状态决定,在I2C总线规程中启动和停止条件规定如下:启动条件:在SCL为高电平时,SDA出现一个下降沿则启动I2C总线。停止条件:在SCL为高电平时,SDA出现一个上升沿则停止使用I2C总线。

目前六十一页\总数六十六页\编于二十点在启动和停止条件之间可转送的数据不受限制,但每个字节必须为8位,先传送最高位,在每个字节之后必须跟一

温馨提示

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

评论

0/150

提交评论