【接口技术】实验5:模/数(ADC0809)和数/模(DAC0832)转换

您所在的位置:网站首页 多路模拟开关由什么组成图片 【接口技术】实验5:模/数(ADC0809)和数/模(DAC0832)转换

【接口技术】实验5:模/数(ADC0809)和数/模(DAC0832)转换

2024-07-12 05:39| 来源: 网络整理| 查看: 265

实验5  模/数(ADC0809)和数/模(DAC0832)转换实验

一、实验目的

1:了解模/数转换的基本原理,掌握ADC0809的使用方法。

2:了解数/模转换的基本原理,掌握DAC0832的使用方法。

二、实验内容

(1)模/数转换器0809查询法实验(实验指导书148页的实验18)

ADC0809 是美国模拟器件公司生产的 8 位逐次逼近型 AD 转换芯片,是目前性价比较高的ADC 芯片之一。适合于对采集精度要求不高、速度不是很快的场合。ADC0809 是一种带有 8位转换器、8 位多路转换开关以及与微处理机兼容的控制逻辑的 CMOS 组件。8 位 A/D 转换器的转换方法为逐次逼近法。在 A/D 转换器的内部含有一个高阻抗斩波稳定比较器,一个带有模拟开关树组的 256R 分压器,以及一个逐次逼近的寄存器。八路的模拟开关由地址锁存器和译码器控制,可以在 8 个通道中任意访问一个单边的模拟信号,其原理框图如图所示。

ADCO809 无需调零和进行满量程调整,又由于多路开关的地址输入能够进行锁存和译码,而且它的三态 TTL 输出也可以锁存,因此易于与微处理机进行接口。从图中可以看出,ADCO809由两大部分组成。第一部分为八通道多路模拟开关,它用来控制 C、B、A 端子和地址锁存允许端子,可使其中一个通道被选中。第二部分为一个逐次逼近型 A/D 转换器,它由比较器、控制逻辑、输出缓冲锁存器、逐次逼近寄存器以及开关树组和 256R 电阻分压器组成。后两种电路(即开关树组和 256R 电阻分压器)组成 D/A 转换器。控制逻辑用来控制逐次逼近寄存器从高位到低位逐次取“1”,然后将此数字量送到开关树组(8 位开关),用来控制开关 S7~S0 与参考电平相连接。参考电平经 256R 电阻分压器后,输出一个模拟电压 Uo,Uo、Ui在比较器中进行比较。当Uo>Ui 时,本位D=0;当Uo≤Ui 时,本位D=1。因此,从D7~D0 比较 8 次即可逐次逼近寄存器中的数字量,即与模拟量 Ui 所对应的数字量相等。此数字量送入输出锁存器,并同时发转换结束脉冲。

【1】ADC0808/0809 的外引脚功能

ADC0808/0809 的管脚排列如下图所示,其主要管脚的功能如下:

INO~IN7:8 个模拟量输入端。

START:启动 A/D 转换器,当 START 为高电平时,开始 A/D 转换。

EOC:转换结束信号。当A/D 转换完毕之后,发出一个正脉冲,表示 A/D 转换结束。此信号可作为 A/D 转换是否结束的检测信号或中断申请信号。

OE:输出允许信号。如果此信号被选中,则允许从 A/D 转换器的锁存器中读取数字量。

CLOCK:时钟信号。

ALE:地址锁存允许,高电平有效。当ALE 为高电平时,允许 C、B、A 所示的通道被选中,并将该通道的模拟量接入 A/D 转换器。

ADDA、ADDB、ADDC:通道号地址选择端,C 为最高位,A 为最低位。当 C、B、A 为全零(000)时,选中 INO 通道接入;为 001 时,选中 IN1 通道接入;为 111 时,选中 IN7 通道接入。

D7~D0:数字量输出端。

UREF(+) 、UREF (-) :参考电压输入端,分别接+、-极性的参考电压,用来提供 D/A 转换器权电阻的标准电平。在模拟量为单极性输入时,UREF (+) =5V,UREF(-)=0V;当模拟量为双极性输入时,UREF(+) =+5V,UREF(-) =-5V。

主要性能如下:

分辨率:8位。线性误差:士1 LSB。电源电压:5V。参考电源REF (+) ≤5V,参考电源REF (-) ≥0V。模拟输入范围:0~5V。8路模拟模拟信号输入。转换时间:100μs。功耗15mW (5V、3mA)。

[1]参考电压选择范围:0 ≤ UREF(-) ≤ UREF(+) ≤ 5V

[2]ADC转换公式:

[3]ADC0809的工作过程:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A /D转换结束,结果数据已存入锁存器,这个信号可 用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。

[4]转换数据的传送:A/D 转换后得到的数据应及时传送给 CPU 进行处理。数据传送的关键问题是如何确认 A/D 转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。

1——定时传送方式:对于一种 A/D 转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADCO809 转换时间为 100μs,可据此设计一人延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。

2——查询方式:A/D 转换芯片由表明转换完成的状态信号,例如 ADCO809 的 EOC 端。因此可以用查询方式,测试 EOC 的状态,即可却只转换是否完成,并接着进行数捷传送。

3——中断方式:把表明转换完成的状态信号 (EOC) 作为中断请求信号,以中断方式进行数据传送。不管使用上述那种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以【RD非】信号有效时,OE 信号即有效,把转换数据送数据总线,供 CPU 接受。

【2】实验电路原理图如图。通过实验台左下角电位器 RW1 输出 0~5V 直流电压送入ADC0809 通道 0(INO),利用 debug 的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。启动 INO 开始转换: 0 0298 0,读取转换结果:I 0298

启动IN0开始转换:Out 0298 0

读取转换结果:In 0298

【3】编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。

【4】接线表

待接线接口1

待接线接口2

0809的CS

I/O地址译码的Y3

0809的IN0

电位器的0~5V

【5】程序的流程图

(2)数/模转换器0832实验(实验指导书157页的实验20)

DAC0832是采用CMOS工艺制成的R-2R倒T型电阻网络8位D/A转换器,输出为差分电流信号20脚DIP封装,内部带有两级8位锁存。该器件不仅可用于一般数字系统和模拟系统之间的接口电路,而且可以直接与8位微型计算机接口,是目前使用较为广泛的一种集成DAC器件。所以,如果需要用电压输出地场合时必须使用一个运算放大器。主要的技术指标如下:

分辨率:8位。电流建立时间:1μs。线性误差:0.2%FSR(Full Scale Range),即满量程的0.2%。非线性误差:0.4%FSR。输入方式:双缓冲、单缓冲或无缓冲。功耗:20mW。电源电压:+5V~+15V。参考电源VREF:+10V~-10V。

【1】0832内部结构

DAC0832 工作方式:(1).直通方式:两个锁存器均处于直通状态,输入的数据直接送至 D/A 转换器进行转换并输出。(2).单缓冲方式:两个锁存器中一个处于直通状态,而只控制另一个锁存器的锁存。(3).双缓冲方式:两级锁存器都受控。该缓冲方式常用于要求多个模拟量同时输出的场合,以提高转换的速度。

【2】实验电路原理如图,DAC0832 采用单缓冲方式,具有单双极性输入端(图中的 Ua、Ub),利用 debug 输出命令(Out 290 数据)输出数据给 DAC0832,用万用表测量单极性输出端 Ua 及双极性输出端 Ub 的电压,验证数字与电压之间的线性关系,也可用示波器观察输出波形。

(1)、DACO832 单极性模拟输出,输入数据与输出电压的关系为:

如图所示,由运算放大器进行电流→电压转换,使用内部反馈电阻。输出电压值 Ua 和输入数字量D的关系:

(2)、DAC0832 双极性模拟输出,输入数据与输出电压的关系为:

如图所示,D/A 的输出经过运算放大器 A1和A2 放大和偏移后,在运放A2 的输出端 Ub 可得到双极性从-5V 到+5V 的输出电压,VREF 为 A2 提供偏移电流,且 VREF 的极性选择应使偏移电流的方向与A1输出的电流方向相反;在选择电阻时应以 R2=R3=2R1,以使偏移电流符合为 A1 输出电流的 1/2。从而使 A2 的输出特性在 A1 的输出特性基础上,上移 1/2 的动态范围。由电路各参数计算可得出 Ub = -[(R3/R1)Ua+(R3/R2)VREF,输出的电压表达式:Ub = -2Ua - VREF 且Ua 为(0~-5V),选取 VREF 为+5V,则Ub=0~10V-5V=-5~+5V

(3)、产生锯齿波只须将输出到 DACO832 的数据由 0 循环递增。产生正弦波可根据正弦函数建一个下弦数字量表,取值范围为一个周期,表中数据个数在 16 个以上。

【3】接线表

待接线接口1

待接线接口2

0832的CS

I/O地址译码的Y2

0832的Ua和Ub

示波器

【4】程序的流程图

三、源程序(含注释)

1:模数转换

io0809a        equ 298h

code segment

    assume cs:code

start:

    mov  dx,io0809a     ;启动A/D转换器

    out  dx,al          ;写入数据

    mov  cx,0ffh        ;延时

delay:

    loop delay          

    in al,dx            ;从A/D转换器输入数据

    mov bl,al           ;bl暂存al

    shr al,4            ;al高4位移动到低4位

    call disp           ;调显示子程序显示其高四位

    mov al,bl           ;return bl to al

    and al,0fh          ;clear high-4 bit

    call disp           ;调显示子程序显示其低四位

    mov  ah,02          ;func-2,output a single char

    mov  dl,20h         ;加回车符

    int  21h            

    mov  dl,20h         ;+ enter

    int  21h            

    push dx            

    mov  ah,06h         ;func-6,判断是否有键按下

    mov  dl,0ffh        ;keyboard input

    int 21h

    pop dx

    je   start          ;若没有key-down,转START

    mov  ah,4ch         ;退出

    int  21h

disp  proc near         ;显示子程序

    mov  dl,al

    cmp  dl,9           ;比较DL是否>9

    jle  ddd            ;若不大于则为'0'-'9',加30h为其ASCII码

    add  dl,7           ;否则为'A'-'F',再加7

ddd:    

    add  dl,30h         ;显示

    mov  ah,02

    int  21h

    ret

disp endp

code ends

end start

2:数模转换——锯齿波实验

io0832a  equ  290h  ;锯齿波

code segment

    assume cs:code

start:

    mov dx,io0832a

    mov cl,00h      ;initialize cl=0

LLL:                ;需补充

    mov al,cl       ;output al

    out dx,al

    inc cl          ;cl++

    push  dx

    mov  ah,06h     ;判断是否有键按下

    mov  dl, 0ffh   ;keyboard input

    int    21h      

    pop   dx

    jz     LLL      ;if no key-down, jump to LLL

    mov   ah,  4ch  ;return dos

    int    21h

code  ends

end   start

3:数模转换——三角波实验

io0832a  equ  290h  ;三角波

code segment

    assume cs:code

start:

    mov dx,io0832a

    mov cl,00h      ;initialize cl=0

up:                

    mov al,cl       ;output al

    out dx,al

    inc cl          ;cl++

    cmp cl,0ffh     ;judge cl reach peak

    jz down         ;if peak, jump to down

    push  dx

    mov  ah,06h     ;判断是否有键按下

    mov  dl, 0ffh   ;keyboard input

    int    21h      

    pop   dx

    jz     up       ;if no key-down, jump to up

    mov   ah,  4ch  ;return dos

    int    21h

down:

    mov al,cl       ;output al

    out dx,al

    dec cl          ;cl--

    cmp cl,00h      ;judge cl reach bottom

    jz up           ;if bottom, jump to up

    push  dx

    mov  ah,06h     ;判断是否有键按下

    mov  dl, 0ffh   ;keyboard input

    int    21h      

    pop   dx

    jz     down     ;if no key-down, jump to down

    mov   ah,  4ch  ;return dos

    int    21h

code  ends

end   start

 

四、遇到的问题和解决过程

问题1:一开始完成模数转换时,未找到电位器的0~5V,以为是额外的仪器。

解决1:查询实验指导书的系统硬件图(第8页)后,发现在实验箱的左下角位置,遂完成相应电路的接线。

问题2:在观察三角波时,水平轴的范围太小,无法很好的显示三角波的图像。

解决2:在仪器上按下第二排第二个按钮【time】,然后通过按下第一排第一个按钮【F1】来缩小水平轴的刻度。

五、实验结果

【1】模数转换

1、用万用表测量几组输入的电压,并记录其在屏幕显示的数字量

电压值/V

数字量(16进制)

4.72

FF

3.56

C0

2.29

7C

0.73

28

0.00

00

2、计算理论值,对比实际值,分析误差可能产生的原因

理论值计算公式:

电压理论值 = 数字量(10进制) / 满量程数字量(10进制) * 满量程电压值

理论值计算表格:

电压实际值/V

电压理论值/V

误差大小/V

数字量(16进制)

数字量(10进制)

4.72

5.00

-0.28

FF

255

3.56

3.76

-0.2

C0

192

2.29

2.43

-0.14

7C

124

0.73

0.78

-0.05

28

40

0.00

0.00

0

00

0

误差产生的原因分析:

仪器误差:测量仪器本身可能存在一定的误差。即万用表、电压源等设备存在精度和校准方面的问题。电路元件误差:电阻的阻值可能有一定的偏差,电容的容值可能不准确等。电源的稳定性:电源电压的波动或噪声,可能导致实际测量值偏离理论值。干扰信号会对逐次逼近式的A/D转换器造成较大的误差。

3、屏幕显示数字量示例

4、操作过程示例

    通过调节电位器的旋钮,可以控制滑动电阻的阻值,进而获得不同的电压值,转化后得到不同的数字量。完整操作过程如附件video.mp4所示。

【2】数模转换

1、锯齿波实验,使用示波表查看波形

Ua电压的波形:

Ub电压的波形:

2、三角波实验,使用示波表查看波形

Ua电压的波形(time设置前):

Ua电压的波形(time设置后):

Ub电压的波形(time设置后):

六、体会与总结

1:ADC0809采用【逐次逼近式】的方法将模拟量转换为数字量。逐次逼近式的A/D转换器的特点有:(1)转换速度较快,适用于高精度、高频信号的A/D转换;(2)转换时间固定,不随输入信号的大小而变化;(3)抗干扰能力较双积分型弱。采样时,干扰信号会造成较大的误差,需要采取适当的滤波措施。

2:模数转换主要经过以下四个过程:采样——保持——量化——编码。

3:数模转换输出锯齿波图像时,首先将计数寄存器cx中的初值设为0,然后每经过一次cx++操作对应依次模拟量的输出。最后cx加到ff时,会自动溢出后变为0。

4:数模转换输出三角波图像时,首先将计数寄存器cx中的初值设为0,然后执行波形上升程序,即每经过一次cx++操作对应依次模拟量的输出。当cx加到ff时,跳转至波形下降程序,即每经过一次cx--操作对应依次模拟量的输出。当cx减到00时,又跳转至波形上升程序。如此往复即可生成三角波,同样也可以先执行下降程序再执行上升程序。

5:D/A 转换器的主要技术指标有:分辨率、精度、建立时间、线性误差、温度系数。

6:DAC0832可采用双缓冲、单缓冲或直接输入三种工作方式。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3