文档库 最新最全的文档下载
当前位置:文档库 › 典型的集成ADC芯片

典型的集成ADC芯片

典型的集成ADC 芯片

为了满足多种需要,目前国内外各半导体器件生产厂家设计并生产出了多种多样的

ADC 芯片。仅美国AD 公司的ADC 产品就有几十个系列、近百种型号之多。从性能上讲,它们有的精度高、速度快,有的则价格低廉。从功能上讲,有的不仅具有A/D 转换的基本功能,还包括内部放大器和三态输出锁存器;有的甚至还包括多路开关、采样保持器等,已发展为一个单片的小型数据采集系统。

尽管ADC 芯片的品种、型号很多,其内部功能强弱、转换速度快慢、转换精度高低有很大差别,但从用户最关心的外特性看,无论哪种芯片,都必不可少地要包括以下四种基本信号引脚端:模拟信号输入端(单极性或双极性);数字量输出端(并行或串行);转换启动信号输入端;转换结束信号输出端。除此之外,各种不同型号的芯片可能还会有一些其他各不相同的控制信号端。选用ADC 芯片时,除了必须考虑各种技术要求外,通常还需了解芯片以下两方面的特性。

(1)数字输出的方式是否有可控三态输出。有可控三态输出的ADC 芯片允许输出线与微机系统的数据总线直接相连,并在转换结束后利用读数信号RD 选通三态门,将转换结果送上总线。没有可控三态输出(包括内部根本没有输出三态门和虽有三态门、但外部不可控两种情况)的ADC 芯片则不允许数据输出线与系统的数据总线直接相连,而必须通过I/O 接口与MPU 交换信息。

(2)启动转换的控制方式是脉冲控制式还是电平控制式。对脉冲启动转换的ADC 芯片,只要在其启动转换引脚上施加一个宽度符合芯片要求的脉冲信号,就能启动转换并自动完成。一般能和MPU 配套使用的芯片,MPU 的I/O 写脉冲都能满足ADC 芯片对启动脉冲的要求。对电平启动转换的ADC 芯片,在转换过程中启动信号必须保持规定的电平不变,否则,如中途撤消规定的电平,就会停止转换而可能得到错误的结果。为此,必须用D 触发器或可编程并行I/O 接口芯片的某一位来锁存这个电平,或用单稳等电路来对启动信号进行定时变换。

具有上述两种数字输出方式和两种启动转换控制方式的ADC 芯片都不少,在实际使用芯片时要特别注意看清芯片说明。下面介绍两种常用芯片的性能和使用方法。

1. ADC 0808/0809

ADC 0808和ADC 0809除精度略有差别外(前者精度为8位、后者精度为7位),其余各方面完全相同。它们都是CMOS 器件,不仅包括一个8位的逐次逼近型的ADC 部分,而且还提供一个8通道的模拟多路开关和通道寻址逻辑,因而有理由把它作为简单的“数据采集系统”。利用它可直接输入8个单端的模拟信号分时进行A/D 转换,在多点巡回检测和过程控制、运动控制中应用十分广泛。

1) 主要技术指标和特性

(1)分辨率: 8位。

(2)总的不可调误差: ADC0808为±21

LSB,ADC 0809为±1LSB 。

(3)转换时间: 取决于芯片时钟频率,如CLK=500kHz 时,T CONV =128μs 。

(4)单一电源: +5V 。

(5)模拟输入电压范围: 单极性0~5V ;双极性±5V,±10V(需外加一定电路)。

(6)具有可控三态输出缓存器。

(7)启动转换控制为脉冲式(正脉冲),上升沿使所有内部寄存器清零,下降沿使A/D 转换开始。

(8)使用时不需进行零点和满刻度调节。

2) 内部结构和外部引脚

ADC0808/0809的内部结构和外部引脚分别如图11.19和图11.20所示。内部各部分的作用和工作原理在内部结构图中已一目了然,在此就不再赘述,下面仅对各引脚定义分述如下:

图11.19 ADC0808/0809内部结构框图

(1)IN0~IN7——8路模拟输入,通过3根地址译码线ADD A、ADD B、ADD C来选通一路。

(2)D7~D0——A/D转换后的数据输出端,为三态可控输出,故可直接和微处理器数据线连接。8位排列顺序是D7为最高位,D0为最低位。

(3)ADD A、ADD B、ADD C——模拟通道选择地址信号,ADD A为低位,ADD C为高位。地址信号与选中通道对应关系如表11.3所示。

(4)V R(+)、V R(-)——正、负参考电压输入端,用于提供片内DAC电阻网络的基准电压。在单极性输入时,V R(+)=5V,V R(-)=0V;双极性输入时,V R(+)、V R(-)分别接正、负极

性的参考电压。

图11.20 ADC0808/0809外部引脚图

(5)ALE ——地址锁存允许信号,高电平有效。当此信号有效时,A 、B 、C 三位地址

信号被锁存,译码选通对应模拟通道。在使用时,该信号常和START 信号连在一起,

以便同时锁存通道地址和启动A/D 转换。

(6)START ——A/D 转换启动信号,正脉冲有效。加于该端的脉冲的上升沿使逐次逼

近寄存器清零,下降沿开始A/D 转换。如正在进行转换时又接到新的启动脉冲,则原来的

转换进程被中止,重新从头开始转换。

(7)EOC ——转换结束信号,高电平有效。该信号在A/D 转换过程中为低电平,其余

时间为高电平。该信号可作为被CPU 查询的状态信号,也可作为对CPU 的中断请求信号。

在需要对某个模拟量不断采样、转换的情况下,EOC

也可作为启动信号反馈接到START 端,

但在刚加电时需由外电路第一次启动。

(8)OE ——输出允许信号,高电平有效。当微处理器送出该信号时,ADC0808/0809

的输出三态门被打开,使转换结果通过数据总线被读走。在中断工作方式下,该信号往往是

CPU 发出的中断请求响应信号。

3) 工作时序与使用说明

ADC 0808/0809的工作时序如图11.21所示。当通道选择地址有效时,ALE 信号一出现,

地址便马上被锁存,这时转换启动信号紧随ALE 之后(或与ALE 同时)出现。START 的上升

沿将逐次逼近寄存器SAR 复位,在该上升沿之后的2μs 加8个时钟周期内(不定),EOC 信

号将变低电平,以指示转换操作正在进行中,直到转换完成后EOC 再变高电平。微处理器

收到变为高电平的EOC 信号后,便立即送出OE 信号,打开三态门,读取转换结果。

图11.21 ADC 0808/0809工作时序

模拟输入通道的选择可以相对于转换开始操作独立地进行(当然,不能在转换过程中进

行),然而通常是把通道选择和启动转换结合起来完成(因为ADC0808/0809的时间特性允许

这样做)。这样可以用一条写指令既选择模拟通道又启动转换。在与微机接口时,输入通道

的选择可有两种方法,一种是通过地址总线选择,一种是通过数据总线选择。

如用EOC 信号去产生中断请求,要特别注意EOC 的变低相对于启动信号有2μs+8个时钟

周期的延迟,要设法使它不致产生虚假的中断请求。为此,最好利用EOC 上升沿产生中断

请求,而不是靠高电平产生中断请求。

2. AD574A

AD574A 是美国AD 公司的产品,是目前国际市场上较先进的、价格低廉、应用较广的

混合集成12位逐次逼近式ADC 芯片。它分6个等级,即AD574AJ 、AK 、AL 、AS 、AT 、

AU ,前三种使用温度范围为0~+70℃,后三种为-55~+125℃。它们除线性度及其他某些

特性因等级不同而异外,主要性能指标和工作特点是相同的。

1) 主要技术指标和特性

(1)非线性误差: ±1LSB 或±21

LSB(因等级不同而异)。

(2)电压输入范围: 单极性0~+10V ,0~+20V ,双极性±5V,±10V 。

(3)转换时间: 35μs 。

(4)供电电源: +5V ,±15V 。

(5)启动转换方式: 由多个信号联合控制,属脉冲式。

(6)输出方式: 具有多路方式的可控三态输出缓存器。

(7)无需外加时钟。

(8)片内有基准电压源。可外加VR ,也可通过将VO(R)与Vi(R)相连而自己提供VR 。

内部提供的VR 为(10.00±0.1)V(max),可供外部使用,其最大输出电流为1.5mA ;

(9)可进行12位或8位转换。12位输出可一次完成,也可两次完成(先高8位,后低

4位)。

2) 内部结构与引脚功能

AD574A 的内部结构与外部引脚如图11.22所示。从图可见,它由两片大规模集成电路

混合而成: 一片为以D/A 转换器AD565和10V 基准源为主的模拟片,一片为集成了逐次

逼近寄存器SAR 和转换控制电路、时钟电路、三态输出缓冲器电路和高分辨率比较器的数

字片,其中12位三态输出缓冲器分成独立的A 、B 、C 三段,每段4位,目的是便于与各

种字长微处理器的数据总线直接相连。AD574A 为28引脚双列直插式封装,各引脚信号的

功能定义分述如下:

图11.22 AD574A的结构框图与引脚

(1)12/8——输出数据方式选择。当接高电平时,输出数据是12位字长;当接低电平时,是将转换输出的数变成两个8位字输出。

(2)A0——转换数据长度选择。当A0为低电平时,进行12位转换;A0为高电平时,则为8位长度的转换。

(3)CS——片选信号。

(4)R/C——读或转换选择。当为高电平时,可将转换后数据读出;当为低电平时,启动转换。

(5)CE——芯片允许信号,用来控制转换与读操作。只有当它为高电平时,并且CS=0时,R/信号的控制才起作用。CE和CS、R/C、12/8、A0信号配合进行转换和读操作的控制真值表如表11.4所示。

(6)V CC——正电源,电压范围为0~+16.5V。

(7)V o(R)——+10V参考电压输出端,具有1.5mA的带负载能力。

(8)AGND——模拟地。

(9)GND——数字地。

(10)Vi(R)——参考电压输入端。

(11)V EE——负电源,可选加-11.4V~-16.5V之间的电压。

(12)BIP OFF——双极性偏移端,用于极性控制。单极性输入时接模拟地(AGND),双极性输入时接V o(R)端。

(13)V i(10)——单极性0~+10V范围输入端,双极性±5V范围输入端。

(14)V i(20)——单极性0~+20V范围输入端,双极性±10V范围输入端。

(15)STS——转换状态输出端,只在转换进行过程中呈现高电平,转换一结束立即返回到低电平。可用查询方式检测此端电平变化,来判断转换是否结束,也可利用它的负跳变沿来触发一个触发器产生IRQ信号,在中断服务程序中读取转换后的有效数据。

从转换被启动并使STS变高电平一直到转换周期完成这一段时间内,AD574A对再来的启动信号不予理睬,转换进行期间也不能从输出数据缓冲器读取数据。

3) 工作时序

AD574A的工作时序如图11.23所示。对其启动转换和转换结束后读数据两个过程分别说明如下:

图11.23 AD574A 的工作时序

(1)启动转换 在CS =0和CE=1时,才能启动转换。由于是CS =0和CE=1相与后,才能启动A/D

转换,因此实际上这两者中哪一个信号后出现,就认为是该信号启动了转换。无论用哪一个

启动转换,都应使R/C 信号超前其200ns 时间变低电平。从图11.23可看出,是由CE 启动

转换的,当R/为低电平时,启动后才是转换,否则将成为读数据操作。在转换期间STS 为

高电平,转换完成时变低电平。

(2)读转换数据 在CS =0和CE=1且C R /为高电平时,才能读数据,由12/8决定是12位并行读出,

还是两次读出。如图11.23所示,CS 或CE 信号均可用作允许输出信号,看哪一个后出现,

图中为CE 信号后出现。规定A0要超前于读信号至少150ns ,C R /信号超前于CE 信号最

小可到零。

从表11.4和图11.23可看出,AD574A 还能以一种单独控制(stand-alone)方式工作: CE

和12/8固定接高电平,CS 和A 0固定接地,只用C R /来控制转换和读数,C R /=0时启

动12位转换,C R /=1时并行读出12位数。具体实现办法可有两种: 正脉冲控制和负脉

冲控制。当使用350ns 以上的C R /正脉冲控制时,有脉冲期间开启三态缓冲器读数,脉冲

后沿(下降沿)启动转换。当使用400ns 以上的C R /负脉冲控制时,则前沿启动转换,脉冲

结束后读数。

4) 使用方法

AD574A 有单极性和双极性两种模拟输入方式。

(1)单极性输入的接线和校准

单极性输入的接线如图11.24(a)所示。AD574A 在单极性方式下,有两种额定的模拟输

入范围: 0~+10V 的输入接在V i (10)和AGND 间,0~+20V 输入接在V i (20)和AGND 间。

R 1用于偏移调整(如不需进行调整可把BIP OFF 直接接AGND ,省去外加的调整电路),R 2

用于满量程调整(如不需调整,R 2可用一个50Ω±1%的金属膜固定电阻代替)。为使量化误差为±21LSB,AD574A 的额定偏移规定为21

LSB 。因此在作偏移调整时,使输入电压为

21

LSB(满量程电压为+10V 时是 1.22mV),调R 1,使数字输出为000000000000到

000000000001的跳变。在做满量程调整时,是通过施加一个低于满量程值121

LSB 的模拟

信号进行的,这时调R 2以得到从111111111110到111111111111的跳变点。

(2)双极性输入的接线和校准

双极性输入的接线如图11.24(b)所示。和单极性输入时一样,双极性时也有两种额定的

模拟输入范围: ±5V 和±10V 。±5V 输入接在V i (10)和AGND 之间;±10V 接在V i (20)

和AGND 之间。

图11.24 AD574A 的输入接线图 双极性校准也类似于单极性校准。调整方法是,先施加一个高于负满量程21

LSB(对于

±5V 范围为-4.9988V)的输入电压,调R 1,使输出出现从000000000000到000000000001的

跳变;再施加一个低于正满量程121

LSB(对于±5V 范围为+4.9963V)的输入信号,调R 2使

输出现从111111111110到111111111111的跳变。如偏移和增益无需调整,则相应的调整电

阻也和在单极性中一样,R 2可用50±1%Ω的固定电阻代替。

ADC 0808 与 ADC 0809 区别§7.3 A/D 转换器ADC0809与 MCS-51单片机的接口设计

ADC0808/0809八位逐次逼近式A/D 转换器是一种单片CMOS 器件,包括8位的模/数转换

器,8通道多路转换器和与微处理器兼容的控制逻辑.8通道多路转换器能直接连通8个单端模

拟信号中一任何一个. 一,ADC0808/0809的内部结构及引脚功能 1,ADC0809转换器内部结

构2,ADC0809引脚功能分辨率为8位.最大不可调误差ADC0808小于±1/2LSB,ADC0809小

于±1LSB 单一+5V 供电,模拟输入范围为0~5V.具有锁存三态输出,输出与TTL 兼容.功耗为

15mw.不必进行零点和满度调整.转换速度取决于芯片的时钟频率.时钟频率范

围:10~1280KHZ 当CLK=500KHZ 时,转换速度为128μs.IN0~IN7:8路输入通道的模拟量输入

端口. 2-1~2-8:8位数字量输出端口. START,ALE:START 为启动控制输入端口,ALE 为地址锁

存控制信号端口.这两个信号端可连接在一起,当通过软件输入一个正脉冲,便立即启动模/数

转换.EOC,OE:EOC 为转换结束信号脉冲输出端口,OE 为输出允许控制端口,这两个信号亦可

连结在一起表示模/数转换结束.OE 端的电平由低变高,打开三态输出锁存器,将转换结果的数

字量输出到数据总线上.REF(+),REF(-),VCC,GND,REF(+)和REF(-)为参考电压输入端,VCC

为主电源输入端,GND为接地端.一般REF(+)与VCC连接在一起,REF(-)与GND连接在一起.CLK:时钟输入端.3,8路模拟开关的三位地址选通编码表ADDA,B,C8路模拟开关的三位地址选通输入端,以选择对应的输入通道. 地址码对应的输入通道CBA000011110011001101010101IN0IN1IN2IN3IN4IN5IN6IN7二,ADC0808/0809与8031单片机的接口设计ADC0808/0809与8031单片机的硬件接口有三种方式,查询方式,中断方式和等待延时方式.究竟采用何种方式,应视具体情况,按总体要求而选择.1.延时方式ADC0809编程模式在软件编写时,应令p2.7=A15=0;A0,A1,A2给出被选择的模拟通道的地址;执行一条输出指令,启动A/D转换;执行一条输入指令,读取A/D转换结果.通道地址:7FF8H~7FFFH下面的程序是采用延时的方法,分别对8路模拟信号轮流采样一次,并依次把结果转存到数据存储区的采样转换程序.START: MOV R1, #50H ;置数据区首地址MOV DPTR, #7FF8H ;P2.7=0且指向通道0 MOV R7, #08H ;置通道数NEXT: MOVX @DPTR,A ;启动A/D转换MOV R6, #0AH ;软件延时DLAY: NOPNOPNOPDJNZ R6, DLAYMOVX A, @DPTR ;读取转换结果MOV @ R1, A ;存储数据INC DPTR ;指向下一个通道INC R1 ;修改数据区指针DJNZ R7, NEXT ;8个通道全采样完了吗........ 2.中断方式将ADC0808/0809作为一个外部扩展的并行I/O口,直接由8031的P2.0和脉冲进行启动.通道地址为FEF8H~FEFFH用中断方式读取转换结果的数字量,模拟量输入通路选择端A,B,C分别与8031的P0.0,P0.1,P0.2(经74LS373)相连,CLK由8031的ALE提供. INTADC:SETB IT1 ;选择为边沿触发方式SETB EA ;开中断SETB EX1 ;MOV DPTR, #0FEF8H ;通道地址送DPTRMOVX @DPTR,A ;启动A/D转换……PINT1: ……MOV DPTR, #0FEF8H ; 通道地址送DPTRMOVX A, @ DPTR;读取从IN0输入的转换结果存入MOV 50H, A ;50H单元MOVX @DPTR,A ;启动A/D转换RETI ;中断返回三,接口电路设计中的几点注意事项1.关于ADC0808/0809最高工作时钟频率的说明由于ADC0808/0809芯片内无时钟,所以必须靠外部提供时钟;外部时钟的频率范围为10KHZ~1280KHZ.在前面的ADC0808/0809通过中断方式与8031单片机接口的电路中,8031单片机的主频接为6MHZ,ALE提供ADC0808/0809的时钟频率为1MHZ(1000KHZ);实际应用系统使用证明,ADC0808/0809能够正常可靠地工作.但在用户进行ADC0808/0809应用设计时,推荐选用640KHZ左右的时钟频率. 2,ADC0816/17与ADC0809的主要区别ADC0816/0817与ADC0808/0809相比,除模拟量输入通道数增至16路,封装为40引脚外,其原理,性能结构基本相同.ADC0816和ADC0817的主要区别是:ADC0816的最大不可调误差为±1/2LSB,精度高,价格也高;ADC0817的最大不可调误差为士1LSB,价格低. 习题七试设计一数据采集系统2002.10 使用单位: 山东省气象局在东营市孤岛气象观察站设计单位: 山东大学物理与微电子学院2000级设计方案: 自行确定提示: 对于非模拟物理量,可以用下图示意即可非电物理量传感器A/D转换器

§7.3 A/D转换器ADC0809与MCS-51单片机的接口设计

ADC0808/0809八位逐次逼近式A/D转换器是一种单片CMOS器件,包括8位的模/数转换器,8通道多路转换器和与微处理器兼容的控制逻辑.

8通道多路转换器能直接连通8个单端模拟信号中一任何一个.

一,ADC0808/0809的内部结构及引脚功能

1,ADC0809转换器内部结构

2,ADC0809引脚功能

分辨率为8位.

最大不可调误差ADC0808小于±1/2LSB,

ADC0809小于±1LSB

单一+5V供电,模拟输入范围为0~5V.

具有锁存三态输出,输出与TTL兼容.

功耗为15mw.

不必进行零点和满度调整.

转换速度取决于芯片的时钟频率.时钟频率范围:10~1280KHZ

当CLK=500KHZ时,

转换速度为128μs.

IN0~IN7:8路输入通道的模拟量输入端口.

2-1~2-8:8位数字量输出端口.

START,ALE:START为启动控制输入端口,ALE为地址锁存控制信号端口.这两个信号端可连接在一起,当通过软件输入一个正脉冲,便立即启动模/数转换.

EOC,OE:EOC为转换结束信号脉冲输出端口,OE为输出允许控制端口,这两个信号亦可连结在一起表示模/数转换结束.OE端的电平由低变高,打开三态输出锁存器,将转换结果的数字量输出到数据总线上.

REF(+),REF(-),VCC,GND,REF(+)和REF(-)为参考电压输入端,VCC为主电源输入端,GND为接地端.一般REF(+)与VCC连接在一起,REF(-)与GND连接在一起.

CLK:时钟输入端.

3,8路模拟开关的三位地址选通编码表

ADDA,B,C

8路模拟开关的三位地址选通输入端,以选择对应的输入通道.

地址码

对应的输入通道

C

B

A

1

1

1

1

1

1

1

1

1

1

1

1

IN0

IN1

IN2

IN3

IN4

IN5

IN6

IN7

二,ADC0808/0809与8031单片机的接口设计

ADC0808/0809与8031单片机的硬件接口有三种方式,查询方式,中断方式和等待延时方式.究竟采用何种方式,应视具体情况,按总体要求而选择.

1.延时方式

ADC0809编程模式

在软件编写时,应令p2.7=A15=0;A0,A1,A2给出被选择的模拟通道的地址;

执行一条输出指令,启动A/D转换;

执行一条输入指令,读取A/D转换结果.

通道地址:7FF8H~7FFFH

下面的程序是采用延时的方法,分别对8路模拟信号轮流采样一次,并依次把结果转存到数据存储区的采样转换程序.

START: MOV R1, #50H ;置数据区首地址

MOV DPTR, #7FF8H ;P2.7=0且指向通道0

MOV R7, #08H ;置通道数

NEXT: MOVX @DPTR,A ;启动A/D转换

MOV R6, #0AH ;软件延时

DLAY: NOP

NOP

NOP

DJNZ R6, DLAY

MOVX A, @DPTR ;读取转换结果

MOV @ R1, A ;存储数据

INC DPTR ;指向下一个通道

INC R1 ;修改数据区指针

DJNZ R7, NEXT ;8个通道全采样完了吗

........

2.中断方式

将ADC0808/0809作为一个外部扩展的并行I/O口,直接由8031的P2.0和脉冲进行启动.通道地址为FEF8H~FEFFH

用中断方式读取转换结果的数字量,模拟量输入通路选择端A,B,C分别与8031的P0.0,P0.1,P0.2(经74LS373)相连,

CLK由8031的ALE提供.

INTADC:SETB IT1 ;选择为边沿触发方式

SETB EA ;开中断

SETB EX1 ;

MOV DPTR, #0FEF8H ;通道地址送DPTR

MOVX @DPTR,A ;启动A/D转换

……

PINT1: ……

MOV DPTR, #0FEF8H ; 通道地址送DPTR

MOVX A, @ DPTR;读取从IN0输入的转换结果存入

MOV 50H, A ;50H单元

MOVX @DPTR,A ;启动A/D转换

RETI ;中断返回

三,接口电路设计中的几点注意事项

1.关于ADC0808/0809最高工作时钟频率的说明

由于ADC0808/0809芯片内无时钟,所以必须靠外部提供时钟;

外部时钟的频率范围为10KHZ~1280KHZ.在前面的ADC0808/0809通过中断方式与8031单片机接口的电路中,8031单片机的主频接为6MHZ,ALE提供ADC0808/0809的时钟频率为1MHZ(1000KHZ);

实际应用系统使用证明,ADC0808/0809能够正常可靠地工作.但在用户进行ADC0808/0809应用设计时,推荐选用640KHZ左右的时钟频率.

2,ADC0816/17与ADC0809的主要区别

ADC0816/0817与ADC0808/0809相比,除模拟量输入通道数增至16路,封装为40引脚外,其原理,性能结构基本相同.

ADC0816和ADC0817的主要区别是:

ADC0816的最大不可调误差为±1/2LSB,精度高,价格也高;

ADC0817的最大不可调误差为士1LSB,价格低.

习题七试设计一数据采集系统2002.10

使用单位: 山东省气象局在东营市孤岛气象观察站

设计单位: 山东大学物理与微电子学院2000级

设计方案: 自行确定

提示: 对于非模拟物理量,可以用下图示意即可

ADC0808

ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。

ADC0808管脚图

内部结构

ADC0808是CMOS单片型逐次逼近式A/D转换器,它有8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器。

引脚功能(外部特性)

ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下:

1~5和26~28(IN0~IN7):8路模拟量输入端。

8、14、15和17~21:8位数字量输出端。

22(ALE):地址锁存允许信号,输入,高电平有效。

6(START):A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

7(EOC):A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

9(OE):数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。

12(VREF(+))和16(VREF(-)):参考电压输入端

11(Vcc):主电源输入端。

13(GND):地。

23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路

一个风格很好的AD转换程序,值得你参考

标签: AD转换程序

顶[0] 分享到发表评论(0) 编辑词条开心001 人人网新浪微博

//ICC-AVR application builder : 2007/6/23 1:26:55

// T arget : M16

// Crystal:1.0000Mhz

#include

#include

#define ADC_VREF_TYPE 0xe0 //选用2.56V 的片内基准电压源,且结果为左对齐#define AD_SE_ADC0 0x00 //ADC0

unsigned char T able[10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7 f,0x6f}; //数码管字型0~9

unsigned char Data[4] = {0,0,0,0}; //存放A/D转换结果

unsigned long int i,j=2560,k=256;

void port_init(void)

{

PORTA = 0x01;

DDRA = 0x00;

PORTB = 0xFF;

DDRB = 0xFF;

PORTC = 0x0F; //m103 output only

DDRC = 0x0F;

PORTD = 0x00;

DDRD = 0x00;

}

//ADC initialize

// Conversion time: 112uS

void adc_init(void)

{

ADCSR = 0x00; //disable adc

ADMUX = 0x00; //select adc input 0 ACSR = 0x80;

ADCSR = 0x86;

}

//call this routine to initialize all peripherals void init_devices(void)

{

//stop errant interrupts until set up

CLI(); //disable all interrupts

port_init();

adc_init();

MCUCR = 0x00;

GICR = 0x00;

TIMSK = 0x00; //timer interrupt sources SEI(); //re-enable interrupts

//all peripherals are now initialized

}

void delay_(unsigned char a)

{unsigned int i;

for(i=0;i

}

void Display(unsigned char p[]) //动态显示,

{

unsigned char i;

for(i=0;i<4;i++)

{

PORTD=0x01<

PORTB=Table[p[i]];

delay_(5);

PORTD&=(~0x01<

}

}

unsigned int read_adc(unsigned char adc_input) //读取A/D转换结果{

ADMUX=adc_input|ADC_VREF_TYPE;

ADCSRA|=0x40; //启动A/D转换

while ((ADCSRA&0x10)==0); //等待A/D转换完成

ADCSRA|=0x10;

return ADCH;

}

void Process(unsigned int i,unsigned char *p) //数据处理函数

{

p[0]=i/1000;

i=i%1000;

p[1]=i/100;

i=i%100;

p[2]=i/10;

i=i%10;

p[3]=i;

}

void main(void)

{

init_devices();

DDRA=0x00; //设置A口为不带上拉输入;

PORTA=0x00;

DDRB=0xff; //设置B口为输出口;

DDRD=0xff; //设置D口为输出口;

PORTB=0x3f; //B口初始化输出0 ;D口初始化输出1;点亮全部数码管;

PORTD=0xff;

ADMUX=ADC_VREF_TYPE; //选择第一通道ADC0;

ADCSRA=0xA6; //125k转换速率,自由转换模式;启动A/D转换;

delay_(1000); //延时待系统稳定;

while(1)

{

i=read_adc(AD_SE_ADC0); //获取A/D转换数据

i=(i*j)/k;

Process(i,Data); //数据处理

Display(Data); //显示结果

delay_(5);

}

}

AD转换程序[汇编语言]

2007年10月12日星期五 13:46

;实验目的:熟悉A/D转换

;软件思路:选择RAO做为模拟输入通道;

; 连续转换4次再求平均值做为转换结果

; 最后结构只取低8位

; 结果送数码管的低3位显示

;硬件要求:拨码开关S14第2位置ON,第1位置OFF

; 拨码开关S6全部置ON,S5第4-6位置ON,第1-3位置OFF

; 为不影响结果,其他拨码开关置OFF。

#INCLUDE ;包含芯片头文件

__CONFIG

_DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ;*********************寄存器定义*********************

TEMP EQU 20H ;临时寄存器

BAI EQU 21H ;转换结果的百位

SHI EQU 22H ;转换结果的十位

GE EQU 23H ;转换结果的个位

;****************************************************

ORG 00H ;复位入口地址

NOP ;ICD需要的空指令

GOTO MAIN ;跳转到主程序入口

ORG 04H ;中断入口地址

RETFIE ;放置一条中断返回指令,防止以外中断发生

;***********************查表程序*********************

;入口参数:W

;出口参数:W

TABLE

ADDWF PCL,1 ;指令寄存器加上偏移地址

RETLW 0C0H ;0的编码(公阳极数码管)

RETLW 0F9H ;1的编码

RETLW 0A4H ;2的编码

RETLW 0B0H ;3的编码

RETLW 99H ;4的编码

RETLW 92H ;5的编码

RETLW 082H ;6

RETLW 0F8H ;7

RETLW 080H ;8

RETLW 090H ;9

;***********************主程序***********************

MAIN

MOVLW 30H

MOVWF FSR ;转换结果存放起始地址

LOOP

BSF STATUS,RP0 ;选择体1

MOVLW 7H ;A口高3位为输出,低3位输入

MOVWF TRISA

CLRF TRISD ;D口设为输出

MOVLW 8EH

MOVWF ADCON1 ;结果左对齐,只选择RA0做ADC口,其余做普通数字口 BCF STATUS,RP0 ;回体0

MOVLW 41H

MOVWF ADCON0 ;选择时钟源为fosc/8,允许ADC工作

CALL DELAY ;调用延时程序,保证足够的采样时间

BSF ADCON0,GO ;启动ADC转换

WAIT

BTFSS PIR1,ADIF ;转换是否完成

GOTO WAIT ;等待转换的完成

BSF STATUS,RP0

MOVFW ADRESL ;读取转换的结果

BCF STATUS,RP0

MOVWF INDF ;保存到临时寄存器里

INCF FSR,1

BTFSS FSR,2 ;连续转换4次,求平均值

GOTO LOOP

CALL CHANGE ;调用结果转换程序

CALL DISPLAY ;调用显示程序

GOTO MAIN ;循环工作

;************************转换程序*********************

;入口参数:30H---33H

;出口参数:BAI,SHI,GE

CHANGE

CLRF BAI

CLRF SHI

CLRF GE ;先清除结果寄存器

MOVFW 31H ;以下8条指令求4次转换结果的平均值 ADDWF 30H,1

MOVFW 32H

ADDWF 30H,1

MOVFW 33H

ADDWF 30H,1

RRF 30H,1

RRF 30H,0

MOVWF TEMP

MOVLW 64H ;减100,结果保留在W中

SUBWF TEMP,0

BTFSS STATUS,C ;判断是否大于100

GOTO SHI_VAL ;否,转求十位结果

MOVWF TEMP ;是,差送回TEMP中

INCF BAI,1 ;百位加1

GOTO $-6 ;返回继续求百位的值

SHI_VAL

MOVLW 0AH ;减10,结果保留在W中

SUBWF TEMP,0

BTFSS STATUS,C ;判断是否大于10

GOTO GE_VAL ;否,转去判断个位结果

MOVWF TEMP ;是,差送回TEMP中

INCF SHI,1 ;十位值加1

GOTO $-6 ;转会继续求十位的值

GE_VAL

MOVFW TEMP

MOVWF GE ;个位的值

RETURN

;**************************显示程序********************

;入口参数:BAI,SHI,GE

;出口参数:无

DISPLAY

MOVFW BAI ;显示百位

CALL TABLE

MOVWF PORTD

BCF PORTA,3

CALL DELAY

CALL DELAY

BSF PORTA,3

MOVFW SHI ;显示十位

CALL TABLE

MOVWF PORTD

BCF PORTA,4

CALL DELAY

CALL DELAY

BSF PORTA,4

MOVFW GE ;显示个位

CALL TABLE

MOVWF PORTD

BCF PORTA,5

CALL DELAY

CALL DELAY

BSF PORTA,5

RETURN

;***************************延时程序***********************

;入口参数:无

;出口参数:无

DELAY

MOVLW 5FH

MOVWF TEMP

DECFSZ TEMP,1

GOTO $-1

RETURN

;*********************************************************

END ;程序结束

串行AD转换芯片与51单片机的接口电路及程序设计

--------------------------------------------------------------------------------

-

串行AD转换芯片与51单片机的接口电路及程序设计

AT89C51单片机系统经常使用A/D转换器。虽然并行A/D转换器速度高、转换通道多,但其价格高,占用单片机接口资源比串行A/D转换器多。工业检测控制及智能化仪器仪表中经常采用串行A/D转换器。ADS1110是一种精密、可连续自校准的串行A/D转换器,带有差分输入和高达16位的分辨率,其串行接口为I2C总线。AT89C51单片机通过软

件模拟I2C总线实现与ADS1110的连接。

ADS1110的特点与内部结构

ADS1110的特点

完整的数据采集系统和小型SOT23-6封装;片内基准电压:精度2.048 V+0.05%;片内可编程增益放大器PGA;片内振荡器;16位分辨率;可编程的转换速率15次/秒~240次/秒;I2C总线接口(8个有效地址);电源电压2.7 V~5.5 V;低电流消耗240 μA。

ADS1110的引脚功能

ADS1110串行A/D转换器采用6引脚贴片封装,其引脚排列如图1所示。VDD:电源端,通常接+5V;GND:模拟地和数字地;VIN+、VIN-:采样模拟信号输入端,其范围为2.048 V~2.048 V;SCL:I2C总线时钟线;SDA:I2C总线数据线。

ADS1110的内部结构

ADS1110是由带有可调增益的△-∑型转换器内核、2.048 V的电压基准、时钟振荡器和I2C 总线接口组成。其内部结构如图2所示。

ADS1110的寄存器读写配置请参考:ADS110引脚功能,寄存器配置及应用电路介绍

ADS1110的A/D转换器内核是由差分开关电容△-∑调节器和数字滤波器组成。调节器测量正模拟输入和负模拟输入的压差,并将其与基准电压相比较。数字滤波器接收高速数据流并输出代码,该代码是一个与输入电压成比例的数字,即A/D转换后的数据。

ADS1110片内电压基准是2.048 V。ADS1110只能采用内部电压基准该基准,不能测量,也不用于外部电路。ADS1110片内集成时钟振荡器用于驱动△-∑调节器和数字滤波器。ADS1110的信号输入端设有可编程增益放大器PGA,其输入阻抗在差分输入时的典型值为2.8 MΩ。

硬件设计

由于AT89C51单片机没有I2C总线接口,可通过软件模拟实现与I2C总线器件的连接。具体方法是将单片机的I/O接口连接至I2C的数据线SDA和时钟线SCL。通过软件控制时钟和数据传输,系统灵活性强。

图5所示是数据采集显示系统,采集工业现场的4路模拟信号并轮询显示。采用4个ADS1110作为A/D转换器,地址为ED0~ED3。具有I2C总线接口的EEPROM AT24C16作为存储器。本系统有4位LED数码显示管和4个参数设定按键。采集数据经数字滤波、16进制→工程值转换后,送至数码管轮询显示。ADS1110和AT24C16的I2C接口连ADSl110数据线SDA至单片机的P1.0,时钟线SCL连接单片机的P1.1,上拉电阻阻值选10 kΩ。

软件设计

按照硬件电路,编写A/D转换子程序为ADS0,其中嵌套调用了START,为起始命令子程序,FSDZ1为向ADS1110发送单个字节命令的子程序,ADREAD是读取输出寄存器和配置寄存器的子程序,STOP是停止命令子程序。ADS0只对地址为ED0的ADS1110读数,如果要读取其他ADS1110,只需更改地址即可。系统中ADS1110的工作方式选用默认设置,

相关文档