500 likes | 646 Views
8.3 A/D 转换器及接口技术. 8.3.1 A/D 转换器概述 在大规模集成电路高速发展的今天,由于计算机控制技术在工程领域内的广泛应用, A/D 转换器在应用系统中占据着重要的地位。为了满足各种不同的检测及控制任务的需要,大量结构不同,性能各异的 A/D 转换电路应运而生。尽管 A/D 转换器的种类繁多,但目前广泛使用的还是逐次比较式和双积分式。. 8.3.2 A/D 转换器的主要技术指标 A/D 转换器的主要技术指标如下: (1) 分辨率:指对输入模拟量变化的灵敏度。习惯上用输出二进制的位数或 BCD 码位数表示。
E N D
8.3 A/D转换器及接口技术 • 8.3.1 A/D转换器概述 • 在大规模集成电路高速发展的今天,由于计算机控制技术在工程领域内的广泛应用,A/D转换器在应用系统中占据着重要的地位。为了满足各种不同的检测及控制任务的需要,大量结构不同,性能各异的A/D转换电路应运而生。尽管A/D转换器的种类繁多,但目前广泛使用的还是逐次比较式和双积分式。
8.3.2 A/D转换器的主要技术指标 • A/D转换器的主要技术指标如下: • (1) 分辨率:指对输入模拟量变化的灵敏度。习惯上用输出二进制的位数或BCD码位数表示。 • (2) 转换精度:指与数字输出量所对应的模拟输入量的实际值与理论值之间的差值。精度有绝对精度和相对精度两种表示方法。 • (3) 转换速率:指能够重复进行数据转换的速度,即每秒转换的次数,而完成一次A/D转换所需的时间(包括稳定时间),为转换速率的倒数。
8.3.3 AT89C51单片机与ADC0809接口应用 • 1. ADC0809内部结构及特性 • ADC0809是8位逐次比较式A/D转换器,其内部包括8位A/D转换器,8路模拟开关、三态输出锁存器以及地址译码器等。它可分别对8路0~5 V模拟量输入信号进行转换。输出量有三态锁存缓冲,可直接连到单片机的数据总线上。图8-10是ADC0809的内部结构图。
2. ADC0809引脚功能 • 图8-11是ADC0809的引脚图,引脚功能如下: • (1) IN0~IN7:8路模拟量输的入端。 • (2) 2-1~2-8:8位数字量输出端口,2-1为最高有效位,2-8为最低有效位。 • (3) START:启动控制输入端,加正脉冲,立即启动A/D转换。
(4) ALE:地址锁存控制端。 • (5) EOC:转换结束信号输出端。 • (6) OE:输出允许控制端。 • (7) CLK:时钟信号输入端。 • (8) REF(+)、REF(-):参考电压输入端,一般REF(+)接VCC,REF(-)接GND。 • (9) ADDA、ADDB、ADDC:8位模拟开关的3位地址选通输入端,用来选择对应的输入通道,其对应关系如表8-2所示。 • (10) VCC和GND:电源端和接地端。
ADDC ADDB ADDA 输入通道 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 • 表8-2 8路模拟开关功能表
3.AT89C51与ADC0809接口 • ADC0809与AT89C51的连接有三种方式:查询方式、中断方式和定时方式。应用时采用什么方式,应该根据具体情况来选择。 • 图8-12为单片机AT89C51与ADC0809的硬件电路图。该连接图既可作为中断方式,又可作为查询方式,通过软件编程,这两种方式都能够实现。
[例8.3] 用查询方式分别对8路模拟信号轮流采样一次,并依次把结果转存到以30H为首址的数据存储区,程序如下: • MAIN: MOV R1,#30H ;置数据区首址 • MOV DPTR,#0FFF8H ;指向IN0 • MOV R7,#08H ;置通道数 • LOOP:MOVX @DPTR,A ;启动A/D转换 • MOV R6,#05H ;软件延时 • DLAY: NOP • DJNZ R6,DLAY
WAIT:JNB P3.2,WAIT • ;查询EOC是否为高,高则转换结束 • MOVX A,@DPTR;读取转换结果 • MOV @R1,A ;存取数据 • INC DPTR ;指向下一个通道 • INC R1 ;指向下一个存储单元 • DJNZ R7,LOOP ;巡回检测八个通道 • RET
[例8.4] 利用中断方式分别对8路模拟信号轮流采集一次,转换结果依次存放在首址为30H的片内数据区,程序如下: • ORG 0000H • AJMP MAIN • ORG 0003H • AJMP PINT1 • MIAN:MOV R1,#30H ;置数据区首址 • MOV DPTR,#0FEF8H ;指向IN0 • MOV R7,#08H
SETB IT0 • SETB EX0 ;开中断 • SETB EA • LOOP:MOVX @DPTR,A ;启动A/D转换 • PINT1:MOVX A,@DPTR ;读取数据 • MOV @R1,A ;存取数据
INC R1 ;更新存储单元 • INC DPTR ;更新通道 • DJNZ R7,DONE • CLR EXO ;关中断 • CLR EA • RETI ;中断返回 • DONE: MOVX @DPTR,A • RETI
8.3.4 AT89C51与MC14433接口应用 • 1. MC14433的结构及特性 • MC14433是3 位双积分A/D转换器,它具有抗干扰性能好、转换精度高、自动校零、自动极性输出、自动量程控制信号输出、动态高位扫描BCD码输出、单基准电压、过量欠量程输出标志等特点,但其转换速度慢,在不要求高速转换的场合被广泛地应用。
2.MC14433引脚介绍 • MC14433的引脚如图8-13所示。各引脚功能如下: • (1) VAG:被测电压VX和基准电压VR的接地端(模拟地)。 • (2) VR:外接基准电压(+2 V或+200 mV)。 • (3) VX:被测电压输入端。 • (4) R1,R1/C1,C1:外接积分电阻和外接积分电容端。 • (5) CO1,CO2:外接失调补偿电容,典型值为0.1 μF。
(6) DU:更新输出的A/D转换数据结果的输入端,当DU与EOC相连时,每次的A/D转换结果都被更新。 • (7) CLK1,CLK0:时钟信号输入、输出端。 • (8) VDD、VEE:分别为正电源端(接+5 V)和模拟负电源端(接-5 V)。 • (9) VSS:数字地或系统地。 • (10) EOC:转换周期结束标志,每当一个A/D转换周期结束,输出一个宽度为时钟周期二分之一的正脉冲。
(11) (11) OR:过量程标志,平时为高电平,当|VX|>VR时,为低电平。 • (12) DS1~DS4:多路选通脉冲输出端,DS1对应千位,DS4对应个位,每个选通脉冲宽度为18个时钟周期,两个相邻脉冲之间间隔2个时钟周期,其脉冲时序图见图8-14。
(13) Q0~Q3:BCD码数据输出端,其中Q0为最低位,Q3为最高位。在DS2、DS3和DS4选通期间,分别输出三位完整的BCD码,即0~9这10个数码中的任何一个。但在DS1选通期间,Q0~Q3输出除了表示千位的0或1外,还表示了正负极性及欠过量程,其含义见表8-3。
DS1 Q3 Q2 Q1 Q0 输出结果状态 1 1 × × 0 千位数为0 1 0 × × 0 千位数为1 1 × 1 × 0 输出结果为正值 1 × 0 × 0 输出结果为负值 1 0 × × 1 输入信号为过量程 1 1 × × 1 输入信号为欠量程 • 表8-3 DS1选通时Q0~Q3表示的输出结果
3.AT89C51与MC14433的接口 • 由于MC14433的A/D转换结果是动态分时输出BCD码。Q0~Q3和DS1~DS4都不是总线式的,因此,单片机只能通过并行口或扩展并行口与其相连。图8-15为AT89C51与MC14433的硬件接口图。
图8-15中,MC14433用集成精密+2.5 V电压基准源经电位器分压作为A/D转换的基准电压。EOC与DU相连,用来选择连续转换方式,每次转换结果都送至输出寄存器,并且由EOC作为查询或中断方式读取转换结果的输入信号。 • 用MC14433设计的A/D转换电路中,在程序设计时,因为要对符号位进行位处理,所以要将数据保存在能够进行位处理的单元。下面的程序是在中断程序中用查询方式读取MC14433的BCD码扫描输出值,并将读取的数据存在能进行位寻址的2EH、2FH单元,数据存放格式如图8-16所示。
程序如下: • MAIN:SETB IT1 ;INT1为边沿触发方式 • MOV IE,#10000100B • ;CPU开中断,允许INT1中断 • 中断服务程序: • PINT1: MOV A,P1 • JNB ACC.4,PINT1 ;等待DS1信号 • JB ACC.0,PER ;过欠量程转PER
JB ACC.2,PL1 ;结果为正转PL1 • SETB 77H ;负数,符号位置1 • AJMP PL2 • PL1:CLR 77H ;正数,符号位清0 • PL2:JB ACC.3,PL3 ;ACC.3=0时,千位数为1 • SETB 74H ;千位数置1 • AJMP PL4
PL3:CLR 74H ;千位数清零 • PL4:MOV A,P1 • JNB ACC.5,PL4 • ;等待百位BCD码的选通信号 • MOV R0,#2EH • XCHD A,@R0 ;百位数送入2EH低4位 • PL5:MOV A,P1 • JNB ACC.6,PL5 ;等待十位数选通信号DS3
SWAP A ;高低4位交换 • INC R0 ;指向2FH单元 • MOV @R0,A ;十位数送入2FH • PL6:MOV A,P1 • JNB ACC.7,PL6 ;等待个位数选通信号DS4 • XCHD A,@R0 ;个位数送入2FH低4位 • RETI • PER:SETB 10H ;置过欠量程标志 • RETI
8.4 D/A转换器及接口技术 • 8.4.1 D/A转换器的主要技术指标 • 1. 分辨率 • 分辨率指最小输出电压(对应的输入数字量最低有效位为1)与最大输出电压(对应的数字输入量所有位全为1)之比。 • 例如,对于10位D/A转换器,其分辨率为
2. 转换精度 • D/A的转换精度主要取决于D/A转换器的二进制位数。例如,8位的D/A相对误差是1/256,16位的D/A相对误差为1/65 536。显然,二进制位数越多精度越高。 • 3. 建立时间 • D/A转换器是指从数字输入端发生变化开始,到输出模拟信号电压(或模拟信号电流)达到满刻度值(1/2)LSB时所需要的时间。
8.4.2 D/A转换器与单片机的接口 • 1. 不带数据锁存器的D/A转换器的接口方法 • 对于这类D/A转换器与单片机的接口连接,只需在D/A转换器输入端外加一个锁存器即可。MC1408是一个不带锁存器的8位D/A转换器,图8-17是MC1408与89C51的接口连线图。
从图8-17中可知,由于MC1408不带数据锁存器,所以用一片片外锁存器74LS273作为具有数据锁存的并行输出口,其输出端与MC1408的输入端相连,用2.5 V的AD580作为D/A的参考电压源。MC1408的输出外接一个运放,目的是由电流型转换为电压型的输出,用RBP选择输出电压的极性:若连上RBP,输出电压是双极性的;若断开RBP,则输出电压是单极性的。
图8-17 不带数据锁存器的D/A转换器与AT89C51的连接图
根据图8-17中的连接方法,选通74LS273的口地址为FEH,以下三条指令就能实现D/A转换。根据图8-17中的连接方法,选通74LS273的口地址为FEH,以下三条指令就能实现D/A转换。 • MOV A,#NN ;NN为待转换的数字量 • MOV R0,#0FEH ;送口地址 • MOVX @R0,A ;输出转换数据
执行MOVX指令,即产生信号,将锁存在74LS273中的数据输出到MC1408,立即进行D/A转换。执行MOVX指令,即产生信号,将锁存在74LS273中的数据输出到MC1408,立即进行D/A转换。 • 以下程序可以产生连续的锯齿波。 • MOV R0,#0FEH • MOV A,#00H ;置转换初值 • LOOP:MOVX @R0,A ;启动D/A转换 • INC A ;转换值加1 • AJMP LOOP
2. 带数据锁存器的D/A转换器的接口方法 • 1) DAC0832特性与结构 • DAC0832具有两个输入数据寄存器的8位DAC,分辨率为8位,电流稳定时间1 μs,可采用单缓冲、双缓冲或直接数字输入工作方式,转换结果为电流型,它能直接与51系列单片机接口。DAC0809是单一电源供电(+5 V~+15 V),低功耗。图8-18是DAC0832的内部逻辑结构图。
2) DAC0832引脚功能介绍 • 图8-19是DAC0832的引脚图。各引脚功能如下: • (1) DI0~DI7:数据输入线。 • (2) ILE:数据锁存允许端,高电平有效。 • (3) :输入寄存器选择信号端,低电平有效。 • (4) :输入寄存器的写选通信号端,低电平有效。 • (5) :DAC寄存器的写选通信号端,低电平有效。 • (6) :数据转换控制信号线,低电平有效。
(7) VREF:基准电源输入端。 • (8) Rfb:反馈信号输入端(反馈电阻在芯片内部)。 • (9) IOUT1、IOUT2:电流输出端。 • (10) VCC:电源输入端。 • (11) AGND:模拟信号地。 • (12) DGND:数字信号地。
3) DAC0832与AT89C51的接口 • 从图8-19可知,只有当和ILE同时有效时,才能够通过 将数据写入输入寄存器。 • (1) 单缓冲工作方式:在应用系统中,当只有一路模拟量输出或虽有多路模拟量但不需要做同步输出时,就可以采用单缓冲工作方式。
在图8-20中,D/A转换器的基准电压VREF取自MC1403的分压输出,LM324的功能是把电流型输出转换成单极性的电压型输出,由于 、 并接到地址锁存器的A0,所以0832的口地址为FFFEH。 • 按照图8-23,产生梯形波的程序如下:
START: MOV DPTR,#0FFFEH ;选中0832 • STEP: MOV R6,#20H ;置阶跃值 • MOV R4,#05H ;置阶跃次数 • MOV A,#00H ;送初值 • LOOP: MOVX @DPTR,A ;启动D/A转换 • ACALL DELAY ;调延时程序 • ADD A,R6 ;加阶跃值 • DJNZ R4,LOOP ;重复数到否 • AJMP STEP
(2) 双缓冲工作方式:双缓冲工作方式用于需要同时输出几路模拟信号的场合。此种方式下,每一路模拟量都需要一片DAC0832,从而构成多个0832同步输出系统,图8-21是两路模拟信号同步输出的电路连接方法。
下面是按照图8-21使两路模拟电压同时输出的程序清单:下面是按照图8-21使两路模拟电压同时输出的程序清单: • MOV DPTR,#0FFFEH • MOV A,#Xdata • MOVX @DPTR,A • ;Xdata写入第一片0832的输入寄存器 • MOV DPTR,#0FFFDH • MOV A,#Ydata
MOVX @DPTR,A • ;Ydata写入第二片0832的输入寄存器 • MOV DPTR,#0FBH • MOV @DPTR,A • ;两片0832的输入寄存器的数据同时送到各自的DAC寄存器