ADC0809与51单片机接口电路及应用程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ADC0809与51单片机接口电路及应用程序

最近研究了下ADC0809这个芯片,做了个电路,和大家分享

电路原理图如下:

说明: D0~D7接51单片机的P2口(P2.0~P2.7)

ADIN1和ADIN2为通道IN0和IN1的电压模拟量输入(0~5V)

应用程序如下:

#include"reg52.h"

#define uchar unsigned char

sbit ST=P1^0;

sbit EOC=P1^1;

sbit OE=P1^2;

sbit CLK=P1^3;

sbit ADDCS=P1^4;

uchar AD_DATA[2]; //保存IN0和IN1经AD转换后的数据

/**********延时函数************/

void delay(uchar i)

{

uchar j;

while(i--)

{

for(j=125;j>0;j--)

;

}

}

/*********系统初始化***********/

void init()

{

EA = 1; //开总中断

TMOD = 0x02; //设定定时器T0工作方式

TH0=216; //利用T0中断产生CLK信号

TL0=216;

TR0=1; //启动定时器T0

ET0=1;

ST=0;

OE=0;

}

/***********T0中断服务程序************/

void t0(void) interrupt 1 using 0

{

CLK=~CLK;

}

/***********AD转换函数**********/

void AD()

{

ST=0;

ADDCS=0; //选择通道IN0

delay(10);

ST=1; //启动AD转换

delay(10);

ST=0;

while(0==EOC)

;

OE=1;

AD_DATA[0]=P2;

OE=0;

ST=0;

ADDCS=1; //选择通道IN1

delay(10);

ST=1; //启动AD转换

delay(10);

ST=0;

while(0==EOC)

;

OE=1;

AD_DATA[1]=P2;

OE=0;

}

/*****************主函数**************/

void main()

{

init();

while(1)

{

AD();

}

}

注:由于ADC0809内部不带时钟电路,因此用51单片机的定时器T0来产生时钟信号。

在通道选择时,由于B,C接地,当A(ADDCS)为低电平时选择IN0,A为高电平时选择IN1

相关文档
最新文档