模拟量接口
在计算机应用系统中,采集对象往往是连续变化的物理量,因此需要对连接变化的物理量进行采样、保持,再把模拟量转换为数字量交给计算机处理。计算机输出的数字量有时需要转换为模拟量去控制某些执行元件。
- A/D转换器完成++模拟量->数字量++的转换
- D/A转换器完成++数字量->模拟量++的转换
A/D转换器
A/D转换器就是把模拟量转换成数字量的过程。 数字量便于计算机的处理,是自动控制过程的重要步骤。 A/D转换的原理很多,常见的有双积分式、逐次逼近式、计数式等。输出码制有二进制、BCD码等;输出数据宽度(二进制)有8位、12位、16位、20位等。
A/D转换器的主要技术指标
- 分辨率
指A/D转换器能够把模拟量转换成二进制数的位数。
例:用1个10位ADC转换一个满量程为5V的电压,则可能分辨的最小电压率为5000mV/1024=5mV。若模拟输入值小于5mV,则ADC无反应,输出保持不变。
可见,**ADC的数字量输出位数越多,其分辨率就越高。**当分辨率大于微机系统数据总线宽度时,每次转换都需要两次数据的传输。
- 转换时间
从转换启动开始到转换结束,得到稳定的数字量输出所需要的时间。 转换时间的快慢将会影响ADC接口与CPU交换数据的方式。对于低中速的ADC一般采用查询或中断方式,对于高速的ADC应采用DMA方式。 低速:查询/中断 高速:DMA
A/D转换器的外部特性
任何一种A/D转换器一般具有以下信号线:
- 模拟信号输入线,有单通道与多通道之分。
- 数字量输出线,线的数目决定了分辨率。
- 转换启动线(输入),每次启动只能转换一次数据。
- 转换结束线(输出),表示ADC作一次转换结束的状态。
A/D转换器与CPU接口的原理和方法
A/D转换器与CPU的连接
- ADC的启动信号
:有脉冲启动 和 电平启动两种。 - ADC的输入信号
:有单通道和多通道之分。 - ADC的输出信号
ADC输出是否有三态锁存; ADC的分辨率是否与系统数据总线一致。 - ADC的转换结束信号
:作为查询和中断的依据。
A/D转换器的数据传输
数据的传送可采用查询、中断和DMA方式。不同的方式的电路组成和编程方法不同。
A/D采集的速度取决于:
- A/D转换器的转换时间T;
- 将数据存入内存所需要的数据传输时间
$\tau$ 。(CSDN的md编辑器打不出来,就是很像t的那个读作tao的符号) 则采集数据的频率上限为: f0=1/(T+$\tau$ ) 上述几种方法采集数据的速度是:
A/D转换器接口控制程序
- 查询方式的数据采集程序框架
- 接口芯片初始化(当采用可编程并行接口芯片时);
- 选择数据采集通道号(当采用多通道A/D芯片时);
- 启动A/D转换;
- 查询转换结束状态;
- 读取采集数据;
- 将数据传输到存储器;
- 在线进行数据处理(显示、打印、存盘等);
- 采集未完,继续启动下一次转换;
- 转换完成,退出。
- 中断方式数据采集程序框架
- 接口芯片初始化(当采用可编程并行口芯片时);
- 可屏蔽中断初始化,包括中断向量修改、中断申请的屏蔽等;
- 选择数据采集通道号(当采用多通道A/D转换芯片时);
- 启动A/D转换;
- 开中断,并等待中断;
- 转换结束信号申请中断;
- 进入中断服务程序,在服务程序中读取数据,并将采集数据传输到存储器以及进行在线数据处理;
- 采集数据未完,继续启动下一次转换;
- 采集完成,返回。
A/D转换器接口设计
A/D转换器接口设计方案的分析
① ADC的模拟量输入是否是多通道? ② ADC的分辨率是否大于系统数据总线宽度? ③ ADC芯片内部是否有三态输出锁存器? ④ ADC的启动方式是脉冲触发还是电平触发? ⑤ A/D转换的数据采用哪种传输方式? ⑥ A/D转换的数据进行什么样的处理? ⑦ ADC接口电路采用什么元器件组成?
A/D转换器接口设计
例:查询方式的ADC接口电路设计
- 要求
利用ADC0804采集100个数据,采集的数据以查询方式传输到内存BUFR区。接口电路采用普通IC芯片组成。 - 分析
ADC0804是单个模拟量输入; ADC0804的分辨率为8位,并具有三态输出锁存器; ADC0804的启动方式为脉冲启动; 数据传输方式为查询方式。
STARTP EQU 310H ; 转换启动端口
STATEP EQU 311H ; 状态端口
DATAP EQU 310H ; 数据端口
DATA SEGMENT
BUFR DB 100(0)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
BEGIN: MOV SI, OFFSET BUFR ; 缓冲区指针
MOV CX,100 ; 采样次数
START: MOV DX,STARTP ; 启动转换
MOV AL,00H ;(可以是任意值)
OUT DX,AL ; 使CS和WR同时有效
WAIT1: MOV DX,STATEP ; 查转换结束
IN AL,DX
AND AL,80H ; 查D7=0(INTR=0?)
JNZ WAIT1 ; 未结束,等待
MOV DX,DATAP ; 已结束,读数据
IN AL,DX
MOV[SI],AL ; 数据传输到BUFR区
INC SI ;缓冲区地址加1
DEC CX ; 采样次数减1
JNZ START ; 未完,继续启动
MOV AX,4C00H ; 已完,退出
INT 21H
CODE ENDS
END BEGIN
例:中断方式的ADC接口设计
- 要求
采用ADC0809,从通道7采集100个数据,采集的数据以中断方式传输到内存缓冲区,并将转换结束信号EOC连到IRQ4上,请求中断。 - 分析
要实现上述要求,至少有3个方面的问题需要考虑: 被控对象ADC0809的特性; 接口电路结构形式; 中断处理。
ADC0809的工作过程
根据时序图,ADC0809的工作过程如下:
- 把通道地址送到ADDA~ADDC上,选择模拟输入;
- 在通道地址信号有效期间,ALE上的上升沿该地址锁存到内部地址锁存器;
- START引脚上的下降沿启动A/D转换;
- 转换开始后,EOC引脚呈现低电平,EOC重新变为高电平时表示转换结束;
- OE信号打开输出锁存器的三态门送出结果。
接口电路结构形式: 采用可编程接口芯片82C55A
中断处理: 本例题是利用微机系统的中断资源,故不需做中断系统的硬件连接和82C59A的初始化。
只需做两件事:
- 中断向量的修改(IRQ4);
- 开放IRQ4的中断和CPU中断。
- 硬件设计
本接口电路应能提供如下信号:
- ADC0809模拟量通道号选择信号
- 启动信号
- 读数据允许信号
(此前3个由82C55A接口芯片实现) - EOC的中断请求:直接连到系统总线的IRQ4上。
82C55A的4个端口地址是: 300H(A口)、301H(B口)、302H(C口)、303H(命令口)。
MOV DX,303H ;82C55初始化,A口输入
MOV AL,90H
OUT DX,AL
MOV AL,0EH ;置PC7=0,使START和ALE无效
OUT DX,AL
MOV AL,0CH ;置PC6=0,使OE无效
OUT DX,AL
MOV AX,350CH ;获取IRQ4的中断向量并保存
INT 21H
MOV OLD-OFF,BX
MOV BX,ES
MOV OLD-SEG,BX
CLI
MOV AX,250CH ;置新中断向量
MOV DX,SEG A-D
MOV DS,DX
MOV DX,OFFSET A-D
INT 21H
MOV AX,DATA ;恢复数据段
MOV DS,AX
STI
IN AL,21H ;开放IRQ4
AND AL,0EFH
OUT 21H,AL
MOV CX,100 ;设置采集字节数
MOV DI,OFFSET BUFF ;设置内存指针
BEGIN:MOV DX,303H ;82C55初始化,A口输出
MOV AL,80H
OUT DX,AL
MOV DX,300H ;选择通道7
MOV AL,07H
OUT DX,AL
MOV DX,303H ;启动转换
MOV AL,0FH ;START启动(地址锁存)
OUT DX,AL
NOP
MOV AL,0EH ;START启动(启动转换)
OUT DX,AL
STI ;开中断
HLT ;等待中断
DEC CX ;采样次数减1
JNZ BEGIN ;没完,继续
CLI ;已完,关中断
MOV AX,250CH ;恢复IRQ4的原中断向量
MOV DX,OLD-SEG
MOV DS,DX
MOV DX,OLD-OFF
INT 21H
MOV AX,DATA ;恢复数据段
MOV DS,AX
STI
IN AL,21H
OR AL,10H ;屏蔽IRQ4
OUT 21H,AL
MOV AX,4C00H ;返回DOS
INT 21H
A-D PROC FAR ;中断服务程序
PUSH AX ;保护现场
PUSH DX
CLI ;关中断
MOV DX,303H ;打开三态锁存器
MOV AL,0DH
OUT DX,AL ;置PC6=1高
MOV DX,303H ;82C55初始化,A口输入
MOV AL,90H
OUT DX,AL
MOV DX,300H
IN AL,DX ;从PA口读数据
MOV AH,AL
MOV DX,303H
MOV AL,0CH
OUT DX,AL ;置PC6=0低
MOV [DI],AH ;存取数据
INC DI ;内存地址指针加1
MOV AL,20H ;发中断结束命令
OUT 20H,AL
POP DX ;恢复现场
POP AX
STI ;开中断
IRET ;中断返回
A-D ENDP
D/A转换器
D/A转换器的主要技术指标
- 分辨率
指DAC能够把多少位二进制数转换成模拟量。
例:DAC0832能够把8位二进制数转换成电流,所以DAC0832的分辨率是8位。
- 转换时间
从数字量输入到DAC完成转换所需要的时间。
D/A转换器的外部特性
DAC的外部信号线包括:
- 数字信号输入线;
- 模拟信号输出线
- CS信号线和WR(或WR1,WR2)信号线(注意都带上划线,即低电平有效),用于形成DAC的启动转换信号;
- 数据输入锁存控制线;
- 模拟量输出通道地址线。
D/A转换器与CPU接口的原理和方法
D/A转换器与CPU的连接
DAC与CPU的接口包括硬件连接和软件编程。DAC接口电路的结构形式也有下列几种:
- 采用中小规模逻辑芯片;
- 利用可编程并行I/O接口芯片;
- 采用GAL器件。
D/A转换器接口的主要任务
D/A与A/D有很多不同之处,表现在:
- DAC一般不需要专门的控制信号去触发,只要CPU把数据送到它的输入端,就开始转换。
- DAC不提供转换结束状态信号。
DAC主要解决的是:
- CPU与DAC之间的数据缓冲问题
- 当D/A转换器的分辨率大于数据总线的宽度时,CPU必须分两次传送和同时选通。
D/A转换器接口设计方案的分析
① DAC的模拟量输出是否是多通道? ② DAC的分辨率是否大于系统数据总线的宽度? ③ DAC芯片内部是否有三态输入锁存器? ④ DAC的启动方式,只有脉冲触发一种。DAC不设专门的转换启动信号,是利用CS和IOW共同进行假写操作,来实现脉冲启动的。 ⑤ DAC的数据传输方式,只有无条件传输一种。 ⑥ DAC接口电路采用什么元器件组成?
D/A转换器接口电路设计
例:DAC接口电路设计
- 要求
通过DAC0832产生三角波、锯齿波、方波等。 - 分析
- DAC0832是单通道模拟量输出,不需通道选择;
- DAC0832有两级缓冲锁存器,它有3种工作方式:
双缓冲方式、单缓冲方式和直通方式。
引脚功能:
- CS:片选信号,与ILE配合选定芯片
- ILE:输入锁存允许
- WR1:写输入锁存器
上述三个信号用于把数据写入到输入锁存器 - WR2:写DAC寄存器
- XFER:允许输入锁存器的数据传送到DAC寄存器
上述二个信号用于启动转换 - D7~D0:输入数据线
- IOU1、IOU2:D/A转换差动电流输出,接运放的输入
- Rfb:内部反馈电阻引脚,接运放输出
- VREF:参考电压:-10V~+10V,一般为+5V或+10V
- VCC: 芯片电源:+5V~+15V,最佳工作状态:+15V
- AGND、DGND:模拟地和数字地
DAC0832有三种工作方式:
- 双缓冲方式(LE1和LE2分别控制)
1:直通。输出随输入变化 0:锁存 - 单缓冲方式(其中LE1和LE2有一个直通)
- 直通方式(LE1和LE2均为直通)
注:在DAC实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。
双缓冲方式(标准方式) 转换要有两个步骤:
- 将数据写入输入寄存器
- CS=0、WR1=0、ILE=1 -> WR1=1
- 将输入寄存器的内容写入DAC寄存器
优点: 数据接收与D/A转换可异步进行; 可实现多个DAC同步转换输出。 ++分时写入、同步转换++
软件设计:三角波程序
;8255初始化
MOV DX,303H ;8255的命令口
MOV AL,10000000B ;8255的方式字
OUT DX,AL
;指定B口控制DAC的转换
MOV DX,301H ;8255A的B口地址
MOV AL,00010000B ;置DAC0832为直通工作方式
OUT DX,AL
;生成三角波的循环
MOV DX,300H ;8255A的A口地址
MOV AL,0H ;输出数据从0开始
L1:OUT DX,AL
INC AL ;输出数据加1
JNZ L1 ;AL是否加满?未满继续
MOV AL,0FFH ;已满,AL置全1
L2:OUT DX,AL
DEC AL ;输出数据减1
JNZ L2 ;AL是否减到0?不为0继续
JMP L1 ;为0,AL加1
|