290 likes | 439 Views
第 9 章 A / D 、 D / A 转换接口. 9.1 概述 9.2 D / A 转换接口 DAC0832 9.3 模/数转换器 ADC0809. 退出. 9.1 概述. 将模拟量转换成数字量 , 是模/数转换,或称 A / D ( Analogue / Digital )转换。将数字量转换成模模拟量 , 是数/模转换,或称 D / A ( Digital / Analogue )转换。完成 A / D 转换的器件,叫 A / D 转换器 (ADC) ,完成 D / A 转换的器件,叫 D / A 转换器 (DAC) 。
E N D
第9章 A/D、D/A转换接口 • 9.1 概述 • 9.2 D/A转换接口DAC0832 • 9.3 模/数转换器ADC0809 退出
9.1 概述 • 将模拟量转换成数字量,是模/数转换,或称A/D(Analogue/Digital)转换。将数字量转换成模模拟量,是数/模转换,或称D/A(Digital /Analogue)转换。完成A/D转换的器件,叫A/D转换器(ADC),完成D/A转换的器件,叫D/A转换器(DAC)。 • 微机控制系统原理框图如图9-1所示。
9.2 D/A转换接口DAC0832 • DAC0832是带有两级数据输人缓冲锁存器的8位D/A转换器。其引脚如图9-2所示。
DAC0832具有数字量的输入锁存功能,可以和单片机的P0口直接相连。以下指令可将数字量转换成模拟量。 DAC0832具有数字量的输入锁存功能,可以和单片机的P0口直接相连。以下指令可将数字量转换成模拟量。 • MOV A,DATA ; • 要转换的数字量送A • MOV DPTR,#addr ; • DAC0832地址送DPTR。 • MOVX @DPTR,A ; • 数字量送入DAC0832并转换成模拟量
9.2.2 MCS-51与DAC0832的接口 • 单片机与DAC0832的接口,可根据需要按二级缓冲器方式、单级缓冲器方式和直通方式联接。 • 1、单缓冲器连接方式 • DAC0832以单缓冲器方式与8051的接口电路图9-4所示。
用该连接产生一个锯齿波信号的程序如下: • WAVE:MOV DPTR,#addr ;输入寄存器和DAC寄存器地址 • MOV A,DATA0 ;数字量初值 • LOOP: MOVX @DPTR,A • CJNEA,DATAEND,MORE • SJMP WAVE • MORE:INC A • SJMP LOOP • 上述程序输出的波形如图9-5所示。
2、双缓冲器连接方式 • 采用双缓冲器连接方式时,DAC0832的数字量输入锁存和D/A转换输出分两步完成。首先,将数字量输入到各路D/A转换器的输入寄存器,然后,控制各路D/A转换器,使各路D/A转换器输入寄存器中的数据,同时进入DAC寄存器,并转换输出。所以,在这种工作方式下,DAC0832占用两个I/O地址,输入寄存器和DAC寄存器各占一个I/O地址。 • 图9-6是8051和二片双缓冲器方式DAC0832的接口电路。利用此电路可以输出一对同步信号,如从X、Y输出一组同步的锯齿波和正弦波信号。
下面是从X、Y同步输出不同电压的程序: • M()V DPTR,#addr1 ;1#输入寄存器地址 • MOV A,DATA1 ;数字量1送A • MOV @DPTR,A ;数字量1送1#输入寄存器 • MOV DPTR,#addr2 ;2#输入寄存器地址 • MOV A,DATA2;数字量2送A • MOV @DPTR,A ;数字量2送2#输入寄存器 • MOV DPTR,#addr3 ;1#、2#DAC寄存器地址 • MOV @DPTR,A ;1#、2#输入寄存器的数字量1、2分别同时送1#、 • ;2#DAC寄存器,并同时转换,同步输出
9.2.3 D/A 转换器的主要技术指标 • 1、分辨率 • 2、转换误差 • 3、线性误差 • 4、转换速度 • 5、接口形式
9.3 模/数转换器ADC0809 • ADC0809是一种典型的A/D转换器,是8位8通道的A/D转换器,其引脚如图9-7所示。
9.3.1 ADC0809的结构 • ADC0809由一个8位A/D转换器、一个8路模拟量开关、8路模拟量地址锁存/译码器和一个三态数据输出锁存器组成,其内部结构如图9-8所示。
9.3.2 MCS-51与ADC0809的接口 • ADC0809与805l之间的接口电路如图9-9所示。ADC0809时钟信号由单片机的ALE信号2分频获得。ADC0809通道地址由P0 口的低3位直接与ADC0809的A、B、C相连。
下面采用查询的方法,对N(N≤8)路模拟信号进行A/D转换,转换后的N个数据顺序存放到起始地址为data_addr数据存区。下面采用查询的方法,对N(N≤8)路模拟信号进行A/D转换,转换后的N个数据顺序存放到起始地址为data_addr数据存区。 • ADST:MOV R1,#data_addr ;置数据区首地址指针 • MOV DPTR,#addr_ch1 ;指向第1个通道 • MOV R2,#0NH ;通道个数 • LOOP:MOVX @DPTR,A ;启动A/D转换 • ... ;延时
MOVX A,@DPTR ;读取转换结果 • MOV @R1,A ;结果转存到数据区 • INC DPTR ;指向下一通道 • INC R1 ;修改数据区指针 • DJNZ R2,LOOP ;若N路未转换完则继续转换
下面采用中断方式,对N(N≤8)路模拟信号进行A/D转换。下面采用中断方式,对N(N≤8)路模拟信号进行A/D转换。 • 初始化程序: • ADST: MOV R1,#dat_addr ;数据暂存区首地址 • MOV R2,#0NH ;共N路 • SETB ITl ;INT1下降沿触发 • SETB EA ;中断允许 • SETB EX1 ;开中断1 • MOV DPTR,#addr_ch1;指向第1通道 • MOVX @DPTR,A ;启动A/D转换 • MOV A,R2 ;通道数送A • LOOP: JNZ LOOP ;N路未转换完等中断
中断服务程序: • MOVX A,@DPTR ;读取A/D转换结果 • MOVX @R1,A ;存A/D转换结果 • INC DPTR ;下一个通道 • INC R1 ;下一个数据存放单元 • MOVX @DPTR,A ;启动下一个通道 • DEC R2 ;通道数减1 • MOV A,R2 • RETI ;中断返回
9.3.2 A/D 转换器的主要技术指标 • 1、分辨率 • 2、转换误差 • 3、转换速度