270 likes | 476 Views
8.4.2 A/D 转换接口 A/D 转换器是模拟信号源与计算机或其他数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机或数字系统进行处理。在工业控制和数据采集及许多其他领域中, A/D 转换器是不可缺少的重要组成部分。 由于应用特点和要求的不同,需要采用不同工作原理的 A/D 转换器。 A/D 转换器的主要类型有:逐位比较 ( 逐位逼近 ) 型、积分型、计数型、并行比较型、电压 – 频率型 ( 即 V/F 型 ) 等。
E N D
8.4.2 A/D转换接口 A/D转换器是模拟信号源与计算机或其他数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机或数字系统进行处理。在工业控制和数据采集及许多其他领域中,A/D转换器是不可缺少的重要组成部分。 由于应用特点和要求的不同,需要采用不同工作原理的A/D转换器。A/D转换器的主要类型有:逐位比较(逐位逼近)型、积分型、计数型、并行比较型、电压–频率型(即V/F型)等。 在选用A/D转换器时,主要应根据使用场合的具体要求,按照转换速度、精度、功能以及接口条件等因素决定选择何种型号的A/D转换芯片。
1.ADC0809 ADC0809是逐位逼近型8通道、8位A/D转换芯片,CMOS工艺制造,双列直插式28引脚封装。图8.51给出了ADC0809芯片的内部结构框图及引脚图(图中给出的数据为对应的引脚号)。ADC0809片内有8路模拟开关,可输入8个模拟量,单极性输入,量程为0+5 V。典型的转换速度为100 s。片内带有三态输出缓冲器,可直接与CPU总线接口。其性能价格比有明显的优势,是目前广泛采用的芯片之一,可应用于对精度和采样速度要求不高的数据采集场合或一般的工业控制领域。
1) 内部结构与转换原理 如图8.51所示,ADC0809内部由三部分组成:8路模拟量选通输入部分,8位A/D转换器和三态数据输出锁存器。 ADC0809允许连接8路模拟信号(IN7IN0),由8路模拟开关选通其中一路信号输入并进行A/D转换,模拟开关受通道地址锁存和译码电路的控制。当地址锁存信号ALE有效时,3位地址ADDC、ADDB和ADDA(通常与地址总线A2、A1和A0引脚相连)进入地址锁存器,经译码后使8路模拟开关选通某一路模拟信号。输入的地址信息与所选通的模拟通道之间存在一一对应的关系。如当ADDC、ADDB、ADDA=000时,IN0选通;ADDC、ADDB、ADDA=001时,IN1选通;ADDC、ADDB、ADDA=111时,IN7选通。
8位A/D转换器是逐次逼近式,由256R电阻分压器、树状模拟开关(这两部分组成一个D/A转换器)、电压比较器、逐次逼近寄存器SAR、逻辑控制和定时电路组成。其工作原理是采用对分搜索方法逐次比较,找出最逼近于输入模拟量的数字量。电阻分压器需外接正负基准电源VREF(+)和VREF(-)。CLOCK端外接时钟信号。A/D转换器的启动由START信号控制。转换结束时控制电路将数字量送入三态输出锁存器锁存,并产生转换结束信号EOC。 三态输出锁存器用来保存A/D转换结果,当输出允许信号OE有效时,将打开三态门,使转换结果输出。
2) 引脚定义 IN0IN7——8路模拟量输入端。 ADDC、ADDB和ADDA——地址输入端,以选通IN7IN0 8路中的某一路信号。 ALE——地址锁存允许信号,有效时将ADDC、ADDB和ADDA锁存。 CLOCK——外部时钟输入端。允许范围为101280 kHz。时钟频率越低,转换速度就越慢。 START——A/D转换启动信号输入端。有效信号为一正脉冲。在脉冲的上升沿,A/D转换器内部寄存器均被清零,在其下降沿开始A/D转换。
EOC——A/D转换结束信号。在START信号上升沿之后不久,EOC变为低电平。当A/D转换结束时,EOC立即输出一正阶跃信号,可用来作为A/D转换结束的查询信号或中断请求信号。 OE——输出允许信号。当OE输入高电平信号时,三态输出锁存器将A/D转换结果输出到数据量输出端D7D0。 D7D0——数字量输出端。D0为最低有效位(LSB),D7为最高有效位(MSB)。 VCC与GND——电源电压输入端及地线。 VREF(+)与VREF(-)——正负基准电压输入端。中心值为(VREF(+)+VREF(−))/2(应接近于VCC/2),其偏差不应该超过 0.1 V。正负基准电压的典型值分别为 +5 V和0 V。
ADC0809的数字量输出值D(十进制数)与模拟量输入值VIN之间的关系如下: 通常VREF(−)=0 V,所以 当VREF(+)=5 V,VREF(-)=0 V,输入的单极性模拟量从0 V到4.98 V变化时,对应的输出数字量在0到255(00HFFH)之间变化。
2.AD574 AD574是AD公司生产的12位逐次逼近A/D转换芯片。AD574系列包括AD574、AD674和AD1674等型号的芯片。AD574的转换时间为1535 s。片内有数据输出锁存器,并有三态输出的控制逻辑。其运行方式灵活,可进行以12位转换,也可作8位转换;转换结果可直接以12位输出,也可先输出高8位,后输出低4位。可直接与8位和16位的CPU接口。输入可设置成单极性,也可设置成双极性。片内有时钟电路,无需加外部时钟。 AD574适用于对精度和速度要求较高的数据采集系统和实时控制系统。
1) AD574的引脚 AD574采用双列直插式28引脚封装。图8.52给出了AD574的引脚图,各主要引脚的含义如下: DB11DB0——输出数据线。DB11为最高有效位,DB0为最低有效位。 CS——片选信号,输入,低电平有效。 CE——片使能信号,输入,高电平有效。 R/C——数据读出/启动A/D转换信号引脚,输入。当该引脚为高电平时,允许读A/D转换器输出的转换结果;当该引脚输入低电平时,启动A/D转换。
A0和12/8——二者配合用于控制转换数据长度是12位或8位,以及数据输出的格式(是12位一次输出还是先输出高8位,后输出低4位)。A0=0,表示启动一次12位转换;A0=1,表示启动一次8位转换。12/8=1,表示12位数据并行输出。 STS——转换状态输出端。该引脚在转换过程中呈现高电平,转换一结束立即返回到低电平。用户可通过查询该引脚的状态了解转换是否结束。 10VIN模拟信号输入端,允许输入的电压范围为0+10 V(单极性输入时)或5+5V(双极性输入时)。
20VIN——模拟信号输入端,允许输入的电压范围为0+20 V(单极性输入时)或−10+10 V(双极性输入时)。 BIP OFFSET——偏置电压输入,用于调零。 REFOUT——内部基准电压输出端。 REFIN——基准电压输入端。该信号与REFOUT配合,用于满刻度校准。
2) AD574的操作 AD574内部的控制逻辑能根据CPU给出的控制信号而进行转换或读出操作。只有在CE=1且CS=0时才能进行一次有效操作。当CE、CS同时有效,而R/C为低电平时启动A/D转换,至于是启动12位转换还是8位转换,则由A0来确定,A0=0时启动12位转换,A0=1时启动8位转换;当CE、CS同时有效,而R/C为高电平时是读出数据,至于是一次读出12位还是12位分两次读出,则由12/8引脚确定。若12/8接+5 V,则一次并行输出12位数据;若12/8接数字地,则由A0控制是读出高8位还是低4位。控制信号的逻辑功能见表8.6。
CE A0 功 能 1 0 0 0 启动12位转换 1 0 0 1 启动8位转换 1 0 1 接+5 V 12位数据并行输出 1 0 1 接地 0 输出高8位数据 1 0 1 接地 1 输出低4位数据 表8.6 AD574控制信号的功能
3) 单极性与双极性的输入方式 输入AD574的模拟量可为单极性和双极性,单极性的输入电压范围为010 V或020 V;双极性的输入电压范围为-5+5 V或-10+10 V。这些灵活的工作方式都必须按规定采用与之对应的接线方式才能实现。单极性和双极性输入时的接线方式见图8.53(a)和(b)。模拟量(单极性或双极性)由引脚10VIN(输入010 V或-5+5 V)或20VIN(输入020 V或-10+10 V)输入。 A/D转换器转换的结果是二进制偏移码。在两种不同极性的输入方式下,AD574的输入模拟量与输出数字量的对应关系如表8.7所示。
图8.53 AD574单极性与双极性输入时的连接方法 (a) 单极性输入;(b) 双极性输入
输入方式 量程/V 输入量/V 输出数字量 输入方式 量程/V 输入量/V 输出数字量 单极性 010 0 000H 单极性 020 0 000H 5 7FFH 10 7FFH 10 FFFH 20 FFFH 双极性 −5+5 −5 000H 双极性 −10+10 −10 000H 0 7FFH 0 7FFH +5 FFFH +10 FFFH 表8.7 12位A/D输入模拟量与输出数字量的对应关系
3.A/D转换芯片与微处理器的接口 1) 8位A/D转换芯片与CPU的接口 由于ADC0809芯片内部集成了三态数据锁存器,其数据输出线可以直接与计算机的数据总线相连,因此,设计ADC0809与计算机的接口主要是对模拟通道的选择、转换启动的控制以及读取转换结果的控制等方面的设计。 可以用中断方式,也可以用查询方式,还可以用无条件传送方式将转换结果送CPU。无条件传送即启动转换后等待100 s(ADC0809的转换时间),然后直接读取转换结果。无条件传送方式接口电路简单。
用ADC0809对8路模拟信号进行循环采样,各采集100个数据分别存放在数据段内的8个数据区中,采用无条件传送方式。接口电路如图8.54所示。 图8.54 ADC0809与微型计算机的接口
设图中通道0~7的地址依次为380H387H,则无条件传送的采集程序如下:设图中通道0~7的地址依次为380H387H,则无条件传送的采集程序如下: DATA SEGMENT COUNT EQU 100 BUFF DB COUNT*8DUP(?) DATA ENDS STACK SEGMENT stack DW 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV BX,OFFSET BUFF MOV CX,COUNT OUTL: PUSH BX MOV DX,380H;指向通道0 INLOP:OUT DX,AL ;锁存模拟通道地址,启动转换 MOV AX,50000 ;延时,等待转换结束
WT: DEC AX JNZ WT IN AL,DX ;读取转换结果 MOV [BX],AL ADD BX,COUNT ;指向下一个通道的存放地址 INC DX ;指向下一个通道的地址 CMP DX,388H ;8个通道都采集了一遍吗? JB INLOP POP BX ;弹出0通道的存放地址 INC BX ;指向0通道的下一个存放地址 LOOP OUTL MOV AH,4CH INT 21H CODE ENDS END START
2)12位A/D转换芯片与CPU的接口 图8.55为AD574与ISA总线的连接图。ISA总线最早用于IBM PC/AT机,后来在许多兼容机上被采用,现在的Pentium机上也留有13个ISA插槽,在硬件上保持了向上的兼容。由于ISA总线具有16位数据宽度,易于与12位的AD574接口,可以方便地构成12位的数据采集系统。如果对数据采集速度要求不高,为了简化硬件设计,可以将A/D转换成的12位数据分两次读入计算机,如图8.55所示。
图中双向缓冲器74LS245用于数据总线缓冲,当DIR=1,R/C=1时,系统通过74LS245读AD574转换结果;当DIR=0,R/C=0时,系统用假写外设操作来启动AD574做双极性A/D转换。由于电压从10VIN输入,因而外接+12 V和−12 V电源即可。译码电路用系统地址线A9A1参加译码,IOR和IOW也参加译码。信号AEN必须参加译码,以避开DMA操作时对AD574的误操作。 地址A0接AD574的A0,当用偶地址假写AD574时,启动12位A/D转换,否则,启动8位A/D转换;当用偶地址读AD574时,读出高8位,否则读出低4位。由于AD574的转换结束信号STS没有考虑,在此使用延时的方法实现转换。
设图中AD574的偶地址和奇地址分别为380H和381H,则采集程序如下:设图中AD574的偶地址和奇地址分别为380H和381H,则采集程序如下: MOV DX,380H OUT DX,AL ;假写端口启动12位A/D转换 CALL DELAY ;调用延时子程序,等待转换结束 MOV DX,380H IN AL,DX ;读高8位 MOV AH,AL MOV DX,381H IN AL,DX ;从数据总线D7D4位读入低4位