模数(A/D)和数模(D/A)转换

更新时间:2023-09-10 21:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

模数(A/D)和数模(D/A)转换

11.1 模数转换和数模转换概述

11.1.1 一个典型的计算机自动控制系统

一个包含A/D和D/A转换器的计算机闭环自动控制系统如图11.1所示。

传感器μV,mV控制传感器放大滤波几伏放大滤波多路开关MUX采样保持S/H模拟A/D数字I/O 转换接口计算机对象执行部件多路开关MUX模拟D/A数字I/O 转换接口

图11.1 典型的计算机自动控制系统

在图11.1中,A/D转换器和D/A转换器是模拟量输入和模拟量输出通路中的核心部件。在实际控制系统中,各种非电物理量需要由各种传感器把它们转换成模拟电流或电压信号后,才能加到A/D转换器转换成数字量。

一般来说,传感器的输出信号只有微伏或毫伏级,需要采用高输入阻抗的运算放大器将这些微弱的信号放大到一定的幅度,有时候还要进行信号滤波,去掉各种干扰和噪声,保留所需要的有用信号。送入A/D转换器的信号大小与A/D转换器的输入范围不一致时,还需进行信号预处理。

在计算机控制系统中,若测量的模拟信号有几路或几十路,考虑到控制系统的成本,可采用多路开关对被测信号进行切换,使各种信号共用一个A/D转换器。多路切换的方法有两种:一种是外加多路模拟开关,如多路输入一路输出的多路开关有:AD7501,AD7503,CD4097,CD4052等。另一种是选用内部带多路转换开关的A/D转换器,如ADC0809等。

若模拟信号变化较快,为了保证模数转换的正确性,还需要使用采样保持器。 在输出通道,对那些需要用模拟信号驱动的执行机构,由计算机将经过运算决策后确定的控制量(数字量)送D/A转换器,转换成模拟量以驱动执行机构动作,完成控制过程。

第11章 模数(A/D)和数模(D/A)转换 287

11.1.2 模/数转换器(ADC)的主要性能参数

1. 分辨率

它表明A/D对模拟信号的分辨能力,由它确定能被A/D辨别的最小模拟量变化。一般来说,A/D转换器的位数越多,其分辨率则越高。实际的A/D转换器,通常为8,10,12,16位等。

2. 量化误差

在A/D转换中由于整量化产生的固有误差。量化误差在±1/2LSB(最低有效位)之间。 例如:一个8位的A/D转换器,它把输入电压信号分成28=256层,若它的量程为0~5V,那么,量化单位q为:

电压量程范围5.0Vn256≈0.0195V=19.5mV 2q = =

q正好是A/D输出的数字量中最低位LSB=1时所对应的电压值。因而,这个量化误差的绝对值是转换器的分辨率和满量程范围的函数。

3. 转换时间

转换时间是A/D完成一次转换所需要的时间。一般转换速度越快越好,常见有高速(转换时间<1us)、中速(转换时间<1ms)和低速(转换时间<1s)等。

4. 绝对精度

对于A/D,指的是对应于一个给定量,A/D转换器的误差,其误差大小由实际模拟量输入值与理论值之差来度量。

5. 相对精度

对于A/D,指的是满度值校准以后,任一数字输出所对应的实际模拟输入值(中间值)与理论值(中间值)之差。例如,对于一个8位0~+5V的A/D转换器,如果其相对误差为1LSB,则其绝对误差为19.5mV,相对误差为0.39%。

11.1.3 数/模转换器(DAC)的主要性能参数

1. 分辨率

分辨率表明DAC对模拟量的分辨能力,它是最低有效位(LSB)所对应的模拟量,它确定了能由D/A产生的最小模拟量的变化。通常用二进制数的位数表示DAC的分辨率,如分辨率为8位的D/A能给出满量程电压的1/28的分辨能力,显然DAC的位数越多,则分辨率越高。

2. 线性误差

D/A的实际转换值偏离理想转换特性的最大偏差与满量程之间的百分比称为线性误差。

288

微型机原理及应用

3. 建立时间

这是D/A的一个重要性能参数,定义为:在数字输入端发生满量程码的变化以后,D/A的模拟输出稳定到最终值±1/2LSB时所需要的时间。

4. 温度灵敏度

它是指数字输入不变的情况下,模拟输出信号随温度的变化。一般D/A转换器的温度灵敏度为±50PPM/℃。PPM为百万分之一。

5. 输出电平

不同型号的D/A转换器的输出电平相差较大,一般为5V~10V,有的高压输出型的输出电平高达24V~30V。

11.2 ADC0809模/数转换器

A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。A/D转换后,输出的数字信号可以有8位、10位、12位和16位等。

11.2.1 模/数转换器原理

A/D转换器的工作原理实现A/D转换的方法很多,常用的有逐次逼近法、双积分法及电压频率转换法等。

逐次逼近法:速度快、分辨率高、成本低,在计算机系统得到广泛应用。逐次逼近法原理电路类同天平称重。在节拍时钟控制下,逐次比较,最后留下的数字砝码,即转换结果。

第11章 模数(A/D)和数模(D/A)转换

图11.2 逐次逼近法A/D转换器

289

采用逐次逼近法的A/D转换器是由一个比较器、D/A转换器、缓冲寄存器及控制逻辑电路组成,如图10.14所示。它的基本原理是从高位到低位逐位试探比较,好像用天平称物体,从重到轻逐级增减砝码进行试探。

逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零;转换开始时,先将逐次逼近寄存器最高位置1,送入D/A转换器,经D/A转换后生成的模拟量送入比较器,称为Vo,与送入比较器的待转换的模拟量Vi进行比较,若Vo<Vi,该位1被保留,否则被清除。然后再置逐次逼近寄存器次高位为1,将寄存器中新的数字量送D/A转换器,输出的Vo再与Vi比较,若Vo<Vi,该位1被保留,否则被清除。重复此过程,直至逼近寄存器最低位。转换结束后,将逐次逼近寄存器中的数字量送入缓冲寄存器,得到数字量的输出。逐次逼近的操作过程是在一个控制电路的控制下进行的。

11.2.2 ADC0809的内部结构与引脚图

ADC0809是一种普遍使用且成本较低的、由National半导体公司生产的CMOS材料A/D转换器。它具有8个模拟量输入通道,可在程序控制下对任意通道进行A/D转换,得到8位二进制数字量。

其主要技术指标如下: ①电源电压: 5V ②分辨率: 8位 ③时钟频率: 640kHZ ④转换时间: 100us

⑤未经调整误差: 1/2LSB和1LSB ⑥模拟量输入电压范围:0-5V ⑦功耗: 15mW

图11.3给出了ADC0809转换器的内部结构图。

290

微型机原理及应用

图11.3 ADC0809内部结构图 图11.4 ADC0809引脚图

图11.3中ADC0809内部各单元的功能如下: ① 通道选择开关

八选一模拟开关,实现分时采样8路模拟信号。 ② 通道地址锁存和译码

通过ADDA、ADDB、ADDC三个地址选择端及译码作用控制通道选择开关。 ③ 逐次逼近A/D转换器

包括比较器、8位开关树型D/A转换器、逐次逼近寄存器。转换的数据从逐次逼近寄存器传送到8位锁存器后经三态门输出。

④ 8位锁存器和三态门

当输入允许信号OE有效时,打开三态门,将锁存器中的数字量经数据总线送到CPU。由于ADC0809具有三态输出,因而数据线可直接挂在CPU数据总线上。

图11.4给出了ADC0809转换器的引脚图,各引脚功能如下:

第11章 模数(A/D)和数模(D/A)转换 291

IN0~IN7:8路模拟输入通道。 D0~D7: 8位数字量输出端。

START:启动转换命令输入端,由1→0时启动A/D转换,要求信号宽度>100ns。 OE: 输出使能端,高电平有效。

ADDA、ADDB、ADDC:地址输入线,用于选通8路模拟输入中的一路进入A/D转换。其中ADDA是LSB位,这三个引脚上所加电平的编码为000~111,分别对应IN0~IN7,例如,当ADDC=0,ADDB=1,ADDA=1时,选中IN3通道。

ALE: 地址锁存允许信号。用于将ADDA~ADDC三条地址线送入地址锁存器中。 EOC: 转换结束信号输出。转换完成时,EOC的正跳变可用于向CPU申请中断,其高电平也可供CPU查询。

CLK: 时钟脉冲输入端,要求时钟频率不高于640KHZ。

REF(+)、REF(-):基准电压,一般与微机接口时,REF(-)接0V或-5V,REF(+)接+5V或0V。

11.2.3 ADC0809与CPU的连接及其应用

ADC 0809的接口设计需考虑的问题如下:

(1)DDA、ADDB、ADDC三端可直接连接到CPU地址总线A0、A1、A2三端,但此种方法占用的I/O口地址多。每一个模拟输入端对应一个口地址,8个模拟输入端占用8个口地址,对于微机系统外设资源的占用太多,因而一般ADDA、ADDB、ADDC分别接在数据总线的D0、D1、D2端,通过数据线输出一个控制字作为模拟通道选择的控制信号。

(2) ALE信号为启动ADC0809选择开关的控制信号,该控制信号可以和启动转换信号START同时有效。

(3) ADC0809芯片只占用一个I/O口地址,即启动转换用此口地址,输出数据也用此口地址,区别是启动转换还是输出数据用IOR,IOW信号来区分。硬件电路接线如图11.5所示。

图11.5 ADC0809和PC机系统总线的接线图。

当A/D转换结束,ADC输出一个转换结束信号数据。CPU可有多种方法读取转换结果:

① 查询方式; ② 中断方式; ③ 延时方式;

④ DMA 方式; ⑤ 时钟的提供;⑥ 参考电压的接法;⑦无条件传送方式 下面举例说明如何编写A/D转换程序。

例11.1 利用图11.5,采用无条件传送方式,编写一段轮流从IN0~IN7采集8路模拟信号,并把采集到的数字量存入0100H开始的8个单元内的程序。

MOV DI,0100H ;设置存放数据的首址 MOV BL,08H ;采集8次计数器

292

微型机原理及应用

MOV AH,00H ;选0通道

AA1∶ MOV AL,AH

MOV DX,ADPORT ;设置ADC0809芯片地址

OUT DX,AL ;使ALE、START有效,选择模拟通道,见图11.5 MOV CX,0050H

WAIT∶ LOOP WAIT ;延时,等待A/D转换

IN AL,DX ;使OUTPUTENABLE有效,输入数据,见图11.5 MOV [DI],AL ;保存数据 INC AH ;换下一个模拟通道 INC DI ;修改数据区指针 DEC BL

JNZ

AA1

图11.5 ADC0809和PC机系统总线的连接图

例11.2设某系统对8路模拟量分时进行数据采集,选用ADC0809芯片进行A/D转换,转换结果采用查询方式传送,所以除了一个传送转换结果的输入端口外,还需要传送8个模拟量的选择信号和A/D转换的状态信息。因此,可以采用8255A作为ADC0809和CPU的

第11章 模数(A/D)和数模(D/A)转换 293

连接接口,如图11.6 ADC0809与总线的连接图。将A口设为方式0的输入方式,用于传送转换结果,B口不用,用C口的PC2~PC0输出8路模拟量的选择信号,PC3输出ADC0809的控制信号,而ADC0809的状态可由PC7输入,所以,将C口也设为方式0,低4位为输出方式,高4位为输入方式。现假设8255A的端口A、B、C及控制口地址分别为2F0H,2F1H,

2F2H和2F3H,A/D转换结果的存储区首地址设为400H。采样顺序从IN0~IN7。程序如下:

MOV DX,2F3H ;2F3H是8255的控制口 MOV AL,10011000B ;置A组,B组为方式 0,A口和C口高4位 OUT DX,AL ;输入,C口低4位输出 MOV SI, 400H ;存放数据首地址 MOV CX,08H MOV BH,00H LOPl: OR BH,08H

MOV AL,BH

MOV DX,2F2H ;8255C口地址 OUT DX,AL ;启动A/D转换 AND BH,0F7HH ;PC3置0 MOV AL,BH

OUT DX,AL ;产生START和ALE的 下降沿 LOP2: IN AL,DX ;读入C口

TEST AL,80H ;测试K7 JZ LOP2 ;为0,继续查询

MOV DX,2F0H ;8255A口地址 IN AL,DX ;读入A/D转换结果 MOV [SI],AL ;存储数据 INC SI INC BH

LOOP LOPl ;8路没完,继续

294

微型机原理及应用

图11.6 ADC0809与总线的连接图

例11.3 中断方式应用(如图11.7所示)

微处理器按A/D所占用的口地址执行一条输出指令。启动A/D转换以后,在等待转换完成期间,微处理器可以继续执行其它任务。当转换完成时,A/D产生的状态信号EOC向微处理器申请中断。微处理器响应中断,在中断服务程序中对A/D占用的口地址执行一条输入指令以获得转换的结果数据。

图11.7 中断响应法A/D与CPU接口

中断响应法的特点是A/D转换完成后微处理器能立即得到通知,且不须花费等待时间,接口硬件简单,一般来讲程序会稍复杂些。程序流程如图11.8所示。

使用中断方法,可提高CPU的利用率。每当ADC转换结束时,由EOC信号向CPU发出中断请求,CPU响应中断在中断服务子程序中读取转换结果。图11.9为中断法ADC的接口电路。

下面是基于图11.9硬件的ADC转换程序。

8259-POR0 EQU 310H ;8259中A0=0地址 8259-POR1 EQU 312H ;8259中A1=1地址 ADC-PORT EQU 300H DATA SEGMENT

BUFF DB 1024 DUP(?) ;数据存放区 DATA ENDS

第11章 模数(A/D)和数模(D/A)转换 295

图11.8 中断响应法的程序流程 图11.9 中断法ADC接口

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

MAIN: MOV AX,0 ;中断矢量表段地址 MOV ES,AX

MOV DI,0F8H*4 ;中断矢量表偏移地址 MOV AX,OFFSET ADCINT CLD

STOSW ;存放服务程序偏移地址 MOV AX,CS ;存放服务程序段地址 STOSW

MOV DX,8259-POR0 ;8259初始化 MOV AX,13H ;ICW1 OUT DX,AX MOV DX,8259-POR1

MOV AX,0F8H ;ICW2,中断类型号 OUT DX,AX

MOV AX,01 ;ICW4 OUT DX,AX

MOV CX,1024 ;采集数据点循环控制 MOV BX,OFFSET BUFF ;数据指针

STI ;开中断 NEXT: MOV DX,ADCPORT ;ADC口地址

IN AL,DX ;启动ADC转换 HLT ;等待中断,转服务 INC BX LOOP NEXT

296

微型机原理及应用

MOV AX,4C00H ;返回操作系统 INT 21H

11.3 DAC0832数/模转换器

D/A转换器是指将数字量转换成模拟量的电路。数字量输入的位数有8位、12位和16位等,输出的模拟量有电流和电压两种。

11.3.1 数/模转换器原理

图11.10 简单的权电阻网络D/A转换器

VR1R2R4R8Rd1d2d3d4S1S2S3S4I1I2I3I4Io∑AVoRFD/A转换器它的输入量是数字量D,输出量为模拟量V0,要求输出量与输入量成正比,

即V0=D×VR,其中VR为基准电压。

数字量是由一位一位的数字构成,每个数位都代表一定的权。例如10000001,最高位的权是27,所以此位上的代码1表示数值1×128。因此,数字量D可以用每位的权乘以其代码值,然后各位相加。

例如,4个权电阻网络D/A转换器如图11.10所示。电阻阻值按2n分配,接入与否由数字量控制,运放输入电流:

IO?d1I1?d2I2?d3I2?d4I4?d1VRVVV?d2R?d3R?d4R1R2R4R8R

?

2VR(d12?1?d22?2?d32?3?d42?4)R

运放输出电压:VO=-IO×RF。设RF=R/2,d1d2d3d4=1000,VR=5V,则

2VR1111R1(1??0??0??0?)???VR??2.5VR2481622

11.3.2 DAC0832的内部结构与引脚图

VO??

DAC0832是一种相当普遍且成本较低的数/模转换器。该器件是一个8位转换器,它将一个8位的二进制数转换成模拟电压,可产生256种不同的电压值, DAC0832具有以下主

第11章 模数(A/D)和数模(D/A)转换 297

要特性:

①满足TTL电平规范的逻辑输入 ②分辨率为8位 ③建立时间为1us ④功耗20mw

⑤电流输出型D/A转换器

图11.11 给出了DAC0832的内部结构和引脚图。

DAC0832具有双缓冲功能,输入数据可分别经过两个锁存器保存。第一个是保持寄存器,而第二个锁存器与D/A转换器相连。DAC0832中的锁存器的门控端G输入为逻辑1时,数据进入锁存器;而当G输入为逻辑0时,数据被锁存。

DAC0832具有一组8位数据线D0~D7,用于输入数字量。一对模拟输出端IOUT1和IOUT2

用于输出与输入数字量成正比的电流信号,一般外部连接由运算放大器组成的电流/电压转

图11.11 DAC0832的内部结构和引脚图

换电路。转换器的基准电压输入端VREF一般在-10V~+10V范围内。 各引脚的功能如下:

D0~D7: :

: RFB: VREF: VCC:

IOUT1和IOUT2:

8位数据输入端。 片选信号输入端。

两个写入命令输入端,低电平有效。 传送控制信号,低电平有效。 互补的电流输出端。

反馈电阻,被制作在芯片内,与外接的运算放大器配合构成电流/电压转换电路。 转换器的基准电压。 工作电源输入端。

298

微型机原理及应用

AGND: DGND:

模拟地,模拟电路接地点。 数字地,数字电路接地点。

11.3.3 DAC0832的工作模式

DAC0832可工作在三种不同的工作模式。 1. 直通方式

当ILE接高电平,CS,WR1、WR2和XFER都接数字地时,DAC处于直通方式,8位数字量一旦到达D0~D7输入端,就立即加到D/A转换器,被转换成模拟量。在D/A实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。这种方式可用于不采用微机的控制系统中。

2. 单缓冲方式

单缓冲方式是将一个锁存器处于缓冲方式,另一个锁存器处于直通方式,输入数据经过一级缓冲送入D/A转换器。如把ILE接+5V,

接CPU系统总线的

行一条OUT指令,使

3. 双缓冲方式

即数据通过两个寄存器锁存后再送入D/A转换电路,执行两次写操作才能完成一次D/A转换。这种方式可在D/A转换的同时,进行下一个数据的输入,以提高转换速度。更为重要的是,这种方式特别适用于系统中含有2片及以上的DAC0832,且要求同时输出多个模拟量的场合。

都接地,使寄存锁存器2处于直通状态,接端口地址译码信号,这样CPU可执

信号,

有效,写入数据并立即启动D/A转换。

11.3.4 DAC0832与CPU的连接及其应用

由于DAC0832内部含有数据锁存器,在与CPU相连时,使其可直接挂在数据总线上。DAC0832采用单缓冲方式与CPU的连接如图11.12所示。

下面举例说明如何编写D/A转换程序。

例11.4 采用单缓冲方式,通过DAC0832输出产生三角波,三角波最高电压5V,最低电压0V。

(1) 电路设计所要考虑的问题

① 从CPU送来的数据能否被保存DAC0832内部有二级锁存寄存器,从CPU送来的数据能被保存,不用外加锁存器,可直接与CPU数据总线相连。

第11章 模数(A/D)和数模(D/A)转换 299

图11.12 DAC0832与CPU的单缓冲方式连接电路

② 二级输入寄存器如何工作

按题意采用单缓冲方式,即经一级输入寄存器锁存。假设我们采用第一级锁存,第二级直通,那么第二级的控制端WR2和XFER应处于有效电平状态,使第二级锁存寄存器一直处于打开状态。第一级寄存器具有锁存功能的条件是ILE、CS、WR1都要满足有效电平。为减少控制线条数,可使ILE一直处于高电平状态,控制WR1和CS端。电路连接如图11.12所示。

③ 输出电压极性

按题意输出波形变化范围为0V~5V,需单极性电压输出。

(2) 软件设计所要考虑的问题

① 单缓冲方式下输出数据的指令仅需一条输出指令即可。

图11.12所示CS端与译码电路的输出端相连,其地址数既是选中该DAC 0832芯片的片选信号,也是第一级

寄存器打开的控制信号。另外由于CPU的控制信号WR与DAC0832的写信号WR1相连,当执行OUT指令时,CPU的WR1写信号有效,与CS信号一起,打开第一级寄存器,输入数据被锁存。假设DAC0832地址为04A0H,输出0V电压程序如下:

图11.13 三角波电压输出流程图

300

微型机原理及应用

MOV AL,00H;设置输出电压值 MOV DX,04A0H;DAC0832片选地址

OUT DX,AL;输出数据,使DAC0832输出端得到0V模拟电压输出 ② 按题意产生三角波电压范围为0V~5V,那么所对应输出数据00H~FFH。所以三角

波上升部分,从00H起加1,直到FFH。三角波下降部分从FFH起减1,直到00H,流程图如图11.13所示。DAC0832输出的三角波形图如图11.14所示。

单缓冲方式下接口电路图和程序如下:

MOV AL,00H;设置输出电压值 MOV DX,04A0H;DAC0832芯片

地址送DX

AA1∶ OUT DX,AL

INC AL;修改输出数据 CMP AL,0FFH JNZ AA1

AA2∶ OUT DX,AL

DEC AL;修改输出数据 CMP AL,00H JNZ AA2 JMP AA1

例11.5 产生两个不同极性的方波信号,相位关系如图11.15所示,试进行软硬件设计。

分析:

(1) 从图11.15可看出u1是单极性的方波,u2是双极性的方波,需二个DAC0832转换器,一个为单极性输出,另一个为双极性输出。

(2) u1产生正跳变时,u2也产生正跳变,u1产生负跳变时,u2也产生负跳变,

要求二个DAC0832的输出波形同步,因而DAC0832的工作方式需采用双缓冲方式。

(3) 需要三个地址值,第一个地址作为第一片0832的片选信号,第二个地址作为第二片0832的片选信号,第三个地址作为同时打开两个DAC0832的8位DAC寄存器的控制信号,该信号连接到两片0832的XFER端。

(4) 第二片0832输出电压范围为-2.5V~+2.5V,可题目要求产生方波的电压范围为-2.0V~+1.2V,模拟电压所对应的数字量计算方法如下:Dx=(Vx-V2)×FFH/V1-V2其中

图11.15 波形图

图11.14 DAC0832输出的三角波形图

本文来源:https://www.bwwdw.com/article/8jeh.html

Top