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

实验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。

主要性能如下:

  1. 分辨率:8位。
  2. 线性误差:士1 LSB。
  3. 电源电压:5V。
  4. 参考电源REF (+) ≤5V,参考电源REF (-) ≥0V。
  5. 模拟输入范围:0~5V。
  6. 8路模拟模拟信号输入。
  7. 转换时间:100μs。
  8. 功耗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器件。所以,如果需要用电压输出地场合时必须使用一个运算放大器。主要的技术指标如下:

  1. 分辨率:8位。
  2. 电流建立时间:1μs。
  3. 线性误差:0.2%FSR(Full Scale Range),即满量程的0.2%。
  4. 非线性误差:0.4%FSR。
  5. 输入方式:双缓冲、单缓冲或无缓冲。
  6. 功耗:20mW。
  7. 电源电压:+5V~+15V。
  8. 参考电源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            ;al4位移动到低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

误差产生的原因分析:

  1. 仪器误差:测量仪器本身可能存在一定的误差。即万用表、电压源等设备存在精度和校准方面的问题。
  2. 电路元件误差:电阻的阻值可能有一定的偏差,电容的容值可能不准确等。
  3. 电源的稳定性:电源电压的波动或噪声,可能导致实际测量值偏离理论值。干扰信号会对逐次逼近式的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可采用双缓冲、单缓冲或直接输入三种工作方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/231065.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅析以太网接口及串口转以太网技术

浅析以太网接口 以太网相关接口主要包括:MII/RMII/SMII以及GMII/RGMII/SGMII接口。 一、MII接口 MII(Media Independent Interface)介质无关接口或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和…

Qt + MySQL(简单的增删改查)

Qt编译MySql插件教程 帮助: SQL Programming QSqlDatabase 静态函数 1.drivers(),得到可以使用的数据库驱动名字的集合 [static] QStringList QSqlDatabase::drivers();2.addDatabase(),添加一个数据库实例 [static] QSqlDatabase QSql…

kennard-stone算法实现样本集划分(ks算法)

目录 一、 Kennard-Stone算法原理(KS算法) 二、Kennard-Stone算法作用 三、代码 四、对选出来的train样本使用T-SNE算法进行绘制 五、参考链接 一、 Kennard-Stone算法原理(KS算法) KS算法原理:把所有的样本都看…

【C语言】操作符详解(一):进制转换,原码,反码,补码

目录 操作符分类 2进制和进制转换 2进制转10进制 10进制转2进制 2进制转8进制和16进制 2进制转8进制 2进制转16进制 原码、反码、补码 操作符分类 操作符中有一些操作符和二进制有关系,我们先铺垫一下二进制的和进制转换的知识。 2进制和进制转换 其实我们经…

在OpenCV基于深度学习的超分辨率模型实践

1. 引言 OpenCV是一个开源的计算机视觉库,拥有大量优秀的算法。基于最新的合并,OpenCV包含一个易于使用的接口,主要用于实现基于深度学习方法的超分辨率(SR)。该接口包含预先训练的模型,这些模型可以非常容…

K8s构建的mysql无法远程连接

最近在写一个老师布置的大作业,都是老师写好的yaml文件,都是没问题的,但是构建的mysql无法远程连接。 尝试了网上的很多方法,都失败了,我的构建过程应该是没什么错误的,所以网上的方法并不奏效&#xff0c…

使用webstrom编写vue开启提示

1.语言服务器选择 2.文件类型–忽略的文件和文件夹,删去,node_modules,就可以点进去库了 3.禁用JSLint、TSLint 4.开启node辅助 5.如果是vite,开启自动读取,或手动指定 6.如果是Webpack,开启自动读取&#…

修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块

最近在研究imx6ull linux下4G模块驱动的移植,参考的移远ec20的移植方法,添加了GobiNet驱动,编译了quectel-CM工具,并且可以正常拨号,分配到ip,如下: ping外网也没有压力,如下…

CAN 二: STM32 CAN控制器

1、CAN控制器介绍 (1)STM32 CAN控制器(bxCAN),支持CAN 2.0A和CAN 2.0B Active版本协议。 bxCAN存在于F1、F4、F7系列的STM32。H7系列称作FDCAN。 (2)CAN 2.0A 只能处理标准数据帧且扩展帧的内容会识别错别,而CAN 2.0B Active可以处理标准数据帧和扩展…

unity中:搭建在线AR应用

使用Imagine WebAR - Image Tracker插件部署WebGL应用 在使用Imagine WebAR - Image Tracker插件进行WebGL应用开发时,有两个关键知识点需要掌握: 1. 部署到支持HTTPS的服务器 由于WebGL应用需要访问用户的摄像头,因此必须在支持HTTPS的服…

挡墙边界提取

基于点云对挡墙边界进行提取 算法思路 将点转到极坐标系下,并得到极坐标系下的索引值,并输出距离信息。 double getCellIndexFromPoints(double x, double y, int& chI) {// 计算点到原点的欧几里得距离double distance sqrt(x * x y * y);// 将…

s26.Rocky Linux、CentOS和Ubuntu系统初始化脚本v7版

Rocky Linux、CentOS和Ubuntu系统初始化脚本 Shell脚本源码地址: Gitee:https://gitee.com/raymond9/shell Github:https://github.com/raymond999999/shell 可以去上面的Gitee或Github仓库代码拉取脚本。 版本功能v7版更新内容1.由于v…

请将图转换成以某个结点为根结点的树

题目要求:请将图转换为以某个结点为根结点的数。然后,输出所有从根结点到叶子结点的路径。 例如: 示例输入, 6 0 1 1 2 1 4 3 4 4 5期望输出, 1 0 1 2 1 4 3 1 4 5 解题思路1:创建一个全局布尔型数组…

煤老板自述三十年

《煤老板自述三十年》 这本书是一位煤老板站在他的角度与高度为读者所描写的他们眼中的社会与江湖,大胆、真实、开拓眼界。这本书讲述了很多真相,它无所不包,充满了各种江湖气息。煤老板们身为财富领军人物,经历过我们大部分人难…

基于Java技术的选课管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Vue3.0在软件开发中的能力展示

经过技术的调整与迁移之后,JNPF开发平台已经上线了Vue3.0版本。 JNPF是从 2014 开始研发低代码前端渲染,2018 年开始研发后端低代码数据模型,发布了JNPF开发平台。 基于SpringBootVue3的全栈开发平台,微服务、前后端分离架构&…

LeetCode-数组-重叠、合并、覆盖问题-中等难度

435. 无重叠区间 我认为区间类的题型,大多数考验的是思维能力,以及编码能力,该类题型本身并无什么算法可言,主要是思维逻辑,比如本题实际上你只需要能够总结出重叠与不重叠的含义,再加上一点编码技巧&#…

学生备考使用台灯到底好不好?公认好用的护眼台灯推荐

在现代生活中,许多学生的学习压力越来越大,面临的近视几率也越来越大,特别是初中生,眼睛发育还未完全,使用不恰当的灯光也会对眼睛造成损害,特别是护眼台灯。虽然护眼台灯在功能上能够提供充足、柔和的光线…

【投稿优惠|检索稳定】2024年信息系统、工程与数字化经济国际会议(ICISEDE 2024)

2024年信息系统、工程与数字化经济国际会议(ICISEDE 2024) 2024 International Conference on Information Systems and Engineering and the Digital Economy(ICISEDE 2024) [会议简介] 2024 年信息系统、工程与数字化经济国际会议(ICISEDE 2024)将于 2024 年 1 月 20 日在厦门…

Docker 部署 2FAuth 服务

拉取最新版本的 2FAuth 镜像: $ sudo docker pull 2fauth/2fauth:latest在本地预先创建好 2fauth 目录, 用于映射 2FAuth 容器内的 /2fauth 目录。 使用以下命令, 在 前台 运行 2FAuth 容器: $ sudo docker run -it --rm --name 2fauth -p 10085:8000/tcp -v /ho…