《单片机(微控制器)原理及应用》第8章单片机的系统扩展_第1页
《单片机(微控制器)原理及应用》第8章单片机的系统扩展_第2页
《单片机(微控制器)原理及应用》第8章单片机的系统扩展_第3页
《单片机(微控制器)原理及应用》第8章单片机的系统扩展_第4页
《单片机(微控制器)原理及应用》第8章单片机的系统扩展_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第8章单片机的系统扩展

教学目的:掌握单片机应用系统并行与串行外围扩 展的方法;掌握并行总线扩展中的地址译 码技术及软件设计方法。教学重点:并行总线扩展的硬件与软件设计方法。

教学难点:并行总线扩展的寻址及硬件设计方法。串行总线扩展的软件设计方法。8.1并行扩展概述8.1.1外部并行扩展总线

1.扩展方式并行I/O口并行扩展总线:三总线方式图8-1单片机的外部扩展三总线2.并行总线扩展基本问题总线连接电路设计、地址译码、器件地址.并行总线扩展电路设计。 并行总线扩展连接方式符合三总线连接方式。数据总线为三态口,在不传送数据时为高阻态。总线分时对不同的外设进行数据传送。8.1.2并行扩展的寻址方法

具有与计算机总线兼容的并行接口器件,应选择并行扩展总线方式扩展;外围器件为非总线兼容并行接口,只能通过I/O来扩展接口。并行总线具有三态输出,总线上可挂接多个并行接口器件,因此存在寻址问题。单片机并行扩展总线有严格的时序要求,数据传输要严格按照CPU时序运行。

1.线选法寻址 线选法是直接以系统的几根高位地址线作为芯片的片选信号。2.译码法寻址 译码法寻址由译码器组成译码电路对系统的高位地址进行译码,译码电路将地址空间划分若干块,其输出作为存储器芯片的片选信号分别选通各芯片,这样既充分利用了存储空间,又避免了空间分散的缺点,还可减少I/O口线。3.译码法寻址举例利用138译码器进行地址译码,将寻址范围等分的译码方法见下图。由图可见数据存储器与外设的统一编址方法。8.2存储器的并行扩展8.2.1数据存储器扩展概述单片机应用系统中并行扩展的数据存储器都是静态随机存储器SRAM,常用的SRAM有62系列的6264、62256、628128、628512等,存储容量分别为8KB、32KB、128KB、512KB等。数据存储器地址空间同程序存储器一样,由P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据线。

访问片外扩展数据存储器的4条寄存器间址指令:

MOVXA,@DPTRMOVX@DPTR,AMOVXA,@RiMOVX@Ri,A

图8-3(a)数据存储器读周期时序8.2.2访问片外RAM的操作时序访问片外RAM的操作包括读写两种操作时序,通过对操作时序的了解,可以更好地理解ALE、/RD、/WR、P0及P2等信号和数据线的作用,及P0口是如何分时传输低8位地址线和数据线的。

(b)数据存储器写周期时序图8-3访问片外RAM的操作时序(b)数据存储器写周期时序8.2.3数据存储器扩展举例

图8-4扩展32KBRAM8.3并行I/O接口的扩展

8.3.1简单的并行I/O扩展

在需要扩展I/O口,或者需要提高系统的带负载能力的情况,常采用锁存器、缓冲/驱动器等作为I/O口扩展芯片,这是单片机应用系统中经常采用的方法。这种I/O口一般都是通过P0口扩展,具有电路简单、成本低、配置灵活的优点。一般在扩展单个8位输出/输入口时,十分方便。图8-5简单I/O接口扩展电路图9-8简单I/O接口扩展电路图中输入和输出都是在P2.0为0时有效,它们占有相同的地址空间,但由于它们分别用读和写信号控制,因而尽管它们都直接与P0口相接,却不可能同时被选中,这样在总线上就不会发生冲突。系统中若有其它扩展RAM,或其它输入/输出接口,则可用线选法或译码法将地址空间区分开。按照图8-5电路的接法,要求实现如下功能:任意按下一个键,对应的LED亮,例如,按K1则LED1亮,按K2则LED2亮等。则编写程序如下:LOOP:MOVDPTR,#0FEFFH ;指向I/O口地址

MOVXA,@DPTR;从244读入数据,检测按钮 MOVX@DPTR,A;向273输出数据,驱动LEDSJMPLOOP ;循环8.3.2可编程I/O接口电路的扩展

可编程序接口是指其功能可由计算机的指令来加以改变的接口芯片。可编程I/O接口利用软件设置片内控制寄存器,可使一个接口芯片执行多种不同的接口功能,因此使用十分灵活。在此仅以在单片机中常用的一种可编程通用并行接口芯片8255A为例说明问题。1.8255A的引脚介绍①数据总线:

D0~D7、PA0~PA7、PB0~PB7、PC0~PC7②控制线:、、RESET③寻址线:、A0、A12.8255A可编程接口的结构

图8-68255A内部结构与引脚

3.8255A的工作方式方式0(基本输入/输出方式)方式1(选通输入/输出方式)方式2(双向数据传送方式)最常用和最简单的方法是方式04.8255A的控制寄存器8255A的工作方式选择是通过对控制寄存器输入控制字(或称命令字)的方式实现的。

①方式选择控制字

②C口置/复位控制字

图8-78255A控制字的格式与定义5.80C51和8255A的接口及应用图8-880C51与8255A的接口电路

本例要求8255A按方式0工作,A口各位作为输入,B口各位作为输出,C口高4位作为输出,低4位作为输入。将A口数据存入R1,则编程如下:

MOVDPTR,#0EFFFH;指向控制寄存器地址

MOVA,#10010001B;按要求设的控制字

MOVX@DPTR,A;控制字送入控制寄存器

MOVDPTR,#0EFFCH;指向A口地址

MOVXA,@DPTR;读A口数据8.4串行扩展概述

为了进一步缩小单片机及其外围芯片的体积,降低价格,简化互连线路,近年来,先后推出专门用于串行数据传输的各类器件和接口。串行扩展法是利用UART、SPI和I2C串行总线中的任意一种进行系统扩展。

8.4.1常用串行总线与串行接口简介

1.I2C总线I2C总线由2根线实现串行同步通信,其中一根是时钟线SCL,一根是数据线SDA。

图8-9典型的I2C单主系统配置示意图2.SPI串行扩展接口

图8-10单主机SPI系统连接方法3.USB总线

图8-11USB总线系统结构

4.CAN总线

图8-12CAN总线系统结构5.单总线

图8-13单总线构成的温度检测系统

8.4.2单片机串行扩展的模拟技术

串行扩展模拟技术的主要要点如下:1.严格模拟时序2.确保硬件与软件的配合3.设计通用模拟软件包8.5I2C总线

8.5.1I2C总线的特点8.5.2I2C总线的组成及基本工作原理8.5.3I2C总线的传输时序1.I2C总线的运行时序关系图8-14I2C总线运行时序关系图8.5.4I2C总线的通用模拟软件包

为了简化I2C总线模拟传送的软件编程方法,根据其时序特点编制了可适用于以80C51系列为主机的通用软件包,这个软件包包括典型信号的通用模拟子程序和I2C总线信号模拟传送的通用子程序。用上述子程序时,如果从器件的传输频率较低,则应该修改延时用的NOP指令个数,以满足时序要求。通用软件包中的符号单元如下:MTD:发送缓冲区首地址MRD:接收缓冲区首地址SLAW:芯片地址与写控制字存放单元SLA:寻址字节存放单元NUMBYT:传送字节数存放单元ERR:错误标志SDA:模拟串行数据线SCL:模拟串行时钟线使用前要注意分配好内存。使用上述子程序(省略)时,如果从器件的传输频率较低,则应该修改延时用的NOP指令个数,以满足时序要求。I2C总线的通用子程序适用于任何采用I2C总线接口的器件。这些子程序包括发启动脉冲子程序,发停止脉冲子程序,检查应答子程序,读、写一个字节子程序等。不同的从器件所需要用到的子程序并不完全相同。

8.5.5I2C总线应用举例

本节以串行I2C总线EEPROM为例,介绍串行EEPROM芯片的寻址、操作以及它们和89系列单片机的接口技术。1.存储器组织及引脚功能说明2.芯片及存储单元寻址3.操作时序4.I2C总线接口实例1.

AT24CXX系列芯片的引脚功能说明

图9-15AT24CXX引脚图图8-15AT24CXX引脚图2.芯片及存储单元寻址

图8-16芯片地址及读写控制字图8-17AT89S51和AT24C02、08的接口实现从AT24C02的40H单元中连续读8个数据,然后存入单片机的以60H为首地址的连续8个单元中。再把从单片机的以60H为首地址的连续16个单元中取出的数据存入AT24C08的以220H单元为首地址的连续16个单元中。程序清单如下:SLAWEQU31H;芯片地址与写控制字存放单SLAEQU32H;寻址字节地址存放单元NUMBYTEQU33H;传送字节数存放单元SDABITP1.2;串行数据线SCLBITP1.1;串行时钟线ERRBIT30H;错误标志MTDEQU40H;发送数据缓冲区首地址MRDEQU60H;接收数据缓冲区首地址ORG0000HLJMPMAIN……MAIN:MOVSP,#70H;设堆栈指针SETBSDA;初始化AT2402/AT2408总线SETBSDLLCALLDELAY;调延时子程序(省略)……MOVSLAW,#0A0H;置2402芯片地址和写命令字MOVSLA,#040H;置字节地址MOVNUMBYT,#8;置传送数据长度LCALLRDNBYT;调读数据块子程序

……MOVSLAW,#0ACH;置2408芯片地址和RAM地址高3位(A2,P1,P0=1,1,0)以及写命令字

MOVSLA,#20H;送入字节地址(低8位)

MOVNUMBYT,#16;置数据长度

LCALLWRNBYT;调写数据块子程序8.6SPI串行接口

8.6.1SPI接口的特点SPI接口主要特性如下:

全双工,三线同步传输。

主机方式或从机方式工作。

主机最大位传送速率为1.05MHz,目前有的型号 速率已经超过此值。

4种可编程主机位速率

串行时钟极性与相位可编程。

发送结束置中断标志。

写冲突保护。

总线竞争保护。8.6.2SPI系统的组成及基本原理

采用SPI接口可以构成复杂或简单的系统,如:一个主单片机和几个从单片机;几个单片机互连,构成多主机系统以及一个主单片机和一个或多个从外围器件。

SPI系统在工作时是通过MOSI和MISO这两个数据引脚用于接收和发送串行数据,传输时是最高位(MSB)在先。SCK是通过MISO和MOSI输入或输出数据的同步时钟,SS是从机选择端。

对于设置为主机的SPI口,MISO是主机数据输入端,MOSI是主机数据输出端。对于设置为从机的SPI口,MISO是从机数据输出端,MOSI是从机数据输入端。8.6.3SPI接口的传输时序

图8-20SPI的时序图

8.6.4SPI串行接口的通用软件包

为了简化SPI接口模拟传送的软件编程方法,根据其时序特点编制了通用软件包,这个软件包包括典型信号的通用模拟子程序和SPI接口信号模拟传送的通用子程序。

通用软件包中的符号定义如下:

CS 模拟片选线

SO 模拟输出线

SI 模拟输入线

SCK模拟时钟线向SPI接口器件中写单字节子程序;入口:A中为准备写入的命令字或数据BYTEOUT:CLR CS ;选择器件

CLR SCK;时钟线为低

MOV R0,#08HBOUTI:CLR SCK;时钟线为低

RLC A;左移一位

MOV SI,C;发送一位

SETB SCK;时钟线为上升沿写入

NOP ;延时

DJNZ R0,BOUTI;8位是否发完

RET

由SPI接口器件中读单字节子程序出口:A中为读入的数据或状态字BYTEIN:CLRCS;选择器件

CLRSCK;时钟线为低

MOVR0,#08HBINI:SETB SCK;时钟线为高

MOVC,SO;接收一位

NOP;延时

CLR SCK;时钟线为低

RLC A;左移一位

DJNZR0,BINI;是否接收完8位

RET8.6.5SPI串行接口应用举例

采用SPI串行接口的外围器件种类也非常多,本节以XICRO公司生产的X25F0XX系列EEPROM为例说明该类芯片与单片机的接口及编程方法。1.X25F0XX系列EEPROM简介X25F064/32/16/08系列是CMOS串行Flash存贮器,存储容量为8/4/2/1KB。2.引脚功能说明

图8-19X25F0XX的引脚排列3.操作原理

X25F0XX存贮器中有一个8位指令寄存器、一个写允许锁存器和一个状态寄存器。通过对这几个寄存器的操作,控制和管理X25F0XX存贮器的读写。4.X25F064与单片机接口举例本例介绍AT89S51单片机与一片X25F064的接口及编程方法,连接电路如图8-20所示。在图中,AT89S51通过P1端口的P1.0、P1.1、P1.2和P1.3分别与X25F064的、SCK、SO和SI端相连,X25F064的和直接接高电平,即编程保护和保持不起作用。

图8-20X25F064与80C51接口方法

要求实现的功能如下:1)从X25F064的200H开始读出16字节数据,然后写入AT89S51单片机片内RAM的60H开始的16字节中。图8-20X25F064与80C51接口方法

2)把AT89S51单片机片内RAM40H开始的32字节数据,依次写到X25F064的00H为首的32个单元。应用程序清单如下。变量说明CS BIT P1.0 ;CS=0选通X25F064SCK BIT P1.1 ;X25F064时钟线SO BIT P1.2 ;X25F064输出线SI BIT P1.3 ;X25F064输入线BYTEDATAEQU 30H ;准备读或写入的数据长度MTD EQU 40H ;单片机发送数据首地址MRDEQU 60H ;单片机接收数据首地址

……MAIN: MOV SP,#70H ……LCALL PREN ;允许芯片写

…MAIN1:…MOV DPTR,#200H ;从X25F064中读的起始地址MOV BYTEDATA,#16 ;准备写入的数据长度LCALL PAGEREAD ;调读数据块子程序

…MOV DPTR,#00H;向X25F064中写入的起始地址MOV BYTEDATA,#32 ;准备写入的数据长度LCALL PAGEWITE ;调写数据块子程序

…;允许芯片进行写操作PREN:CLR CSMOVA,#6 ;写命令字

LCALL BYTEOUT ;写1字节子程序,发写命令

SETB CS ;结束操作

RET;读状态寄存器;出口;A读出的状态字RDSR:CLR CSMOV A,#5 ;读状态寄存器命令

LCALL BYTEOUTLCALL BYTEIN ;读1字节子程序,读出状态

CLR F0JNB ACC.0,WIP;写操作是否已结束

SETB F0WIP:SETB CSRET;向存储器某页写数据块;入口:DPTR,为存储器地址;BYTEDATA,写入的数据长度。PAGEWRITE:CLR CSLCALL RDSR ;检查写操作是否结束

JBF0,PAGEWRITEMOV A,#2 ;写存储器命令LCALL BYTEOUTMOV A,DPH ;地址的髙8位送ALCALL BYTEOUT ;写入存储器的髙8位地址MOV A,DPL ;送入低8位地址LCALL BYTEOUT ;写入存储器的低8位地址MOV R2,BYTEDATA ;要编程的字节数MOVR0,#MTD ;发送数据首地址PROG1:MOV A,@R0 ;将一个数据取到ACC中LCALL BYTEOUT ;向存储器中写一个数据INC R0 ;修改源地址DJNZ R2,PROG1SETB CSRET;从存储器的某页中读数据块;入口:DPTR,为存储器地址,MRD为向单片机片内RAM写数据的首地址;出口:R1,R2从存储器中连续读出的2个数据PAGEREAD:CLR CSLCALL RDSR ;检查写操作是否结束JBF0,PAGEREADMOV A,#3 ;读存储器命令LCALL BYTEOUTMOV A,DPH ;地址的髙8位送ALCALL BYTEOUT ;写入存储器的髙8位地址及读命令MOV A,DPLLCALL BYTEOUT ;写入存储器的低8位地址SETB CS ;结束写操作CLR CS ;准备读操作MOV R2,BYTEDATA;要读的字节数MOV R0,#MRD ;接收数据首地址READ1:LCALL BYTEIN;读一字节MOV @R0,AINC R0 ;修改目标地址DJNZ R2,READ1SETB CS ;结束读操作RET8.7扩展数/模转换器

本节将简介D/A转换原理,几种典型的DAC电路以及和80C51系列单片机的接口方法,包括硬件电路和应用实例。8.7.1DAC电路原理

D/A转换是将数字量信号转换成与此数值成正比的模拟量。为了将数字量转换成模拟量,应将每一位代码按权大小转换成相应的模拟输出分量,然后根据叠加原理将各代码对应的模拟输出分量相加,其总和就是与数字量成正比的模拟量,由此完成D/A转换。为实现上述D/A转换,需要使用解码网络,解码网络的主要形式有二进制权电阻解码网络和T型电阻解码网络。实际应用的D/A转换器多数都采用T形电阻网络。图8-21即为其结构原理图。

8-21T形电阻网络D/A转换原理图输出的电压值为:V0==-[(RF

VR/3R)

2-4]

(d3

23+d2

22+d1

21+d0

20)由此公式可以看出当VR不变,V0的电压正好与d0~d3,大小成正比,从而实现了由二进制数到模拟量电压信号的转换。8.7.2D/A转换器的主要技术指标

1.D/A建立时间(SettingTime)2.D/A转换精度(Accuracy)3.分辨率(Resolution)8.7.3扩展D/A转换器实例D/A转换器有并行与串行2种接口芯片,并行D/A转换器转换速度较高,但要占用较多的I/O线,随着单片机串行接口技术的发展,出现了越来越多的串行D/A转换芯片,本节以美国TI公司生产的一种串行D/A芯片TLC5620为例,说明这一类芯片的原理及使用方法。TLC5620是4通道串行8位电压输出数模转换器(DAC),它的最大转换速率为40kHz。1.TLC5620的引脚功能图8-22TLC5620的引脚图2.TLC5620的工作原理TLC5620有4路结构完全相同的8位电压输出数模转换器,每个通道都包含有8位输入寄存器、DAC寄存器、D/A转换器,还有一个增益可选择为1倍和2倍的放大器。它的11位串行数据包括8位数据、2个DAC通道选择位、1个输出增益选择位。通过LDAC控制同时更新DAC输出,DAC输出通过增益输出放大器缓存。TLC5620输出电压VOUT的计算公式如下:TLC5620的数据输出更新方式有4种,不同方式的时序不同,在此仅介绍采用由LDCA控制数据更新的8位传输模式,时序见图8-23,图8-23TLC5620工作时序图(LDCA控制数据更新的8位传输模式)

3.应用实例利用TLC5620在A、B通道分别产生三角波和方波,该方波与三角波幅度相等、周期相同。例题连线图如图8-24所示。

图8-24TLC5620与单片机接口原理图汇编程序清单如下:SCLA BIT P1.7;时钟线SDAA BIT P1.6;数据线SAN BIT 10H;三角波升、降标志位,为0时表示下降FAN BIT 11H;方波高、低电平标志位,为0时表示低电平LOADBIT P3.5;数据控制线LDACBIT P3.4;DAC更新控制线VOUTADATA 30H;A通道数据暂存单元VOUTBDATA 31H ;B通道数据暂存单元ORG 0000HAJMP MAINORG 0100HMAIN:MOVSP,#60H CLR SCLA CLR SDAASETB LOAD SETB LDAC MOVR3,#0A2H;三角波的半周期计数器

CLRSAN;三角波幅度递增递减标志位

MOVVOUTA,#00H;三角波瞬态电压值存储器清0 MOVR5,#0A2H;方波的半周期计数器

CLRFAN;方波幅度高低电平标志位

MOVVOUTB,#00H;方波高低电平电压值存储器清0DACH:MOVR1,#01H;选择通道A输出,2倍增益

MOVR2,VOUTALCALLDAC5620;调用D/A转换子程序

DJNZR3,CONTA;判断三角波是否上升(或下降)到峰点(或谷点)MOVR3,#0A2H;重赋半周期值

CPLSAN;如果已达到峰点(或谷点)则改变标志CONTA:JBSAN,CONTB;判断当前处于上升还是下降状态

INC R2 SJMP CONTCCONTB:DEC R2CONTC:MOVVOUTA,R2;三角波瞬态电压值保存在VOUTAMOVR1,#03H;选择通道B输出(方波),2倍增益

MOVR2,VOUTB LCALLDAC5620 DJNZR5,CONTD;判断方波是否应该改变电平状态

MOVR5,#0A2H;重赋半周期值

CPLFAN;如果已达到改变电平状态的时间,则改变方波电平标志位CONTD:JBFAN,CONTE;根据方波高低电平标志位决定输出状 态

MOVR2,#00H;给R2赋方波0电平值

SJMPCONTFCONTE:MOVR2,#0A2H;给R2赋方波最大电平值CONTIF:MOVVOUTB,R2 ;方波瞬态电压值保存在VOUTBLJMPDACH;反复循环DAC5620: MOVA,R1;准备发控制字

CLRSCL

温馨提示

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

评论

0/150

提交评论