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

合集下载

ADC0809引脚图与接口电路

ADC0809引脚图与接口电路

ADC0809引脚图与接口电路A/D转换器芯片ADC0809简介 8路模拟信号的分时采集,片内有8路模拟选左右。

通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100μs图9.8 《ADC0809引脚图》1. ADC0809的内部结构ADC0809的内部逻辑结构图如图9-7所示。

图9.7 《ADC0809内部逻辑结构》图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。

地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。

表9-1 通道选择表2.信号引脚ADC0809芯片为28引脚为双列直插式封装,其引脚排列见图9.8。

对ADC0809主要信号引脚的功能说明如下:IN7~IN——模拟量输入通道ALE——地址锁存允许信号。

对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。

START——转换启动信号。

START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。

本信号有时简写为ST.A、B、C——地址线。

通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。

其地址状态与通道对应关系见表9-1。

CLK——时钟信号。

ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。

通常使用频率为500KHz的时钟信号EOC——转换结束信号。

EOC=0,正在进行转换;EOC=1,转换结束。

使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。

D7~D0——数据输出线。

为三态缓冲输出形式,可以和单片机的数据线直接相连。

D0为最低位,D7为最高OE——输出允许信号。

用于控制三态输出锁存器向单片机输出转换得到的数据。

ADC0809程序

ADC0809程序

/*---------------------------------------------------------------------------------------------------程序说明:adc0809接到51单片机的P1口,P1口接有8个LED,每次转换结束都可以通过LED观察到转换结果(低电平亮),ADC参考电压与单片机的电源要一致通过验证:输入5v则LED全灭输入0v则LED全亮通过电位器控制输入0~5v则1602显示输出从0~255逐次增加------------------------------------------------------------------------------------------------------*/#include<reg52.h>#include<intrins.h>#include"1602.c"#define uchar unsigned char#define uint unsigned intsbit ADC_START=P2^0;sbit ADC_ALE =P2^1;sbit ADC_OE =P2^2;sbit ADC_EOC =P2^3;sbit D0=P1^0;sbit D1=P1^1;sbit D2=P1^2;sbit D3=P1^3;sbit D4=P1^4;sbit D5=P1^5;sbit D6=P1^6;sbit D7=P1^7;uchar ad_dat;/*---------------------------------函数名:delayus(i)功能:延时t=(12*i+14)us参数:i返回值:无备注: 晶振12MHz-----------------------------------*//*void delayus(i){for(i;i>0;i--);}*//*---------------------------------dac0809初始化----------------------------------*/void init0809(){ADC_START=0;ADC_OE =0;_nop_();ADC_ALE=0;_nop_();_nop_();_nop_();ADC_ALE=1; //ALE=1时地址进入锁存器_nop_();_nop_();_nop_();ADC_ALE=0; //ALE=0时地址被锁存住_nop_();_nop_();_nop_();}/*---------------------------------dac0809模数转换----------------------------------*/void ADC_0809(){ADC_START=1; //上升沿复位_nop_();_nop_();_nop_();ADC_START=0; //下降沿开始_nop_();_nop_();_nop_();while(!ADC_EOC); //等待转换结束ADC_OE =1;w_dat_1602(0x30+(uchar)D0);w_dat_1602(0x30+(uchar)D1);w_dat_1602(0x30+(uchar)D2);w_dat_1602(0x30+(uchar)D3);w_dat_1602(0x30+(uchar)D4);w_dat_1602(0x30+(uchar)D5);w_dat_1602(0x30+(uchar)D6);w_dat_1602(0x30+(uchar)D7);delayus(5);ADC_OE =0;}void main(){init0809();init_1602();delayus(10);while(1){w_com_1602(0x80);ADC_0809();}}#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit rs=P2^4; //1602io引脚sbit rw=P2^5; //1602io引脚sbit e=P2^6; //1602io引脚/*---------------------------------函数名:delayusus(i)功能:延时t=(12*i+14)us参数:i返回值:无备注: 晶振12MHz-----------------------------------*/ void delayus(i){for(i;i>0;i--);}/*---------------------------------函数名:w_com_1602(uchar com) 功能:写命令参数:uchar com返回值:无-----------------------------------*/ void w_com_1602(uchar com) {e=0;rs=0;rw=0;delayus(2);P0=com;e=1;delayus(2);e=0;delayus(2);}/*---------------------------------函数名:w_dat_1602(uchar dat)功能:写数据参数:uchar dat返回值:无-----------------------------------*/void w_dat_1602(uchar dat){e=0;rs=1;rw=0;delayus(2);P0=dat;e=1;delayus(2);e=0;delayus(2);}/*---------------------------------函数名:init_1602()功能:1602初始化参数:无返回值:无-----------------------------------*/void init_1602(){P0=0xff; //端口初始化w_com_1602(0x38); //功能设置w_com_1602(0x0f); //开光标但不闪烁w_com_1602(0x06); //设置输入方式w_com_1602(0x01); //清屏delayus(5);}投标人在《招标投标法实施条例》中应重点关注的19个法律问题《招标投标法实施条例》(以下简称《条例》)日前已公布,将于2012年2月1日起施行。

51单片机使用ADC0809采样

51单片机使用ADC0809采样

void delayms( uint time )
{
unsigned int j=0;
for(;time>0;time--)
{
for(j=0;j<125;j++);
}
}
/************************************************************ //功能:实现将 AD 的值在数码管和 LED 灯上显示出来;
{ *ad=520;
//开始转换;
delayms(1);
xdp=0x8888; P1=*xdp; temp=*xdp;
//读外部 ADC; //使用 P1 口显示;//将转换Fra bibliotek的数给 temp;
a=temp/100; b=temp%100; c=b/10; d=b%10;
//百位;
//十位; //个位;
//入口参数:无 //出口参数:无
************************************************************/
void main ()
{
unsigned char temp,a,b,c,d;
ad=0x8000;
//ad 指向 IN0 通道;
while(1)
temp=ADdata[a]; //当前显示的段码;
xp=0x9004;
//数码管的地址;
*xp=temp;
//段码写入数码管:
temp=ADen[0]; //当前显示的位码; xp=0x9002; //数码管地址; *xp=temp; //位码写入数码管;
delayms(1);
temp=ADdata[c]; //当前显示的段码;

MCS-51单片机与DA转换器的接口和应用

MCS-51单片机与DA转换器的接口和应用

A/D和D/A转换接口技术难点•DAC0832工作方式•ADC0809工作方式要求掌握:•MCS-51单片机与D/A转换器的接口连接•MCS-51单片机与A/D转换器的接口连接•初始化编程及应用了解:•典型D/A转换器芯片DAC0832的管脚功能•典型A/D转换器芯片ADC0809的管脚功能3.1 MCS-51单片机与D/A转换器的接口和应用3.1.1典型D/A转换器芯片DAC0832DAC0832是一个8位D/A转换器芯片,单电源供电,从+5V~+15V均可正常工作,基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。

其内部结构如图9.1所示,它由1个8位输入寄存器、1个8位DAC寄存器和1个8位D/A转换器组成和引脚排列如图1所示。

图1 DAC0832引脚功能该D/A转换器为20引脚双列直插式封装,各引脚含义如下:(1)D7~D0——转换数据输入。

(2)——片选信号(输入),低电平有效。

(3)ILE——数据锁存允许信号(输入),高电平有效。

(4)——第一信号(输入),低电平有效。

该信号与ILE 信号共同控制输入寄存器是数据直通方式还是数据锁存方式:当ILE=1和=0时,为输入寄存器直通方式;当ILE=1和=1时,为输入寄存器锁存方式。

(5)——第2写信号(输入),低电平有效.该信号与信号合在一起控制DAC寄存器是数据直通方式还是数据锁存方式:当=0和=0时,为DAC寄存器直通方式; 当=1和=0时,为DAC寄存器锁存方式。

(6)——数据传送控制信号(输入),低电平有效 。

(7)Iout2——电流输出“1”。

当数据为全“1”时,输出电流最大;为全“0”时输出电流最小。

(8)Iout2——电流输出“2”。

DAC转换器的特性之一是:Iout1 +Iout2=常数。

(9)R fb——反馈电阻端既运算放大器的反馈电阻端,电阻(15KΩ)已固化在芯片中。

因为DAC0832是电流输出型D/A转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,R fb 即为运算放大器的反馈电阻,运算放大器的接法如图2所示。

浅谈ADC0809在MCS-51单片机中的作用

浅谈ADC0809在MCS-51单片机中的作用

浅谈ADC0809在MCS-51单片机中的作用[摘要] 由于在MCS-51单片机中大部分不带A/D转换器,所以模拟量的采集就必须靠A/D来实现。

因此我们有必要掌握用来采集模拟量的扩展芯片,以及我们要解决MCS-51单片机与这些扩展芯片的接口问题,在这里以ADC0809芯片为例,进行阐述说明。

[关键词] ADC0809 MCS-51 模拟量接口MCS-51系列单片机目前在工业控制以及仪器仪表中的应用越来越广泛,但在应用过程中,避免不了的是要与外围芯片进行对接,这就引出了新的问题,MCS-51单片机如何与外围的芯片有机的结合起来,以扩展其功能。

下面就以ADC0809芯片为例,进行说明。

一、ADC0809概述ADC0809模数转换器,ADC0809是8通道8位CMOS逐次逼近式A/D转换芯片,片内有模拟量通道选择开关及相应的通道锁存、译码电路,A/D转换后的数据由三态锁存器输出,由于片内没有时钟需外接时钟信号。

图(1)为该芯片的引脚图。

各引脚功能如下:IN0~IN7:八路模拟信号输入端。

ADD-A、ADD-B、ADD-C:三位地址码输入端。

八路模拟信号转换选择由这三个端口控制。

CLOCK:外部时钟输入端(小于1MHz)。

D0~D7:数字量输出端。

OE:A/D转换结果输出允许控制端。

当OE为高电平时,允许A/D转换结果从D0~D7端输出。

ALE:地址锁存允许信号输入端。

八路模拟通道地址由A、B、C输入,在ALE信号有效时将该八路地址锁存。

START:启动A/D转换信号输入端。

当START端输入一个正脉冲时,将进行A/D转换。

EOC:A/D转换结束信号输出端。

当A/D转换结束后,EOC输出高电平。

Vref(+)、Vref(-):正负基准电压输入端。

基准正电压的典型值为+5V。

VCC和GND:芯片的电源端和地端。

二、ADC0809的逻辑结构ADC0809 是8位逐次逼近型A/D转换器。

它由一个8路模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成,ADC0809内部逻辑结构如图(2)所示。

ADC0809程序

ADC0809程序
sbit D4=P1;
sbit D5=P1 ;
sbit D6=P1;
sbit D7=P1;
ucharad_dat;
/*---------------------------------
函数名:delayus(i)
功能:延时t=(12*i+14)us
参数:i
返回值:无
备注:晶振12MHz
-----------------------------------*/
}
/*---------------------------------
函数名:w_com_1602(uchar com)
功能:写命令
参数:uchar com
返回值:无
-----------------------------------*/
void w_com_1602(uchar com)
{
e=0;
while(!ADC_EOC); //等待转换结束
ADC_OE =1;
w_dat_1602(0x30+(uchar)D0);
w_dat_1602(0x30+(uchar)D1);
w_dat_1602(0x30+(uchar)D2);
w_dat_1602(0x30+(uchar)D3);
w_dat_1602(0x30+(uchar)D4);
dac0809模数转换
----------------------------------*/
void ADC_0809()
{
ADC_START=1; //上升沿复位
_nop_();
_nop_();
_nop_();
ADC_START=0; //下降沿开始

基于ADC0809的声音采集电路,程序和仿真

基于ADC0809的声音采集电路,程序和仿真
SD和RD接至基本RS触发器的输入端,它们分别是预置和清零端,低电平有效。当SD=1且RD=0时(SD的非为0,RD的非为1,即在两个控制端口分别从外部输入的电平值,原因是低电平有效),不论输入端D为何种状态,都会使Q=0,Q非=1,即触发器置0;当SD=0且RD=1(SD的非为1,RD的非为0)时,Q=1,Q非=0,触发器置1,SD和RD通常又称为直接置1和置0端。我们设它们均已加入了高电平,不影响电路的工作。
ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。
管脚说明如下:
VCC
GND
P0
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FLASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
工作过程如下:
1.
同时,由于Q3至Q5和Q4至Q6的反馈信号将这两个门打开,因此可接收输入信号D,Q5=D,Q6=Q5非=D非。
2.
这时G3和G4打开,它们的输入Q3和Q4的状态由G5和G6的输出状态决定。Q3=Q5非=D非,Q4=Q6非=D。由基本RS触发器的逻辑功能可知,Q=Q3非=D。
3.
这是因为G3和G4打开后,它们的输出Q3和Q4的状态是互补的,即必定有一个是0,若Q3为0,则经G3输出至G5输入的反馈线将G5封锁,即封锁了D通往基本RS触发器的路径;该反馈线起到了使触发器维持在1状态和阻止触发器变为0状态的作用,故该反馈线称为置1维持线,置0阻塞线。Q4为0时,将G3和G6封锁,D端通往基本RS触发器的路径也被封锁。Q4输出端至G6反馈线起到使触发器维持在0状态的作用,称作置0维持线;Q4输出至G3输入的反馈线起到阻止触发器置1的作用,称为置1阻塞线。因此,该触发器常称为维持-阻塞触发器。

9.2.1 ADC0809 的使用_快速学通51单片机C语言程序设计_[共2页]

9.2.1 ADC0809 的使用_快速学通51单片机C语言程序设计_[共2页]

第9章 数/模与模/数转换接口设计 193║9.2.1 ADC0809的使用1.ADC0809的功能与结构ADC0809是8位逐次逼近型A/D 转换器,具有8个模拟量输入通道,并带有通道地址译码锁存器,输出配有三态数据锁存器。

ADC0809采用脉冲启动方式,每一通道的转换时间大约为100μs 。

ADC0809由两大部分组成,一部分是输入通道,包括8位模拟开关,3条地址线的锁存器和译码器,可以实现8路模拟输入通道的选择。

另一部分是一个逐次逼近型A /D 转换器。

ADC0809的芯片引脚如图9.6所示。

ADC0809各引脚的功能如下。

• IN0~IN7:8个模拟通道输入端。

• START :启动转换信号。

• EOC :转换结束信号。

• OE :输出允许信号。

信号由CPU 读信号和片选信号组合产生。

• CLOCK :外部时钟脉冲输入端,典型值为640K 。

• ALE :地址锁存允许信号。

• A 、B 、C :通道地址线,CBA 的8种组合状态000~111对应8个通道的选择,并在ALE 有效时才被锁存。

• V REF+、V REF-:参考电压输入端。

• V CC :接+5V 电源。

• GND :接电源地。

ADC0809工作的过程是:先由通道地址线选择要采样的通道,然后发出启动信号START 启动转换,由于EOC 信号在START 下降沿之后才会变为低电平,所以在读取采样值前,必须对EOC 的状态进行判定。

地址码与模拟通道的关系如下。

地 址 码模 拟 通 道CB A 01111 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN72.ADC0809的接口设计图9.7是ADC0809与8031的接口电路,电路中0809的启动信号START 是由片选线P2.7图9.6 ADC0809芯片引脚。

51单片机加CPLD驱动ADC0809的多路数据采集系统

51单片机加CPLD驱动ADC0809的多路数据采集系统
1. 启动AD转换
ADC0809 启动受 START、ALE 和 ADDR 信号控制,
一、ADC0809
ADC0809 是 8 位 A/D 转换器、8 路多路开关以及 微处理机兼容的控制逻辑的 CMOS 组件。它是逐次逼 近式 A/D 转换器,容易和单片机总线模式接口。图 1 是 ADC0809 芯片的实物图和引脚图。
51MCU 有与之对应的控制时序,当 MCU 执行指 令 MOVX @DPTR,A 时,将产生如图 3 所示的时序波形 图,P0 口分时复用,分别送出低 8 位地址 addrL 和数 据 data,P2 口送出高八位地址 addrH,并且在 t0 时刻, P3.6(WR)送出低脉冲信号。
通过比较图 2 图、3 波形图,如果将 Wr 信号取反, 就可以得到满足 ADC0809 启动所需的 ALE(START) 信号,从 P0 送出的 data 为其提供 ADDR 通道选择地址。
30 2011. 03
IN3 1 IN4 2 IN5 3 IN6 4 IN7 5 START 6 EOC 7 2-5 8 OE 9 CLOCK 10 VCC 11 VREF(+) 12 GND 13 2-7 14
28 IN2 27 IN1 26 IN0 25 ADD A 24 ADD B 23 ADD C 22 ALE 21 2-1MSB 20 2-2 19 2-3 18 2-4 17 2-8LSB 16 VREF(-) 15 2-6
IN7 5
32 2011. 03
图7 0809与Mini51板接口电路图
单片机制作
MCU
三、程序设计
多路数据采集系统主程序流程图如图 11 所示,外
部中断流程图如图 12 所示。
在 keil 中创建工程,主 C51 程序解读如下。 #include "STC89C51RC.H"//STC 单片机头文件,相当与一 般 51 的 reg51.h #include <absacc.h> #include <stdio.h> #include "STCEEPROM.H"//STC 单片机 EEPROM 读写头文件 // 根据单片机地址译码电路定义单片机扩展地址 #define SEG1 XBYTE[0xffec]// 数码管地址 #define SEG2 XBYTE[0xffed] #define SEG3 XBYTE[0xffee] #define SEG4 XBYTE[0xffef] #define ADC XBYTE[0xffe0]//ADC 地址 #define CH_BYTE EEPROM52// 预定义通道地址在 EEPROM 中存放地址,与单片机型号有关,详细在 STCEEPROM.H 中定义 sbit KEY_UP = P3^5;// 按键端口定义 sbit KEY_DN = P3^4; char CH;// 通道变量,0 ~ 7 unsigned char ledmap[]= // 共阳 LED 数码管译码表 { 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90, //0;1;2;3;4;5;6;7;8;9; 0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10,

51单片机 adc0809数码管

51单片机 adc0809数码管

//51单片机控制adc0809读取外部模拟信号(只读取一路,0809上的ABC三个引脚接地,模拟信号由in0接入(0-5v电压),在数码管上显示当前的数值#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit SMG_b = P1^1; //定义数码管阳级控制脚(百位)sbit SMG_s = P1^2; //定义数码管阳级控制脚(十位)sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)sbit oe=P3^3;//(以下原来想与p1.4和p1.5相连,但是这连个引脚与蜂鸣器和继电器相连,结果连上之后老是响,我就与p3口相连了)sbit eoc=P3^2;sbit clk=P1^6;//为0809提供时钟sbit st=P1^7;//与0809的ale相连,一起启动a/d转换uchar getdata=0;//转换后得到数据uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管0-9void adc0809();//初始化0809并得到转换数据void delay(void);void display(uchar da);//显示数值void init();////初始化定时器0模式2(主要是为了给0809提供时钟)void main(){uint j;init(); //初始化定时器,为0809提供时钟while(1){ adc0809();//初始化0809j=200;//修改此值可以修改数值在数码管上的刷新速度(数值越大刷新的速度越慢)while(j--)display(getdata);//显示数值}}void init()//初始化定时器0模式2(主要用于给0809提供时钟){TMOD=0x02;//定时器0的模式2TH0=0xfb;//定时5usTL0=0xfb;TR0=1;//启动定时器0ET0=1;//开定时器0中断控制位EA=1;//开总中断}void time0() interrupt 1//定时器0中断{clk=~clk;}void adc0809()//初始化0809并得到转换数据{st=0;//以下三个表达式表示启动ad转换st=1;st=0;while(!eoc);//等待转换结束oe=1;//为高电平时,转换的数据输送个单片机getdata=P2;//从P2引脚读转换后的信息oe=0;}void display(uchar da)//显示数值{SMG_b=0; //选择百位数码管P0=table[(da*2)/100]&0x7f; //获取百位值,查表输出定义好的数码管段值与P0口,显示相应的0-9(&0x7f表示显示小数点)delay(); //延时P0=0XFF; //清除数码管显示,因是共阳型,所以不是0SMG_b=1; //关闭百位数码管SMG_s=0; //选择十位数码管P0=table[(da*2)%100/10]; //获取十位值,查表输出定义好的数码管段值与P0口,显示相应的0-9delay(); //延时P0=0XFF; //清除数码管显示,因是共阳型,所以不是0SMG_s=1; //关闭十位数码管SMG_g=0; //选择个位数码管P0=table[(da*2)%10]; //获取个位值,查表输出定义好的数码管段值与P0口,显示相应的0-9delay(); //延时P0=0XFF; //清除数码管显示,因是共阳型,所以不是0SMG_g=1; //关闭个位数码管}void delay(void){unsigned char i=10;while(i--);}。

ADC0809与MCS-51单片机接口实验

ADC0809与MCS-51单片机接口实验

实验报告一学院:电气工程学院专业:测控技术与仪器班级:测仪101 姓名学号实验组实验时间指导教师成绩实验项目名称ADC0809与MCS-51单片机接口实验实验目的通过本实验的学习,使学生了解A/D转换器与计算机接口时数据线和信号线如何连接,数据采集电路的时序怎样设计,了解A/D芯片ADC0809转换性能及编程,掌握芯片ADC0809的程序设计方法,进一步训练进行软件和硬件联合调试的技能,为后续“测控系统原理课程设计”的学习奠定基础。

实验要求利用实验板上的ADC0809做A/D转换器,用电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,用发光二极管显示。

实验原理A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。

实验用的ADC0809属第二类,是八位A/D转换器,是采用逐次逼近式工作的转换器件,每采集一次一般需100us。

它带有8路模拟开关,可进行8路模/数转换,通过内部3-8译码电路进行选通并锁存地址。

启动ADC0809的工作过程:先送通道号地址到A、B、C三端,由ALE信号锁存通道号地址,选中的通道的模拟量送到A/D转换器,执行语句 MOVX @DPTR,A产生写信号,启动A/D转换。

当A/D转换结束时,ADC0809的EOC端将上升为高电平,执行语句MOVX A,@DPTR产生读信号,使OE有效,打开锁存器三态门,A/D转换结果的8位数据就读到CPU中。

编程时可以把EOC信号作为中断请求信号,对它进行测试,用中断请求或查询法读取转换结果。

#include<reg52.h>#define set_bit(x,y) x|=1<<y#define clear_bit(x,y) x^=1<<y#define start 1#define oc 2int b=1;int i;void Init_INT0(){P0=255;EA=1; //首先开启总中断EX0=1; //开启外部中断0IT0=0; //设置成低电平触发,1为下降沿触发}void main(void){Init_INT0();clear_bit(P2,oc);set_bit(P2,start);for(i=0;i<100;i++);clear_bit(P2,start);while(1){set_bit(P2,0);while(b--);b=50;clear_bit(P2,0);while(b--);b=50;}}void int_ex0(void) interrupt 0 using 1{set_bit(P2,oc);clear_bit(P2,start);P1=P0;set_bit(P2,start);for(i=0;i<100;i++);clear_bit(P2,start);clear_bit(P2,oc);}当模拟输入端的输入电压为两伏特是显示灯的明亮如上图所示。

ADC0809芯片的原理及应用

ADC0809芯片的原理及应用

目录引言 (1)1 ADC0809的逻辑结构 (1)1.1 ADC0809引脚结构 (1)1.2 ADC0809的主要性能指标 (3)1.3 ADC0809的内部逻辑结构 (3)1.4 ADC0809的时序 (4)2 ADC0809与MCS-51单片机的接口电路 (5)2.1 0809与51单片机的第一种连接方式 (7)2.2 0809与51单片机的第二种连接方式 (9)2.3 0809与51单片机的第三种连接方式 (10)3 ADC0809与单片机制作的数字电压表 (11)总结 (16)参考文献 (16)英文翻译 (17)ADC0809芯片的原理及应用摘要:ADC0809是8位逐次逼近型A/D转换器,是目前应用比较广泛、典型的A/D转换芯片之一。

本文主要介绍ADC0809芯片的内部逻辑结构、引脚分布,并详细阐述了其工作原理。

在此基础上设计了两种相关应用电路——ADC0809与单片机的接口电路及数字电压表,并对这两种应用电路的可行性进行了讨论。

通过对ADC0809应用电路的探究,能更全面的提高对应用系统的分析、设计能力,对实践具有重要的指导意义。

关键词:ADC0809;模数转换;单片机引言A/D转换器是模拟信号源与计算机或其它数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机等数字系统进行处理、存储、控制和显示。

在工业控制和数据采集及许多其它领域中,A/D转换器是不可缺少的重要组成部分,它的应用已经相当普遍。

目前用软件的方法虽然可以实现高精度的A/D转换,但占用CPU时间长,限制了应用。

8位A/D转换器ADC0809作为典型的A/D转换芯片,具有转换速度快、价格低廉及与微型计算机接口简便等一系列优点,目前在8位单片机系统中得到了广泛的应用。

1 ADC0809的逻辑结构ADC0809是带有8位A/D转换器、8路模拟开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,是目前应用比较广泛的A/D转换芯片之一,主要适用于对精度和采样速率要求不高的场合或一般的工业控制领域,可以和单片机直接相连。

ADC0809引脚图与程序c语言

ADC0809引脚图与程序c语言
A、B、C——地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。其地址状态与通道对应关系见表9-1。
CLK——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号
EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
出口参数:
****************************************************************************************/
void timer0(void)interrupt 1
{
count++;
if(count==0x0A)
{
count=0x00;
D7~D0——数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高
OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
Vcc—— +5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V).
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。

利用51单片机+8位数码管+AD0809设计数字直流电压表系统

利用51单片机+8位数码管+AD0809设计数字直流电压表系统

目录1.题目设计要求 (2)2. 系统的组成及工作原理 (2)2.1电路原理图 (2)2.2 A/D转换原理 (3)2.3数据处理原理 (3)2.4器件列表 (3)3. 器件的功能和作用 (4)3.1AT89C51功能介绍 (4)3.1.1AT89C51的简单概述 (4)3.1.2AT89C51的引脚介绍 (4)3.2AD0809功能介绍 (6)3.3 LED数码管功能介绍 (6)4.系统硬件设计 (7)5. 系统软件设计 (8)5.1 程序流程图 (8)5.2程序代码 (10)6.系统仿真调试 (13)6.1仿真原理图设计 (13)6.2 与程序代码链接 (13)6.2.1运用keil uVision4生成.hex文件并链接 (13)6.3 仿真运行结果 (15)7.心得体会 (15)8.参考文献 (16)1.题目设计要求要求:利用51单片机+8位数码管+AD0809设计数字直流电压表系统,精度为0.01V。

完成以下设计环节:1)使用Altium Desinger或Protel99SE开发工具,设计电路原理图与PCB制板图。

2)使用Uvision2开发平台,采用C语言或汇编语言设计软件程序。

3)使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真。

2.系统的组成及工作原理2.1电路原理图图2.1 电路原理图2.2 A/D转换原理模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。

但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。

A/D转换器的工作原理:采用逐次逼近法,逐次逼近式A/D是比较常见的一种A/D转换电路,转换的时间为微秒级。

逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零;转换开始时,先将逐次逼近寄存器最高位置1,送入D/A转换器,经D/A转换后生成的模拟量送入比较器,称为Vo,与送入比较器的待转换的模拟量Vi进行比较,若Vo<Vi,该位1被保留,否则被清除。

adc0809引脚图及功能详解,adc0809与51单片机连接电路分析

adc0809引脚图及功能详解,adc0809与51单片机连接电路分析

adc0809引脚图及功能详解,adc0809与51单片机连接电路分析adc0809是采样频率为8位的、以逐次逼近原理进行模数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

1.主要特性1)8路8位A/D转换器,即分辨率8位。

2)具有转换起停控制端。

3)转换时间为100s4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。

2.内部结构adc0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近组成。

adc0809的内部逻辑结构图如图9-7所示。

图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。

地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。

adc0809引脚图及功能3.外部特性(引脚功能)adc0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。

下面说明各引脚功能。

IN0~IN7:8路模拟量输入端。

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

ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。

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

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

OE:数据输出允许信号,输入,高电平有效。

当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

ADC0809与单片机接口程序

ADC0809与单片机接口程序
MOV R0,#30H ;设立数据存储区指针
MOV R2,#08H
SETB IT0 SETB EA
;设置8路采样计数值
;设置外部中断0为边沿触发方式 ;CPU开放中断
SETB EX0 MOV A,R0
;允许外部中断0中断
MOV DPTR,#FEF8H ;送入口地址并指向IN0
ANL
A,#0FH
;启动A/D转换,A的值无意义 ;等待中断 ;读取转换后的数字量 ;存入片内RAM单元 ;指向下一模拟通道 ;指向下一个数据存储单元 ;8路未转换完,则继续 ;已转换完,则关中断
图517adc0809转换工作时序423423adc0809与单片机接口图518adc0809与8031的接口连接图3ad转换应用程序举例设图518接口电路用于一个8路模拟量输入的巡回检测系统使用中断方式采样数据把采样转换所得的数字量按序存于片内ram的30h37h单元中
图5.17 ADC0809转换工作时序
LOOP:
中断服务程序:
MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R2,INT0 CLR EA
CLR EX0
RETI INT0: MOVX @DPTR,A RETI
;禁止外部中断0中断
;中断返回 ;再次启动A/D转换 ;中断返回
4.2.4:4位半双积分式AD转换器ICL7135
fCP=125KHz或其的倍数时,对50Hz工频干扰有较大 的抑制能力。
ICL7135的外部典型连接
ICL7135的输出时序图
ICL7135与8031的接口方式
查询法
4.2.3:7135
中断查询法
中断计数法
中断查询法
4.2.3 ADC0809与单片机接口
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ADC0809与51单片机接口电路及应用程序
最近研究了下ADC0809这个芯片,做了个电路,和大家分享
电路原理图如下:
500)this.width=500;" border=0>
说明: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;
}
/*****************主函数**************/。

相关文档
最新文档