在计算机应用系统中,采集对象往往是连续变化的物理量,因此需要对连接变化的物理量进行采样、保持,再把模拟量转换为数字量交给计算机处理。计算机输出的数字量有时需要转换为模拟量去控制某些执行元件。
A/D转换器就是把模拟量转换成数字量的过程。
数字量便于计算机的处理,是自动控制过程的重要步骤。
A/D转换的原理很多,常见的有双积分式、逐次逼近式、计数式等。输出码制有二进制、BCD码等;输出数据宽度(二进制)有8位、12位、16位、20位等。
例:用1个10位ADC转换一个满量程为5V的电压,则可能分辨的最小电压率为5000mV/1024=5mV。若模拟输入值小于5mV,则ADC无反应,输出保持不变。
可见,**ADC的数字量输出位数越多,其分辨率就越高。**当分辨率大于微机系统数据总线宽度时,每次转换都需要两次数据的传输。
任何一种A/D转换器一般具有以下信号线:
数据的传送可采用查询、中断和DMA方式。不同的方式的电路组成和编程方法不同。
A/D采集的速度取决于:
$\tau$
。(CSDN的md编辑器打不出来,就是很像t的那个读作tao的符号)$\tau$
)查询 | 中断 | DMA |
---|---|---|
低 | 中 | 高 |
① ADC的模拟量输入是否是多通道?
② ADC的分辨率是否大于系统数据总线宽度?
③ ADC芯片内部是否有三态输出锁存器?
④ ADC的启动方式是脉冲触发还是电平触发?
⑤ A/D转换的数据采用哪种传输方式?
⑥ A/D转换的数据进行什么样的处理?
⑦ ADC接口电路采用什么元器件组成?
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
根据时序图,ADC0809的工作过程如下:
接口电路结构形式:
采用可编程接口芯片82C55A
中断处理:
本例题是利用微机系统的中断资源,故不需做中断系统的硬件连接和82C59A的初始化。
只需做两件事:
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
例:DAC0832能够把8位二进制数转换成电流,所以DAC0832的分辨率是8位。
DAC的外部信号线包括:
DAC与CPU的接口包括硬件连接和软件编程。DAC接口电路的结构形式也有下列几种:
D/A与A/D有很多不同之处,表现在:
DAC主要解决的是:
① DAC的模拟量输出是否是多通道?
② DAC的分辨率是否大于系统数据总线的宽度?
③ DAC芯片内部是否有三态输入锁存器?
④ DAC的启动方式,只有脉冲触发一种。DAC不设专门的转换启动信号,是利用CS和IOW共同进行假写操作,来实现脉冲启动的。
⑤ DAC的数据传输方式,只有无条件传输一种。
⑥ DAC接口电路采用什么元器件组成?
引脚功能:
DAC0832有三种工作方式:
注:在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