模拟数字转换器ADC0804

合集下载

ADC0804工作原理其程序

ADC0804工作原理其程序

前言:本文详细说明了ADC0804工作原理及过程,还附有一个ADC0804在单片机中的典型应用,包含原理图,源程序,程序注释详细清楚,这有助于更好地理解与应用ADC0804芯片。

1、A/D转换概念:即模数转换(Analog to DigitalConversion),输入模拟量(比如电压信号),输出一个与模拟量相对应的数字量(常为二进制形式)。

例如参考电压VREF为5V,采用8位的模数转换器时,当输入电压为0V时,输出的数字量为0000 0000,当输入的电压为5V时,输出的数字量为1111 1111。

当输入的电压从从0V到5V变化时,输出的数字量从0000 0000到1111 1111变化。

这样每个输入电压值对应一个输出数字量,即实现了模数转换。

2、分辨率概念:分辨率是指使输出数字量变化1时的输入模拟量,也就是使输出数字量变化一个相邻数码所需输入模拟量的变化值。

分辨率与A/D转换器的位数有确定的关系,可以表示成FS / 2 n 。

FS表示满量程输入值,n 为A/D转换器的位数。

例如,对于5V的满量程,采用4位的ADC时,分辨率为5V/16=0.3125V (也就是说当输入的电压值每增加0.3125V,输出的数字量增加1);采用8位的ADC时,分辨率为5V/256=19.5mV(也就是说当输入的电压值每增加19.5mV,则输出的数字量增加1);当采用12位的ADC时,分辨率则为5V/4096=1.22mV(也就是说当输入的电压值每增加1.22mV ,则输出的数字量增加1)。

显然,位数越多,分辨率就越高。

3、ADC0804引脚功能:。

数模转换ADC0804的应用实验

数模转换ADC0804的应用实验

数模转换ADC0804的应用实验[实验任务]从ADC0804的通道IN+输入0-5V之间的模拟量,通过ADC0804转换成数字量在数码管上以十进制形成显示出来。

[实验原理]ADC0804是8位全MOS中速A/D转换器、它是逐次逼近式A/D转换器,片内有三态数据输出锁存器,可以和单片机直接接口。

单通道输入,转换时间大约为100us。

ADC0804转换时序是:当CS=0许可进行A/D转换。

WR由低到高时,A/D开始转换,一次转换一共需要66-73个时钟周期。

CS与WR同时有效时启动A/D转换,转换结束产生INTR信号(低电平有效),可供查询或者中断信号。

在CS和RD的控制下可以读取数据结果。

[C语言源程序]/*注意:程序下载到DPY-1实验板单片机后一定要使SW DIP1的开关脱离ON档。

或者直接将下载线从实验板上拔下。

因为下载线接在I/O口P1.5,P1.6,P1.7上,下载线的电平将会影响测量结果*/#include<reg52.h>code unsigned char seg7code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码sbit int1=P3^3;//定义管脚功能sbit cs=P3^2;sbit wr=P3^6;sbit rd=P3^7;void Delay(unsigned int tc)//显示延时程序{while(tc!=0){unsigned int i;for(i=0;i<100;i++);tc--;}}unsigned char adc0804(void)//读AD0804子程序{unsigned char addata,i;rd=1;wr=1;int1=1;//读ADC0804前准备P1=0xff;//P1全部置一准备cs=0;wr=0;wr=1;//启动ADC0804开始测电压while(int1==1);//查询等待A/D转换完毕产生的INT(低电平有效)信号rd=0;//开始读转换后数据i=i;i=i;//无意义语句,用于延时等待ADC0804读数完毕addata=P1;//读出的数据赋与addaterd=1;cs=1;//读数完毕return(addata);//返回最后读出的数据}unsigned int datpro(void)//ADC0804读出的数据处理{unsigned char x;unsigned int dianyah,dianyal;//用于存储读出数据的高字节和低字节unsigned int dianya=0;//存储最后处理完的结果注意数据类型for(x=0;x<10;x++)//将10次测得的结果存储在dianya中{dianya=adc0804()+dianya;}dianya=dianya/10;//求平均值dianyah=dianya&0xf0;//屏蔽低四位dianyah=dianyah>>4;//右移四位取出高四位dianyal=dianya&0x0f;//屏蔽高四位取出低四位dianya=dianyal*20+dianyah*320;//最后的结果是一个四位数,便于显示return(dianya);//返回最后处理结果}void Led(){unsigned int date;date=datpro();//调用数据处理最后结果P2=P2&0xef;P0=seg7code[date/1000]|0x80;//输出个位数和小数点Delay(8);P2=P2|0xf0;P2=P2&0xdf;P0=seg7code[date%1000/100];//输出小数点后第一位Delay(8);P2=P2|0xf0;P2=P2&0xbf;P0=seg7code[date%100/10];//输出小数点后第二位Delay(8);P2=P2|0xf0;P2=P2&0x7f;P0=seg7code[date%10];//输出小数点后第三位Delay(8);P2=P2|0xf0;}main(){while(1){Led();//只需调用显示函数}}。

ADC08040

ADC08040

模拟/数字(A/D)转换器的原理与应用ADC08041、A/D转换就是将模拟信号输换成数字信号。

A/D转换器就是用来实现这一功能的器件。

信号输入端常常是传感器或相应电路的模拟输出,由ADC器件转换成数字信号再提供给微处理器,以便用作显示等后期信号处理。

2、ADC0804的规格及引脚图8位COMS依次逼近型的A/D转换器.三态锁定输出存取时间:135US分辨率:8位转换时间:100US总误差:正负1LSB工作温度:ADC0804LCN---0~70度引脚图及说明见下图3、引脚定义/CS芯片选择信号。

/RD外部读取转换结果的控制输出信号。

/RD为高时,DB0~DB7处理高阻抗:/RD为低时,数字数据才会输出。

/WR:用来启动转换的控制输入,相当于ADC的转换开始(/CS=0时),当/WR由高变为低时,转换器被清除:当/WR回到高时,转换正式开始。

CLK IN,CLK R:时钟输入或接振荡无件(R,C)频率约限制在100KHZ~1460KHZ,如果使用RC电路则其振荡频率为1/(1.1RC)/INTR:中断请求信号输出,低地平动作.VIN(+)VIN(-):差动模拟电压输入.输入单端正电压时,VIN(-)接地:而差动输入时,直接加入VIN(+)VIN(-).AGND,DGND:模拟信号以及数字信号的接地.VREF:辅助参考电压.DB0~DB7:8位的数字输出.VCC:电源供应以及作为电路的参考电压.ADC0804模拟转数字对照表十六进制二进制高四位低四位相对电压值(2.56V)分别与满刻度的比率高四位低四位F111115/1615/256 4.8000.300 E111014/1614/256 4.4800.280 D110113/1613/256 4.1600.260 C110012/1612/256 3.8400.240B 101111/1611/256 3.5200.220A 101010/1610/256 3.2000.200910019/169/256 2.8800.180810008/168/256 2.5600.160701117/167/256 2.2400.140601106/166/256 1.9200.120501015/165/256 1.6000.100401004/164/256 1.2800.080300113/163/2560.9600.060200102/162/2560.6400.040100011/161/2560.3200.020000000/160/256321234567891011121314151617181920ADC0804PP10PP11PP12PP13PP14PP15PP16PP17R24R25R27R26VCCC15VCC01VINPP37PP36PP20R成功一号A D 转换实验部分电路图数字输出接口模拟输入接口4、根据以上对照表,可以得出以下结论如果:输入模拟量VIN=4V,由上表可知 3.840+0.160=4V数字为11001000=C8H5、如何在成功一号实验板上实现这一想法了?实验步骤如下:a、理解并将ADC0804转换程序写入AT89S51;b、对照说明书上的图的18号位置分别插入可插电位器c、旋转输入可调电位器,使输入电压由0V调到5V;d、程序中已使转换得到的数字信号,送P0口显示以便观察;实验板的P1口的LED也可以看到现象。

AD转换芯片ADC0804

AD转换芯片ADC0804

AD转换芯⽚ADC0804AD0804简介ADC0804的管脚图如下所⽰它的主要电⽓特性如下:●⼯作电压:+5V,即VCC=+5V。

●模拟输⼊电压范围:0~+5V,即0≤Vin≤+5V。

●分辨率:8位,即分辨率为1/28=1/256,转换值介于0~255之间。

●转换时间:100us(f CK=640KHz时)。

●转换误差:±1LSB。

●参考电压:2.5V,即V ref=2.5V。

1.ADC0804的转换原理ADC0804是属于连续渐进式(Successive Approximation Method)的A/D转换器,这类型的A/D转换器除了转换速度快(⼏⼗⾄⼏百us)、分辨率⾼外,还有价钱便宜的优点,普遍被应⽤于微电脑的接⼝设计上。

以输出8位的ADC0804动作来说明“连续渐进式A/D转换器”的转换原理,动作步骤如下表⽰(原则上先从左侧最⾼位寻找起)。

第⼀次寻找结果:10000000 (若假设值≤输⼊值,则寻找位=假设位=1)第⼆次寻找结果:11000000 (若假设值≤输⼊值,则寻找位=假设位=1)第三次寻找结果:11000000 (若假设值>输⼊值,则寻找位=该假设位=0)第四次寻找结果:11010000 (若假设值≤输⼊值,则寻找位=假设位=1)第五次寻找结果:11010000 (若假设值>输⼊值,则寻找位=该假设位=0)第六次寻找结果:11010100 (若假设值≤输⼊值,则寻找位=假设位=1)第七次寻找结果:11010110 (若假设值≤输⼊值,则寻找位=假设位=1)第⼋次寻找结果:11010110 (若假设值>输⼊值,则寻找位=该假设位=0)这样使⽤⼆分法的寻找⽅式,8位的A/D转换器只要8次寻找,12位的A/D转换器只要12次寻找,就能完成转换的动作,其中的输⼊值代表图1的模拟输⼊电压Vin。

AD0804简介续1(2007-05-30 17:35:30)转载2.分辨率与内部转换频率的计算对8位ADC0804⽽⾔,它的输出准位共有28=256种,即它的分辨率是1/256,假设输⼊信号Vin为0~5V电压范围,则它最⼩输出电压是5V/256=0.01953V,这代表ADC0804所能转换的最⼩电压值。

adc0804工作原理

adc0804工作原理

adc0804工作原理ADC0804是一款8位的模数转换器,它的工作原理是将输入的模拟信号转换为相应的数字信号。

在本文中,我们将详细介绍ADC0804的工作原理及其应用。

我们来了解一下ADC0804的基本结构。

它由一个模拟输入多路选择器、一个采样保持电路、一个模数转换电路和一个8位输出缓冲器组成。

其中,模拟输入多路选择器用于选择输入的模拟信号,采样保持电路用于将模拟信号进行采样并保持在一个恒定的电平上,模数转换电路则将采样后的模拟信号转换为相应的数字信号,最后通过输出缓冲器输出。

ADC0804的工作原理主要分为两个步骤:采样和量化。

首先,当ADC0804接收到转换开始信号时,模拟输入多路选择器将选择一个模拟输入信号,并将其输入到采样保持电路中。

在采样保持电路中,模拟信号被采样并保持在一个恒定的电平上,以便进行后续的转换操作。

然后,采样后的模拟信号将被输入到模数转换电路中进行量化。

模数转换电路使用一个内部的参考电压进行比较,将输入的模拟信号与参考电压进行比较,并产生相应的数字信号。

ADC0804使用逐次逼近法进行模数转换,即通过不断逼近输入信号与参考电压之间的差值来确定输出的数字信号。

在模数转换的过程中,ADC0804将输入的模拟信号分成若干个等级,并通过比较电路将其转换为相应的数字信号。

比较电路根据输入信号与参考电压之间的差值来判断输出的数字信号是“0”还是“1”。

通过不断逼近的过程,ADC0804可以将输入的模拟信号转换为相应的8位二进制数字信号。

转换后的数字信号将通过输出缓冲器输出。

输出缓冲器可以将转换后的数字信号放大并输出到外部设备,如微处理器或显示器等。

ADC0804由于其简单的结构和易于使用的特点,在工业控制、仪器仪表、通信等领域得到了广泛的应用。

它可以将各种模拟信号转换为数字信号,并通过输出缓冲器输出给其他设备进行处理。

总结起来,ADC0804是一款基于逐次逼近法的8位模数转换器。

它通过采样和量化的过程将输入的模拟信号转换为相应的数字信号,并通过输出缓冲器输出给其他设备。

[教材]ADC0804_中文资料

[教材]ADC0804_中文资料

[教材]ADC0804_中文资料ADC0804_中文资料/CS 芯片选择信号。

/CS 芯片选择信号。

模拟/数字转换器(相关知识) A/D转换器的基本原理 ----ADC08041,所谓A/D转换器就是模拟/数字转换器(ADC),是将输入的模拟信号转换成数字信号。

信号输入端可以是传感器或转换器的输出,而 ADC的数字信号也可能提供给微处理器,以便广泛地应用。

2,ADC0804的规格及引脚图8位COMS依次逼近型的A/D转换器.三态锁定输出存取时间:135US分辨率:8位转换时间:100US总误差:正负1LSB工作温度:ADC0804LCN---0~70度引脚图及说明见图1/RD外部读取转换结果的控制输出信号。

/RD为HI时,DB0~DB7处理高阻抗:/RD为 LO时,数字数据才会输出。

/WR:用来启动转换的控制输入,相当于ADC的转换开始(/CS=0时),当/WR由HI变为LO时,转换器被清除:当/WR回到HI时,转换正式开始。

CLK IN,CLK R:时钟输入或接振荡无件(R,C)频率约限制在100KHZ~1460KHZ,如果使用RC电路则其振荡频率为1/(1.1RC)/INTR:中断请求信号输出,低地平动作.VIN(+) VIN(-) :差动模拟电压输入.输入单端正电压时, VIN(-)接地:而差动输入时,直接加入VIN(+) VIN(-).AGND,DGND:模拟信号以及数字信号的接地. VREF:辅助参考电压.DB0~DB7:8位的数字输出 .VCC: 电源供应以及作为电路的参考电压 .参考腾龙套件的0804原理图:十六进制二进制码与满刻度的比率相对电压值 VREF=2.560伏高四位字节低四位字节高四位电压低四位电压 F 1111 15/16 15/256 4.8000.300 E 1110 14/16 14/256 4.480 0.280 D 1101 13/16 13/256 4.160 0.260 C 1100 12/16 12/256 3.840 0.240. B 1011 11/16 11/256 3.520 0.220. A 101010/16 10/256 3.200 0.200 9 1001 9/16 9/256 2.880 0.180 8 1000 8/16 8/256 2.560 0.160 7 0111 7/16 7/256 2.240 0.140. 6 0110 6/16 6/256 1.920 0.120.5 0101 5/16 5/256 1.600 0.100 4 0100 4/16 4/256 1.280 0.080 3 0011 3/16 3/256 0.960 0.060 2 0010 2/16 2/256 0.640 0.040. 1 0001 1/16 1/256 0.320 0.020. 0 0000 0 0例:VIN=3V,由上表可知2. 880+0.120=3V 为10010110=96H功能说明1,ADC0804将输入模拟值转换成数字值输出到 P0,使相对应的LED亮.如输入3V,ADC0804的输出应为96H=10010110,此数字信号送入 8051的P1,再由P1存入8051的累加器,然后累加器再到P0,使相应的LED亮.2,先将ADC0804的参考电压 VREF调整为 2.56V.(在腾龙套件中主要演示原理,未作此精确调整电压,用2个1K电阻分压,约 2.5V)3调整ADC0804的VIN可变电阻器.由 0V调到5V根据其关系观察 P1的LED变化情形 .参考程序:;0804的基本应用,转动电位器,P0口显示取到的数;//定义ADC的连接端口 ad_cs equ P3.6 ad_wr equ P2.0 ad_rd equ P3.7ad_input_port equ p1org 0000h ajmp main org 0030hmain:lcall adc_demo ajmp main;//==========================================;// 启动 AD转换;//==========================================Adc_Start:clr ad_cs nopclr ad_wr nopsetb ad_wr nopsetb ad_cs nopret;//==========================================;// 读AD转换;//==========================================Adc_Read:mov ad_input_port,#0ffhclr ad_csnopclr ad_rdnopnopmov a,AD_INPUT_PORTnopsetb ad_rd nopsetb ad_cs ret;//==========================================;// AD转换读取延时程序,显示读到的数值;//==========================================Adc_Demo:lcall Adc_Start lcall delay1ms lcall adc_read clr p2.0 clr p2.3mov p0,aretdelay1ms:mov r7,#10 tt1: mov r6,#50djnz r6,$ ;2us djnz r7,tt1retend。

我的51单片机之模数转换ADC0804的C语言和汇编编程

我的51单片机之模数转换ADC0804的C语言和汇编编程
//返回数据处理,LED 显示,Frequency 为转换频率 unsigned int DoWitchData(unsigned int Frequency) {
unsigned char AD[2];//存高低字节 unsigned int InputV;//最后处理结果 unsigned char i; InputV=ReadAD(); AD[1]=InputV&0xF0; AD[1]=AD[1]>>4; AD[0]=InputV&0x0F; InputV=ADH[AD[1]]+ADL[AD[0]]; for(i=0;i<Frequency;i++) {
//延时 void delay(unsigned char n) {
unsigned char i; for(i=0;i<n;i++) {
; } }
//AD 转换,P 口取数 unsigned char ReadAD() {
unsigned char ADData; RDA=1; WRA=1; InputPort=0xFF; WRA=0; _nop_(); WRA=1; delay(100); RDA=0; _nop_();_nop_();_nop_();_nop_();_nop_(); ADData=InputPort; _nop_();_nop_();_nop_();_nop_();_nop_(); RDA=1; _nop_(); return (ADData); }
//
{ 0 , 1, 2 , 3 , 4 , 5, 6, 7, 8,
//
9, A , b , C , d, e, f, 点, 息灯, }
sbit RDA=P3^7; sbit WRA=P3^6; sbit INTR=P3^3;

ADC0804资料

ADC0804资料

AD0804资料ADC0804是用CMOS集成工艺制成的逐次比较型摸数转换芯片。

分辨率8位,转换时间100μs,输入电压范围为0~5V。

该芯片内有输出数据锁存器,当与计算机连接时,转换电路的输出可以直接连接在CPU数据总线上,无须附加逻辑接口电路。

A/D转换器数据输出端,该输出端具有三态特性,能与微机总线相接。

·/CS:芯片选择信号。

VREF:辅助参考电压。

/WR:用来启动转换的控制当/WR自HI变为LO时,转换器被清除;当/WR回到HI时,转换正式启动;/RD:外部读取转换结果的控制脚输出信号。

DB0~DB7:8位数字输出。

/INTR:中断请求信号输出,低电平动AGND,DGND:模拟信号以及数字信号接地。

CLK IN,CLK R:时钟输入或接振荡元件(R,C),频率约限制在100KHz~1460KHz VIN(+),VIN(-):差动模拟电压输入。

输入单端正电压时,VIN(-)接地; ADC0804控制信号的时序图例一:如图所示,用中断的方法实现A/D转换,并将转换结果放到片内RAM 23H单元.ORG 0000HLJMP MAINORG 0013HLJMP INT111MAIN: MOV IE,#84H INT111: CLR P3.7 CLR P1.0 NOPCLR P3.6 NOPNOP SETB P3.7 SETB P3.6 MOV 23H,p0 SJMP $ RETI例二:如图所示,用中断的方法实现A/D转换,并将转换结果放到片内RAM 20H单元. ArrayORG 0000HLSMP MAINORG 0003HLJMP INT000MAIN: CLR P2.4 INT000:CLR P3.7CLR P3.6 SETB P3.7SETB P3.6 MOV 20H,P0MOV IE,#81H RETISJMP $ENDORG 0000HLJMP MAINORG 0003HLJMP INT000MOV IE,#81H INT000: MOVX A,@DPTR MOV DPTR,#0EFFFH MOV 20H,AMOVX @DPTR,A RETISJMP $。

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

模拟/数字转换器ADC0804
所谓A/D转换器就是模拟/数字转换器(Analog to Digital Converter 简称ADC)是将输入的模拟信号转换成为数字信号。

ADC0804的规格及引脚图:
/CS:芯片选择信号。

VREF:辅助参考电压。

/RD:外部读取转换结果的控制脚输出信号。

/INTR:中断请求信号输出,低电平动
CLK IN,CLK R:时钟输入或接振荡元件(R,C),频率约限制在100KHz~1460KHz VCC:电源供应以及作为电路的参考电压。

/WR:用来启动转换的控制当/WR自HI变为LO时,转换器被清除;当/WR回到HI时,转换正式启动;
DB0~DB7:8位数字输出。

AGND,DGND:模拟信号以及数字信号接地。

VIN(+),VIN(-):差动模拟电压输入。

输入单端正电压时,VIN(-)接地;ADC0804电压输入与数字输出关系如表所示:
相关原理:
程序运行照片:
接线方法:
1、用一个2PIN数据线插入CPU部分JP53(P3口)的P3.6,P3.7另一端插入ADC0804部分的输入端J3.
2、用一根8PIN的数据排线,一端插入ADC0804部分的数据输入端JP35, 另一端插入CPU部分JP44(P1口)
3、用一根8PIN的数据排线,一端插入八路指示灯部分的JP32, 另一端插入CPU部分JP51(P0口)
运行照片,用一个小螺丝刀调整AD转换部分的ADJ3 可以看到P0口引出的8个LED逐次变化。

程序流程图:
汇编语言参考程序:
ad_cs equ P3.6
ad_wr equ P2.0
ad_rd equ P3.7
ad_input_port equ p1 org 0000h
ajmp main
org 0080h
main:
lcall adc_demo
ajmp main
;// 启动AD转换
Adc_Start:
clr ad_cs
nop
clr ad_wr
nop
setb ad_wr
nop
setb ad_cs
nop
ret
Adc_Read: ;// 读AD转换
mov ad_input_port,#0ffh
clr ad_cs
nop
clr ad_rd
nop
nop
mov a,AD_INPUT_PORT
nop
setb ad_rd
nop
setb ad_cs
ret
;// AD转换读取延时程序,显示读到的数值Adc_Demo:
lcall Adc_Start
lcall delay1ms
lcall adc_read
clr p2.0
clr p2.3
mov p0,a
ret
delay1ms:
mov r7,#10
tt1:
mov r6,#50
djnz r6,$ ;2us
djnz r7,tt1
ret
end
c语言参考程序:
#include<reg51.h> //头文件
#define uchar unsigned char //宏定义,为方便编程
#define uint unsigned int
#define ADDATA P1 //宏定义,将P1口定义为0804输出数据位#define LED P0 //宏定义,将P0口定义为LED
sbit _WR=P2^0; //定义P2.0为数据写入位
sbit CS=P3^6; //定义P3.6为ADC0804片选位
sbit _RD=P3^7; //定义P3.7为数据读取位
void delay_run() //AD转换间隔延迟函数
{
uchar ii,jj;
for(ii=0;ii<200;ii++)
for(jj=0;jj<200;jj++);
}
void delay() //片选及读写数据位保持延迟
{
uchar i=200;
while(i--);
}
char code SST516[3] _at_ 0x003b; //仿真器保留
main() //主函数
{
uchar value=0; //定义一变量,用于存放AD转换完的数据while(1)
{
CS=0; //拉低片选位
_WR=0; //拉低写数据位
delay(); //延迟
_WR=1; //拉高写数据位,启动AD转换
CS=1; //拉高片选位
CS=0; //拉低片选位
_RD=0; //拉低读数据位,读取AD转换数据
value=ADDATA;
delay(); //延迟
_RD=1; //拉高读数据位
CS=1; //拉高片选
LED=value; //将AD转换的数据赋给P0,驱动LED
delay_run(); //AD转换间隔延迟
}
}。

相关文档
最新文档