单片机基础06

单片机基础(06)

6.1 ADC转换器工作原理

A/D转換器概述

现实世界中,各种物理量(温度、压力、流量、速度等) 通过传感器转换成电信号,通常都是模拟信号。而单片机作为数字电路芯片,只能处理数字电平信号。因此需要有器件实现模拟量到数字量之间的转换。

  • AD器件是将模拟量转换为数字信号的芯片;
  • DA器件则是将数字量转换为模拟量的芯片。

一、A/D转换器的类型及原理

现在有很多类型的A/D转换器芯片,各种A/D转换芯片根据转换原理可分为

计数型A/D转换器、逐次比较式、双重积分型、并行式A/D转换器等;

按转换方法可分为

直接A/D转换器 间接A/D转换器;

按其分辦率可分为 4、8、12、16位的A/D转换器芯片。

逐次逼近型A/D转换器

逐次逼近型A/D转换器是由一个比较器、D/A转换器、寄存器及控制电路组成部分。逐次逼近型是用一系列已知的电压权值,从高位到低位依次开始逐位试探比较。

5V参考电压,输入模拟电压为6.835937V,逐次比较过程为。

  • D7:5V
  • D6:2.5V
  • D5:1.25V
  • D4:0.625V
  • D3:0.3125V
  • D2:0.15625V
  • D1:0.078125V
  • D0:0.0390625V
05_01_13_41_EcJUe1
3)双重积分型A/D转换器

双重积分型A/D将输入电压先变换成与其平均值成正比的时间间隔,然后再把此时间间隔转换成数字量,它属于间接型转换器。由于在转换过程中进行了两次积分,因此称为双重积分型。双重积分型A/D转换器

转换精度高,稳定性好,测量的是输入电压在一段时间的平均值,而不是输入电压的瞬间值,因此它的抗干扰能力强,但是转换速度慢,双重积分型A/D转换器在工业上应用也比较广泛。

05_01_13_43_aKPEFw

二、A/D转换器的主要性能指标

  1. 分辦率:表示输出变化了变化一个相邻数码所需输入的模拟电压变化量。分辨率一般为满刻度电压与2^n之间的比值,所以位数越大,分辦率越高。
  2. 转换时间:ADC完成一次模数转换所需的时间,其倒数则定义为转换速率。
  3. 绝对误差与相对误差:绝对误差指AD转换器在任何数码对应实际电压与理想电压值之差的最大值,相对误差是绝对误差与满刻度电压值之比。
  4. 线性度:指AD器件实际的转换西数与理想直线的最大误差。
05_01_13_45_otPSWq

6.2 ADC0809与单片机的控制接口

ADC0809与MCS-51的接口

ADC0809逐次逼近型转换器

ADC0809是CMOS工艺单片型逐次逼近型A/D转换器,具有8路模拟量输入通道,有转换起停控制,模拟输入电压范围为0~+5V,转换时间为100 us。

05_01_13_48_42EH2l

ADC0809的引脚

ADC0809芯片有28个引脚,采用双列直插式封装(DIP28)。

05_01_13_50_6u2Sxk
ADDCADDBADDA选择通道
000IN0
001IN1
010IN2
011IN3
100IN4
101IN5
110IN6
111IN7

其中:

  • NO~IN7:8路模拟量输入端。
  • DO~D7:8位数字量输出端。
  • ADDA、 ADDB、 ADDC:3位地址输入线,用于选择8路模拟通道中的一路。
  • ALE:地址锁存允许信号,输入,由低电平变高电平锁存。
  • START:A/D转换启动信号,输入,由高电平变低电平启动。
  • EOC:A/D转换结束信号,输出。当启动转换时,该引脚为低电平,当A/D转换结束时,该线脚输出高电平。
  • OE:数据输出允许信号,输入,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,输出锁存器的数据从DO~D7送出。
  • CLK:时钟脉冲输入端。要求时钟频率不高于640kHZ。
  • REF+、 REF-:基准电压输入端。
  • vcc:电源,接+5v电源。
  • GND:地。

ADC0809的工作流程809的引脚

05_01_13_56_3cePAa
  1. 输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器译码从8路模拟通道中选通一路模拟量送到比较器。
  2. 送START一高脉冲,START的上升沿使逐次逼近寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。
  3. 当转换结束时,转换的结果送入到输出三态锁存器,并使EOC信号回到高电平,通知CPU已转换结束。
  4. 当CPU执行一读数据指令,使OE为高电平,则从输出端D0~D1读出数据。

ADC0809与MCS-51单片机的接口

下图是一个ADC0809与8051的一个接口电路图。

05_01_13_57_i6iyZf 05_01_13_57_5EnI1g

向地址满足A15=0的端口进行写操作时,即可产生ALE/START信号所需的上升沿,写操作结束后,即可产生下降沿。

05_01_13_58_6UA1uN

向地址满足A15=0的端口进行读操作时,即可产生OE信号所需的上升沿。

05_01_13_58_PFpFgt

启动AD转换时EOC为低电平,转换结束时变为高电平,其电平极性与INT0中断相反,即需要通过反相器将极性反向。

软件编程

设系统为一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM中。采样完一遍后停止采集。

#include <reg51.h>
#include <absacc.h> 			//定义绝对地址访问
#define uchar unsigned char
uchar data x[8]; 					//定义8个单元的数组,存放结果
uchar xdata *ADadr; 			//定义指向通道的指针
uchar i=0;

void main(void) {
  IT0 = 1; 									//初始化
  EX0 = 1;
  EA = 1;
  i = 0;
  ADadr = 0x7FF8; 					//指针指向通道0
  *ADadr = i; 							//启动通道0转换
  for (;;) {;} 						//等待中断
}

void int_adc(void) interrupt 0 {	//中断函数
  x[i] = *ADadr; 								//接收当前通道转换结果
  i++;
  ADadr++; 										//指向下一个通道
  if (i < 8){
  	*ADadr = i; 								//8个通道未转换完,启动下一个通道返回
  }else{
    EA = 0;
    EX0 = 0; 										//8个通道转换完,关中断返回
  }
}

6.3 常见DAC转换器工作原理

D/A转换器的基本原理

D/A转换器是把输入的数字量转换为与之成正比的模拟量的器件。数字量不同位置值代表不同权重,输出模拟量是不同权重值的累加和。

如输入的数字量为D, V R e f V_{Ref} VRef为基准电压,输出的模拟量为 V o V_o Vo,则有:
V o = D × V R E F / 2 n \mathrm{V}_{\mathrm{o}}=\mathrm{D} \times \mathrm{V}_{\mathrm{REF}} / 2^{n} Vo=D×VREF/2n

D = d n − 1 2 n − 1 + d n − 2 2 n − 2 + … … + d 1 2 1 + d 0 2 0 \mathrm{D}=\mathrm{d}_{\mathrm{n}-1} 2^{\mathrm{n}-1}+\mathrm{d}_{\mathrm{n}-2} 2^{\mathrm{n}-2}+\ldots \ldots+\mathrm{d}_{1} 2^{1}+\mathrm{d}_{0} 2^{0} D=dn12n1+dn22n2++d121+d020

D/A转换器的性能指标

  1. 分辨率:DAC能够产生的最小的模拟信号变化量,一般用最小模拟变化量与满量程信号值之比表示。如:8位(1/256),12位(1/4096)。
  2. 精度:DAC输出实际模拟量与理论值间的误差,同样分为绝对精度和相对精度。
  3. 建立时间:从数字量输入发生变化开始,到输出端模拟量稳定后,所需的时间,它是衡量DAC转换速度的重要参数。

D/A转换的分类

  • 按输入数字量的位数分:8位、10位、12位16位等;
  • 按输入的数码分:二进制方式和BCD码方式;
  • 按数字量的输入方式分:并行方式和串行方式;
  • 按输出形式分:电流输出型和电压输出型,电压输出型

D/A转换一般由电阻解码网络、模拟电子开关、基准电压、运算放大器等组成。

按电阻解码网络的组成形式,D/A转换器分成有权电阻解码网络D/A转换器、工型电阻解码网络D/A转换器和开关树型电阻解码网络D/A转换器等。

T型电阻解码网络D/A转换器只用两种阻值的电阻,精度较高,容易集成化,在实际中使用最频繁。

反相比例放大器
05_01_14_11_ARnvXq

根据运放虚断特性:
I ( R 1 ) = I ( R f ) \mathrm{I}(\mathrm{R} 1)=\mathrm{I}\left(\mathrm{R}_{\mathrm{f}}\right) I(R1)=I(Rf)
05_01_14_12_PZpuI1

各支路的电流为:
I n − 1 = V R E F 2 R I n − 1 = V R E F 2 2 R ⋯ ⋯ I n − 1 = V R E F 2 n − 1 R I n − 1 = V R E F 2 n R I_{n-1}=\frac{V_{R E F}}{2 R} \quad I_{n-1}=\frac{V_{R E F}}{2^{2} R} \quad \cdots \cdots \quad I_{n-1}=\frac{V_{R E F}}{2^{n-1} R} \quad I_{n-1}=\frac{V_{R E F}}{2^{n} R} In1=2RVREFIn1=22RVREFIn1=2n1RVREFIn1=2nRVREF

6.4 DAC0832与单片机的接口

MCS-51与8位DAC0832的接口

DAC0832是有美国半导体公司(NS)设计的一款8位T型电阻网络D/A转换器,并行数字量输入,电流输出型,建立时间为1us。

DAC0832与单片机的接口简单,易于控制,价格便宜且精度适中,在实际应用系统中被广泛使用。

DAC0832的内部结构图
05_01_14_15_Avnt9m
DAC0832的引脚

DAC0832有20引脚,采用双列直插式封装。

05_01_14_15_xv4CD3
  • DIO~DI7:8位数字量输入端。
  • ILE:数据允许控制输入线。
  • C S ‾ \overline{CS} CS:片选信号。
  • W R 1 ‾ \overline{WR1} WR1 W R 2 ‾ \overline{WR2} WR2 :写信号线1,2。
  • X F E R ‾ \overline{XFER} XFER:数据传送控制信号输入线。
  • IOUT1, IOUT2:模拟电流输出线1,2。
  • R f b R_{fb} Rfb:片内反馈电阻引出线,用作外接的运放的反馈电阻。
  • V R E R V_{RER} VRER:基准电压输入线。电压范围为-10V~+10v。
  • VCC:工作电源输入端,可接+5v~+15V。
  • AGND,DGND:模拟地,数字地。

DAC0832的工作方式

通过改变控制端ILE,WR1,WR2,CS和XREF的连接方式,DAC0832可以实现:直通方式、单缓冲和双缓冲三种工作方式,满足不同的应用要求。

  1. 直通方式:WRI、 WR2、CS、XREF接地,ILE接vCC。
    05_01_14_19_n9Ugxe

    8位输入寄存器和8位DAC寄存器都直接处于导通状态,8位数字量到达DI0~DI7,立即进行D/A转换,输出端得到转换的模拟量。

    由于单片机数据总线的分时复用特性,此方式下单片机数据总线不能与D10-DI7直接连接,只能通过单片机独立10并行口(或直接数字芯片输出)与DAC0832连接。

  2. 单缓冲方式

    通过引脚WRI、 WR2、CS、XREF使得两个锁存器的一个处于直通状态,另一个处于受控制状态,或者两个被控制同时导通。此方式下,单片机的数据总线可以与DAC832直接连接,CPU向DAC0832输入一次数据后,DAC就能输出模拟信号,是最常用的一种接口形式。

    05_01_14_22_iqOZQr
  3. 双缓冲方式:
    引脚WR1、 WR2、CS、XREF使得两个锁存器的一个处于直通状态,另一个处于受控制状态,或者两个被控制同时导通,DAC0832就工作于双缓冲方式。一般在单片机同时控制多片DAC0832工作时采用。

05_01_14_24_LqHUey

DAC0832的应用举例

D/A转换器在实际中经常作为波形发生器使用,通过它可以产生各种各样的波形。

基本原理是:利用D/A转换器输出模拟量与输入数字量成正比这一特点,通过程序控制CPU向D/A转换器送出随时间呈一定规律变化的数字,则D/A转换器输出端就可以输出随时间按一定规律变化的波形。

05_01_14_25_4ddNvZ 05_01_14_26_p0oYLG
#include <absacc.h> //定义绝对地址访问
#define uchar unsigned char
#define DAC0832 XBYTE[0x7FFF]
void main() {
  uchar i;
  while(1) {
    for (i=0;i<0xff;i++){
      DAC0832=i;
    }
  }
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值