ADC0804中文资料

ADC0804中文资料
ADC0804中文资料

AD0804简介

最近做到A/D转换器,我有的那块FPGA上的AD是AD0804,到网上一搜,发现关于这个型号的文章不多,大部分都是关于AD0809的。功夫不负有心人,我终于在一本书(《VHDL与数字电路设计》卢毅、赖杰编著,科学出版社)上找到关于AD0804的详细讲解,现在传上来以供大家参考。

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

2.分辨率与内部转换频率的计算

对8位ADC0804而言,它的输出准位共有28=256种,即它的分辨率是1/256,假设输入信号Vin为0~5V电压范围,则它最小输出电压是5V/256=0.01953V,这代表ADC0804所能转换的最小电压值。

表1列出的是8~12位A/D转换器的分辨率和最小电压转换值。

表1 A/D转换器的分辨率和最小电压值

至于内部的转换频率fCK,是由图2的CLKR(19脚)、CLK IN(4脚)所连接的

R()、C(150PF)来决定。

图2 ADC0804与CPLD&FPGA、8051单片机等典型连接图

频率计算方式是:fCK=1/(1.1×R×C)

若以图2的R=10KΩ、C=150PF为例,则内部的转换频率是

fCK=1/(1.1×10 KΩ×150PF)=606KHz

更换不同的R、C值,会有不同的转换频率,而且频率愈高代表速度愈快。但是需要注意R、C的组合,务必使频率范围是在100KHz~1460KHz之间。

3.ADC0804的控制方法

要求ADC0804进行模拟/数字的转换,其实可以直接由下面的时序图及图2信号

的流向来配合了解。

图3 ADC0804控制信号时序图

以图2、图3信号流向而言,控制ADC0804动作的信号应该只有CS、WR、RD。其中INTR由高电位转为低电位后,代表ADC0804完成这次的模拟/数字转换,而

DB0~DB7代表是转换后的数字资料。

图3的动作大概可分成4个步骤区间——S0、S1、S2、S3,每个步骤区间的动作

方式如下:

●步骤S0:CS=0、WR=0、RD=1(由CPLD发出信号要求ADC0804开始进

行模拟/数字信号的转换)。

●步骤S1:CS=1、WR=1、RD=1(ADC0804进行转换动作,转换完毕后INTR

将高电位降至低电位,而转换时间>100us)。

●步骤S2:CS=0、WR=1、RD=0(由CPLD发出信号以读取ADC0804的转

换资料)。

●步骤S3:CS=1、WR=1、RD=1(由CPLD读取DB0~DB7上的数字转换资

料)。

由上述步骤说明,可以归纳出所要设计的CPLD动作功能有:

●负责在每个步骤送出所需的CS、WR、RD控制信号。

●在步骤S1时,监控INTR信号是否由低电位变高电位,如此以便了解

ADC0804的转换动作结束与否。

●在步骤S3,读取转换的数字资料DB0~DB7

ADC0804芯片资料

ADC0804 A/D 转换器的基本原理 1.工作原理::所谓 A/D 转换器就是模拟/ 数字转换器(ADC ),是将输入的模拟信号转换成数字信号。信号输入端可以是传感器或转换器的输出,而 ADC 的数字信号也可能提供给微处理器,以便广泛地应用。 2. AD ADC0804引脚图如下: 3.引脚说明 /CS (引脚1)芯片选择信号,低电平有效 /RD(引脚 2) 外部读取转换结 果的控制输出信号。/RD 为 HI 时,DB0~DB7处理高阻抗:/RD 为 LO 时, 数字数据才会输出。 /WR (引脚 3)用来启动转换的控制输入,相当于 ADC 的转换开始(/CS=0 时), 当 /WR 由 HI 变为 LO 时,转换器被清除:当/WR 回到 HI 时,转换正式开始。 CS 、RD 、WR (引脚1、2、3):是数字控制输入端,满足标准TTL 逻辑电平。其中CS 和WR 用来控制A/D 转换的启 动信号。CS 、RD 用来读A/D 转换的结果,当它们同时为低电平时,输出数据锁存器DB0~DB7 各端上出现8 位并行二进制数码。 CLKI (引脚4)和CLKR (引脚19):ADC0801~0805 片内有时钟电路,只要在外部“CLKI”和“CLKR”两端外接一对电阻电容即可产生 A/D 转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC 。其典型应用参数为:R=10KΩ,C=150PF ,fCLK≈640KHZ ,转换速度为100μs。若采用外部时钟,则外部fCLK 可从CLKI 端送入,此时不接R 、C 。允许的时钟频率范围为100KHZ ~1460KHZ 。INTR (引脚5): INTR 是转换结束信号输出端,输出跳转为低电平表示本次转换已经完成,可作为微处理器的中断或查询信号。如果将CS 和WR 端与INTR 端相连,则ADC0804 就处于自动循环转换状态。CS =0 时,允许进行A/D 转换。WR 由低跳高时A/D 转换开始,8 位逐次比较需8×8=64 个时钟周期,再加上控制逻辑操作,一次转换需要66~73 个时钟周期。在典型应用fCLK =640KHZ 时,转换时间约为103μs~114μs。当fCLK 超过640KHZ ,转换精度下降,超过极限值1460KHZ 时便不能正常工作。V IN(+)(引脚 6)和V IN(-)(引脚7):被转换的电压信号从V IN(+)和V IN(-)输入,允许此信号是差动的或不共地的电压信号。如果输入电压V IN的变化范围从0V 到Vmax ,则芯片的V IN(-)端接地,输入电压加到V IN(+)引脚。由于该芯片允许差动输入,在共模输入电压允许的情况下,输入电压范围可以从非零伏开始,即Vmin 至 Vmas 。此时芯片的V IN(-)端应该接入等于Vmin 的恒值电码坟上,而输入电压V IN仍然加到V IN(+)引脚上。AGND (引脚8)和DGND (引脚10):A/D 转换器一般都有 8 位 COMS 依次逼近型的 A/D 转换器. 三 态锁定输 出 存取时间:135US 分辨率:8 位 转换时间: 100US 总误差:正负 1LSB 工作温度: ADC0804LCN---0~70 度

ADC0804的详细控制程序和仿真(595芯片和四位一体数码管)图

仿真电路图,经过测试,没问题下面是上个图的分解图

模拟电路:设计模拟电路的原因主要有以下两点 1.由于外界信号的复杂性,使得传感器直接输出的电信号可能会存在一些问题(如不稳定),这些不稳定信号如果直接送到A/D 芯片进行采样,则最终结果可能使得最后的显示值来回乱跳,而无法确定待测的外界信号到底是多少。因此,可能需要设计一套模拟电路对传感器输出的不稳定电信号进行滤波等处理,去除干扰,使得进入A/D 转换芯片的电压值为一个稳定的信号。 2.每一个A/D 转换芯片都有一个参考电压,只有输入的模拟电压值在这个参考电压的范围内才能进行正确的转换,例如:本试验将ADC0804芯片的参考电压设置成0V ~5V ,因此如果输入的电压值大于5V ,则转换出的结果永远为0xFF,若输入的电压值小于0V,则转换出的结果永远为0,这样便无法正确的还原出被

测信号的大小。基于上述原因,我们可能需要设计一套模拟电路,传感器的输出电压值进行一些变换(放大,缩小),使得送到A/D转换芯片的电压值在转换芯片的参考电压范围内。 A/D转换芯片:即模拟/数字转换芯片,它将输入的模拟电压信号转换成单片机等控制处理器能够识别的数字二进制形式。 处理器芯片:处理器芯片有很多中(比如51单片机,ARM或者是PC上的奔腾处理器,AMD处理器)这些处理器虽然架构不一样,但是有个共同的特点,就是它们能够运行程序,因此它们能通过程序对A/D芯片送入的二进制形式的电压值进行处理,通过运算将其还原成待测的外界信号值,控制显示部件(如LCD,八段数码管)将这个值显示出来。例如:假如ADC0804输出的二进制值0x80,则根据A/D转换公式可以推出ADC0804的输入电压大小为(0x80/0x100)*5V=2.5V。假设信号经过模拟电路缩小了8倍,则可以推出传感器的输出电压为2.5V*8=20V,再根据传感器的转换公式(一般手册会给出)即可得到输入的外界信号的值。 显示:显示的作用是将计算出的待测外界信号的值展示给测量人员,显示的形式有很多种,如LCD,八段数码管,上位机软件等。 通过上面的介绍,大家一定对这种基于A/D芯片的嵌入式设计模式有了一个大致的了解,其实现时中很多应用都是遵循了这种设计模式,比如常用的数字万用表,数字温度测量仪,血糖测量仪等。 本试验也遵循了这种设计模式,只不过它省略了传感器和模拟电路部分,首先通过滑动变阻器调节输入到ADC0804芯片的电压值(ADC0804芯片的参考电压调节成0V~5V,而滑动变阻器产生的电压范围也为0V~5V,因此没有必要设计额外的模拟电路),然后通过51单片机进行运算处理得到这个输入电压值,最后再控制八段数码管将这个电压值显示出来,实际上是实现了一个简易的数字电压测量表。图2是试验框图。 图2:本试验示意图 接下来我们首先介绍实现本试验的电路设计,然后介绍软件实现方法。2.2 硬件设计 本部分,我们首先介绍ADC0804芯片的一些相关知识,然后介绍基于ADC0804和51单片机实现A/D转换的电路设计。

ADC0804工作原理及其在单片机中的应用(基于Proteus仿真).doc

ADC0804工作原理及其在单片机中的应用 基于Proteus仿真 前言:本文详细说明了ADC0804工作原理及过程,还附有一个ADC0804在单片机中的典型应用,包含原理图,源程序,程序注释详细清楚,这有助于更好地理解与应用ADC0804芯片。 1、A/D转换概念:即模数转换(Analog to Digital Conversion),输入模拟量(比如电压信号),输出一个与模拟量相对应的数字量(常为二进制形式)。例如参考电压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引脚功能: :芯片片选信号,低电平有效。即=0时, 该芯片才能正常工作,高电平时芯片不工作。 在外接多个ADC0804芯片时,该信号可以作为 选择地址使用,通过不同的地址信号使能不同 的ADC0804芯片,从而可以实现多个ADC通 道的分时复用。 :启动ADC0804进行ADC采样,该信号

ADC0804实验报告

实验报告 实验名称: [ADC0804控制显示] 姓名: [] 学号: [28] 指导教师: [] 实验时间: [2014年3月20日] 信息与通信工程学院

ADC0804控制显示 1实验目的 了解ADC0804的工作原理,并进行简单的设计。 理解状态机的工作原理和设计方法。 2实验要求 从ADC0804的通道IN+输入0~5V之间的模拟量,通过ADC0804转换成数字量,并用FPGA控制数码管上以十进制形成显示出来。 3实验原理 所谓A/D 转换器就是模拟/数字转换器(Analog to Digital Converter 简称ADC)是将输入的模拟信号转换成为数字信号。ADC0804是属于连续渐进式(Successive Approximation Method)的A/D转换器,这类型的A/D转换器除了转换速度快(几十至几百us)、分辨率高外,还有价钱便宜的优点,普遍被应用于微电脑的接口设计上。 ADC0804主要技术指标如下: (1) 高阻抗状态输出 (2) 分辨率:8 位(0~255) (3) 存取时间:135 ms (4) 转换时间:100 ms (5) 总误差:-1~+1LSB (6) 工作温度:ADC0804C为0度~70度;ADC0804L为-40 度~85 度 (7) 模拟输入电压范围:0V~5V (8) 参考电压:2.5V (9) 工作电压:5V (10) 输出为三态结构 ADC0804引脚功能 接脚说明见下图1:ADC0804 为一只具有20引脚8位CMOS 连续近似的A/D 转换器,

图1 ADC0804引脚图 引脚功能说明: 1. PIN1 (CS ):Chip Select,与RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低位准(low) 时会active。 2. PIN2 ( RD ):Read。当CS 、RD 皆为低位准(low) 时,ADC0804 会将转换后的数字讯号经由DB7 ~ DB0 输出至其它处理单元。 3. PIN3 (WR ):启动转换的控制讯号。当CS 、WR 皆为低位准(low) 时ADC0804 做清除的动作,系统重置。当WR 由0→1且CS =0 时,ADC0804会开始转换信号,此时INTR 设定为高位准(high)。 4. PIN4、PIN19 (CLK IN、CLKR):频率输入/输出。频率输入可连接处理单元的讯号频率范围为100 kHz 至800 kHz。而频率输出频率最大值无法大于640KHz,一般可选用外部或内部来提供频率。若在CLK R 及CLK IN 加上电阻及电容,则可产生ADC 工作所需的时序,其频率约为: 5. PIN5 ( INTR ):中断请求。转换期间为高位准(high),等到转换完毕时INTR 会变为低位准(low)告知其它的处理单元已转换完成,可读取数字数据。 6. PIN6、PIN7 (VIN(+)、VIN(-)):差动模拟讯号的输入端。输入电压VIN=VIN(+) -VIN(-),通常使用单端输入,而将VIN(-)接地。 7. PIN8 (A GND):模拟电压的接地端。 8. PIN9 (VREF) ADC0804引脚图如下:

ADC0804引脚

ADC0804是一个8位、单通道、低价格A/D转换器,主要特点是:摸数转换时间大约100us;方便的TTL或CMOS标准接口;可以满足差分电压输入;具有参考电压输入端;内含时钟发生器;单电源工作时(0V~5V)输入信号电压范围是0V~5V;不需要调零等等。(引脚1):片选信号。低电平有效,高电平时芯片不工作。 (引脚2):外部读数据控制信号。此信号低电平时ADC0804把转换完成的数据加载到DB 口。 (引脚3):外部写数据控制信号。此信号的上升沿可以启动ADC0804的A/D转换过程。CLK IN(引脚4):时钟输入引脚。ADC0804使用RC振荡器作为A/D时钟,CLK IN是振动的输入端。 (引脚5):转换结束输出信号。ADC0804完成一次A/D转换后,此引脚输出一个低脉冲。对单片机可以称为中断触发信号。 Vin(+)(引脚6):输入信号电压的正极。 Vin(-)(引脚7):输入信号电压的负极。可以连接到电源地。 AGND(引脚8):模拟电源的地线。 Vref/2(引脚9):参考电源输入端。参考电源取输入信号电压(最大值)的二分之一。例如输入信号电压是0V~5V时,参考电源取2.;输入信号电压是0V~4V时,参考电源取2. 0V。DGND(引脚10):数字电源的地线。 DB8~DB0(引脚11~引脚18):数字信号输出口,连接单片机的数据总线。 CLK R(引脚19):时钟输入端。 VCC(引脚20):5V电源引脚。 补充说明:CLKI(引脚4)和CLKR(引脚19):ADC0801~0805 片内有时钟电路,只要在外部“CLKI”和“CLKR”两端外接一对电阻电容即可产生A/D 转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC。其典型应用参数为:R=10KΩ,C=150PF,fCLK≈640KHz,转换速度为100μs。若采用外部时钟,则外部fCLK 可从CLKI 端送入,此时不接R、C。允许的时钟频率范围为100KHz~1460KHz。 模数转换器ADC0804的工作分为三个过程: ①位中断触发信号信号表明ADC0804转换已经结束,它提示单片机随时可以读 取转换结果,是ADC0804的一个输出信号。一般情况下,启动A/D转换前应该复位这个信号,以等待新的转换完成后ADC0804发出新的信号,这样才可以读到新的转换结果。

AD转换芯片ADC0804

AD0804简介 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) 转载

ADC0804全面知识知识

ADC0804 1 功能:A/D转换器就是模拟/数字转换器(ADC),是将输入的模拟信号转换成数字信 号。信号输入端可以是传感器或转换器的输出,而ADC的数字信号也可能提供给微处理器,以便更广泛的应用。 2 ADC0804的规格及引脚图 8位CMOS依次逼近型的A/D转换器。 三态锁定输出 存取时间:135us 分辨率:8位 转换时间:100us 总误差:正负1LSB 工作温度:ADC0804LCN—0_70度 引脚图及说明图: Cs/芯片选择信号

/RD外部读取转换结果的控制输出信号。/RD为高电平,8个数字输出口处理高阻抗,/RD 为低电平时数字数据才会输出 /WR:用来启动转换的控制输入,相当于ADC转换的开始(CS=0时),/WR由高电平变为低电平,转换器被清除,/WR回到高电平时,转换正式开始。 CLK IN ,CLK R:时钟输入或接振荡元件(R.C),频率限制在100KHZ~1460KHZ,如果使用RC电路,振荡频率为1/(1.1RC) /INTR:中断请求信号输出,低电平动作.INTR 是转换结束信号输出端,输出跳转为低电平表示本次转换已经完成,可作为微处理器的中断或查询信号。如果将CS 和WR 端与INTR 端相连,则ADC0804 就处于自动循环转换状态。 VIN(+)VIN(-):差动模拟电压输入,输入单端正电压时,VIN(-)接地。差动输入时直接接VIN(+)VIN(-)。 AGND DGND:模拟信号以及数字信号的接触。 VREF/2:辅助参考电压 DB0~DB7:8位的数字输出 VCC:电源供应以及作为电路的参考电压。 引脚功能及应用特性如下:CS 、RD 、WR (引脚1、2、3):是数字控制输入端,满足标准TTL 逻辑电平。其中CS 和WR用来控制A/D 转换的启动信号。CS 、RD 用来读A/D 转换的结果,当它们同时为低电平时,输出数据锁存器DB0~DB7 各端上出现8 位并行二进制数码。 CLKIN(引脚4)和CLKR(引脚19):ADC0801~0805 片内有时钟电路,只要在外 部“CLKI”和“CLKR”两端外接一对电阻电容即可产生A/D 转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC。其典型应用参数为:R=10KΩ,C=150PF,fCLK≈640KHZ转换速度为100μs。若采用外部时钟,则外部fCLK 可从CLKIN端送入,此时不接R、C 允许的时钟频率范围为100KHZ~1460KHZ。 CS =0 时,允许进行A/D 转换。WR 由低跳高时A/D 转换开始,8 位逐次比较 需8×8=64 个时钟周期,再加上控制逻辑操作,一次转换需要66~73 个时钟周期。 在典型应用fCLK=640KHZ 时,转换时间约为103μs~114μs。当fCLK 超过640KHZ,转换精度下降,超过极限值1460KHZ 时便不能正常工作。 3 常用电路: A 经典的电路

ADC0804模数转换与显示

ADC数模转换与现实 (扩展用1602带电阻值显示) 实验目的: 1.掌握ADC的使用控制方法。 2.实验内容:基本要求:设计一程序采集ADC0809第3通道的电 压值,将其转换为数字量,并在数码管上显示;5V显示为255, 0V 显示为000。 3.扩展要求:将转换结果以用1602表现出当前电阻值。 C程序: #include //52系列单片机头文件 #include //包含_nop_函数所在的头文件 #define uint unsigned int //宏定义 #define uchar unsigned char sbit CS=P2^1; //ADC0804 CS 端 sbitwr=P2^4; //ADC0804 WR 端 sbitrd=P2^5; //ADC0804 RD 端 sbit lcd1=P2^3; //lcd锁存器 sbitlcden=P2^2; //lcd1602 EN 端 sbitlcdrs=P2^0; //lcd1602 RS 端 sbitdula=P2^7; //段选端 sbitwela=P2^6; //位选端 // float r;

uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uintxms) //延时函数 { uinti,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void display(ucharbai,ucharshi,ucharge) //数码管显示函数{ dula=1; //打开段选 P0=table[bai]; //送入百位 dula=0; //关闭段选 P0=0xff; //消隐 wela=1; //打开位选 P0=0x7e; //选择第一位

模数转换ADC0804的应用

模数转换ADC0804的应用(含源程序及电路) [实验要求] 从ADC0804 的模拟量通道输入0-5V 之间的模拟量,通过ADC0804 转换成数字量送给单片机,经单片机处理后在数码管上以十进制形成显示出来。 [实验目的] 学习如果用单片机控制ADC0804芯片进行数模转换,掌握数码管动态扫描显示的原理。 动态扫描:就六位数码管显示123456举例说明如下:先让第一个数码管显示1,其余的全部不亮,1大约亮几毫秒,然后熄灭,紧接着立即让第二个数码管显示2,其余的全部不亮,2同样亮几毫秒,依次这样亮到第六个数码管,然后再回来显示1,如此这样以很快的速度不断循环下去,由于人眼的视觉暂留时间大约为20毫秒左右,所以是感觉不出有不亮的数码管存在的,看见的是六个数码管同时在显示,数值是123456,如果我们把这个过程一点点放慢,看见的是从第一个数码管显1,然后移到第二个再显2,。。。也就是说在任一时刻只有一位数码管是亮的。这就是数码管动态扫描显示的原理 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 的控制下可以读取数据结果。本实验没有使用INTR信号。 [硬件电路] [源代码]

//拧动AD旁边的电位器,会在数码管的前三位显示0-255之间的数//值。这就是把模拟信号转换成数字信号,即模数转换。 #include #include #define uint unsigned int #define uchar unsigned char sbit adrd=P3^7; //IO口定义 sbit adwr=P3^6; sbit diola=P2^5; sbit dula=P2^6; sbit wela=P2^7; unsigned char j,k,adval; void delay(unsigned char i) //延时程序 { for(j=i;j>0;j--) for(k=125;k>0;k--); } uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管编码 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void display(uchar bai_c,uchar sh_c,uchar g_c) //显示程序 { P0=table[bai_c]; //显示百位 dula=1; dula=0;

51单片机ADC0804芯片AD转换通用程序

#include #include #include #include "hmzx.h" ADDate Date; uchar i; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void main() { while(1) { Init(); ADStart(); //启动A/D转换 // P1=0xff; ADRead=0; Date.Val=P1; ADRead=1; // P1=Date.Val; for(i=30;i>0;i--) { display(); } } } void Init(void) { WELA=1; P0=0; WELA=0; DULA=1; P0=0xff; DULA=0; } void ADStart(void) { ADWrite=1; ADWrite=0; ADWrite=1; } void display(void)

{ Date.Bai=Date.Val/100; //百位 Date.Shi=Date.Val/10%10;//十位 Date.Gei=Date.Val%10; //个位 WELA=1; P0=0xfe;//第一位 WELA=0; DULA=1; P0=table[Date.Bai]; DULA=0; delay(5); WELA=1; P0=0xfd; //第二位 WELA=0; DULA=1; P0=table[Date.Shi]; DULA=0; delay(5); WELA=1; P0=0xfb; //第三位 WELA=0; DULA=1; P0=table[Date.Gei]; DULA=0; delay(5); } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

51单片机ADC0804模数转换学习

51单片机ADC0804模数转换学习 数模转换器ADC0804 与单片机连接的原理图: 这TX-1C 实验板上的ADC0804 和单片机连接的电路原理图。 左边的是ADC0804,右边的是74HC573 锁存器,锁存器同时又连接了单片 机没画出。ADC0804 的引脚CSAD 是片选引脚,因为是低电平有效所以当 送0 时,我们就可以选中它工作了。RD 也是低电平有效,是读信号的,WR 也是低电平有效,当送0 时就可以启动A/D 开始转换了。INTR 是转换结 束引脚,同样也是低电平有效,当INTR 为0 时,表示转换结束了。DB0- DB7 是转换后的数字信号输出端口。AGND 和DGND 是接地的。CLK R 和 CLK IN(即19 和4 引脚)是用来给ADC0804 产生内部时钟脉冲的(接了一 个RC 震荡电路)6 和7 端口是模拟信号的输入端,比如我们滑动电位器就 能使模拟信号发生改变,这样经过A/D 转换后,输出的数字信号也就改变了。 20 引脚是接参考电平的。 下面这个程序是用单片机控制ADC0804 进行模数转换,当拧动实验板上的 电位器(也就是一个滑动变阻器)时,数码管的前三位以十进制方式动态显示 A/D 转换后的数字量。代码如下:#include reg52.h //52 系列单片机头文件 #include intrins.h //因为下面的程序用到了_nop_()函数,因此包含这个头文件 #define uchar unsigned char#define uint unsigned int sbit dula=P2;//申明U1 锁存器的锁存端sbit wela=P2;//申明U2 锁存器的锁存端sbit adwr=P3;// 定义AD 的WR(写信号)端口sbit adrd=P3;//定义AD 的RD(读信号) 端口uchar code table[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,

ADC0804的详细控制程序和仿真图

仿真电路图,经过测试,没问题 两个图是一体的。 模拟电路:设计模拟电路的原因主要有以下两点 1.由于外界信号的复杂性,使得传感器直接输出的电信号可能会存在一些问题(如不稳定),这些不稳定信号如果直接送到A/D芯片进行采样,则最终结果可能使得最后的显示值来回乱跳,而无法确定待测的外界信号到底是多少。因此,可能需要设计一套模拟电路对传感器输出的不稳定电信号进行滤波等处理,去除干扰,使得进入A/D转换芯片的电压值为一个稳定的信号。 2.每一个A/D转换芯片都有一个参考电压,只有输入的模拟电压值在这个参考电压的范围内才能进行正确的转换,例如:本试验将ADC0804芯片的参考电压设置成0V~5V,因此如果输入的电压值大于5V,则转换出的结果永远为0xFF,若输入的电压值小于0V,则转换出的结果永远为0,这样便无法正确的还原出被测信号的大小。基于上述原因,我们可能需要设计一套模拟电路,传感器的输出电压值进行一些变换(放大,缩小),使得送到A/D转换芯片的电压值在转换芯

片的参考电压范围内。 A/D转换芯片:即模拟/数字转换芯片,它将输入的模拟电压信号转换成单片机等控制处理器能够识别的数字二进制形式。 处理器芯片:处理器芯片有很多中(比如51单片机,ARM或者是PC上的奔腾处理器,AMD处理器)这些处理器虽然架构不一样,但是有个共同的特点,就是它们能够运行程序,因此它们能通过程序对A/D芯片送入的二进制形式的电压值进行处理,通过运算将其还原成待测的外界信号值,控制显示部件(如LCD,八段数码管)将这个值显示出来。例如:假如ADC0804输出的二进制值0x80,则根据A/D转换公式可以推出ADC0804的输入电压大小为(0x80/0x100)*5V=2.5V。假设信号经过模拟电路缩小了8倍,则可以推出传感器的输出电压为2.5V*8=20V,再根据传感器的转换公式(一般手册会给出)即可得到输入的外界信号的值。 显示:显示的作用是将计算出的待测外界信号的值展示给测量人员,显示的形式有很多种,如LCD,八段数码管,上位机软件等。 通过上面的介绍,大家一定对这种基于A/D芯片的嵌入式设计模式有了一个大致的了解,其实现时中很多应用都是遵循了这种设计模式,比如常用的数字万用表,数字温度测量仪,血糖测量仪等。 本试验也遵循了这种设计模式,只不过它省略了传感器和模拟电路部分,首先通过滑动变阻器调节输入到ADC0804芯片的电压值(ADC0804芯片的参考电压调节成0V~5V,而滑动变阻器产生的电压范围也为0V~5V,因此没有必要设计额外的模拟电路),然后通过51单片机进行运算处理得到这个输入电压值,最后再控制八段数码管将这个电压值显示出来,实际上是实现了一个简易的数字电压测量表。图2是试验框图。 图2:本试验示意图 接下来我们首先介绍实现本试验的电路设计,然后介绍软件实现方法。2.2 硬件设计 本部分,我们首先介绍ADC0804芯片的一些相关知识,然后介绍基于ADC0804和51单片机实现A/D转换的电路设计。

ADC0804的引脚图如下图3

ADC0804的引脚图如下图 引脚及功能特性如下: CS 、RD 、WR (引脚1、2、3):是数字控制输入端,满足标准TTL 逻辑电 平。其中CS 和WR 用来控制A/D 转换的启动信号。CS 、RD 用来读A/D 转换的结 果,当它们同时为低电平时,输出数据锁存器DB0~DB7 各端上出现8 位并行二进制数 码。 LKI(引脚4)和CLKR(引脚19):ADC0801~0805 片内有时钟电路,只要在外部“CLKI”和“CLKR”两端外接一对电阻电容即可产生A/D 转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC。其典型应用参数为:R=10KΩ,C=150PF,fCLK≈640KHZ,转换速度为100μs。若采用外部时钟,则外部fCLK 可从CLKI 端送入,此时不接R、C。 允许的时钟频率范围为100KHZ~1460KHZ。 INTR (引脚5): INTR 是转换结束信号输出端,输出跳转为低电平表示本次转换已经完成,可作为微处理器的中断或查询信号。如果将CS 和WR 端与INTR 端相连,则ADC0804 就处于自动循环转换状态。CS =0 时,允许进行A/D 转换。 WR 由低跳高时A/D 转换开始,8 位逐次比较需8×8=64 个时钟周期,再加上控制逻辑操作,一次转换需要66~73 个时钟周期。在典型应用fCLK=640KHZ 时,转换时间约为103μs~114μs。当fCLK 超过640KHZ,转换精度下降,超过极限值1460KHZ 时便不能正常工作。 VIN(+)(引脚)和VIN(-)(引脚7):被转换的电压信号从VIN(+)和VIN(-)输入,允许此信号是差动的或不共地的电压信号。如果输入电压VIN的变化范围从0V到Vmax,则芯片的VIN(-)端接地,输入电压加到VIN (+)引脚。由于该芯片允许差动输入,在共模输入电压允的情况下,输入电压范围可以从非零伏开始,即Vmin 至Vmas。此时芯片的VIN(-)端应该接入等于Vmin 的恒值电码坟上,而输入电压VIN仍然加到VIN(+)引脚上。 AGND(引脚8)和DGND(引脚10):A/D 转换器一般都有这两个引脚。模拟地AGND 和数字地DGND 分别设置引入端,使数字电路的地电流不影响模拟信号回路,以防止寄生耦合造成的干扰。 VREF/2(引脚9):参考电压VREF/2 可以由外部电路供给,从“V REF/2”端直接送入,VREF/2 端电压值应是输入电压范围的二分之一。所以输入电压的范围可以通过调整VREF/2 引脚处的电压加以改变,转换器的零点无需调整。

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引脚功能: CS:芯片片选信号,低电平有效。即CS=0 时,该芯片才能正常工作,高电平时芯片不工作。 在外接多个ADC0804芯片时,该信号可以作为 选择地址使用,通过不同的地址信号使能不同 的ADC0804芯片,从而可以实现多个ADC通 道的分时复用。 WR:启动ADC0804进行ADC采样,该 信号低电平有效,即WR信号由低电平变成高电 平时,触发一次ADC转换。 RD:低电平有效,即RD=0时,DAC0804 把转换完成的数据加载到DB口,可以通过数 据端口DB0~DB7读出本次的采样结果。 VIN(+)和VIN(-):模拟电压输入端,单边输入时模拟电压输入接VIN(+)端,VIN

ADC0804的原理

模拟/数字转换器(相关知识) A/D转换器的基本原理----ADC0804 1,所谓A/D转换器就是模拟/数字转换器(ADC),是将输入的模拟信号转换成数字信号。信号输入端可以是传感器或转换器的输出,而ADC的数字信号也可能提供给微处理器,以便广泛地应用。 2, ADC0804的规格及引脚图 8位COMS依次逼近型的A/D转换器. 三态锁定输出 存取时间:135US 分辨率:8位 转换时间:100US 总误差:正负1LSB 工作温度:ADC0804LCN---0~70度 引脚图及说明见图1 /CS 芯片选择信号。 /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.800 0.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 1010 10/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/1 6 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

adc0804资料

ADC0804中文资料 ADC0804主要技术指标如下: (1) 高阻抗状态输出 (2) 分辨率:8 位(0~255) (3) 存取时间:135 ms (4) 转换时间:100 ms (5) 总误差:-1~+1LSB (6) 工作温度:ADC0804C为0度~70度;ADC0804L为-40 度~85 度 (7) 模拟输入电压范围:0V~5V (8) 参考电压:2.5V (9) 工作电压:5V (10) 输出为三态结构 ADC0804引脚功能 接脚说明见下图1:ADC0804 为一只具有20引脚8位CMOS 连续近似的A/D 转换器, 图1 ADC0804引脚图 引脚功能说明:

1. PIN1 (CS ):Chip Select,与RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低位准(low) 时会active。 2. PIN2 ( RD ):Read。当CS 、RD 皆为低位准(low) 时,ADC0804 会将转换后的数字讯号经由DB7 ~ DB0 输出至其它处理单元。 3. PIN3 (WR ):启动转换的控制讯号。当CS 、WR 皆为低位准(low) 时ADC0804 做清除的动作,系统重置。当WR 由0→1且CS =0 时,ADC0804会开始转换信号,此时INTR 设定为高位准(high)。 4. PIN4、PIN19 (CLK IN、CLKR):频率输入/输出。频率输入可连接处理单元的讯号频率范围为100 kHz 至800 kHz。而频率输出频率最大值无法大于640KHz,一般可选用外部或内部来提供频率。若在CLK R 及CLK IN 加上电阻及电容,则可产生ADC 工作所需的时序,其频率约为: 5. PIN5 ( INTR ):中断请求。转换期间为高位准(high),等到转换完毕时INTR 会变为低位准(low)告知其它的处理单元已转换完成,可读取数字数据。 6. PIN6、PIN7 (VIN(+)、VIN(-)):差动模拟讯号的输入端。输入电压VIN=VIN(+) -VIN(-),通常使用单端输入,而将VIN(-)接地。 7. PIN8 (A GND):模拟电压的接地端。 8. PIN9 (VREF ADC0804引脚图如下: 引脚功能及应用特性如下: CS 、RD 、WR (引脚1、2、3):是数字控制输入端,满足标准TTL 逻辑电 平。其中CS 和WR 用来控制A/D 转换的启动信号。CS 、RD 用来读A/D 转换的结 果,当它们同时为低电平时,输出数据锁存器DB0~DB7 各端上出现8 位并行二进制数 码。 CLKI(引脚4)和CLKR(引脚19):ADC0801~0805 片内有时钟电路,只要在外 部“CLKI”和“CLKR”两端外接一对电阻电容即可产生A/D 转换所要求的时钟,其

ADC0804中文资料

ghvhgvj ●转换时间: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 2.分辨率与内部转换频率的计算 对8位ADC0804而言,它的输出准位共有28=256种,即它的分辨率是1/256,假设输入信号Vin为0~5V电压范围,则它最小输出电压是5V/256=0.01953V,这代表ADC0804所能转换的最小电压值。 表1列出的是8~12位A/D转换器的分辨率和最小电压转换值。 表1 A/D转换器的分辨率和最小电压值 至于内部的转换频率fCK,是由图2的CLKR(19脚)、CLK IN(4脚)所连接的 R()、C(150PF)来决定。

相关主题
相关文档
最新文档