模数和数模相互转换说明模数和数模相互转换说明
当计算机用于数据采集和过程控制的时候,采集对象往往是连续变化的物理量(如温度、压力、声波等),但计算机处理的是离散的数字量,因此需要对连续变化的物理量(模拟量)进行采样、保持,再把模拟量转换为数字量交给计算机处理、保存等。计算机的数字量有时需要转换为模拟量输出去控制某些执行元件,模/数转换器(ADC)与数/模转换器(DAC)用于连接计算机与模拟电路。为了将计算机与模拟电路连接起来,我们必须了解ADC和DAC的接口与控制。
本章首先介绍了模数转换和数模转换一些基本概念和模/数转换器(ADC)及数/模转换...
模数和数模相互转换说明
当计算机用于数据采集和过程控制的时候,采集对象往往是连续变化的物理量(如温度、压力、声波等),但计算机处理的是离散的数字量,因此需要对连续变化的物理量(模拟量)进行采样、保持,再把模拟量转换为数字量交给计算机处理、保存等。计算机的数字量有时需要转换为模拟量输出去控制某些执行元件,模/数转换器(ADC)与数/模转换器(DAC)用于连接计算机与模拟电路。为了将计算机与模拟电路连接起来,我们必须了解ADC和DAC的接口与控制。
本章首先介绍了模数转换和数模转换一些基本概念和模/数转换器(ADC)及数/模转换器(DAC)的主要性能参数,然后重点介绍了A/D转换器和D/A转换器的基本工作原理、接口技术和应用。
11.1 模数转换和数模转换概述
11.1.1 一个典型的计算机自动控制系统
一个包含A/D和D/A转换器的计算机闭环自动控制系统如图11.1所示。
图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.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为:
q =
=
≈0.0195V=19.5mV
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的实际转换值偏离理想转换特性的最大偏差与满量程之间的百分比称为线性误差。
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.2 逐次逼近法A/D转换器
采用逐次逼近法的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转换器的内部结构图。
图11.4 ADC0809引脚图
图11.3中ADC0809内部各单元的功能如下:
① 通道选择开关
八选一模拟开关,实现分时采样8路模拟信号。
② 通道地址锁存和译码
通过ADDA、ADDB、ADDC三个地址选择端及译码作用控制通道选择开关。
③ 逐次逼近A/D转换器
包括比较器、8位开关树型D/A转换器、逐次逼近寄存器。转换的数据从逐次逼近寄存器传送到8位锁存器后经三态门输出。
④ 8位锁存器和三态门
当输入允许信号OE有效时,打开三态门,将锁存器中的数字量经数据总线送到CPU。由于ADC0809具有三态输出,因而数据线可直接挂在CPU数据总线上。
图11.4给出了ADC0809转换器的引脚图,各引脚功能如下:
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次计数器
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.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路没完,继续
图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.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
MOV AX,4C00H ;返回操作系统
INT 21H
11.3 DAC0832数/模转换器
D/A转换器是指将数字量转换成模拟量的电路。数字量输入的位数有8位、12位和16位等,输出的模拟量有电流和电压两种。
11.3.1 数/模转换器原理
图11.10 简单的权电阻网络D/A转换器
D/A转换器它的输入量是数字量D,输出量为模拟量V0,要求输出量与输入量成正比,即V0=D×VR,其中VR为基准电压。
数字量是由一位一位的数字构成,每个数位都代表一定的权。例如10000001,最高位的权是27,所以此位上的代码1表示数值1×128。因此,数字量D可以用每位的权乘以其代码值,然后各位相加。
例如,4个权电阻网络D/A转换器如图11.10所示。电阻阻值按2n分配,接入与否由数字量控制,运放输入电流:
运放输出电压:VO=-IO×RF。设RF=R/2,d1d2d3d4=1000,VR=5V,则
11.3.2 DAC0832的内部结构与引脚图
DAC0832是一种相当普遍且成本较低的数/模转换器。该器件是一个8位转换器,它将一个8位的二进制数转换成模拟电压,可产生256种不同的电压值, DAC0832具有以下主要特性:
①满足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:
8位数据输入端。
:
片选信号输入端。
:
两个写入命令输入端,低电平有效。
:
传送控制信号,低电平有效。
IOUT1和IOUT2:
互补的电流输出端。
RFB:
反馈电阻,被制作在芯片内,与外接的运算放大器配合构成电流/电压转换电路。
VREF:
转换器的基准电压。
VCC:
工作电源输入端。
AGND:
模拟地,模拟电路接地点。
DGND:
数字地,数字电路接地点。
11.3.3 DAC0832的工作模式
DAC0832可工作在三种不同的工作模式。
1. 直通方式
当ILE接高电平,CS,WR1、WR2和XFER都接数字地时,DAC处于直通方式,8位数字量一旦到达D0~D7输入端,就立即加到D/A转换器,被转换成模拟量。在D/A实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。这种方式可用于不采用微机的控制系统中。
本文档为【模数和数模相互转换说明】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。