模数转换器ADC0808的应用

合集下载

ADC0808

ADC0808

/******ADC0808两路输入,有效位各4位,8位数码管同时显示。

芯片:AT89C52,12MHz *******DAC0832对AD转换值再次转换并接LED显示效果*******************/#include <REGX52.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar temp=0x01; //全局变量定义,用于动态扫描子程序uchar x=0,num=0; //全局变量,用于定时器0long ADC0=0,ADC1=0; //两路ADC值uchar shujv[8]={0}; //定义数组,用于存放显示值uchar code duanma[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳LED段码sbit START=P3^0; //定义ADC0808启动、允许输出控制端sbit OE=P3^1;//sbit EOC=P3^2;sbit WR1=P3^3; //分别定义DAC0832WR端sbit WR2=P3^4;sbit A1=P3^5; //定义ADC0808地址线控制端,通道选择sbit A2=P3^6;sbit A3=P3^7;bit flag=0; //用于判断通道0和1选中的标志位(0对应通道0,1对应通道1)sbit DP=P0^7; //小数点位void Delayus(uint t) //延时约1us子程序{uchar i,j;for(i=0;i<t;i++)for(j=0;j<123;j++);}void ADC0808init() //ADC0808初始化{EX0=1; //打开外部中断0IT0=1; //中断触发方式为下降沿触发// IE0=0;A1=0; A2=0; A3=0; //默认选通道0P2=0; //关闭数码管显示}void timer0init() //定时器0初始化,用于LED动态扫描{TMOD=0X02; //定时器0工作于方式2TH0=0X38; //赋初值,12MHz,定时200微秒TL0=0X38;EA=1; //开总中断ET0=1; //开定时器0中断TR0=1; //启动定时器0}void display() //数码管显示函数{P2=0; //消隐P0=duanma[shujv[x]]; //将处理后段码值传给数码管if(x==0 || x==4) //若扫描到第0位和第4位则显示小数点位,由于段码表中均为不含小数点位的段码,顾不需写else=1语句DP=0;P2=temp; //打开位选使相应的数码管显示,其余数码管关闭if(++x>=8) //扫描一遍后重新归零x=0;temp=_crol_(temp,1); //循环左移}void ADCconver() //ADC0808转换子程序{OE=0; //禁止输出START=0; //START置低A1=~A1; //ALE为0,此时改变地址进行通道0和1切换if(A1==1) //判断是否为通道1flag=1;START=1; _nop_(); //START拉高产生上升沿从而使内部所有寄存器清零START=0; //再拉低产生下降沿,开始AD转换,转换完成后EOC会产生上升沿,加反相器后变成下降沿进而触发外部中断}void shujvchuli() //数据处理子函数{long temp1=((ADC0*1000)/51),temp2=((ADC1*1000)/51); //N*5/256,乘1000是为了变为4位整数,便于后续各位分离shujv[0]=temp1/1000; //通道0千位shujv[1]=temp1/100%10; //通道0百位shujv[2]=temp1%100/10; //通道0十位shujv[3]=temp1%10; //通道0个位shujv[4]=temp2/1000; //通道1千位shujv[5]=temp2/100%10; //通道1百位shujv[6]=temp2%100/10; //通道1十位shujv[7]=temp2%10; //通道1个位}void main(){timer0init(); //定时器0初始化ADC0808init(); //ADC0808初始化while(1){ADCconver(); //ADC开始转换shujvchuli(); //进行数据处理装换}}void timer0() interrupt 1 //定时器0中断服务程序,数码管定时扫描{if(++num>=10) //0.2*10=2ms,2ms进行一次显示{num=0; //清零,重新开始累加计时display(); //显示}}void inter() interrupt 0 //外部中断0中断服务程序(中断法检测EOC){/* EX0=0; //考虑到中断虽不由程序控制,但外部期间由程序控制,这样中断间接受程序控制,下次中断的触发在中断服务程序执行后才会发生*/OE=1; //收到转换结束信号则允许输出if(flag) //如果是通道1选通,将装换完成的值赋给变量ADD1,否则赋值给ADD0 {flag=0; //通道标志清零ADC1=P1;WR2=0; //写信号允许,打开第二个DAC0832输入缓存器WR2=1; //数据送入后关闭输入,防止数据变化Delayus(1); //延时使DA转换完成,防止未转换完成情况下再次送入数据}else{ADC0=P1;WR1=0; //写信号允许,打开第一个DAC0832输入缓存器WR1=1; //数据送入后关闭输入,防止数据变化Delayus(1); //延时使DA转换完成,防止未转换完成情况下再次送入数据}OE=0; //未收到转换完成信号则禁止ADC0808输出数据// EX0=1;}。

ad0808电压信号转化

ad0808电压信号转化

ADC0808是一款八位A/D转换器,可以将模拟信号转换成数字信号来计算机处理。

它可以将输入的模拟电压信号转换为相应的数字值,实现电压信号的转化。

ADC0808的工作原理是基于逐次逼近法的。

在逐次逼近法中,首先将输入电压与参考电压进行比较,然后根据比较结果来调整数字值,直到得到最终的数字值。

ADC0808内部包含一个多位比较器、一个数据暂存器、一个内部时钟、一个参考电压源和一个缓冲放大器等部件。

当ADC0808接收到模拟电压信号时,首先通过缓冲放大器将信号进行放大和缓冲,然后通过定时器进行时间分解,将模拟信号转换成位值。

接下来,通过放大器将位值变成比较电压,多位比较器比较这些比较电压与模拟信号之间的差值,并把结果存储在数据暂存器中。

最终,通过逐次逼近法得到转换后的数字值。

需要注意的是,ADC0808的转换精度和速度会受到多种因素的影响,如输入信号的幅度、频率、噪声等。

因此,在使用ADC0808进行电压信号转化时,需要根据实际情况进行选择和调整。

模数转换ADC0832、ADC0808和ADC0809的利用

模数转换ADC0832、ADC0808和ADC0809的利用

模数转换ADC0832、ADC0808和ADC0809的利用/***************************************************************利用AT89c51 单片机和ADC0808(ADC0809)ADC0832 进行模数转换,进行电压测试数码管采用共阳极,要显示小数点,则小数点位二进制数最高为应为0,在0-9 的8421BCD 码中,最高位都为1,所以把输出数据的BCD 码与0x7F 相与才能实现带小数点的显示。

****************************************************************/#include#include#define uint unsigned int#define uchar unsigned char//******************adc0832****************************//sbitCS=P2;//使能。

sbit CLK=P2 ;//时钟sbit DO=P2;// 数据输出sbit DI=P2;//数据输入char CC[]=“11001001”;uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86, 0x8e};uchar temp;uint vvv,i;//通道的选择:0x02 就是单通道0;0x03 就是单通道1;//0x00 就是双通道ch0=“+”;ch0=“-”//0x01就是双通道ch0=“-”;ch0=“+”//*****************************************************//void delay(inttt){while(tt--) {for(i=0;i<120;i++);}}void startADC(){CS=1;_nop_();_nop_();CLK=0;_nop_();_nop_();CS=0;_nop_();_nop_(); DI=1;_nop_();_nop_();CLK=1;_nop_();_nop_();DI=0;_nop_();_nop_();CLK=0;_nop_();_nop_();}void choiceADC(uint CH)//CH 为0 选择通道ch0,为1,选择ch1进行AD 转换{startADC();if(CH==0){DI=1;_nop_();CLK=1;//上升沿DI=1_nop_(); CLK=0;//1 个下降沿DI=1_nop_();DI=0;_nop_();CLK=1;_nop_();CLK=0;//第3 个上升沿DI=0_nop_();}else{DI=1;_nop_();CLK=1;//上升沿DI=1_nop_();CLK=0;//1个下降沿DI=1_nop_();DI=1;_nop_();CLK=1;_nop_();CLK=0;//第3 个上升沿。

模数转换器ADC0808的应用

模数转换器ADC0808的应用

实训报告十实训目的:通过实现由ADC0808作为A/D转换器对RV1进行电压测量,并在数码管上显示;了解ADC0808的工作方式,进行模拟数据的采样,从而利用c语言编程实现单片机控制处理信息。

实训原理图:实训步骤:1.在ptoteus平台找出所需的元器件2.理解该实验的原理,按照原理图画出仿真图;3.根据实验要求写出如下程序:#include <reg51.H>unsigned char code dispcode[4]={0x10,0x20,0x40,0x00}; unsigned char temp;unsigned char dispbuf[4];unsigned char count=0;unsigned char getdata;sbit ST=P3^0;sbit OE=P3^1;sbit EOC=P3^2;sbit CLK=P3^7;void delay(unsigned int i){unsigned int j;for (j=0;j<i; j++);}void init(){EA=1;ET0=1;ET1=1;TMOD=0x12;TH0=216;TL0=216;TH1=(65536-4000)/256;TL1=(65536-4000)%256;TR1=1;TR0=1;}void conversion(){ST=0;ST=1;ST=0;while(EOC==0){;}OE=1;getdata=P0;OE=0;temp=getdata;dispbuf[0]=getdata/100;temp=temp-dispbuf[0]*100;dispbuf[1]=temp/10;temp=temp-dispbuf[1]*10;dispbuf[2]=temp;}void T0X()interrupt 1{CLK=~CLK;}void T1X() interrupt 3{TH1=(65536-4000)/256;TL1=(65536-4000)%256;for(count=0;count<=3;count++){P1=dispbuf[count]|dispcode[count];//输出显示控制代码delay(50);}}void main(void){init();while(1){conversion();}}总结:经过此次的实验,通过实现由ADC0808作为A/D转换器对RV1进行电压测量,并在数码管上显示,深刻地理解了ADC0808的结构以及工作方式,ADC0808是典型的8通道模拟输入8位并行数字输出地逐次逼近式A/D转换器。

DAC0808原理与应用(引脚功能+举例说明+原理图+源程序)

DAC0808原理与应用(引脚功能+举例说明+原理图+源程序)

DAC0808原理与应用1、DAC0808引脚功能DAC0808是8位数模转换集成芯片,电流输出,稳定时间为150ns,驱动电压±5V,33mW。

DAC0808可以直接和TTL,DTL和CMOS逻辑电平相兼容。

引脚功能A1—A8:8位并行数据输入端(A1为最高位,A8为最低位)VREF(+):正向参考电压(需要加电阻)VREF(-):负向参考电压,接地IOUT:电流输出端VEE:负电压输入端COMP:compensation(补偿),补偿端,与VEE之间接电容(R14=5kΩ时,(R14为14引脚的外接电阻),一般为0.1uF,电容必须随着R14的增加而适当增加)GND:接地端,VCC:电源端,在proteus中都已隐藏2、典型应用电路如下图所示,VEE接-5V电压,COMP端与VEE之间接0.1uF电容,VREF(+)通过5K电阻接+5V 电源,VREF(-)接地。

输出端IOUT连接运算放大器反向输入端。

运算放大器同相输入端接地。

3、应用举例:如下图所示,运行本例时,按下K1~K8中的某个键,单片机会向DAC0808芯片输出0x00~0xff之间的8个不同数值,经转换后会输出8挡不同电压。

C程序如下:#include <reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(uint x){uchar i;while(x--)for(i=0;i<120;i++);}void main(){P0=0X00;while(1){if(P3==0XFE)P0=0;if(P3==0XFD)P0=35;if(P3==0XFB)P0=70;if(P3==0XF7)P0=105;if(P3==0XEF)P0=140;if(P3==0XDF)P0=175;if(P3==0XBF)P0=210;if(P3==0X7F)P0=255;delay(2);}proteus仿真运行结果如下:。

ADC0808应用实例资料

ADC0808应用实例资料

11.2.4 典型的集成ADC 芯片为了满足多种需要,目前国内外各半导体器件生产厂家设计并生产出了多种多样的ADC 芯片。

仅美国AD 公司的ADC 产品就有几十个系列、近百种型号之多。

从性能上讲,它们有的精度高、速度快,有的则价格低廉。

从功能上讲,有的不仅具有A/D 转换的基本功能,还包括内部放大器和三态输出锁存器;有的甚至还包括多路开关、采样保持器等,已发展为一个单片的小型数据采集系统。

尽管ADC 芯片的品种、型号很多,其内部功能强弱、转换速度快慢、转换精度高低有很大差别,但从用户最关心的外特性看,无论哪种芯片,都必不可少地要包括以下四种基本信号引脚端:模拟信号输入端(单极性或双极性);数字量输出端(并行或串行);转换启动信号输入端;转换结束信号输出端。

除此之外,各种不同型号的芯片可能还会有一些其他各不相同的控制信号端。

选用ADC 芯片时,除了必须考虑各种技术要求外,通常还需了解芯片以下两方面的特性。

(1)数字输出的方式是否有可控三态输出。

有可控三态输出的ADC 芯片允许输出线与微机系统的数据总线直接相连,并在转换结束后利用读数信号RD 选通三态门,将转换结果送上总线。

没有可控三态输出(包括内部根本没有输出三态门和虽有三态门、但外部不可控两种情况)的ADC 芯片则不允许数据输出线与系统的数据总线直接相连,而必须通过I/O 接口与MPU 交换信息。

(2)启动转换的控制方式是脉冲控制式还是电平控制式。

对脉冲启动转换的ADC 芯片,只要在其启动转换引脚上施加一个宽度符合芯片要求的脉冲信号,就能启动转换并自动完成。

一般能和MPU 配套使用的芯片,MPU 的I/O 写脉冲都能满足ADC 芯片对启动脉冲的要求。

对电平启动转换的ADC 芯片,在转换过程中启动信号必须保持规定的电平不变,否则,如中途撤消规定的电平,就会停止转换而可能得到错误的结果。

为此,必须用D 触发器或可编程并行I/O 接口芯片的某一位来锁存这个电平,或用单稳等电路来对启动信号进行定时变换。

语音模数转换实验报告(3篇)

语音模数转换实验报告(3篇)

第1篇一、实验目的1. 理解语音信号的基本特性及其数字化处理的重要性。

2. 掌握语音信号的采样、量化、编码等模数转换过程。

3. 学习使用音频采集设备和相关软件进行语音信号的采集和转换。

4. 分析语音信号的时域和频域特性,理解语音信号处理的基本原理。

二、实验原理语音信号是一种连续变化的模拟信号,为了在数字设备中进行处理和传输,需要将其转换为数字信号。

模数转换(A/D转换)是将模拟信号转换为数字信号的过程,主要包括采样、量化、编码三个步骤。

1. 采样:将连续的语音信号按照一定的时间间隔进行离散化处理,即每隔一定时间间隔取一次信号值。

2. 量化:将采样得到的连续信号值离散化,将其转换为有限个数值中的一个。

3. 编码:将量化后的数字信号转换为二进制代码,以便在数字设备中进行处理和传输。

三、实验设备1. 音频采集设备:电脑、麦克风、耳机。

2. 音频处理软件:Audacity、MATLAB等。

3. 数据采集卡:用于将模拟信号转换为数字信号。

四、实验步骤1. 语音信号采集:使用麦克风采集一段语音信号,通过音频采集设备输入电脑。

2. 采样:在音频处理软件中设置采样频率,例如8kHz、16kHz等,将连续的语音信号进行离散化处理。

3. 量化:在音频处理软件中设置量化位数,例如8位、16位等,将采样得到的连续信号值离散化。

4. 编码:将量化后的数字信号转换为二进制代码,以便在数字设备中进行处理和传输。

5. 分析:使用MATLAB等软件对采集到的语音信号进行时域和频域分析,观察其特性。

五、实验结果与分析1. 时域分析:通过观察语音信号的波形图,可以看出语音信号的幅度、频率等特性。

例如,语音信号的幅度变化较大,频率范围一般在300Hz~3400Hz之间。

2. 频域分析:通过观察语音信号的频谱图,可以看出语音信号的频率成分分布。

例如,语音信号的主要能量集中在300Hz~3400Hz之间。

六、实验结论1. 语音信号数字化处理是现代通信和多媒体技术的基础,通过模数转换可以将语音信号转换为数字信号,方便在数字设备中进行处理和传输。

常见ADC转换器及应用

常见ADC转换器及应用
3.ADC0809 的时序图 ADC0809 的时序图如下图所示。
bojia@
首页 向上 向下 未页 返回
单片机电子教案
bojia@
ADC0809 芯片使用模拟开关切换,可以分时处理8 路模拟量输入信号。在某一时 刻,模拟开关只能与一路模拟量通道接通,对该通道进行A/D 转换。当地址锁存 信号ALE为高电平时,C、B、A三条线上的地址数据送入ADC0809内部的地址锁 存器中,经过译码器译码后选中某一通道。当AL E= 0时,地址锁存器处于锁存 状态。此时,转换启动信号端START出现下降沿。只有当转换启动信号端START 出现下降,并延迟Teoc (≤8c1+ 2uS) 后,芯片启动A/D 转换;当转换启动信号端 START 出现上升沿时,ADC0809复位。 ADC0809的时钟信号由CLOCK端送入, 其最高频率为640MHz,在这个最高频 率下ADC0809的A/D 转换时间为100uS左右。当ADC0809用于AT89C51单片机系 统时,若AT89C51采用12MHz的晶振,则ADC0809的时钟信号可以由AT 89C51的 ALE经过一个四分频电路获取。这时ADC0809的时钟频率为500KHz,A/D转换结 束后,将转换的结果送到三态锁存输出缓冲器,使ADC0809的允许输出控制端 OE为高电平,打开三态输入锁存器,就可以在DB0~DB7 上,读出A/D 转换结果 。EOC为转换结束输出信号。在A/D转换期间,EOC维持高电平;当A/D 转换结 束时,EOC变成高电平,通过EOC的状态,系统就可以确定ADC0809的转换状态 。
Vref-ຫໍສະໝຸດ ALE图8-4 ADC0809扩展电路
首页 向上 向下 未页 返回
单片机电子教案
bojia@

adc0808数模转换后的数据变为bcd码

adc0808数模转换后的数据变为bcd码

ADC0808是一款常用的8位分辨率的模拟数字转换器(ADC),可以将模拟信号转换为数字信号。

在转换完成后,数据通常以二进制的形式表示。

然而,有时我们需要将这些数据转换为其他形式的编码,如二进制编码十进制(BCD)码。

BCD码,也就是二进制编码十进制,是一种常用的数字编码方式,它将十进制的数字0到9转换成四位二进制数。

这样,每个数字都有一个固定的四位二进制代码,使得在计算机中更容易进行数字处理和存储。

假设我们有一个ADC0808转换后的数据流,我们可以按照以下步骤将其转换为BCD码:1. **模拟信号到数字信号转换**:首先,我们需要从ADC0808读取转换后的数字数据。

这些数据通常在0-255之间,代表了模拟信号的电压值。

2. **数据清洗**:由于ADC的分辨率和精度可能存在差异,我们可能需要将读取到的数据进行清洗和修正,以确保其准确性和一致性。

3. **二进制到BCD码转换**:接下来,我们将每个数字从二进制转换为BCD码。

具体来说,我们将每个数字的最高位用作BCD码的最高位(即0000),最低位用作BCD码的最低位(即1001)。

对于中间的三个位,我们将其分别映射到BCD码的十位、个位和千位。

举个例子,假设我们有一个数字57,其二进制表示为0101 0111。

将其转换为BCD码后,最高位为0(对应BCD码的最低位),其余三个高位为1(对应BCD码的十位、个位和千位),因此最终的BCD码为'0110 0111'。

通过以上步骤,我们就将ADC0808转换后的数字数据从二进制转换为BCD码。

在实际应用中,这种转换方式可以帮助我们更好地理解和处理数字数据,提高数据的可读性和可处理性。

请注意,上述步骤是基于假设和一般性的描述。

在实际应用中,可能还需要考虑其他因素,如ADC的精度、数据清洗的方法、BCD码的存储和传输方式等。

因此,具体的实现方式可能会因应用场景和需求而有所不同。

ADC0809

ADC0809
A/D转换器按照输出代码的有效位数分为 位、6位、8位、 转换器按照输出代码的有效位数分为4位 转换器按照输出代码的有效位数分为 位 位 10位、12位、14位、16位和 位 位和BCD码输出的 位、4位、5位 码输出的3位 位 位 位和 码输出的 位 位 等多种; 等多种 按照转换速度可以分为超高速(转换时间≤1ns)、 高速 按照转换速度可以分为超高速 ( 转换时间 ) 转换时间≤1us)、 中速 ( 转换时间 ( 转换时间 ) 中速(转换时间≤1ms)、 低速 ( 转 ) 低速( 换时间≤1s)等几种不同转换速度的芯片 换时间 )等几种不同转换速度的芯片; 为适应系统集成的需要,有些转换器还将多路转换开关、 为适应系统集成的需要,有些转换器还将多路转换开关、 时钟电路、基准电压源、 十进制译码器和转换电路集成 时钟电路、基准电压源、二/十进制译码器和转换电路集成 在一个芯片内,超越了单纯的A/D转换功能。 转换功能。 在一个芯片内,超越了单纯的 转换功能
7 2
A/D转换器的主要技术指标 A/D转换器的主要技术指标
1.分辨率 .
分辨率表示输出数字量变化一个相邻数码所需输入模 拟电压的变化量。 拟电压的变化量。 转换器的分辨率定义为满刻度电压与2 之比值,其中n 转换器的分辨率定义为满刻度电压与 n之比值,其中 为ADC的位数。 的位数。 的位数 例如具有12位分辨率的 能分辨出满刻度的1/2 例如具有 位分辨率的ADC能分辨出满刻度的 12或 位分辨率的 能分辨出满刻度的 满刻度的0. 满刻度的12位 满刻度的 . 0245% 。 一个 % 一个10V满刻度的 位 ADC能 满刻度的 能 够分辨输入电压变化的最小值为2. 够分辨输入电压变化的最小值为 .4mV。 。
7
13
3.影响A/D转换技术指标的主要因素 影响A/D转换技术指标的主要因素 A/D 工作电源电压不稳定; 工作电源电压不稳定; 外接时钟频率不适合, 外接时钟频率不适合, 环境温度不适合; 环境温度不适合; 与其它器件的电特性不匹配,如负载过重; 与其它器件的电特性不匹配,如负载过重; 外界有强干扰; 外界有强干扰; 印刷电路板布线不合理。 印刷电路板布线不合理。

DS0808

DS0808

ADC0808ADC0808概述ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。

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

ADC0808是ADC0809的简化版本,功能基本相同。

一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/ D转换。

ADC0808管脚图内部结构ADC0808是CMOS单片型逐次逼近式A/D转换器,它有8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器。

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

各引脚功能如下:1~5,26~28(IN0~IN7):8路模拟量输入端。

8,14,15,17~21:8位数字量输出端。

22(ALE):地址锁存允许信号,输入,高电平有效。

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

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

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

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

10(CLK):时钟脉冲输入端。

要求时钟频率不高于640KHZ。

12(VREF(+))、16(VREF(-)):参考电压输入端11(Vcc):主电源输入端。

13(GND):地。

23~25(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路通道选择极限参数电源电压(Vcc):6.5V控制端输入电压:—0.3V~15V其它输入和输出端电压:-0.3V~Vcc+0.3V贮存温度:—65℃~+150℃功耗(T=+25℃):875mW引线焊接温度:①气相焊接(60s):215℃;②红外焊接(15s):220℃抗静电强度:400V。

ADC0808

ADC0808

IN3 IN4 IN5 IN6 IN7 START EOC D3 OE CLOCK VCC VREF+ GND D1
1 2 3 4 5 6 7 8 9 10 11 12 13 14
28 27 26 25 24 23 22 21 20 19 18 17 16 15
IN2 IN1 IN0 ADDA ADDB ADDC ALE D7 D6 D5 D4 D0 VREFD2
CLOCK IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 START
通道 选择 开关
定时和 控 制 逐次逼近 寄存器SAR 寄存器 8位 三态 锁存 缓冲 器
EOC D0 D1 D2 D3 D4 D5 D6 D7
DAC
ADDA ADDB ADDC ALE
地址锁存 和译码
ADC0808
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 D0 IN0 D1 IN1 D2 IN2 D3 IN3 D4 IN4 D5 IN5 D6 IN6 D7 IN7 ADDA ADDB ADDC VREF+ CLK VREFALE START OE EOC ADC0808
转换数据的传送: 转换数据的传送: 定时传送方式; ①定时传送方式; 不需接EOC EOC脚 (不需接EOC脚) 查询方式; ②查询方式; 测试EOC脚的状态) EOC脚的状态 (测试EOC脚的状态) ALE 中断方式。 ③中断方式。 8051 EOC脚接INT脚 脚接INT (EOC脚接INT脚) WR 注意: 注意: P2.7 (1)不能用无条件方式 不能用无条件方式; (1)不能用无条件方式; RD (2)2个ALE不能相接 不能相接。 (2)2个ALE不能相接。

ADC0808数模转换与显示__课程设计

ADC0808数模转换与显示__课程设计

ADC0808数模转换与显示__课程设计图3-1-3 ADC0808的接线图图3-1-4 ADC0808的时钟电路设置图3-2-1 设计原理电路图IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道传送给AT89C51芯片的P1口,AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给六位LED,同时它还通过其六位I/O 口P0.0、P0.1、P0.2、P0.3、P0.4、P0.5产生位选信号控制数码管的亮灭。

此外,ADC0808的CLOCK 用DCLOCK激励源,当激励源发出正脉冲时启动A/D转换,P3.5检测A/D转换是否完成,无论转换成功,均从P1口读取结果送给LED显示出来。

[2]硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。

3.3程序设计根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图3-3-1所示。

[3]A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图3-3-2所示。

[3]开始初始化调用A/D转换子程序调用显示子程序结束图3-3-1 主程序框图图3-3-2 A/D转换流程图3.4仿真结果与分析1.当IN0口输入电压值为0V时,显示结果如图所示,测量误差为0V。

图3-4-1 输入电压为0V时,LED的显示结果4.00 3.984 0.40附录AT89C51单片机程序#include <REG51.H>#include <math.h>#include "timer.h"#define _nop {}unsigned char shuma[]={0xC0,0xF9,0xA4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};sbit N1=P0^0;sbit N2=P0^1;sbit N3=P0^2;sbit N4=P0^3;sbit N5=P0^4;sbit N6=P0^5; sbit Point=P2^7;int V=0;void Delay_nms(unsigned char n){unsigned char a;for(;n>0;n--){for(a=0;a<100;a++){ _nop;_nop;_nop; _nop; } }}void display(int volt){unsigned char dis[6];int i,a,j=0,cn=0;for(i=0;i<6;i++){dis[i]=0;}a=volt;if(a==0){dis[0]=0;cn=1;}else{j=0;while(a>0){if(j>=6) break; dis[cn]=a%10;j++;cn++; a=a/10;}}//dis[1]=9; for(i=0;i<6;i++){N1=0;N2=0;N3=0;N4=0;N5=0;N6=0;P2=shuma[ dis[i] ];if(i==0)N6=1; }else if(i==1){N5=1;if(cn==2){Point=0;}}else if(i==2){N4=1;if(cn==3){Point=0;}}else if(i==3){ N3=1;if(cn==4){ Point=0;} }else if(i==4){N2=1;if(cn==5) {Point=0;}}else if(i==5){N1=1; if(cn==6){Point=0;}}Delay_nms(5);}}void main(){unsigned char key,i;IniTimer(25000);StartTimer();V=48367;while(1){display(V);}}。

8通道8位模_数转换器ADC0808_0809原理及应用

8通道8位模_数转换器ADC0808_0809原理及应用
1.1 复用器 这个器件包括一个8通道单端模拟信号复用器。通过使用地址 解码器,选择一个输入通道。在地址锁存能使信号由低到高变化 时,地址被锁存住。 1.2 转换器 这个器件的数据获取系统的关键部分是它的8位模/数转换器。 转换器的数字输出是正实数,这个转换器被设计成能在宽的温度范 围内达到快速、精确、可重复的转换。该转换器分成3个主要部 分:256R的阶梯网络、连续逼近的电阻和比较器。256R的阶梯网 络用逼近的办法替代了传统的R/2R阶梯,其本身的单一性保证了 不会丢失数字编码——在闭环反馈系统中,这种单一性尤其重要 (一个非单一性的关系可能引起振荡,这种振荡对于系统可能是灾 难性的)。同时,256R的阶梯网络不会在参考电压上引起负载变化, 对于ADC0808/0809,使用256R网络就可以把逼近技术延伸到8位。 A/D转换器的连续逼近寄存器(SAR)在起始转换(SC)脉冲 的上升沿复位,转换在起始转换脉冲下降沿开始,处理过程中的转 换将被新的起始转换脉冲中断。把转换结束标示(EOC)输出连接 到SC输入,这样可以达到连续转换的目的。假如使用这个模式, 则在上电后,需要从外部输入一个起始转换脉冲,在起始转换脉冲 的上升沿后0~8个时钟脉冲之间EOC将变低。 A/D转换器最重要的部分是比较器,它负责整个转换器的最终 精度。一个稳定断续比较器提供了符合所有转换器要求的最有效方 法。这个稳定断续比较器把DC输入信号转换成一个AC信号,这个 信号通过一个高增益AC放大器反馈,并且能回复DC电平。既然漂 移的是DC分量,它不会通过AC放大器,因此这个技术就限制了放 大器的漂移分量,使得整个A/D转换器对于极端的温漂、长期漂移 和输入偏移误差都不敏感。
输出编码N的中心可通过以下公式给出:
对于任意输入的输出代码N,它应是以下公式范围描述范围内 的整数:

ADC0808 PWM实验

ADC0808 PWM实验

实验六 ADC0808 PWM 实验一、实验目的1、掌握A/D 的常用芯片使用基础知识2、掌握单片机与A/D 常用芯片接口程序书写方法二、实验说明使用数模转换芯片 ADC0808,通过调节可变电阻RV1 来调节脉冲宽度,运行程序时,通过虚拟示波器观察占空比的变化。

三、实验内容及步骤 (一)实验内容A/D 的常用芯片使用基础知识1. A/D 转换器概述A/D 转换器用以实现模拟量向数字量的转换。

按转换原理可分为 4 种: 计数式、 双积分式、逐次逼近式以及并行式A/D 转换器。

逐次逼近式A/D 转换器是一种速度较快, 精度较高的转换器, 其转换时间大约在几微秒到几百微秒之间。

常用的这种芯片有:(1) ADC0801~ADC0805型 8 位MOS 型A/D 转换器; (2) ADC0808/0809 型 8 位MOS 型A/D 转换器; (3) ADC0816/0817 型 8 位MOS 型A/D 转换器;A/D 转换器的主要性能指标1.分辨率2.转换时间3.量程4.转换精度 量化间隔和量化误差是A/D 转换器的主要技术指标之一。

量化间隔由下式计算: 其中n 为A/D 转换器的位数。

量化误差有两种表示方法: 一种是绝对量化误差; 另一种是相对量化误差。

绝对量化误差2. 典型A/D 转换器芯片ADC0809 简介ADC0809 是采用CMOS 工艺制造的双列直插式单片8 位A/D 转换器。

(分辨率) 分辨率8 位,精度7 位,带8 个模拟量输入通道,有通道地址译码锁存器,输出带三态数据锁存器。

启动信号为脉冲启动方式,最大可调节误差为±1LSB 。

(转换精度)ADC0809 内部没有时钟电路,故CLK 时钟需由外部输入,fclk 允许范围为500kHz~1MHz ,典型值为640kHz 。

每通道的转换需66~73 个时钟脉冲,大约100~110μs 。

(转换时间)工作温度范围为-40℃~+85℃。

adc0808课程设计

adc0808课程设计

adc0808课程设计一、课程目标知识目标:1. 理解ADC0808模数转换器的原理、结构和功能;2. 学会使用ADC0808进行模拟信号到数字信号的转换;3. 掌握ADC0808与微控制器(如8051)的接口方法;4. 了解ADC0808在实际应用中的注意事项及其性能参数。

技能目标:1. 能够正确连接ADC0808与其他电子元件,搭建简单的模拟信号采集系统;2. 熟练运用编程语言(如C语言)对ADC0808进行编程控制,实现数据采集;3. 学会分析ADC0808采集到的数据,解决实际问题。

情感态度价值观目标:1. 培养学生对电子技术学习的兴趣,激发创新意识;2. 培养学生的团队协作精神,提高沟通与协作能力;3. 增强学生的环保意识,认识到电子技术在可持续发展中的重要作用。

分析课程性质、学生特点和教学要求,本课程目标旨在帮助学生掌握ADC0808的基础知识,提高实际操作技能,培养学生在电子技术领域的创新能力和实际应用能力。

通过课程学习,使学生能够将理论知识与实际操作相结合,为后续相关课程的学习打下坚实基础。

同时,注重培养学生的情感态度价值观,使他们在掌握知识的同时,具备良好的社会责任感和团队合作精神。

后续教学设计和评估将围绕这些具体的学习成果展开。

二、教学内容1. 引言:介绍模数转换器的基本概念,以及在电子测量和数据采集中的应用。

2. ADC0808基础:- 结构与原理:详细讲解ADC0808的内部结构、工作原理。

- 性能参数:阐述ADC0808的主要性能参数,如分辨率、转换精度等。

3. ADC0808接口技术:- 接口电路设计:介绍ADC0808与微控制器(如8051)的接口电路设计方法。

- 编程控制:讲解如何使用编程语言对ADC0808进行编程控制。

4. 实践应用:- 模拟信号采集:指导学生搭建简单的模拟信号采集系统,并进行实际操作。

- 数据处理与分析:教授如何对采集到的数据进行处理和分析,解决实际问题。

ADC0808功能及简介资料

ADC0808功能及简介资料

A D C0808功能及简介11.2.4 典型的集成ADC 芯片为了满足多种需要,目前国内外各半导体器件生产厂家设计并生产出了多种多样的ADC 芯片。

仅美国AD 公司的ADC 产品就有几十个系列、近百种型号之多。

从性能上讲,它们有的精度高、速度快,有的则价格低廉。

从功能上讲,有的不仅具有A/D 转换的基本功能,还包括内部放大器和三态输出锁存器;有的甚至还包括多路开关、采样保持器等,已发展为一个单片的小型数据采集系统。

尽管ADC 芯片的品种、型号很多,其内部功能强弱、转换速度快慢、转换精度高低有很大差别,但从用户最关心的外特性看,无论哪种芯片,都必不可少地要包括以下四种基本信号引脚端:模拟信号输入端(单极性或双极性);数字量输出端(并行或串行);转换启动信号输入端;转换结束信号输出端。

除此之外,各种不同型号的芯片可能还会有一些其他各不相同的控制信号端。

选用ADC 芯片时,除了必须考虑各种技术要求外,通常还需了解芯片以下两方面的特性。

(1)数字输出的方式是否有可控三态输出。

有可控三态输出的ADC 芯片允许输出线与微机系统的数据总线直接相连,并在转换结束后利用读数信号RD 选通三态门,将转换结果送上总线。

没有可控三态输出(包括内部根本没有输出三态门和虽有三态门、但外部不可控两种情况)的ADC 芯片则不允许数据输出线与系统的数据总线直接相连,而必须通过I/O 接口与MPU 交换信息。

(2)启动转换的控制方式是脉冲控制式还是电平控制式。

对脉冲启动转换的ADC 芯片,只要在其启动转换引脚上施加一个宽度符合芯片要求的脉冲信号,就能启动转换并自动完成。

一般能和MPU 配套使用的芯片,MPU 的I/O 写脉冲都能满足ADC 芯片对启动脉冲的要求。

对电平启动转换的ADC 芯片,在转换过程中启动信号必须保持规定的电平不变,否则,如中途撤消规定的电平,就会停止转换而可能得到错误的结果。

为此,必须用D 触发器或可编程并行I/O 接口芯片的某一位来锁存这个电平,或用单稳等电路来对启动信号进行定时变换。

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

实训报告十
实训目的:
通过实现由ADC0808作为A/D转换器对RV1进行电压测量,并在数码管上显示;了解ADC0808的工作方式,进行模拟数据的采样,从而利用c语言编程实现单片机控制处理信息。

实训原理图:
实训步骤:
1.在ptoteus平台找出所需的元器件
2.理解该实验的原理,按照原理图画出仿真图;
3.根据实验要求写出如下程序:
#include <reg51.H>
unsigned char code dispcode[4]={0x10,0x20,0x40,0x00}; unsigned char temp;
unsigned char dispbuf[4];
unsigned char count=0;
unsigned char getdata;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^7;
void delay(unsigned int i)
{
unsigned int j;
for (j=0;j<i; j++);
}
void init()
{
EA=1;
ET0=1;
ET1=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;
}
void conversion()
{
ST=0;
ST=1;
ST=0;
while(EOC==0)
{;}
OE=1;
getdata=P0;
OE=0;
temp=getdata;
dispbuf[0]=getdata/100;
temp=temp-dispbuf[0]*100;
dispbuf[1]=temp/10;
temp=temp-dispbuf[1]*10;
dispbuf[2]=temp;
}
void T0X()interrupt 1
{
CLK=~CLK;
}
void T1X() interrupt 3
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
for(count=0;count<=3;count++)
{
P1=dispbuf[count]|dispcode[count];//输出显示控制代码
delay(50);
}
}
void main(void)
{
init();
while(1)
{
conversion();
}
}
总结:
经过此次的实验,通过实现由ADC0808作为A/D转换器对RV1进行电压测量,并在数码管上显示,深刻地理解了ADC0808的结构以及工作方式,ADC0808是典型的8通道模拟输入8位并行数字输出地逐次逼近式A/D转换器。

在C语言的设计上进一步理解了ADC的工作时钟模式从而进行模拟数据采样。

相关文档
最新文档