ADC0809数模转换程序

合集下载

ADC0809模数转换实验详解

ADC0809模数转换实验详解

实验三 ADC0809模数转换实验一、实验目的1、掌握ADC0809模/数转换芯片与单片机的连接方法及ADC0809的典型应用。

2、掌握用查询方式、中断方式完成模/数转换程序的编写方法。

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

下图为该芯片的引脚图。

各引脚功能如下: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:芯片的电源端和地端。

三、实验步骤1、单片机最小应用系统1的 P0口接A/D转换的D0~D7口,单片机最小应用系统1的Q0~Q7口接0809的A0~A7口,单片机最小应用系统1的WR、RD、P2.0、ALE、INT1分别接A/D转换的WR、RD、P2.0、CLOCK、INT1,A/D转换的IN接入+5V,单片机最小应用系统的RXD、TXD连接到串行静态显示实验模块的DIN、CLK。

2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加AD0809.ASM源程序,进行编译,直到编译无误。

8位数模转换器ADC0809实验报告

8位数模转换器ADC0809实验报告

8位数模转换器ADC0809实验报告实验目的:本实验旨在通过使用8位数模转换器ADC0809来将模拟信号转换为数字信号,并输出至LED灯中,以达到理解数字信号的目的。

实验原理:ADC0809是典型的8位数模转换器,它是一种具有8个模拟输入通道的典型ADC。

ADC0809是一种串行转换器,它可以实现单端和差分两种模式的转换。

ADC0809的转换精度为8比特,转换速率为100厘秒。

ADC0809通过8个输入通道将模拟信号转换为数字信号,并通过8个数据引脚输出数字信号。

实验器材:电脑、ADC0809、LED灯、电阻、电容、按键开关、电源、实验板。

实验步骤:1.将ADC0809插入实验板上。

2.将电阻连接至ADC0809的引脚,以使引脚与电阻的连接具有正确的阻值。

3.将电容插入ADC0809的引脚,并连接至电源。

4.将按键开关插入ADC0809的引脚,并连接至电源。

5.将LED灯连接至ADC0809的引脚,并连接至电源。

6.将实验板接入电源,启动电路。

7.按下按键开关,开始信号转换。

8.数字信号转换完成后,将数字信号输出至LED灯中。

实验结果:本实验成功地将模拟信号转换为数字信号,并将数字信号输出至LED灯中,达到了理解数字信号的目的。

结论:通过本实验,我们可以了解数字信号的基本原理和用途。

通过使用ADC0809将模拟信号转换为数字信号,并输出至LED灯中,我们可以更好地理解数字信号的应用和意义。

同时,该实验也为我们打下了更深入学习数字电路和信号处理技术的基础。

ADC0809采集与数值转换、10进制显示的VHDL实现

ADC0809采集与数值转换、10进制显示的VHDL实现

同ADC0809一路走来采用VHDL语言控制ADC0809对模拟电压量进行采集不难,难在于将所得的数据进行转换,显示实际电压值(当然是10进制数),更难的是在转换方法上的运用,如何达到更高效率、资源占用率更低!ADC0809对(0~5V)模拟量数值转换的公式为:Vo=data*5/255,即输出电压值Vo=data/51。

在CPLD或FPGA上应用除法所占资源量较大。

个人在转换方式、方法上的认识与实践有如下例子!例一:----------------------有四舍五入,使用个176个logic elements--------------------------------所用方法为:事先算好各数据对应实际电压值,采用查表方式得出数值,没有任何技术含量。

--不过很考验一个人的耐心、细心,对256个数据的计算、舍入、输入等,工作量还是(谁试谁知道)。

--较好的方法可以用 EXCEL计算,生成部分代码(推荐,还可以学习EXCEL的使用)。

仿真波形如图1:--日期:2011-5-2--作者:junglelibrary ieee;use ieee.std_logic_1164.all;entity volt isPORT( Din : in std_logic_vector(7 downto 0);VO2 : out integer range 0 to 5;VO1,VO0 : out integer range 0 to 9 );end volt;architecture one of volt is--显示数值寄存器,V0表示个位 V1表示十位,V2表示百位signal V1,V0: integer range 0 to 9;signal V2: integer range 0 to 5;beginVO2<=V2;VO1<=V1;VO0<=V0;process(Din) --显示查表进程begincase Din isWHEN"00000000"=>V2<=0;V1<=0;V0<=0;WHEN"00000001"=>V2<=0;V1<=0;V0<=2;WHEN"00000010"=>V2<=0;V1<=0;V0<=4;WHEN"00000011"=>V2<=0;V1<=0;V0<=6; --3/51≈0.06---------------4~252略------------WHEN"11111101"=>V2<=4;V1<=9;V0<=6; --253/51≈4.96WHEN"11111110"=>V2<=4;V1<=9;V0<=8;WHEN"11111111"=>V2<=5;V1<=0;V0<=0;WHEN OTHERS => NULL;end case;end process;end one;图1 仿真波形例二:----------------------有四舍五入,使用个549个logic elements------------------方法说明:先将数据过大1000倍再除以51得到的数据就有4个有效数据,最低位数据来确定是否四舍五入(进位)。

51单片机adc0809模数转换器逐次逼近法的实现原理

51单片机adc0809模数转换器逐次逼近法的实现原理

51单片机adc0809模数转换器逐次逼近法的实现原

51单片机ADC0809模数转换器采用逐次逼近法实现模数转换。

逐次逼近法的原理是,从高位到低位逐位比较,根据比较结果不断调整待转换的数字量,直到找到一个数字量使其对应的模拟量与输入的模拟量相等或最大程度接近。

在ADC0809模数转换器中,逐次逼近法的实现过程如下:
1. 将最高位(MSB)设置为1,其余位为0,形成起始转换数字量。

2. 将该数字量输入比较器,与输入的模拟量进行比较。

3. 根据比较结果,调整数字量的最高位:如果模拟量大于数字量,则将最高位清0;否则保持为1。

4. 保持其余位不变,将调整后的数字量再次输入比较器进行比较。

5. 重复步骤3和4,直到比较器的输出为稳定状态(即最高位不再变化),此时得到的就是输入模拟量的近似值。

通过逐次逼近法,ADC0809模数转换器能够实现高精度的模数转换,并且具有较快的转换速度。

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日起施行。

模数转换器ADC0809应用原理

模数转换器ADC0809应用原理

模数转换器ADC0809应用原理模数转换器(Analog-to-Digital Converter,简称ADC)是一种将模拟信号转换为数字信号的电子元件。

在电子领域中,模数转换器有着广泛的应用,其中最常见的就是采集模拟信号,并将其转换为数字信号进行处理。

ADC0809是一种八位分辨率的8通道模数转换器,它可以将输入模拟信号转换为一个八位的二进制数字。

ADC0809的工作原理ADC0809采用了单倍增量逐次比较式ADC,其基本工作原理是,将输入的模拟信号与一个参考电压进行比较,输出相应的数字信号。

具体工作流程如下图所示:___________________________________ ________________________| 时钟||___________________________________________________________________|______________ ________ ________ ________ ________| 输入模拟信号 | | 比较器0 | | 比较器1 | | ...... | | 比较器7 ||_____________| _________ |________| |________| |________| |________|| | || || | ___________ | ___________ | ___________ || |__| |__|__||__|__| |__|| 串—并串—并串—并串—并八个比较结果反相器(INV)| ________ ________ ________|______________________________| 反相器| | 反相器 | | ...... | | 反相器 ||________| |________| |________| |________|| | | || | | || | | |V V V V____ ____ ________ ________ ________| | | | | ...... | | || D0 ~ D7 |_______| D0 ~ D7 |_______| D0 ~ D7 |_______| D0 ~ D7 ||____ _____| |________| |________| |________|| | | || | | || | | || | | || | | |____ ____ ________ ________ ________| | | | | ...... | | || 转换器 | | 转换器 | | ...... | | 转换器 | |____ _____| |________| |________| |________|| | | || | | || | | |V V V V____ ____ ________ ________ ________| | | | | ...... | | || A0 ~ A7 |_______| A0 ~ A7 |______| A0 ~ A7 |_______| A0 ~ A7 ||____ _____| |________| |________| |________| ADC0809采样过程通过时序的序列完成,当转换器满足转换条件时为转换器一个时钟等分周期“CLK R”,其转换过程又称为一次采样,转换结果产生在结束时取样“EOC”有效之后的下一次时钟上升沿ACTIVE EDGE时,由拨动设置开关的方式进行设定(ADDRESS A, B, C, OE)。

adc0809模数转换器用户手册

adc0809模数转换器用户手册

ADC0809模数转换芯片概述ADC0809是8位逐次逼近型A/D 转换器。

它由一个8路模拟开关、一个地址 锁存译码器、一个A/D 转换器和一个三态输出锁存器组成(见下图)。

多路开关 可选通8个模拟通道,允许8路模拟量分时输入,共用A/D 转换器进行转换。

三 态输出锁存器用于锁存A/D 转换完的数字量,当0E 端为高电平时,才可以从三 态输出锁存器取走转换完的数据。

ADC0809内部结构图ADC0809的工作原理图XX 是ADC0809的引脚图。

引脚功能说明如下:• IN0〜IN7: 8个输入通道的模拟输入端 • DO (2一8)〜D7 (2'1): 8位数字量输出端 • START :启动信号,加上正脉冲后,A/D 转换开始进行• ALE :地址锁存信号。

由低至高电平时,把三位地址信号送入通道号地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道。

• EOC:转换结束信号,是芯片的输出信号。

转换开始后,EOC 信号变低: 转换结束时,EOC 返回高电平。

这个信号可以作为A/D 转换的状态信号 来査询,也可以直接用作中断请求信号。

• 0E :输出允许控制端(开数字星输出三态们)。

• CLK :时钟信号。

最高允许值为640kHzo地锁与码址存译8路二A/D____态 转输换----------------出器----------------存器▲ ▲IN3 EOCIN1DODiIN4 D2IN5D3D4D6 D7LVREFX*)VREFX-)8模 拟开 关• $EF+和%EF-:A/D 转换器的参考电压。

• Vcc-电源电斥。

由于是CMOS 芯片,允许电斥范鬧宽,可以是+5V 〜+15V 。

ADC0809两种封装形式8位模拟开关地址输入通道的关系见表XXo 模拟开关的作用和8选1的 CD4051作用相同表XX 8位模拟开关功能表ADDC ADDB ADDA 输入通道号 0 0 0 INO 0 0 1 INI 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 111IN7ADC0809芯片的转换速度在最高时钟频率卞为lOOus 左右。

adc0809的工作原理

adc0809的工作原理

adc0809的工作原理
ADC0809是一种8位串行模数转换器(Analog-to-Digital Converter,简称ADC),其工作原理如下:
1. 输出控制信号:当待转换的模拟信号准备好后,控制信号线将置为高电平,通知ADC开始转换过程。

2. 选择输入通道:通过输入通道选择信号来选择要进行转换的模拟信号源。

ADC0809有8个输入通道,因此需要使用3个输入引脚来选择通道。

3. 启动时钟信号:通过发送时钟信号来控制转换过程。

ADC0809需要一个时钟源来同步转换过程。

时钟信号的频率决定了转换速度。

4. 采样保持电路:在转换期间,输入信号将被采样并保持在一个样本保持电容中。

这个采样保持电路保证了转换期间输入信号的稳定性。

5. 双斜率积分器:ADC0809采用了双斜率积分器技术来进行模拟信号的转换。

在转换开始后,ADC开始对采样保持电容的电压进行积分,直到电压上升到参考电压。

6. 输出数据:一旦积分电压达到参考电压,ADC会将其状态固定,并将其转换为二进制数字输出。

输出数据以8位二进制形式呈现。

7. 转换结束信号:当转换完成后,ADC会通过标志信号线发出转换完成的信号。

这个信号可以被连接到微控制器或其他数字设备,以通知它们可以读取新的转换结果了。

通过以上步骤,ADC0809可以将模拟信号转换为数字信号,实现模拟到数字的转换功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
CLK = ~CLK;
}
}
}
/****************************
*函数名称:显示函数
*函数功能:
*输入/输出参数:
*返回值:
***************************************/
void xianshi()
{
//分离
dat[0]=k/10000;//千
P1=Tab[dat[2]];//送段码
wei2=0;//送位码
delay(1); //延时
P1=0x00; //关断
wei2=1; //关断
P1=Tab[dat[1]];//送段码
wei3=0;//送位码
delay(1Байду номын сангаас; //延时
P1=0x00; //关断
wei3=1; //关断
P1=Tab[dat[0]];//送段码
{
while (1)
{
xianshi();
ST=0;
ST=1;
ST=0;
if(EOC==0)
{
OE=1;
}
adc=P0;//值传送
k=adc*39;//数据处理
}
}
/*************************************************/
注意ADC0809与单片机IO口的链接位置关系
dat[1]=k%10000/1000;//百
dat[2]=k%10000%1000/100;//十
dat[3]=k%10000%1000%100/10;//个
//显示
P1=Tab[dat[3]];//送段码
wei1=0;//送位码
delay(1); //延时
P1=0x00; //关断
wei1=1; //关断
CAD0809的脉冲信号采用软件控制
void delay(unsigned int xms)//延时及clk 0809时钟
{
for(i=0;i<xms;i++)
{
for(j=0;j<110;j++)
{
CLK = ~CLK;
}
}
}
unsigned char dat[]={0,0,0,0};
unsigned char adc;
unsigned int i,j,k;
/***********ADC0808************************/sbit LED = P2^3;
sbit ST=P2^4;//定义ADC0809位
*函数名称:延时函数
*函数功能:延时函数
*输入/输出参数:
*返回值:
***************************************/
void delay(unsigned int xms)//延时及clk 0809时钟
{
for(i=0;i<xms;i++)
{
for(j=0;j<110;j++)
/******************** //版权和版本声明
*文件标识:
*摘要:
*当前版本:1.0
*作者:输入作者(或修改者)名字
*完成日期:2013年3月25日
**********************************/
#include <at89x52.h> //头文件
unsigned char code Tab[11]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,};
wei4=0;//送位码
delay(1); //延时
P1=0x00; //关断
wei4=1;//关断
}
/****************************
*函数名称:主函数
*函数功能:
*输入/输出参数:
*返回值:
***************************************/
void main()
sbit EOC=P2^5;
sbit OE=P2^6;
sbit CLK =P2^7;
/************数码管位码****************/
sbit wei1=P3^7;//定义数码管为码位
sbit wei2=P3^6;
sbit wei3=P3^5;
sbit wei4=P3^4;
/****************************
相关文档
最新文档