ADDA.docx

上传人:b****5 文档编号:5383342 上传时间:2022-12-15 格式:DOCX 页数:14 大小:119.65KB
下载 相关 举报
ADDA.docx_第1页
第1页 / 共14页
ADDA.docx_第2页
第2页 / 共14页
ADDA.docx_第3页
第3页 / 共14页
ADDA.docx_第4页
第4页 / 共14页
ADDA.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

ADDA.docx

《ADDA.docx》由会员分享,可在线阅读,更多相关《ADDA.docx(14页珍藏版)》请在冰豆网上搜索。

ADDA.docx

ADDA

单片机最小系统及外部扩展

学习目的及要求

熟悉三总线的概念,掌握通过总线进行最小系统的设计及外部分展的方法。

掌握89C51单芯片最小系统的硬件结构。

了解过去常用的8031、373、2764三片最小系统的电路结构。

熟悉EPROM、FlashROM、RAM和EEPROM芯片的性能及其扩展的方法。

掌握WR和RD控制信号线的含意及读/写(输入/输出)的程序设计方法。

掌握TTL/CMOS简单I/O芯片的硬件扩展及编程方法。

三总线

 

89C51/8031是通过片外引脚进行系统扩展的、这些用于系统扩展的片外引脚构成单片机的外部三总线结构:

地址总线(AB)、数据总线(DB)和控制总线(CB),单片机通过这些总线与外部扩展芯片相连.弥补了片内硬件资源的不足,从而满足了实际应用的需要。

1.地址总线(AB)

地址总线为16根,P2口作高8位地址线(A15一A8),P0口分时用做扩展系统的低8位地址线(A7一Ao)和数据线(D7一D0),P0口输出的低8位地址由地址锁存允许信号ALE的下沿锁存,经地址锁存器输出低8位地址(A7一A0),此后P0口用做数据线。

2.数据总线(DB)

数据总线为8根。

数据总线由PO口担任,P0口的带负载能力为8个TTL(其他为4个TTL),所以在进行应用系统设计时,要充分利用P0口线的带负载能力。

3.控制总线(CB)

用于系统扩展的控制总线主要有:

/RD(P3.7)、/WR(P3.6):

用于片外RAM或片外I/O芯片的读/写控制,执行指令MOVX时,根据读/写要求使/RD或/WR有效。

/PSEN:

用于片外ROM的读选通控制,执行指令时自动生成。

ALE:

用于P0口低8位地址锁存控制,它是系统硬件生成的固有信号。

/EA:

用于片内/片外程序存储器的选择控制,一般根据系统扩展情况由外电路设置。

当/EA=1,且PC值小于0FFFH时,CPU访问内部ROM,PC值超出0FFFH时,则自动转向外部ROM;当EA=0时,无论片内有无ROM,CPU只访问外部ROM。

使用803l时,/EA必须接地。

使用89C51时,/EA接十5V。

89C51/8031最小系统所谓最小应用系统是指能维护单片机远行的最简单配置系统。

1.89C51最小应用系统

89c51片内有FlashROM,构成最小应用系统时,只要将单片机接上时钟电路所需的晶体和电容还有复位电路即可。

由于不需要外扩程序存储器,EA接高电平lPo、Pl、P2、P3口均可作I/O口用。

 

2.8031最小应用系统:

由于8031片内无程序存储器,必须外扩EPROM。

 

I/O口的扩充

最小应用系统体积小,结构简单,功耗低,成本低.在简单的应用系统中得以广泛应用。

但有时还不能满足要求,须扩展。

通常采用74系列TTL电路或4000系列CM0S电路芯片,常用有74LS244作扩展输入。

244是一个三态输出缓冲器及总线驱动器,它带负载能力强。

74LS273(8—D锁存器)作扩展输出,它们直接挂在P0口线上。

值得注意的是,89C51单片机把外扩I/O口和片外RAM统一编址,每个扩展的接口相当于一个扩展的外部RAM单元,访问外部接口就像访问外部RAM一样,用的都是MOVX指今,并产生/RD(或/WR)信号。

用/RD、/WR作为输入/输出控制信号。

P0口为双向数据线,既能从74LS244输入数据,又能将数据传送给74LS273输出。

输出控制信号由P2.0和WR合成。

二者同时为“0”电平时,“或”门输出0,将P0口数据锁存到741LS273,其输出控制着发光二极管LED。

输入控制信号由P2.0和RD合成。

当二者同时为“0”电平时,“或”门输出0,选通74LS244,将外部信号输入到总线。

输入和输出都是在P2.0为0时有效,但由于分别是由RD和WR信号控制,因此,不会发生冲突。

而扩展较多的I/O接口时,可用线选法或译码器。

上图当按下任意键,对应的LED发光。

其程序如下:

LOOP:

MOVDPTR,#FEFFH;数据指针指向扩展I/O口地址

MOVXA,@DPTR;向244读入数据,检测按钮

MOVX@DPTR,A;向273输出数据,驱动LED

SJMPLOOP;循环可以看出接口的输入/输出就像从片外RAM读/写数据一样方便。

但作为输入口时,—定要有三态功能,否则将影响总线的正常工作。

线选法及地址译码法扩展片外存储器及I/O芯片1.线选法扩晨片外芯片

线选法是利用单片机高地址总线作为存储器的片选信号,只有该地址线为低电平时,才选中该芯片。

缺点:

每占用一根地址线,就占用了一段地址空间,且各地址空间不连续,不能充分有效地利用存储空间。

线选法适用于系统扩展芯片较少的单片机应用系统,

2.地址译码法扩展片外芯片

当线选法所需地址选择线多于可用地址线时.一般采用地址译码法。

译码法就是利用译码器对单片机的某些高位地址线进行译码,其译码输出作为存储器(或1/O口)的片选信号。

这种方法存储空间连续.能有效地利用存储空间。

适用于多存储器、多I/O口的扩展。

地址译码法必须采用地址译码器,经常

使用的地址译码器有74LS138和74L5139。

A、B、C——译码输入端;

/El、/E2、E3——使能端;

/Y0--/Y7---一译码输出端。

从本例的硬件连接图可以看出,单片机除了扩展存储器所需的地址线以外,剩余的全部地址线都参加译码,这种译码方式称全译码。

利用剩余地址线中的一部分地址线参加译码称为部分译码。

3、超过64KBRAM的扩展

MCS—51系列单片机的片外RAM空间为64KB、某些场合下,当所需数据存储器空间超过64KB,如何解决呢?

单片机原来64KB的RAM空间是由16根地址线决定的.它由PO口提供低8位,P2口提供高8位。

要想扩大RAM空间、可用增加地址线的办法来解决,可用P1口作地址线A16,P1.1作地址线A17.…,依次类推。

前向通道中的A/D芯片及接口

八通道ADC0809芯片及接口技术

1.ADC0809控制引脚的功能

START——启动信号,加上正脉冲后,A/D转换开始进行。

ALE——地址锁存信号。

由低至高电平时把3位地址信号送入通道号地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道。

EOC——转换结束信号,是芯片的输出信号。

转换开始后,EOC信号变低;转换结束时,EOC返回高电平。

这个信号可以作为A/D转换器的状态信号来查询,也可以直接用作中断请求信号。

OE——输出允许控制端(开数字量输出三态门)。

2.A/D转换的步骤

ADC0809与89C51连接可采用查询方式,也可采用中断方式。

由于ADC0809片内有三态输出锁存器,因此可直接与89C51连接。

首先程序使ALE有效.锁存通道号。

使START有效,即启动A/D开始转换。

通常把START与ALE连在一起,即在锁存的同时启动A/D转换,过64μS后EOC输出高电平,转换完毕。

程序使OE有效,读出A/D转换后的数字量。

3.8路A/D转换程序

将各路读数依次存放在片外数据存储器入A0H—A7H单元:

其主程序和中断服务程序如下:

主程序

MAIN:

MOVR0,#A0H;数据暂存首址

MOVR2,#08H;8路计数初值

SETBIT1;脉冲触发方式

SETBEA;开中断

SETBEX1

MOVDPTR,#7FF8H;指向0809首地址

MOVX@DPTR,A;启动A/D转换

HERE;SJMPHERE;等待中断

中断服务程序

MOVXA,@DPTR;读数

MOVX@R0,A;存数

INCDPTR;更新通道

INCR0;更新暂存单元

DJNZR2,DONE

RETI

DONE:

MOVX@DPTR,A

RETI

后向通道中的D/A芯片及接口

8位D/A转换芯片DACO832

 

DACO832主要由两个8位寄存器和一个8位D/A转换器组成,使用两

个寄存器(输入寄存器和DAC寄存器)的好处是,能简化某些应用中的硬件接口电路设计。

LE1和LE2是寄存命令。

当LE1=1时,输入寄存器的输出随输入变化;LE1=0时,数据锁存在寄存器中,不再随数据总线上的数据变化而变化。

ILE为高电平,CS与WR1同时为低时,LE1=l;当WR1变高时,8位输入寄存器将输入数据锁存。

XFER与WR2同时为低时,LE2=1,8位DAC寄存器的输出随寄存器的输入变化。

WR2上升沿将输入寄存器的信息锁存在DAC寄存器中。

RFB是片内电阻,为外部运算放大器提供反馈电阻,用以提供适当的输出电压;VREF端由外部电路提供+10V—-10V的参考电源。

欲将数字量D0—D7转换为模拟量,只要使WR2=0,XFER=0,DAC寄存器处于不锁存状态,即ILE=1时,CS和WR1端接负脉冲信号即可完成一次转换;或者WR1=0,CS=0,ILE=1,输入寄存器为不锁存状态,而WR2和XFERR端接负脉冲信号.也可达到同样目的。

(2)引脚功能

DO—D7—数字量数据输入线。

ILE—数据锁存允许信号.高电平有效;/CS—输入寄存器选择信号.低电平有效:

/WR1—输入寄存器的“写”选通信号,低电平有效。

/XFER—数据转移控制信号线,低电平有效;/WR2—DAC寄存器的“写”选通信号。

Vref—基准电压输入线。

Rfb—反馈信号输入线,芯片内已有反馈电阻。

Iout1和Iout2—电流输出线。

Iout1和Iout2的电流和为常数,Iout1的电流随DAC寄存器的内容线性变化。

一般在单极性输出时,Iout2接地:

在双极性输出时接运放。

Vcc—工作电源;DGND一数字地;AGND一模拟信号地。

(3)DAC0832与89C5l接口

①直通式工作方式应用

直通式工作方式时输入到DACO83的D0--D7数据不经控制,直达8位D/A转换器。

②单缓冲方式应用

在只有一路模拟量输出或几路模拟量不需要同时输出的场合,应采用单缓冲方式。

在这种方式下,将二级寄存器的控制信号并接,输入数据在控制信号作用下(—次控制、一次缓冲)直接进入8位DAC寄存器中,并进入8位D/A转换器进行D/A转换。

ILE接十5V,片选信号CS和转移控制信号XFER都连到地址线(或接地)。

“写”选通线WRl和WR2都和CPU的“写’信号线WR连接。

CPU对0832执行—次“写”操作,把数据直接写入DAC寄存器,0832的输出模拟信号随之发生变化。

单缓冲式与双缓冲式编程

1.单缓冲式及接口电路

单缓冲方式是一个寄存器处于常通状态,另一个处于选通状态或两个寄存器同时选通(两个寄存器的控制信号连在一起)。

单缓冲方式多用于系统小只有一路A/D转换,或虽有多路D/A转换但不要求同步输出的情况。

单缓冲式接口电路D0—D7直接与P0口连接;两个寄存器的选通信号CS和XFER连在一起,接89C51的P2.7;可WR1和WR2连在一起,接89C5l的P3.6(WR);ILE接十5V,两个奇存器同时被选通。

完成一次D/A转换的程序如下;

MOVDPTR,#7FFFHP27=0选通DAc0832芯片

MOVA,#data待转换的数扔送入A

MOVX@DPTR,A数字量从P0口写入DAC0832(WR有效)并完成转换

2.双缓冲式及接口电路

双缓冲式是单片机分两次发出控制信号,分时选通的两个寄存器。

首先ILE、CS、WR1有效,将数据锁存在输入寄存器;然后WR2、XFER有效,再将数据送人DAC寄存器。

完成一次D/A转换的程序如下:

MOVDPTR,#7FFFFH;P2.7=0,选通DAC0832路2的输入寄存器

MOVA,#data;待转换的数据送人A

MOVX@DPTR,A;转换数据送人DAc0832的输入寄存器

MOVDPTR,#0BFFFH;P2.6=0选通DAL0832的DAC寄存器

MOVX@DPTR,A;输入寄存器中的内容送入DAC寄存器,并转换

利用DAC0832的双缓冲方式还可以实现两路模拟量同时转换输出,其接口电路如下:

两个8位数字量#datal和#data2同时转换成模拟量输出的程序如下:

MOVDPTR,#0DFFFH;P2.5=o,选通DAC0832

(1)芯片

MOVA,#datal;#datal送入A

MOVX@DPTR,A;#datal送入DAC0832

(1)的输入寄存器

MOVDPTR,¥0BFFFH;P2.6=0,选通DAC0832

(2)芯片

MOVA,#data2;#data送入A

MOVX@DPTR,A;#data2送入DAC0832

(2)的输入寄存器

MOVDPTR,#7FFFH;P2.7=0,同时选通两芯片的DAC寄存器

MOVX@DPTR,A;两路数据同时转换输出

D/A输出方式——单极性与双极性讨论

在DAC0832的输出端连接一级运放组成的反向求和电路,可以得到单极性模拟电压(正电压或负电压),输出电压范围由参考电压VREF值决定。

例如,当VREF=十5v(或一5v)时。

输出电压VOUT范围是0V——-5V(或0V一+5V);当VOUT=十/-10V时.VOUT范围是0V——+/-10V。

在VREF确定以后.若要增加输出电压的范围,可以通过增加运放反馈电阻的方法来实现。

连接方法是外加电阻R1同芯片中反馈电阻RF串联,并在输人数据为全1的条件下,调节RI阻值,使VOUT达到所需的满良程电压即可。

有时,需要转换器输出双极性模拟电压。

当输入数字量从全0到全1时,要求输出模拟量由负电压到正电压,双极性输出。

分辨率”与“转“换精度”(量化误差与转换误差)的讨论

“分辨率”通常用位数来表示,如8位、10位、12位等。

对于N位转换器,其实际分辨率为模拟量满量程的1/2N。

例如,一个10位的A/D转换器去转换一个满量程为5v的电压、则它能分辨的最小电压为5000mV/l024=5mv,我们称该A/D转换器的分辨率为10位或5mV。

再例如,某D/A转换器能够转换8位二进制数,转换后的电压满量程是5v,则它能分辨的最小电压是5v/256=20mv,我们称该D/A转换器的分辨率为8位或20mV。

2.转换精度

“转换精度”是反映转换器转换值与理想值之间的误差。

例如,具有8位分辨率的A/D转换器,当输入0v—5v电压时,对应的数字量为00H—FFH,即输入每变化0.0196v时,数据就变化1。

由于输入模拟量是连续变化的,只有当它的值为0.0196V的整数倍时,模拟量值才能准确转换成对应的数字量,否则模拟量将被“四舍五入”为相近的数字量。

例如0.025V被转换成01H,0.032v被转换成02H.最大误差为1/2个最低有效位(常用土1/2LSB表示),这就是量化误差。

该A/D转换器的具体量化误差(或精度)值可以计算出来为

土(1/2)×5V/256=土(1/2)×0.0196V=土9.8MV

若某D/A转换器的分辨率为8位时则它的精度为:

土(1/2)×(1/256)=土1/512。

3.分辨军的计算

在计算分辨率时,为什么有人用满量程除以

.有人却用满量程除以

-l呢?

这是因为存在两种“满量程”的定义。

让我们以D/A转换的分辨率计算举例来说吧,对于线性D/A从转换器来说.其分辨率计算公式为:

分辨率=模拟输出的满量程值/

但是,这个“满量程”又分为标称满量程和实际满员程,标称满量程是指数字量

所对应模拟输出量,可实际数字量的变化范围是从0—

-l,永远到不了

所以实际最大值

-l所对应的模拟输出量,就称为实际满量程。

例如,一个8位D/A转换器.当多年电压为一5v时。

其标称满量程为十5v,而实际满量程为

根据已知量程来计算分辨率时,就有两种可选择的公式

分辨率=标称满量程/

分辨率=实际满量程/(

-1)

同样,以8位D/A转换器为例,若把模拟电压十5v作为标称满量程,则分辨率为5v/

0.0196V;若取实际满量程十4.98v,则府除以

-1,分辨率为4.98v/0.0195V。

为方便起见,在理论计算时通常选用标称满量程的计算公式。

 

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

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1