用户名: 密码: 免费注册 免费试用 简体中文 | ENGLISH
中国·芯片交易在线  
www.ic112.com
IC72论坛
广告服务
网页制作
用户帮助
首页 供应信息 求购信息 库存查询 新闻中心 展会资讯 IC厂商 技术资料 自由区域
当前位置:首页>> 技术资料 >> 正文
ADC0809A/D转换器基本应用技术
时间:2008/1/11 9:31:00  作者:  来源:IC72  浏览人数:1109
 
 

      基本知识

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

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

IC72新闻中心

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

      (2).引脚结构

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

IC72新闻中心

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

      地址输入和控制线:4条

      ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-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)%6;

        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;

            dispbuf[1]=getdata/10;

            dispbuf[0]=getdata;

          }

      }

      void t0(void) interrupt 1 using 0

      {

        TH0=(65536-4000)/256;

        TL0=(65536-4000)%6;

        P1=dispcode[dispbuf[dispcount]];

        P2=dispbitcode[dispcount];

        dispcount++;

        if(dispcount==8)

          {

            dispcount=0;

          }

      }

 
【相关文章】
·ADC0809A/D转换器基本应用技术
 
 
新闻搜索
 
新闻热点
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
Zetex迷你晶体管功率达1.25W
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9