240 likes | 347 Views
第十一章 D/A 、 A/D 转换器及其与 CPU 的接口. 11.1 概述 11.2 D/A 转换器芯片及其与 CPU 的接口 11.3 A/D 转换器芯片及其与 CPU 的接口. 11.1 概 述. 数 / 模( D/A )和模 / 数( A/D )转换技术主要用于计算机控制和测量仪表中。 典型的闭环实时控制系统为:. 11.1 D/A 转换器芯片及其接口技术 `. 11.1.1 D/A 转换原理与基本参数
E N D
第十一章 D/A、A/D转换器及其与CPU的接口 11.1 概述 11.2 D/A转换器芯片及其与CPU的接口 11.3 A/D转换器芯片及其与CPU的接口
11.1 概 述 数/模(D/A)和模/数(A/D)转换技术主要用于计算机控制和测量仪表中。 典型的闭环实时控制系统为:
11.1 D/A转换器芯片及其接口技术` 11.1.1 D/A转换原理与基本参数 数字量是由一位一位的数位组成的,每个数位都代表一定的权。 D/A转换时,就是把一个数字量的每一位代码按权的大小转换为相应的模拟量分量,然后用线性叠加原理将各位代码对应的模拟输出量相加,其和就是与数字量成正比的模拟量。 在实现时,通常采用T型网络实现数字量往模拟电流的转换,再利用运算放大器来完成模拟电流到模拟电压的转换。所以,要把一个数字量转变为模拟电压,需要两个环节。有些D/A转换器芯片只包含前一个环节,有些包含两个环节。对于前一种,需外接运算放大器。 基本参数: 分辨率 精度 线性度 建立时间(转换时间) 温度系数
11.2.2 DAC1210转换器芯片及其接口 1、内部结构
2、工作方式 (1)单缓冲方式 将输入锁存器和DAC寄存器两级输入当作一级输入。硬件连接如下:
(2)双缓冲方式 是将数据经输入锁存器和DAC寄存器两级输入到D/A转换器。对于与16位数据总线连接时,分别看作两个端口予以控制,写两次。对于与8位数据总线连接时,写三次。硬件连接如下:
3、输出方式 由于DAC1210属于电流输出型的D/A转换器,需用运算放大器将电流输出转换为电压输出。一般电压输出分为单极性和双极性两种。 单极性输出方式: 双极性输出方式:
MOV DX,PORT LP:MOV AX,0 OUT DX,AX CALL RLY ;延时 MOV AX,0FFFH OUT DX,AX CALL RLY JMP LP 4、应用举例 例1 如图所示,向DAC1210连续不断地输出数据,即可得到相应的电压信号。设端口地址为PORT,编写产生连续方波的程序。
MOV DX,PORT XOR AX,AX W1:OUT DX,AX INC AX NOP CMP AX,0FFFH JNZ W1 W2:OUT DX,AX DEC AX NOP CMP AX,0 JNZ W2 JMP W1 例2 同上题,编写产生连续三角波的程序。
MOV DX,PORT XOR AX,AX OUT DX,AX W3:CALL RLY1 W1:INC AX OUT DX,AX NOP CMP AX,0FFFH JNZ W1 CALL RLY2 W2:DEC AX OUT DX,AX NOP CMP AX,0 JNZ W2 JMP W3 例3 同上题,编写产生连续梯形波的程序。
11.2.3 DAC与CPU接口时应注意的问题 1、数据锁存问题 2、模拟信号输出问题 3、D/A位数多于数据总线位数问题 (可采用两级锁存的办法) 或
11.3 A/D转换器芯片及其接口技术` 11.3.1 采样和量化 注意:采样时必须要符合采样定理,即采样频率f0大于等于输入信号最高频率fm的2倍。 量化:以一定的量化单位,把离散的模拟信号转化为离散的阶跃量的过程。通常用“四舍五入”的方法使之整量化。
11.3.2 A/D工作原理 11.3.3 A/D性能参数 分辨率 量化误差 转换时间 精度 漏码
11.3.4 ADC0809 一、原理框图
二、应用举例 1、查询法
假设仅对模拟通道IN0进行A/D转换。采用查询方式的程序如下(对0通道采样一个点):假设仅对模拟通道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个点完了,暂停
假设ADC0809端口地址为98H,仅对模拟通道IN3进行A/D转换。采用中断响应法的程序为假设ADC0809端口地址为98H,仅对模拟通道IN3进行A/D转换。采用中断响应法的程序为 CLI MOV AL,03H OUT 98H,AL ;选通IN3,并启动A/D转换 NOP NOP STI 而在中断服务程序中用一条指令 IN AL,98H ;读取转换结果的数字量
WP DB 800 DUP(?) MOVAL,13H;ICW1 OUT 20H,AL MOV AL,70H;ICW2 OUT 21H,AL MOV AL,03H;ICW4 OUT 21H,AL 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:MOV BL,00H LL:MOV AL,BL OUT 98H,AL HLT INC BL CMP BL,08H JNZ LL DEC CX JNZ PP HLT 中断服务程序: XY:PUSH AX STI IN AL,98H MOV[DI],AL INC DI CLI POP AX IRET 若对IN0~IN7 8个通道的模拟量各采样100个点,并转换成数字量采用中断方式8259A边沿触发,自动结束,非缓冲方式,单片使用中断类型码为70—77H,偶地址假设为20H,奇地址为21H的程序如下(伪指令省略):
举例 利用8255A间接与0809接口,接口图如图12.4所示。采用查询方式,编写转换通道IN5的模拟量的程序。
;8255初始化 MOV AL,10011000B OUT 9CH,AL ;A/D转换 MOV AL,05H OUT 94H,AL MOV AL,01H OUT 9CH,AL MOV AL,0 OUT 9CH,AL NOP 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 OUT 9CH,AL 解 由接口图分析可知8255A的A口、B口、C口和控制口的地址分别为90H、94H、98H、9CH,程序片段如下: