D/A转换实验(一)
一、实验目的
熟悉DAC0832数模转换器的特性和接口方法,掌握D/A输出程序的设计和调试方法。
实验器件介绍
DAC0832的功能结构
10.5是DAC0832的功能示意图。DAC0832内部有一个T型电阻网络,用来实现D/A转换,它需要外接运算放大器,才能得到模拟电压输出。从图10.5中可见到,在DAC0832内部有两级锁存器,第一级锁存器称为输入寄存器,它的锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号为XFER的非。因为两级锁存器,所以,DAC0832可以工作在两级锁存方式,在输出模拟信号的同时可以采集下一个数字,有效的提高转换速率。另外,有了两级锁存器以后,在多个D/A转换器并行工作时,可以利用第二级锁存器的锁存信号图10.5中,当ILE为高电平、CS的非和WR的非为低电平时,LE的非为低电平,这种情况下,数据被锁存到输入锁存器中。对于第二级锁存器来说,XFER的非和WR2的非同时为低电平时,LE的非为低电平,于是,将输入寄存器的信息锁存到DAC寄存器中。
硬件原理图
实验软件框图
2、实验线路的连接
将0832片选信号0832CS插孔和译码输出070H-07FH插孔相连。
实验软件编程提示
本实验要求在AOUT端输出方波信号,方波信号的周期由延时时间常数确定。根据Vout=-(VREF*(输入数字量的十进制数))/256,当数字量的十进制数为256(FFH)时,由于VREF=-5V,Vout=+5V。当数字量的十进制数为0(00H)时,由于VREF=-5V,Vout=0V。因此,只要你将上述数字量写入DAC0832端口地址时,模拟电压就从AOUT端输出。
三、实验程序
CODE SEGMENT;代码段开始
ASSUME CS:CODE;将CS与CODE关联
DAPORT EQU 0070H;DAPORT等于0070H
CONTPORT EQU 00DFH;CONTPORT等于OODFH
DATAPORT EQU 00DEH;DATAPORT等于00DEH
DATA EQU 0500H;DATA等于0500H
START: JMP DACONTORL;无条件跳转至DACONTORL
DACONTORL:CALL FORMAT;调用FORMAT
CALL LEDDISP;调用LEDDISP
MOV DX,DAPORT;将DAPORT赋给DX
MOV AL,00H;将00H赋给AL
DACON1: OUT DX,AL;将AL中的值赋给DX并从DAPORT输出
MOV CX,0400H;将0400H赋给CX
DACON2: LOOP DACON2;将CX减1,循环
NOT AL;将AL的值取反
JMP DACON1;无条件跳转至DACON1
LEDDISP: MOV AL,90H;将90H转至AL中
MOV DX,CONTPORT;将CONTPORT的地址赋给DX
OUT DX,AL;将AL的值赋给DX并从CONTPORT输出
MOV BYTE PTR DS:[0600H],01H;将01H赋给DS:[0600H]所指的单元
JNZ LED1;不为零跳转至LED1
LED2: RET
FORMAT: MOV BX,0;将0赋给BX
MOV WORD PTR DS:[BX+0500],4006H;将4006H赋给DS:[BX+0500]所
;指单元
ADD BX,2;将BX中的内容加2
MOV WORD PTR DS:[BX+0500],4040H;将4040H赋给DS:[BX+0500]所
;指单元
ADD BX,2;将BX中的内容加2
MOV WORD PTR DS:[BX+0500],4F5BH;将4F5BH赋给DS:[BX+0500]所
;指单元
ADD BX,2;将BX中的内容加2
MOV WORD PTR DS:[BX+0500],3F7FH;将3F7FH赋给DS:[BX+0500]所
;指单元
ADD BX,2;将BX中的内容加2
RET
CODE ENDS;代码段结束
END START;结束开始
三角波的修改主程序
CODE SEGMENT;代码段开始
ASSUME CS:CODE;将CS与CODE关联
DAPORT EQU 0070H;DAPORT等于0070H
CONTPORT EQU 00DFH;CONTPO