数模(DA)转换与模数(AD)转换接口

上传人:ji****72 文档编号:46580218 上传时间:2018-06-27 格式:PDF 页数:15 大小:154.50KB
返回 下载 相关 举报
数模(DA)转换与模数(AD)转换接口_第1页
第1页 / 共15页
数模(DA)转换与模数(AD)转换接口_第2页
第2页 / 共15页
数模(DA)转换与模数(AD)转换接口_第3页
第3页 / 共15页
数模(DA)转换与模数(AD)转换接口_第4页
第4页 / 共15页
数模(DA)转换与模数(AD)转换接口_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《数模(DA)转换与模数(AD)转换接口》由会员分享,可在线阅读,更多相关《数模(DA)转换与模数(AD)转换接口(15页珍藏版)》请在金锄头文库上搜索。

1、第 12 章 数模(D/A)转换与模数(A/D)转换接口 12.1 D/A 转换器接口 D/A(Digit to Analog)和 A/D(Analog to Digit)转换是计算机与外部世界联系的重要接口。在一个实际的系统中,有两种基本的量模拟量和数字量。外界的模拟量要输入给计算机,首先要经过 A/D 转换,才能由计算机进行运算、加工处理等。若计算机的控制对象是模拟量, 也必须先把计算机输出的数字量经过 D/A 转换, 才能控制模拟量。 D/A 和 A/D 转换的具体电路已经在数字电路课程中讲述。本章主要介绍如何把 D/A和 A/D 转换的芯片与 CPU 进行接口以及用 CPU 控制这些转

2、换的软件编程如何实现。 12.1.1 CPU 与 8 位 D/A 芯片的接口 D/A 转换通常是由输入的二进制数的各位控制一些开关,通过电阻网路,在运算放大器的输入端产生与二进制数各位的权成比例的电流, 经过运算放大器相加和转换而成为与二进制数成比例的模拟电压。 若 CPU 的输出数据要通过 D/A 转换变为模拟量输出, 当然要把 CPU 数据总线的输出连到 D/A 的数字输入上。但是,由于 CPU 要进行各种信息的加工处理,它的数据总线上的数据是不断地改变的, 它输出给 D/A 的数据只在输出指令的几个微秒中出现在数据总线上。所以,必须要有一个锁存器,把 CPU 输出给 D/A 转换的数据锁

3、存起来,直至输送新的数据为止。一个最简单的 D/A 芯片与 CPU 的接口电路如图 12-1 所示。 其中,以锁存器 74100 作为 CPU 与 D/A 转换之间的接口。CPU 把 74100 作为一个输出端口,用地址 27H 来识别,则 CPU 输给 D/A 的数据要用一条 I/O 写(即输出)指令来实现。 图 12-1 的电路可应用于许多场合,例如: (1) 驱动一个侍服电机; (2) 控制一个电压频率转换器(用于锁相环路); (3) 控制一个可编程的电源; (4) 驱动一个模拟电表。 12.1.2 8 位 CPU 与 12 位(高于 8 位的)D/A 转换器的接口 1.一种 12 位

4、D/A 转换芯片 这里介绍一种 12 位 D/A 转换片子 DAC1210。 DAC1210 是美国国家半导体公司生产的 12 位 D/A 转换器芯片, 是智能化仪表中常用的一种高性能的 D/A 转换器。DAC1210 的逻辑结构框图如图 12-2 所示。 由图 12-2 所示 DAC1210 的逻辑结构是一个 12 位的 D/A 转换器。 它有两个输入寄存器,一个是 8 位的,一个是 4 位。若它与 8 位 CPU 接口,DAC1210 的输入线 DI11DI4以及 DI3DI0 都连至 CPU 的数据总线 DB7DB0。12 位数据需分两次输送,若 CPU 输出的地址及控制信号,使 LE1

5、 有效,则 8 位数据输入至 8 位输入寄存器:若 CPU 使 LE2 有效,则 12 位数据中的另 4 位输入至 DAC1210 的 4 位输入寄存器。再使 LE3 有效,把 12位输入寄存器的内容同时输入给 12 位 DAC 寄存器,进行 D/A 转换。 若 DAC1210 与 16 位 CPU 相连,则 DI11DI0 连至 CPU 的数据总线 DB11DB0。CPU的输出地址与控制信号使 LE1 与 LE2 同时有效。则 CPU 输出的 12 位数据同时输入至 8位输入寄存器与 4 位输入寄存器。然后,使 LE3 有效,把 12 位输入寄存器的内容同时输送给 12 位 DAC 寄存器,

6、进行 D/A 转换。 DAC1210 共有 24 个引脚,各引脚定义如下: DI11DI0:12 位数字量输入信号,其中 DI0 为最低位,DI11 为最高位。 CS:片选输入信号,低电平有效。 WR1:数据写入信号 1,低电平有效。当此信号有效时,与 B1/B2 配合起控制作用。 B1/B2:字节控制信号。此引脚为高电平时,12 位数字同时送入输入寄存器;为低电平时,只将 12 位数字量的低 4 位送到 4 位输入寄存器。 XFER:传送控制信号,低电平有效,与 WR2 配合使用。 WR2:数据写入信号 2,低电平有效。此信号有效时,XFER 信号才起作用。 IOUT1:电流输出 1。 IO

7、UT2:电流输出 2。 Rfb:内部反馈电阻引脚。 VREF:参考电压,-10V+10V。 VCC:芯片电源,+5V+15V。 AGND:模拟地。 DGND:数字地。 2.DAC 的输出连接方式 有的 D/A 转换片子的输出是电压,有的片子输出的是电流。在实际应用中,执行部件往往要求电压驱动,所以,电流输出的要经过电流-电压变换器。输出电压又可能只要求单极性,而有的要求有正有负(双极性)。 (1)单极性输出 一个电流输出的 D/A 片子转换为单极性电压输出的电路如图 12-3 所示。 输出与 RFB 端间接的电阻 R2 以及接于参考电源的 R1 是为了调整增益, 电容 C 则起防止振荡的作用。

8、 (2)双极性输出 其输出电路如图 12-4 所示。 3.8 位 CPU 与 12 位 D/A 接口方法 许多应用场合要求 D/A 有更高的灵敏度和精度,8 位就不能满足要求了,常常要求10 位、12 位或 14 位 D/A 转换器。 那么,如何把一个多于 8 位的 D/A 转换器接口到 8 位的微型机呢? 可以把 12 位分成两段,第一次微型机先输出低 8 位到锁存器,第二次再把另四位送到另一个锁存器上,如图 12-5 所示。 而要输出的 12 位是存储在两个相邻的单元内: 地址 数据位 A D7 D6 D5 D4 D3 D2 D1 D0 A+1 D11 D10 D9 D8 A+2 D7 D

9、6 D5 D4 D3 D2 D1 D0 A+3 D11 D10 D9 D8 为无用的位。 但是,若用图 12-5 的电路输出,则输出电压上会出现毛刺。这是由于,若原来的数据为 0000 1111 0000,下一个输出的值为 0001 0000 1011,但在输出过程中是先输出低 8 位,如下所示: 数据先由 0000 1111 0000 变为 0000 0000 1011,则输出电压要下降;然后再输出高四位,变为 0001 0000 1011,输出电压再升高,就出现了毛刺。为了解决这个问题,可以采用双缓冲器结构,如图 12-6 所示。 CPU 输出时,先输出低 8 位给缓冲器 1(此时缓冲器

10、2 不通,故输出不变),然后输出高两位。等这两者都输出后,再输出一个打开缓冲器 2 的选通脉冲,把 10 位同时输给 D/A 转换,这样就避免了毛刺。 程序如下: ORG 2000H START: MOV BX,DATA MOV CL,64H DAC:MOV AL, BX OUT 54H,AL INC BX MOV AL, BX OUT 55H,AL OUT 56H,AL INC BX DEC CL JNZ DAC JMP START ORG 3000H DATA:DW W1,W2,W100;定义 100 个字(每个字 10 位) END START 12.2 A/D 转换器接口 12.2.1

11、 概述 在一个实际的系统中,要用微型计算机来监视和控制过程中发生的各种参数,就首先要用传感器把各种物理参数(如压力、温度等)测量出来,并且转换为电信号,再经过A/D 转换,传送给微型计算机;微型计算机对各种信号计算、加工处理后输出,经过 D/A转换再去控制各种参数,其过程如图 12-14 所示。 其中: (1) 传感器把各种现场的物理量测量出来,并且转换为电信号。 (2) 量程放大器把传感器的信号(通常为mVV级)放大到A/D转换所需要的量程范围。 (3) 低通滤波器降低干扰,增加信扰比。 (4) 多路开关通常要监视和控制的现场信号是很多的, 而且它们的变化是缓慢的, 所以没有必要一种现场信号

12、就有一个 A/D 转换器和占用一条与微型计算机联系的通路,而可以利用多路开关,把多个现场信号,用一条通路来监视和控制。 (5) 采样/保持电路因为现场信号总是在变化的,而 A/D 转换总是需要一定时间的,所以,需要把要转换的信号采样后保持一段时间,以备转换。另外,现场信号的变化是缓慢的,没有必要始终监视,而可以用巡回检测的办法,所以,也要求有采样/保持电路。 当用巡回检测的办法来监视现场信号时,就存在一个问题: 应该经过多长时间去采样一次被测信号,使采样的结果能够反映被测信号,即采样频率应该多高。采样定理告诉我们:采样频率至少应该大于被测信号频谱中的最高频率的两倍。 本章主要讨论 A/D 转换

13、。 12.2.2 用软件实现 A/D 转换 利用 D/A 转换器,CPU 可用软件实现 A/D 转换。 1.计数器式 A/D 转换 计数器式 A/D 转换可以用硬件实现,如图 12-15 所示。也可以利用一个 D/A 转换电路,用软件实现,如图 12-16 所示。 软件实现实际上是用一种类似于线性搜索的办法,每次让一个锁存器加 1,再把它经 D/A 转换后为 VC,与输入模拟电压 VX 相比较,把比较的结果用一个输入端口输入,若仍是 VXVC,则循环;当 VX=VC 时就停止循环,此时锁存器中的数据即为转换所得的结果。 其程序如下: ORG 2000H START: MOV CL,0;用 CL

14、 作比较用的寄存器,初值为零 DALOOP:MOV AL,CL OUT 27H,AL IN AL,15H;输入比较器的状态,若 VXVC,则 D5=0 AND 20H;屏蔽除 D5 外的其他位 JNZ DONE;D50,则转换完成 INC CL JMP DALOOP DONE: MOV AL,CL OUT 02H,AL;转换完成数据输出显示 HALT 但是用上述软件来实现转换, 比硬件更慢。 255 步的比较需要 7ms(若 CPU 为 8080A)。显然转换的位数越多,时间就更长。 所以,用软件实现计数器式的 A/D 转换是不实用的;但是当转换速度要求不高时硬件实现的芯片仍然是有用的,它的成

15、本较低。 2.逐次逼近式 A/D 转换 用软件实现逐次逼近式 A/D 转换,实际上是把输入模拟电压 VX 作为一个关键字,用对分搜索的办法来逼近它。 例如, 在 8 位的情况下, 要转换一个相当于数 113 的模拟电压, 搜索过程可用表 12-5来描述。 用软件实现逐次逼近式 A/D 转换的流程图如图 12-17 所示。 如果仍然使用图 12-16 所示的接口电路, 则寄存器 AL 用于 I/O 数据传送和位操作,寄存器 DH 存放每次试探的数据,寄存器 DL 存放累加的结果,寄存器 CL 作为循环次数计数器。 程序如下: ORG 2000H START: SUB AL,AL;清 AL MOV

16、 DX,8000H;置 DH=80H,DL=00H MOV CL,8;置循环次数 AGAIN: OR AL,DH;建立新试探值 MOV DL,AL;存入 DL 中 IN AL,15H;输入比较结果的状态; ;若 VXVC,则 D5=0 AND AL,20H;屏蔽除 D5 外的所有位 JZ OK;小于 VX,转至 OK MOV AL,DH NOT AL AND AL,DL;使新的试探值置 0 MOV DL,AL;和DL OK: SHR DH,1;移至下一位试探 MOV AL,DL DEC CL JNZ AGAIN;未完,进入下一循环 DONE:HALT 对于 8 位的转换,若 CPU 为 8080,时钟周期为 500ns,则转换时间为 240s。若要求更快转换,则可用硬件实现的逐次逼近式转换器。 12.2.3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号