当前位置:首页 > 单片机 > 单片机
[导读]ADC0809A/D转换器基本应用技术

1. 基本知识

ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。

(1). ADC0809的内部逻辑结构

8路模拟量开关

8路A/D转换器

三态输出锁存器

地址锁存与译码器

IN0

IN1

IN2

IN3

IN4

IN5

IN6

IN7

A

B

C

ALE

VREF(+)

VREF(-)

OE

EOC

D0

D1

D2

D3

D4

D5

D6

D7

CLK

ST

 

由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

(2).

引脚结构

IN0-IN7:8条模拟量输入通道

ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

地址输入和控制线:4条

ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。

C

B

A

选择的通道

0

0

0

IN0

0

0

1

IN1

0

1

0

IN2

0

1

1

IN3

1

0

0

IN4

1

0

1

IN5

1

1

0

IN6

1

1

1

IN7

数字量输出及控制线:11条

ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。

CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,

VREF(+),VREF(-)为参考电压输入。

2. ADC0809应用说明

(1). ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。

(2). 初始化时,使ST和OE信号全为低电平。

(3). 送要转换的哪一通道的地址到A,B,C端口上。

(4). 在ST端给出一个至少有100ns宽的正脉冲信号。

(5). 是否转换完毕,我们根据EOC信号来判断。

(6). 当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。

3. 实验任务

如下图所示,从ADC0809的通道IN3输入0-5V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。ADC0809的VREF接+5V电压。

4. 电路原理图

 

图1.27.1

5. 系统板上硬件连线

(1). 把“单片机系统板”区域中的P1端口的P1.0-P1.7用8芯排线连接到“动态数码显示”区域中的A B C D E F G H端口上,作为数码管的笔段驱动。

(2). 把“单片机系统板”区域中的P2端口的P2.0-P2.7用8芯排线连接到“动态数码显示”区域中的S1 S2 S3 S4 S5 S6 S7 S8端口上,作为数码管的位段选择。

(3). 把“单片机系统板”区域中的P0端口的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端口上,A/D转换完毕的数据输入到单片机的P0端口

(4). 把“模数转换模块”区域中的VREF端子用导线连接到“电源模块”区域中的VCC端子上;

(5). 把“模数转换模块”区域中的A2A1A0端子用导线连接到“单片机系统”区域中的P3.4 P3.5 P3.6端子上;

(6). 把“模数转换模块”区域中的ST端子用导线连接到“单片机系统”区域中的P3.0端子上;

(7). 把“模数转换模块”区域中的OE端子用导线连接到“单片机系统”区域中的P3.1端子上;

(8). 把“模数转换模块”区域中的EOC端子用导线连接到“单片机系统”区域中的P3.2端子上;

(9). 把“模数转换模块”区域中的CLK端子用导线连接到“分频模块”区域中的 /4 端子上;

(10). 把“分频模块”区域中的CK IN端子用导线连接到“单片机系统”区域中的 ALE 端子上;

(11). 把“模数转换模块”区域中的IN3端子用导线连接到“三路可调压模块”区域中的 VR1 端子上;

6. 程序设计内容

(1). 进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。

(2). 进行A/D转换之前,要启动转换的方法:

ABC=110选择第三通道

ST=0,ST=1,ST=0产生启动转换的正脉冲信号

7. 汇编源程序

CH EQU 30H

DPCNT EQU 31H

DPBUF EQU 33H

GDATA EQU 32H

ST BIT P3.0

OE BIT P3.1

EOC BIT P3.2

ORG 00H

LJMP START

ORG 0BH

LJMP T0X

ORG 30H

START: MOV CH,#0BCH

MOV DPCNT,#00H

MOV R1,#DPCNT

MOV R7,#5

MOV A,#10

MOV R0,#DPBUF

LOP: MOV @R0,A

INC R0

DJNZ R7,LOP

MOV @R0,#00H

INC R0

MOV @R0,#00H

INC R0

MOV @R0,#00H

MOV TMOD,#01H

MOV TH0,#(65536-4000)/256

MOV TL0,#(65536-4000) MOD 256

SETB TR0

SETB ET0

SETB EA

WT: CLR ST

SETB ST

CLR ST

WAIT: JNB EOC,WAIT

SETB OE

MOV GDATA,P0

CLR OE

MOV A,GDATA

MOV B,#100

DIV AB

MOV 33H,A

MOV A,B

MOV B,#10

DIV AB

MOV 34H,A

MOV 35H,B

SJMP WT

T0X: NOP

MOV TH0,#(65536-4000)/256

MOV TL0,#(65536-4000) MOD 256

MOV DPTR,#DPCD

MOV A,DPCNT

ADD A,#DPBUF

MOV R0,A

MOV A,@R0

MOVC A,@A+DPTR

MOV P1,A

MOV DPTR,#DPBT

MOV A,DPCNT

MOVC A,@A+DPTR

MOV P2,A

INC DPCNT

MOV A,DPCNT

CJNE A,#8,NEXT

MOV DPCNT,#00H

NEXT: RETI

DPCD: DB 3FH,06H,5BH,4FH,66H

DB 6DH,7DH,07H,7FH,6FH,00H

DPBT: DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH

END

8. C语言源程序

#include

unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x00};

unsigned char dispbuf[8]={10,10,10,10,10,0,0,0};

unsigned char dispcount;

sbit ST=P3^0;

sbit OE=P3^1;

sbit EOC=P3^2;

unsigned char channel=0xbc;//IN3

unsigned char getdata;

void main(void)

{

TMOD=0x01;

TH0=(65536-4000)/256;

TL0=(65536-4000)%256;

TR0=1;

ET0=1;

EA=1;

P3=channel;

while(1)

{

ST=0;

ST=1;

ST=0;

while(EOC==0);

OE=1;

getdata=P0;

OE=0;

dispbuf[2]=getdata/100;

getdata=getdata%10;

dispbuf[1]=getdata/10;

dispbuf[0]=getdata%10;

}

}

void t0(void) interrupt 1 using 0

{

TH0=(65536-4000)/256;

TL0=(65536-4000)%256;

P1=dispcode[dispbuf[dispcount]];

P2=dispbitcode[dispcount];

dispcount++;

if(dispcount==8)

{

dispcount=0;

}

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

  引言:PDA它不仅可用来管理个人信息(如通讯录,计划等),更重要的是可以上网浏览,收发Email,可以发传真,甚至还可以当作手机来用。尤为重要的是,这些功能都可以通过无线方式实现。当然,并不

关键字: 微控制器 ad转换器 监护系统 msc1210

你了解低成本高精度电流检测方案吗?BMS(Battery Management System)是连接新能源车核心部件电池与整车的桥梁。受益于新能源车的发展,作为核心部件的BMS也得到了飞速的发展。BMS根据控制的结构不同...

关键字: ad转换器 温度传感器 电流检测

这是一款用ADC0809作为A/D转换、显示用四位共阴数码管、单片机为AT89C52构成的量程的0-5V电压测量表电子小制作。这个ADC0809(在proteus里是用ADC0808来仿真,和ADC0809是一样的)基本...

关键字: adc0809 at89c52 电压表

程序框图 电路 程序ORG 05A0H05A0 758153 SE11: MOV SP,#53H05A3 757E00 MOV 7EH,#00H05A6 757D08 MOV 7DH,#08H05A9 757C00 MO...

关键字: adc0809 转换程序

在1个由89C51单片机与1片ADC0809组成的数据采集系统中,ADC0809的8个输入通道的地址为7FF8H~7FFFH,试画出有关接口电路图,并编写出每隔1分钟轮流采集1次8个通道数据的程序,共采样50次,其采样值...

关键字: 89c51 adc0809 单片机 数据采集系统

设计89C51和ADC0809的接口,采集2通道10个数据,存入内部RAM的50H~59H单元,编出:(1)延时方式;(2)查询方式;(3)中断方式中的一种程序。内容来自单片机之家www.dpj100.com解:IN2的...

关键字: 89c51 adc0809

太罗嗦的内容我就不说了,只讲些跟制做有关的最精炼的知识。 ADC0809是可以将我们要测量的模拟电压信号量转换为数字量从而可以进行存储或显示的一种转换IC。 下面是它的管脚图和逻辑图: 管脚...

关键字: adc0809 模数转换

  AD7799是早些前ADI公司推出的一款高精度低速24位ADC器件,主要应用于低功耗精密测量场合。最近开发与气压检测相关的产品,选择了这个芯片,经过PCB的合理布线,感觉这颗芯片的效果还不错。  AD7799内部数字...

关键字: 24位 ad转换器 STM32 ad7799芯片

引言: 数据的采集与处理广泛地应用在自动化领域中,由于应用的场合不同,对数据采集与处理所要求的硬件也不相同.在控制过程中,有时要对几个模拟信号进行采集与处理,这些信

关键字: ad ad574 adc0809 电源技术解析 转换电路 lm331
关闭
关闭