第10章 D/A、A/D转换器及其与CPU的接口 10.1 概述 10.2 D/A转换器芯片及其与CPU的接口 10.3 A/D转换器芯片及其与CPU的接口
数/模(D/A)和模/数(A/D)转换技术主要用于计算机控制和测量仪表中。 典型的闭环实时控制系统为: 10.1 概 述 数/模(D/A)和模/数(A/D)转换技术主要用于计算机控制和测量仪表中。 典型的闭环实时控制系统为:
10.2 D/A转换器芯片及其接口技术` 10.2.1 D/A转换原理与基本参数 在实现时,通常采用T型网络实现数字量往模拟电流的转换,再利用运算放大器来完成模拟电流到模拟电压的转换。所以,要把一个数字量转变为模拟电压,需要两个环节。有些D/A转换器芯片只包含前一个环节,有些包含两个环节。对于前一种,需外接运算放大器。 基本参数: 分辨率 精度 线性度 建立时间(转换时间) 温度系数
10.2.2 DAC1210转换器芯片及其接口 1、内部结构
2、工作方式 (1)单缓冲方式 将输入锁存器和DAC寄存器两级输入当作一级输入。硬件连接如下:
(2)双缓冲方式 是将数据经输入锁存器和DAC寄存器两级输入到D/A转换器。对于与16位数据总线连接时,分别看作两个端口予以控制,写两次。对于与8位数据总线连接时,写三次。硬件连接如下:
由于DAC1210属于电流输出型的D/A转换器,需用运算放大器将电流输出转换为电压输出。一般电压输出分为单极性和双极性两种。 3、输出方式 由于DAC1210属于电流输出型的D/A转换器,需用运算放大器将电流输出转换为电压输出。一般电压输出分为单极性和双极性两种。 单极性输出方式: 双极性输出方式:
4、应用举例 例1 如图所示,向DAC1210连续不断地输出数据,即可得到相应的电压信号。设端口地址为PORT,编写产生连续方波的程序。 MOV DX,PORT LP:MOV AX,0 OUT DX,AX CALL RLY ;延时 MOV AX,0FFFH OUT DX,AX CALL RLY JMP LP
例2 同上题,编写产生连续三角波的程序。 MOV DX,PORT XOR AX,AX W1:OUT DX,AX INC AX NOP CMP AX,0FFFH JNZ W1 W2:OUT DX,AX DEC AX CMP AX,0 JNZ W2 JMP W1
例3 同上题,编写产生连续梯形波的程序。 MOV DX,PORT XOR AX,AX OUT DX,AX W3:CALL RLY1 W1:INC AX NOP CMP AX,0FFFH JNZ W1 CALL RLY2 W2:DEC AX CMP AX,0 JNZ W2 JMP W3
1、数据锁存问题 2、模拟信号输出问题 3、D/A位数多于数据总线位数问题 (可采用两级锁存的办法) 或 12.2.3 DAC与CPU接口时应注意的问题 1、数据锁存问题 2、模拟信号输出问题 3、D/A位数多于数据总线位数问题 (可采用两级锁存的办法) 或
12.3 A/D转换器芯片及其接口技术` 12.3.1 采样和量化 注意:采样时必须要符合采样定理,即采样频率f0大于等于输入信号最高频率fm的2倍。 量化:以一定的量化单位,把离散的模拟信号转化为离散的阶跃量的过程。通常用“四舍五入”的方法使之整量化。
12.3.2 A/D工作原理 12.3.3 A/D性能参数 分辨率 量化误差 转换时间 精度 漏码 分辨率 量化误差 转换时间 精度 漏码
12.3.4 ADC0809 一、原理框图
二、应用举例 1、查询法
假设仅对模拟通道IN0进行A/D转换。采用查询方式的程序如下(对0通道采样一个点): OUT 50H,AL ;选通IN0,启动A/D转换 NOP W: IN AL,41H ;输入EOC标志 TEST AL,01H JZ W ;未结束,返回等待 IN AL,49H ;结束,把结果送入AL中
若对IN0~IN78个通道的模拟量各采样100个点: MOV BX,OFFSETWP ;设置数据存储指针 MOV CL,100 ;设置计数初值 N:MOV DX,0050H P:OUT DX,AL ;选通一个通道,启动A/D NOP W:IN AL,41H ;输入EOC标志 TEST AL,01H ;测试状态 JZ W ;未结束,返回等待 IN AL,49H ;结束,读数据 MOV[BX],AL ;存数 INC BX ;修改存储地址指针 INC DX ;修改A/D通道地址 CMP DX,0058H ;判断8个通道是否转换完 JNZ P ;未完,返回启动新通道 DEC CL ;100个点是否采样完了, JNZ N ;未完返回再启动IN0 HLT ;100个点完了,暂停
2、中断法
OUT 98H,AL ;选通IN3,并启动A/D转换 NOP STI 而在中断服务程序中用一条指令 假设ADC0809端口地址为98H,仅对模拟通道IN3进行A/D转换。采用中断响应法的程序为 CLI MOV AL,03H OUT 98H,AL ;选通IN3,并启动A/D转换 NOP STI 而在中断服务程序中用一条指令 IN AL,98H ;读取转换结果的数字量
若对IN0~IN7 8个通道的模拟量各采样100个点,并转换成数字量采用中断方式8259A边沿触发,自动结束,非缓冲方式,单片使用中断类型码为70—77H,偶地址假设为20H,奇地址为21H的程序如下(伪指令省略): WP DB 800DUP(?) MOVAL,13H;ICW1 OUT 20H,AL MOV AL,70H;ICW2 OUT 21H,AL MOV AL,03H;ICW4 PUSH DS MOV AX,0 MOV DS,AX MOV BX,OFFSET XY MOV SI,SEG XY MOV[01CCH],BX MOV[01CEH],SI POP DS MOV CX,100 MOV DI,0FFSET WP STI PP:MOVBL,00H LL:MOV AL,BL OUT 98H,AL HLT INC BL CMP BL,08H JNZ LL DEC CX JNZ PP 中断服务程序: XY:PUSH AX STI IN AL,98H MOV[DI],AL INC DI CLI POP AX IRET
举例 利用8255A间接与0809接口,接口图如图12.4所示。采用查询方式,编写转换通道IN5的模拟量的程序。
解 由接口图分析可知8255A的A口、B口、C口和控制口的地址分别为90H、94H、98H、9CH,程序片段如下: ;8255初始化 MOV AL,10011000B OUT 9CH,AL ;A/D转换 MOV AL,05H OUT 94H,AL MOV AL,01H MOV AL,0 NOP W:IN AL,98H TEST AL,00100000B JZ W MOV AL,00000101B OUT 9CH,AL IN AL,90H MOV BL,AL MOV AL,00000100B