本帖最后由 菲雪117 于 2019-8-2 10:35 编辑
11.1 模数转换和数模转换 概述 11.1.1 一个典型的计算机自动控制系统
一个包含 A/D 和 D/A 转换器的计算机闭环自动控制系统如图 11.1 所示。 图 11.1 典型的计算机自动控制系统 在图 11.1 中, A/D 转换器和 D/A 转换器是模拟量输入和模拟量输出通路中的核心部件。在实际控制系统中,各种非电物理量需要由各种传感器把它们转换成模拟电流或电压信号后,才能加到 A/D 转换器转换成数字量。
一般来说,传感器的输出信号只有微伏或毫伏级,需要采用高输入阻抗的运算放大器将这些微弱的信号放大到一定的幅度,有时候还要进行信号滤波,去掉各种干扰和噪声,保留所需要的有用信号。送入 A/D 转换器的信号大小与 A/D 转换器的输入范围不一致时,还需进行信号预处理。
在计算机控制系统中,若测量的模拟信号有几路或几十路,考虑到控制系统的成本,可采用多路开关对被测信号进行切换,使各种信号共用一个 A/D 转换器。多路切换的方法有两种:一种是外加多路模拟开关,如多路输入一路输出的多路开关有: AD7501 , AD7503 , CD4097 , CD4052 等。另一种是选用内部带多路转换开关的 A/D 转换器,如 ADC0809 等。
若模拟信号变化较快,为了保证模数转换的正确性,还需要使用采样保持器。 在输出通道,对那些需要用模拟信号驱动的执行机构,由计算机将经过运算决策后确定的控制量(数字量)送 D/A 转换器,转换成模拟量以驱动执行机构动作,完成控制过程。
11.1.2 模 / 数转换器( ADC )的主要性能参数 1. 分辨率 它表明 A/D 对模拟信号的分辨能力,由它确定能被 A/D 辨别的最小模拟量变化。一般来说, A/D 转换器的位数越多,其分辨率则越高。实际的 A/D 转换器,通常为 8 , 10 , 12 , 16 位等。
2. 量化误差 在 A/D 转换中由于整量化产生的固有误差。量化误差在± 1/2LSB (最低有效位)之间。 例如:一个 8 位的 A/D 转换器,它把输入电压信号分成 28=256 层,若它的量程为 0~5V ,那么,量化单位 q 为: q 正好是 A/D 输出的数字量中最低位 LSB=1 时所对应的电压值。因而,这个量化误差的绝对值是转换器的分辨率和满量程范围的函数。
3. 转换时间 转换时间是 A/D 完成一次转换所需要的时间。一般转换速度越快越好,常见有高速(转换时间 <1us )、中速(转换时间 <1ms )和低速(转换时间 <1s )等。
4. 绝对精度 对于 A/D ,指的是对应于一个给定量, A/D 转换器的误差,其误差大小由实际模拟量输入值与理论值之差来度量。
5. 相对精度 对于 A/D ,指的是满度值校准以后,任一数字输出所对应的实际模拟输入值(中间值)与理论值(中间值)之差。例如,对于一个 8 位 0~+5V 的 A/D 转换器,如果其相对误差为 1LSB ,则其绝对误差为 19.5mV ,相对误差为 0.39% 。
11.1.3 数 / 模转换器( DAC )的主要性能参数 1. 分辨率 分辨率表明 DAC 对模拟量的分辨能力,它是最低有效位( LSB )所对应的模拟量,它确定了能由 D/A 产生的最小模拟量的变化。通常用二进制数的位数表示 DAC 的分辨率,如分辨率为 8 位的 D/A 能给出满量程电压的 1/28 的分辨能力,显然 DAC 的位数越多,则 分辨率 越高。
2. 线性误差 D/A 的实际转换值偏离理想转换特性的最大偏差与满量程之间的百分比称为线性误差。
3. 建立时间 这是 D/A 的一个重要性能参数,定义为:在数字输入端发生满量程码的变化以后, D/A 的模拟输出稳定到最终值± 1/2LSB 时所需要的时间。
4. 温度灵敏度 它是指数字输入不变的情况下,模拟输出信号随温度的变化。一般 D/A 转换器的温度灵敏度为± 50PPM/ ℃。 PPM 为百万分之一。
5. 输出电平 不同型号的 D/A 转换器的输出电平相差较大,一般为 5V~10V ,有的高压输出型的输出电平高达 24V~30V 。
11.2 ADC0809 模 / 数转换器 A/D 转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在 A/D 转换前,输入到 A/D 转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。 A/D 转换后,输出的数字信号可以有 8 位、 10 位、 12 位和 16 位等。
11.2.1 模 / 数转换器原理 A/D 转换器的工作原理实现 A/D 转换的方法很多,常用的有逐次逼近法、双积分法及电压频率转换法等。 逐次逼近法:速度快、分辨率高、成本低,在计算机系统得到广泛应用。逐次逼近法原理电路类同天平称重。在节拍时钟控制下,逐次比较,最后留下的数字砝码,即转换结果。 图 11.2 逐次逼近法 A/D 转换器
采用逐次逼近法的 A/D 转换器是由一个比较器、 D/A 转换器、缓冲寄存器及控制逻辑电路组成,如图 10.14 所示。它的基本原理是从高位到低位逐位试探比较,好像用天平称物体,从重到轻逐级增减砝码进行试探。
逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零;转换开始时,先将逐次逼近寄存器最高位置 1 ,送入 D/A 转换器,经 D/A 转换后生成的模拟量送入比较器,称为V o ,与送入比较器的待转换的模拟量V i 进行比较,若V o< V i ,该位 1 被保留,否则被清除。然后再置逐次逼近寄存器次高位为 1 ,将寄存器中新的数字量送 D/A 转换器,输出的V o 再与V i 比较,若V o< V i ,该位 1 被保留,否则被清除。重复此过程,直至逼近寄存器最低位。转换结束后,将逐次逼近寄存器中的数字量送入缓冲寄存器,得到数字量的输出。逐次逼近的操作过程是在 一个控制电路的控制下进行的。
11.2.2 A DC0809 的内部结构与引脚图 ADC0809 是一种普遍使用且成本较低的、由 National 半导体公司生产的 CMOS 材料 A/D 转换器。它具有 8 个模拟量输入通道,可在程序控制下对任意通道进行 A/D 转换,得到 8 位二进制数字量。 其主要技术指标如下: ①电源电压: 5V ②分辨率: 8 位 ③时钟频率: 640kHZ ④转换时间: 100us ⑤未经调整误差: 1/2LSB 和 1LSB ⑥模拟量输入电压范围: 0-5V ⑦功耗: 15mW 图 11.3 给出了 ADC0809 转换器的内部结构图。
图 11.4 ADC0809 引脚图
图 11.3 中 ADC0809 内部各单元的功能如下: ① 通道选择开关 八选一模拟开关,实现分时采样 8 路模拟信号。 ② 通道地址锁存和译码 通过 ADDA 、 ADDB 、 ADDC 三个地址选择端及译码作用控制通道选择开关。 ③ 逐次逼近 A/D 转换器 包括比较器、 8 位开关树型 D/A 转换器、逐次逼近寄存器。转换的数据从逐次逼近寄存器传送到 8 位锁存器后经三态门输出。 ④ 8 位锁存器和三态门
当输入允许信号 OE 有效时,打开三态门,将锁存器中的数字量经数据总线送到 CPU 。由于 ADC0809 具有三态输出,因而数据线可直接挂在 CPU 数据总线上。 图 11.4 给出了 ADC0809 转换器的引脚图,各引脚功能如下: IN 0 ~IN 7 : 8 路模拟输入通道。 D 0 ~D 7 : 8 位数字量输出端。 START :启动转换命令输入端,由 1 → 0 时启动 A/D 转换,要求信号宽度 >100ns 。 OE : 输出使能端,高电平有效。 ADDA 、 ADDB 、 ADDC :地址输入线,用于选通 8 路模拟输入中的一路进入 A/D 转换。其中 ADDA 是 LSB 位,这三个引脚上所加电平的编码为 000~111 ,分别对应 IN 0 ~IN 7 ,例如,当 ADDC=0 , ADDB=1 , ADDA=1 时,选中 IN 3 通道。
ALE : 地址锁存允许信号。用于将 ADDA~ADDC 三条地址线送入地址锁存器中。
EOC : 转换结束信号输出。转换完成时, EOC 的正跳变可用于向 CPU 申请中断,其高电平也可供 CPU 查询。
CLK : 时钟脉冲输入端,要求时钟频率不高于 640KHZ 。
REF ( + )、 REF ( - ):基准电压,一般与微机接口时, REF ( - )接 0V 或 -5V , REF ( + )接 +5V 或 0V 。
11.2.3 A DC0809 与 CPU 的连接及其应用 ADC 0809 的接口设计需考虑的问题如下: (1)DDA 、 ADDB 、 ADDC 三端可直接连接到 CPU 地址总线 A0 、 A1 、 A2 三端,但此种方法占用的 I/O 口地址多。每一个模拟输入端对应一个口地址, 8 个模拟输入端占用 8 个口地址,对于微机系统外设资源的占用太多,因而一般 ADDA 、 ADDB 、 ADDC 分别接在数据总线的 D0 、 D1 、 D2 端,通过数据线输出一个控制字作为模拟通道选择的控制信号。
(2) ALE 信号为启动 ADC0809 选择开关的控制信号,该控制信号可以和启动转换信号 START 同时有效。
(3) ADC0809 芯片只占用一个 I/O 口地址,即启动转换用此口地址,输出数据也用此口地址,区别是启动转换还是输出数据用 IOR , IOW 信号来区分。硬件电路接线如图 11 . 5 所示。 图 11 . 5 ADC0809 和 PC 机系统总线的接线图。
当 A/D 转换结束, ADC 输出一个转换结束信号数据。 CPU 可有多种方法读取转换结果: ① 查询方式; ② 中断方式; ③ 延时方式; ④ DMA 方式; ⑤ 时钟的提供;⑥ 参考电压的接法;⑦无条件传送方式
下面举例说明如何编写 A/D 转换程序。 例 11.1 利用图 11 . 5 ,采用无条件传送方式,编写一段轮流从 IN0~IN7 采集 8 路模拟信号,并把采集到的数字量存入 0100 H开始的 8 个单元内的程序。 MOV DI,0100H ;设置存放数据的首址 MOV BL,08H ;采集 8 次计数器 MOV AH,00H ;选 0 通道 AA1 ∶ MOV AL , AH MOV DX , ADPORT ;设置 ADC0809 芯片地址 OUT DX , AL ;使 ALE 、 START 有效,选择模拟通道,见图 11 . 5 MOV CX,0050H WAIT ∶ LOOP WAIT ;延时,等待 A/D 转换 IN AL,DX ;使 OUTPUTENABLE 有效,输入数据,见图 11 . 5 MOV [DI],AL ;保存数据 INC AH ;换下一个模拟通道 INC DI ;修改数据区指针 DEC BL JNZ AA1
图 11.5 ADC0809 和 PC 机系统总线的连接图
例 11.2 设某系统对 8 路模拟量分时进行数据采集,选用 ADC0809 芯片进行 A/D 转换,转换结果采用查询方式传送,所以除了一个传送转换结果的输入端口外,还需要传送 8 个模拟量的选择信号和 A/D 转换的状态信息。因此,可以采用 8255A 作为 ADC0809 和 CPU 的连接接口,如图 11.6 ADC0809 与总线的连接图。将 A 口设为方式 0 的输入方式,用于传送转换结果, B 口不用,用 C 口的 PC2 ~ PC0 输出 8 路模拟量的选择信号, PC3 输出 ADC0809 的控制信号,而 ADC0809 的状态可由 PC7 输入,所以,将 C 口也设为方式 0 ,低 4 位为输出方式,高 4 位为输入方式。 现假设 8255A 的端口 A 、 B 、 C 及控制口地址分别为 2F0H , 2F1H ,2F 2H 和 2F 3H , A/D 转换结果的存储区首地址设为 400H 。采样顺序从 IN0 ~ IN7 。程序如下: MOV DX , 2F 3H ; 2F 3H 是 8255 的控制口 MOV AL , 10011000B ;置 A 组, B 组为方式 0 , A 口和 C 口高 4 位 OUT DX , AL ;输入, C 口低 4 位输出 MOV SI, 400H ;存放数据首地址 MOV CX , 08H MOV BH , 00H LOPl : OR BH , 08H MOV AL , BH MOV DX , 2F 2H ; 8255C 口地址 OUT DX , AL ;启动 A/D 转换 AND BH , 0F 7HH ; PC3 置 0 MOV AL , BH OUT DX , AL ;产生 START 和 ALE 的 下降沿 LOP2 : IN AL , DX ;读入 C 口 TEST AL , 80H ;测试 K7 JZ LOP2 ;为 0 ,继续查询 MOV DX , 2F 0H ; 8255A 口地址 IN AL , DX ;读入 A/D 转换结果 MOV [SI] , AL ;存储数据 INC SI INC BH LOOP LOPl ; 8 路没完,继续
图 11.6 ADC0809 与总线的连接图
例 11.3 中断方式应用(如图 11.7 所示) 微处理器按 A/D 所占用的口地址执行一条输出指令。启动 A/D 转换以后,在等待转换完成期间,微处理器可以继续执行其它任务。当转换完成时, A/D 产生的状态信号 EOC 向微处理器申请中断。微处理器响应中断,在中断服务程序中对 A/D 占用的口地址执行一条输入指令以获得转换的结果数据。
图 11.7 中断响应法 A/D 与 CPU 接口 中断响应法的特点是 A/D 转换完成后微处理器能立即得到通知,且不须花费等待时间,接口硬件简单,一般来讲程序会稍复杂些。程序流程如图 11.8 所示。
使用中断方法,可提高 CPU 的利用率。每当 ADC 转换结束时,由 EOC 信号向 CPU 发出中断请求, CPU 响应中断在中断服务子程序中读取转换结果。图 11.9 为中断法 ADC 的接口电路。 下面是基于图 11.9 硬件的 ADC 转换程序。
8259-POR0 EQU 310H ; 8259 中 A0=0 地址 8259-POR1 EQU 312H ; 8259 中 A1=1 地址 ADC-PORT EQU 300H DATA SEGMENT BUFF DB 1024 DUP ;数据存放区 DATA ENDS
图 11.8 中断响应法的程序流程 图 11.9 中断法 ADC 接口
CODE SEGMENT ASSUME CS : CODE , DS : DATA MAIN : MOV AX , 0 ;中断矢量表段地址 MOV ES , AX MOV DI , 0F 8H*4 ;中断矢量表偏移地址 MOV AX , OFFSET ADCINT CLD STOSW ;存放服务程序偏移地址 MOV AX , CS ;存放服务程序段地址 STOSW MOV DX , 8259-POR0 ; 8259 初始化 MOV AX , 13H ; ICW1 OUT DX , AX MOV DX , 8259-POR1 MOV AX , 0F 8H ; ICW2 ,中断类型号 OUT DX , AX MOV AX , 01 ; ICW4 OUT DX , AX MOV CX , 1024 ;采集数据点循环控制 MOV BX , OFFSET BUFF ;数据指针 STI ;开中断 NEXT : MOV DX , ADCPORT ; ADC 口地址 IN AL , DX ;启动 ADC 转换 HLT ;等待中断,转服务 INC BX LOOP NEXT MOV AX , 4C 00H ;返回操作系统 INT 21H 11.3 DAC0832 数 / 模转换器 D/A 转换器是指将数字量转换成模拟量的电路。数字量输入的位数有 8 位、 12 位和 16 位等,输出的模拟量有电流和电压两种。
11.3.1 数 / 模转换器原理
图 11.10 简单的权电阻网络 D/A 转换器 D/A 转换器它的输入量是数字量 D ,输出量为模拟量V 0 ,要求输出量与输入量成正比,即V 0=D × VR, 其中 VR 为基准电压。 数字量是由一位一位的数字构成,每个数位都代表一定的权。例如 10000001 ,最高位的权是 27 ,所以此位上的代码 1 表示数值 1 × 128 。因此,数字量 D 可以用每位的权乘以其代码值,然后各位相加。
例如, 4 个权电阻网络 D/A 转换器如图 11.10 所示。电阻阻值按 2n 分配,接入与否由数字量控制,运放输入电流:
运放输出电压: VO=-IO × RF 。设 RF=R/2 , d1d2d3d4=1000 , VR=5V ,则
11.3.2 DAC0832 的内部结构与引脚图 DAC0832 是一种相当普遍且成本较低的数 / 模转换器。该器件是一个 8 位转换器,它将一个 8 位的二进制数转换成模拟电压,可产生 256 种不同的电压值, DAC0832 具有以下主要特性: ①满足 TTL 电平规范的逻辑输入 ②分辨率为 8 位 ③建立时间为 1us ④功耗 20mw ⑤电流输出型 D/A 转换器 图 11 . 11 给出了 DAC0832 的内部结构和引脚图。
DAC0832 具有双缓冲功能,输入数据可分别经过两个锁存器保存。第一个是保持寄存器,而第二个锁存器与 D/A 转 换器相连。 DAC0832 中的锁存器的门控端 G 输入为逻辑 1 时,数据进入锁存器;而当 G 输入为逻辑 0 时,数据被锁存。
DAC0832 具有一组 8 位数据线 D 0 ~D 7 ,用于输入数字量。一对模拟输出端 I OUT1 和 I OUT2 用于输出与输入数字量成正比的电流信号,一般外部连接由运算放大器组成的电流 / 电压转
图 11.11 DAC0832 的内部结构和引脚图 换电路。转换器的基准电压输入端 V REF 一般在 -10V~+10V 范围内。 各引脚的功能如下:
11.3.3 DAC0832 的工作模式 DAC0832 可工作在三种不同的工作模式。 1. 直通方式 当 ILE 接高电平, CS , WR 1 、 WR 2 和 XFER 都接数字地时, DAC 处于直通方式, 8 位数字量一旦到达 D 0 ~D 7 输入端,就立即加到 D/A 转换器,被转换成模拟量。在 D/A 实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。这种方式可用于不采用微机的控制系统中。 2. 单缓冲方式 单缓冲方式是将一个锁存器处于缓冲方式,另一个锁存器处于直通方式,输入数据经过一级缓冲送入 D/A 转换器。如把 file:///C:\Users\**I~1\AppData\Local\Temp\ksohtml4560\wps22.jpg和 file:///C:\Users\**I~1\AppData\Local\Temp\ksohtml4560\wps23.jpg都接地,使寄存锁存器 2 处于直通状态, ILE 接 +5V , 接 CPU 系统总线的信号, 接端口地址译码信号,这样 CPU 可执行一条 OUT 指令,使其有效,写入数据并立即启动 D/A 转换。
3. 双缓冲方式 即数据通过两个寄存器锁存后再送入 D/A 转换电路,执行两次写操作才能完成一次 D/A 转换。这种方式可在 D/A 转换的同时,进行下一个数据的输入,以提高转换速度。更为重要的是,这种方式特别适用于系统中含有 2 片及以上的 DAC0832 ,且要求同时输出多个模拟量的场合。
11.3.4 DAC0832 与 CPU 的连接及其应用
由于 DAC0832 内部含有数据锁存器,在与 CPU 相连时 , 使其可直接挂在数据总线上。 DAC0832 采用单缓冲方式与 CPU 的连接如图 11.12 所示。 下面举例说明如何编写 D/A 转换程序。
例 11.4 采用单缓冲方式,通过 DAC0832 输出产生三角波,三角波最高电压 5 V,最低电压 0 V。 (1) 电路设计所要考虑的问题 ① 从 CPU 送来的数据能否被保存 DAC0832 内部有二级锁存寄存器,从 CPU 送来的数据能被保存,不用外加锁存器,可直接与 CPU 数据总线相连。
图 11.12 DAC0832 与 CPU 的单缓冲方式连接电路
② 二级输入寄存器如何工作 按题意采用单缓冲方式,即经一级输入寄存器锁存。假设我们采用第一级锁存,第二级直通,那么第二级的控制端 WR2 和 XFER 应处于有效电平状态,使第二级锁存寄存器一直处于打开状态。第一级寄存器具有锁存功能的条件是 ILE 、 CS 、 WR1 都要满足有效电平。为减少控制线条数,可使 ILE 一直处于高电平状态,控制 WR1 和 CS 端。电路连接如图 11 . 12 所示。
③ 输出电压极性 按题意输出波形变化范围为 0V~5 V,需单极性电压输出。 (2) 软件设计所要考虑的问题
① 单缓冲方式下输出数据的指令仅需一条输出指令即可。 图 11 . 12 所示 CS 端与译码电路的输出端相连,其地址数既是选中该 DAC 0832 芯片的片选信号,也是第一级寄存器打开的控制信号。另外由于 CPU 的控制信号 WR 与 DAC0832 的写信号 WR1 相连,当执行 OUT 指令时, CPU 的 WR1 写信号有效,与 CS 信号一起,打开第一级寄存器,输入数据被 锁存。假设 DAC0832 地址为 04A 0H ,输出 0 V电压程序如下: MOV AL,00H; 设置输出电压值 MOV DX, 04A 0H ; DAC0832 片选地址 OUT DX,AL ;输出数据,使 DAC0832 输出端得到 0V 模拟电压输出
② 按题意产生三角波电压范围为 0V~5 V,那么所对应输出数据 00H~FFH 。所以三角波上升部分,从 00H 起加 1 ,直到 FFH 。三角波下降部分从 FFH 起减 1 ,直到 00H ,流程图如图 11 . 13 所示。 DAC0832 输出的三角波形图如图 11.14 所示。 单缓冲方式下接口电路图和程序如下:
MOV AL,00H ;设置输出电压值 MOV DX, 04A 0H ; DAC0832 芯片地址送 DX AA1 ∶ OUT DX,AL INC AL ;修改输出数据 CMP AL ,0FFH JNZ AA1 AA2 ∶ OUT DX,AL DEC AL ;修改输出数据 CMP AL,00H JNZ AA2 JMP AA1
例 11.5 产生两个不同极性的方波信号,相位关系如图 11 . 15 所示,试进行软硬件设计。 分析: (1) 从图 11 . 15 可看出 u1 是单极性的方波, u2 是双极性的方波,需二个 DAC0832 转换器,一个为单极性输出,另一个为双极性输出。 (2) u1 产生正跳变时, u2 也产生正跳变, u1 产生负跳变时, u2 也产生负跳变,要求二个 DAC0832 的输出波形同步,因而 DAC0832 的工作方式需采用双缓冲方式。 (3) 需要三个地址值,第一个地址作为第一片 0832 的片选信号,第二个地址作为第二片 0832 的片选信号,第三个地址作为同时打开两个 DAC0832 的 8 位 DAC 寄存器的控制信号,该信号连接到两片 0832 的 XFER 端。 (4) 第二片 0832 输出电压范围为 -2.5 V ~ + 2.5 V,可题目要求产生方波的电压范围为 -2.0 V ~ + 1.2 V,模拟电压所对应的数字量计算方法如下: Dx=(Vx-V2) × FFH/V1-V2 其中V 1 为上限范围电压,等于 +2.5V ;V 2 为下限范围电压,等于 -2.5V ;V x 为待输出电压值。 1.2V 对应的数字量等于 BCH , -2.0 V对应的数字量等于 19H 。 (5) 在双缓冲方式时,需要执行两条输出指令。第一条输出指令打开 DAC0832 的输入寄存器,把来自 CPU 的 8 位数据送入 8 位输入寄存器锁存。第二条输出指令打开 8 位 DAC 寄存器,使输入的数据通过 DAC 寄存器送到 D/A 转换器中进行转换。但第二条输出指令中输出的数据无意义,此指令只为使 XFER 控制引脚有效,打开 8 位 DAC 寄存器。 电路如图 11 . 16 所示。
图 11.16 多片 DAC0832 接口连接图
程序如下: AA1 ∶ MOV AL,00H ;设定输出电压值 MOV DX, 04A 0H ;设置第一片 DAC0832 地址 OUT DX,AL ;数据被锁存在 8 位输入寄存器 MOV AL,19H ;输出电压 -2.0V 对应数字值 MOV DX, 04A 2H ;设置第二片 DAC0832 地址 OUT DX,AL ;数据被锁存在 8 位输入寄存器 MOV DX, 04A 4H ;设置二片 0832 共用地址 OUT DX,AL ;启动两片 DAC0832 同时转换 MOV AL,0FFH ;输出电压 5V 对应数字值 MOV DX, 04A 0H ;设置第一片 DAC0832 地址 OUT DX , AL MOV AL,0BCH ;输出电压 1.2V 对应数字值 MOV DX, 04A 2H ;设置第二片 DAC0832 地址 OUT DX , AL MOV DX, 04A 4H ;设置二片 DAC0832 共用地址 OUT DX,AL ;启动两片 DAC0832 同时转换 JMP AA1 例 11.6 采用直通方式,利用 DAC0832 产生锯齿波,波形范围为 0V~5 V。 分析: (1) 由于采用直通方式,即 DAC0832 的 8 位输入寄存器、 8 位 DAC 寄存器一直处于直通状态,因此要求控制端 ILE 接高电平, CS 、 WR1 、 WR2 、 XFER 接地。 (2) 由于采用直通方式, CPU 输出的数据可直接到达 DAC0832 的 8 位 D/A 转换器进行转换。在这种情况下,如果还是把 DAC0832D/A 转换器的数据输入端直接连在 CPU 数据总线上,会造成 CPU 数据总线上只能有 D/A 转换所需要的数据流,数据总线上的任何数据都会导致 D/A 进行变换和输出,这在实际工程中是不可能的。因而 DAC0832 D/A 转换器的数据输入端不能直接连在 CPU 数据总线上,来自 CPU 数据总线上的数据必须经锁存后才能传送到 DAC0832D/A 转换器的输入端。本题采用将 DAC0832 数据输入端连接到 8255A 的 A 口,通过 8255A 的 A 口将来自 CPU 的数据锁存。如图 11.17 所示。
图 11.17 单缓冲方式 DAC0832 接口电路图
图 11.17 单缓冲方式 DAC0832 接口电路图
(3) 波形范围为 0V~5V ,单极性输出。 (4) 锯齿波上升部分,采用数据值加 1 的方法,使输出数据由 00H 变化到 FFH 。在下降时由 FFH 突变到 00H ,不用采用重新赋 00H 的方法, FFH 加 1 自动变为 00H 。 设 8255A 芯片各口地址分别为 04A0H,04A2H,04A4H,04A6H 。 MOV DX, 04A 6H ; 8255A 控制口地址送 DX MOV AL,80H ;设置 8255A 工作方式控制字 OUT DX , AL MOV DX, 04A 0H ;设置 8255A 的 A 口地址 MOV AL,00H ;输出电压 0V 对应数值 AA1 ∶ OUT DX,AL INC AL ;数值加 1 JMP AA1
本章小结 1. 当计算机用于数据采集和过程控制的时候,采集对象往往是连续变化的物理量(如温度、压力、声波等),但计算机处理的是离散的数字量,因此需要对连续变化的物理量(模拟量)进行采样、保持,再把模拟量转换为数字量交给计算机处理、保存等。这样的器件称为模数转换器,即 A/D 转换器。把经过计算机分析处理的数字信号转换成模拟信号,去控制执行机构的器件,称为数模转换器,即 D/A 转换器。可见, D/A 转换是 A/D 转换的逆过程。这两个互逆的转换过程以及传感器构成一个闭合控制系统。
2 .温度、速度、流量、压力等非电信号,称为物理量。要把这些物理量转换成电量,才能进行模拟量对数字量的转换,这种把物理量转换成电量的器件称为传感器。
3. 模 / 数转换器( ADC )的主要性能参数有:分辨率、量化误差、转换时间、绝对精度、相对精度;数 / 模转换器( DAC )的主要性能参数有:分辨率、线性误差、建立时间、温度灵敏度、输出电平等。
4 . A/D 转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在 A/D 转换前,输入到 A/D 转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。 A/D 转换后,输出的数字信号可以有 8 位、 10 位、 12 位和 16 位等。
5 . A/D 转换器的工作原理实现 A/D 转换的方法很多,常用的有逐次逼近法、双积分法及电压频率转换法等。 逐次逼近法:速度快、分辨率高、成本低,在计算机系统得到广泛应用。逐次逼近法原理电路类同天平称重。在节拍时钟控制下,逐次比较,最后留下的数字砝码,即转换结果。
6 . ADC0809 是一种普遍使用且成本较低的、由 National 半导体公司生产的 CMOS 材料 A/D 转换器。它具有 8 个模拟量输入通道,可在程序控制下对任意通道进行 A/D 转换,得到 8 位二进制数字量。
10 . ADC0809 内部各单元的功能如下: ① 通道选择开关 ② 通道地址锁存和译码 ③ 逐次逼近 A/D 转换器 ④ 8 位锁存器和三态门
7 . ADC 0809 的接口设计需考虑的问题如下: (1)DDA 、 ADDB 、 ADDC 三端可直接连接到 CPU 地址总线 A0 、 A1 、 A2 三端,但此种方法占用的 I/O 口地址多。每一个模拟输入端对应一个口地址, 8 个模拟输入端占用 8 个口地址,对于微机系统外设资源的占用太多,因而一般 ADDA 、 ADDB 、 ADDC 分别接在数据总线的 D0 、 D1 、 D2 端,通过数据线输出一个控制字作为模拟通道选择的控制信号。 (2) ALE 信号为启动 ADC0809 选择开关的控制信号,该控制信号可以和启动转换信号 START 同时有效。 (3) ADC0809 芯片只占用一个 I/O 口地址,即启动转换用此口地址,输出数据也用此口地址,区别是启动转换还是输出数据用 IOR , IOW 信号来区分。
8 .当 A/D 转换结束, ADC 输出一个转换结束信号数据。 CPU 可有多种方法读取转换结果: ① 查询方式; ② 中断方式; ③ 延时方式; ④ DMA 方式; ⑤ 时钟的提供;⑥ 参考电压的接法;⑦无条件传送方式
9 . D/A 转换器是指将数字量转换成模拟量的电路。数字量输入的位数有 8 位、 12 位和 16 位等,输出的模拟量有电流和电压两种。
10 . DAC0832 是一种相当普遍且成本较低的数 / 模转换器。该器件是一个 8 位转换器,它将一个 8 位的二进制数转换成模拟电压,可产生 256 种不同的电压值。
11 . DAC0832 可工作在三种不同的工作模式:直通方式、单缓冲方式、双缓冲方式。
|