400 likes | 607 Views
第八章 MCS51 与 DA 、 AD 接口. 8.1.1 DA 转换器概述. 8.1 MCS-51 单片机与 DAC 的接口. 一、 D/A ( Digit to Analog )转换器. 单片机处理的是数字量。 D/A 转换器是将数字量转换成相应的模拟量 ( 电流、电压等 ) 的电子器件,是应用广泛的集成电路芯片。. 二、 D/A 转换器的原理. 按权展开,然后相加; 即 D/A 转换器能把输入数字量中的每位都按其权值分别转换成模拟量,并通过运算放大器求和相加。 D/A 转换器内部必须有一个解码网络,以实现按权值分别进行 D/A 转换。
E N D
8.1.1 DA转换器概述 8.1 MCS-51单片机与DAC的接口 一、D/A(Digit to Analog)转换器 • 单片机处理的是数字量。 • D/A转换器是将数字量转换成相应的模拟量(电流、电压等)的电子器件,是应用广泛的集成电路芯片。
二、D/A转换器的原理 • 按权展开,然后相加; • 即D/A转换器能把输入数字量中的每位都按其权值分别转换成模拟量,并通过运算放大器求和相加。 • D/A转换器内部必须有一个解码网络,以实现按权值分别进行D/A转换。 • 解码网络有两种:二进制加权电阻网络和T型电阻网络。
Vo D1 二进制加权电阻网络 Vo = = = =
D1 D0 D3 D2 T型电阻网络
n位数字量与模拟量的关系式: VO = -VREF×(数字码 / 2n)(VREF —— 参考电压) 注:因使用反相比例放大器来实现电流到电压的转换,所以输出模拟信号(VO)的极性与参考电压(VREF)极性相反。
分辨率 三、D/A转换器的性能指标 • 指能分辨的的最小输出模拟增量,是对输入变化敏感程度的描述,取决于输入数字量的二进制位数。 • 若数字量的位数是n,则D/A转换器的分辨率为2-n。 • 数字量位数越多,分辨率也越高,即转换器对输入量变化的敏感度也就越高。 • 实际应用时,应根据分辨率的要求来选定转换器的位数。
偏移量误差 转换精度 • 指满量程时DAC的实际转换值和理论值的接近程度。 • 转换精度和分辨率是两个不同的概念。 • 例如满量程时的理论输出值为10V,实际输出值是在9.99~10.01之间,其转换精度为±10mV。 • 分辨率很高的D/A转换器并不一定具有很高的精度。 • 指输入数字量为零时,输出模拟量对零的偏移值。 • 可通过DAC外接UREF和电位器加以调整。
建立时间 • 指从输入数字量变化到输出达到终值的1/2LSB(最低有效位)时所需的时间。 • 通常以建立时间表明转换速度。 • D/A转换速度远高于A/D转换。
8.1.2 典型的D/A转换芯片DAC0832 一、DAC0832芯片内部结构 基准电压输入 电流输出线 数字量输入 允许数字量输入 反馈电阻端 片选信号 输入寄存器写选通信号 DAC寄存器写入信号 DAC寄存器输入控制线
DAC0832内部由三部分电路组成 • “8位输入寄存器”。用于存放CPU送来的数字量,使输入数字量得到缓冲和锁存,由LE1控制。 • “8位DAC寄存器”。用于存放待转换的数字量,由LE2控制。 • “8位D/A转换电路”。由8位T型电阻网络和电子开关组成,电子开关受DAC寄存器的控制。T型网络能输出和数字量成正比的模拟电流。因此,DAC0832需外接运放才能得到模拟电压。
二、DAC0832芯片引脚 DAC0832有20引脚,双列直插式封装。 DI0~DI7(DI0为最低位):8位数字量输入端。 ILE:数据允许控制输入线,高电平有效。 /CS:片选信号。 /WR1:写信号线1。 /WR2:写信号线2。 /XFER:数据传送控制信号输入线,低电平有效。 IOUT1:模拟电流输出线1。它是数字量输入为“1”的模拟电流输出端。 IOUT2:模拟电流输出线2,它是数字量输入为“0”的模拟电流输出端,采用单极性输出时,IOUT2常常接地。 Rfb:片内反馈电阻引出线,反馈电阻制作在芯片内部,用作外接的运算放大器的反馈电阻。 VREF:基准电压输入线。电压范围为-10V~+10V。 VCC:工作电源输入端,可接+5V~+15V电源。 AGND:模拟地。 DGND:数字地。
Rfb IOUT1 IOUT2 VCC ILE 三、DAC0832与单片机接口 1、直通方式 MOV P1,A 当引脚/WR1、/WR2、/CS、/XFER直接接地,ILE接电源,DAC0832工作于直通方式,此时,8位输入寄存器和8位DAC寄存器都直接处于导通状态,8位数字量到达DI0~DI7,就立即进行D/A转换,从输出端得到转换的模拟量。
方波 ORG 0000H LOOP: MOV A,#0 MOV P1,A ACALL DELAY MOV A,#0FFH MOV P1,A ACALL DELAY SJMP LOOP DELAY: MOV R4,#20 D2: MOV R5,#20 DJNZ R5,$ DJNZ R4, D2 RET END
锯齿波 ORG 0000H LOOP: MOV P1,A INC A SJMP LOOP END A=0FFH A=00
三角波 A=0FFH A=00
“8位输入寄存器”锁存,“8位DAC寄存器”直通。“8位输入寄存器”锁存,“8位DAC寄存器”直通。 “8位输入寄存器”直通,“8位DAC寄存器”锁存。 2、单缓冲方式 DAC0832只实现一次数据锁存。实现方法有3种: • /LE1=0:ILE=+5V,/CS接地址线,/WR1接/WR • /LE2=1: /WR2、/XFER接地 • /LE1=1:ILE=+5V,/CS接地址线,/WR1接地 • /LE2=0: /XFER接地, /WR2接/WR
“8位输入寄存器” 与“8位DAC寄存器”同时直通与锁存。 • ILE=+5V, /XFER接地,/CS接地址线 • /WR1与/WR2同时接/WR
3、双缓冲方式 “8位输入寄存器”与“8位DAC寄存器”的锁存信号分开连接。适用于多路模拟量需要同步输出的系统。 • 两个 ILE=+5V,两个 /WR1与/WR2全部接/WR • 两个/CS接不同地址线 • 两个 /XFER接同一个地址线
工作原理 • 两个“8位输入寄存器”地址不同; • 两个“8位DAC寄存器”地址相同; • 编程时,先分别对两个芯片的“8位输入寄存器”进行操作,即将待转换的数据分别送入“8位输入寄存器”。然后再同时启动两个“8位DAC寄存器”。
完成两路D/A同步输出的程序: MOVDPTR,#7FFFH ;指向0832(1)输入锁存器 MOV A,#data1 MOVX @DPTR,A ;data1送入0832(1)输入锁存器 MOV DPTR,#0BFFFH ;指向DAC0832(2)输入锁存器 MOV A,#data2 MOVX @DPTR,A ;data2送入0832(2)输入锁存器 MOV DPTR,#0DFFFH ;同时启动0832 (1)、0832(2) MOVX @DPTR,A ;完成D/A转换输出
8.2 MCS-51单片机与ADC的接口 8.2.1 AD转换器概述 ---- A/D转换是把输入的模拟电压或电流变成与它成正比的数字量,常用于数据采集系统,外界的模拟信号经A/D转换后,读入单片机内部以便进行处理。 ---- 常见A/D转换电路有逐次逼近式等。
N位D/A转换器 模拟输入 一、逐次逼近式ADC的工作原理 N位寄存器用来存放N位二进制数码。 当VX≥VN,则保留DN-1=1,否则清0。其余类推。
启动信号作用后,在时钟信号控制下,首先使寄存器的DN-1=1;启动信号作用后,在时钟信号控制下,首先使寄存器的DN-1=1; • N位寄存器的数字量一方面作为输出用,另一方面经D/A转换器转换成模拟量UN后,送到比较器; • UN与被转换的模拟量Ux进行比较,控制逻辑电路根据比较器的输出进行判断; • 若Ux≥UN,保留这一位;若Ux<UN,则DN-1=0。 • DN-1位比较完后,再对DN-2位进行比较,直到D0位为止。此时N位寄存器的值即为Ux对应的数字量。
二.A/D转换器的主要性能指标 1、分辨率 • ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。 • 分辨率=满刻度值/2N 2、转换时间 • A/DC转换器完成一次转换所需的时间。一般常用的8位ADC的转换时间为几十至几百微秒。
EOC CLK START IN0 · · IN7 8路 模拟量 开关 D0 · · D7 8位A/D 转换器 三态 输出 锁存器 A B C 地址 锁存与 译码 ALE OE VR(+) VR(-) 8.2.2 ADC0809与单片机接口 一、ADC0809芯片内部结构及管脚功能
IN0~IN7: 8路模拟电压输入线; • ADDC、ADDB、ADDA: 地址输入线,为000~111分别选中IN0~IN7; • ALE:地址锁存允许信号,高电平有效; • CLOCK:时钟输入线; • START: 启动脉冲输入线,上升沿清除内部寄存器,下降沿启动ADC工作; • EOC:转换结束信号。EOC=0,正在进行转换;EOC=1,一次转换完成。 • D7~D0:8位数字量输出端; • OE:输出允许,高电平有效,三态门打开。 • VRE F(+)、VREF(-):正负基准电压输入端。决定输入模拟量的范围。典型值分别为+5V和0V。 管脚功能
ADDA ADDC ADDB ADDC、ADDB、ADDA:3位地址输入线。
ALE CLK CK Q D Q G ADC OE IN7 3 D7 Q7 0809 7 3 P0 S : : L 80C31 4 : : C 7 B D0 Q0 EA A D0~D7 WR IN0 + START ALE P2.7 + OE RD P3.5 1 EOC P3.5 二、ADC0809与单片机的接口 1、查询方式
地址分配 • P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 0×× × × ×× × × ×× × × 0 0 0 IN0~IN7的地址为:7FF8H~7FFFH 1 1 1 ALE=START= WR+P2.0 OE=RD+P2.0 CPU写操作时ALE=START=1,起动A/D转换 写:MOVX @DPTR,A DPTR为通道地址,起启动作用 CPU执行读操作时,则OE=1,0809送出转换后的数据 读:MOVX A,@DPTR转换后数据送A中
D CP EOC 表示转换结束经反相后为 ,可作中断源接8031的INTX端 时钟和转换时间 ALE为1/6 CPU时钟,若晶振为6MHZ,则ALE为1MHz,二分频后使转换时钟CLK为500HZ,转换时间100us左右。
例:对8路模拟信号轮流采样一次,并依次把转换结果存储到片内RAM以DATA为起始地址的连续单元中。例:对8路模拟信号轮流采样一次,并依次把转换结果存储到片内RAM以DATA为起始地址的连续单元中。 MAIN:MOV R1,#DATA ;置数据区首地址 MOV DPTR,#7FF8H ;指向0通道 MOV R7,#08H ;置通道数 LOOP:MOVX @DPTR,A ;启动A/D转换 HER:JNB P3.5,HER ;查询A/D转换结束 MOVX A,@DPTR ;读取A/D转换结果 MOV @R1,A ;存储数据 INC DPTR ;指向下一个通道 INC R1 ;修改数据区指针 DJNZ R7,LOOP ;8个通道转换完否? … …
P3.2 2、中断方式
ORG 0000H SJMP MAIN ORG 0003H SJMP INT0 MAIN: MOV R1,#30H ;设立数据存储区指针 MOV R7,#08H ;设置8路采样计数值 SETB IT0 ;设置外部中断0为边沿触发方式 SETB EA ;CPU开放中断 SETB EX0 ;允许外部中断0中断 MOV DPTR,#7FF8H ;送入口地址并指向IN0 LOOP: MOVX @DPTR,A ;启动A/D转换,A的值无意义 HERE: SJMP HERE ;等待中断 INT0: MOVX A,@DPTR ;读取转换后的数字量 MOV @R1,A ;存入片内RAM单元 INC DPTR ;指向下一模拟通道 INC R0 ;指向下一个数据存储单元 DJNZ R7,NEXT ;8路未转换完,则继续 CLR EA ;已转换完,则关中断 CLR EX0 ;禁止外部中断0中断 RETI ;中断返回 NEXT: MOVX @DPTR,A ;再次启动A/D转换 RETI ;中断返回