ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:111.22KB ,
资源ID:6264654      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6264654.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ADC0809基本认识.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ADC0809基本认识.docx

1、ADC0809基本认识ADC0809引脚图与接口电路作者:来源:本站原创点击数: 更新时间:2007年07月29日A/D转换器芯片ADC0809简介 8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100s左右。图9.8 ADC0809引脚图1. ADC0809的内部结构ADC0809的内部逻辑结构图如图9-7所示。图9.7 ADC0809内部逻辑结构图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选

2、择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。 表9-1 通道选择表2信号引脚ADC0809芯片为28引脚为双列直插式封装,其引脚排列见图9.8。对ADC0809主要信号引脚的功能说明如下:IN7IN0模拟量输入通道ALE地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。START转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持 低电平。本信号有时简写为ST.A、B、C地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADD

3、A,ADDB和ADDC。其地址状态与通道对应关系见表9-1。CLK时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号EOC转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。D7D0数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高 OE输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。Vcc +5V电源。 Vref参考电源参考电压用来与输

4、入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V).9.2.2 MCS-51单片机与ADC0809的接口ADC0809与MCS-51单片机的连接如图9.10所示。电路连接主要涉及两个问题。一是8路模拟信号通道的选择,二是A/D转换完成后转换数据的传送。1. 8路模拟通道选择图9.10 ADC0809与MCS-51的连接如图9.11所示模拟通道选择信号A、B、C分别接最低三位地址A0、A1、A2即(P0.0、P0.1、P0.2),而地址锁存允许信号ALE由P2.0控制,则8路模拟通道的地址为0FEF8H0FEFFH.此外,通道地址选择以

5、作写选通信号,这一部分电路连接如图9.12所示。图9.11 ADC0809的部分信号连接 图9.12 信号的时间配合从图中可以看到,把ALE信号与START信号接在一起了,这样连接使得在信号的前沿写入(锁存)通道地址,紧接着在其后沿就启动转换。图9.19是有关信号的时间配合示意图。启动A/D转换只需要一条MOVX指令。在此之前,要将P2.0清零并将最低三位与所选择的通道好像对应的口地址送入数据指针DPTR中。例如要选择IN0通道时,可采用如下两条指令,即可启动A/D转换:MOV DPTR , #FE00H ;送入0809的口地址MOVX DPTR , A ;启动A/D转换(IN0)注意:此处的

6、A与A/D转换无关,可为任意值。2. 转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。(1)定时传送方式对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128s,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。(2)查询方式A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,

7、测试EOC的状态,即可却只转换是否完成,并接着进行数据传送。(3)中断方式把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。不管使用上述那种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。不管使用上述那种方式,只要一旦确认转换结束,便可通过指令进行数据传送。所用的指令为MOVX 读指令,仍以图9-17所示为例,则有MOV DPTR , #FE00HMOVX A , DPTR该指令在送出有效口地址的同时,发出有效信号,使0809的输出允许信号OE有 效,从而打开三态门输出,是转换后

8、的数据通过数据总线送入A累加器中。这里需要说明的示,ADC0809的三个地址端A、B、C即可如前所述与地址线相连,也可与数据线相连,例如与D0D2相连。这是启动A/D转换的指令与上述类似,只不过A的内容不能为任意数,而必须和所选输入通道号IN0IN7相一致。例如当A、B、C分别与D0、D1、D2相连时,启动IN7的A/D转换指令如下:MOV DPTR, #FE00H ;送入0809的口地址MOV A ,#07H ;D2D1D0=111选择IN7通道MOVX DPTR, A ;启动A/D转换9.2.3 A/D转换应用举例设有一个8路模拟量输入的巡回监测系统,采样数据依次存放在外部RAM 0A0H

9、0A7H单元中,按图9.10所示的接口电路,ADC0809的8个通道地址为0FEF8H0FEFFH.其数据采样的初始化程序和中断服务程序(假定只采样一次)如下:初始化程序:MOVR0, #0A0H;数据存储区首地址MOVR2, #08H;8路计数器SETBIT1;边沿触发方式SETBEA;中断允许SETBEX1;允许外部中断1中断MOVDPTR, #0FEF8H;D/A转换器地址LOOP:MOVXDPTR, A;启动A/D转换HERE:SJMPHERE;等待中断中断服务程序:DJNZR2, ADENDMOVXA, DPTR;数据采样MOVXR0, A;存数INCDPTR;指向下一模拟通道INC

10、R0;指向数据存储器下一单元MOVXDPTR, AADEND:RETIADC0809ADC0809是单片机教材上常常用到的模数转换芯片,它有8个模拟输入通道,每次可选其中一路,转换成8位二进制数。在PROTEUS仿真环境中,ADC0809并没有仿真功能(也许是版本的问题),仿真必须使用ADC0808。这两个芯片在PROTEUS中的图形可见下图:从图中可以看到,这两块芯片仅仅有少数引脚的标注字母不同,而对应的功能是完全相同的。用ADC0808,按照0809要求的时序进行仿真,完全可以仿真出ADC0809的效果。一般的教材中,一提到ADC0809,往往都要讲:用D触发器对ALE分频来提供CLK。实

11、际上,为ADC0809提供CLK脉冲,完全可以利用单片机闲置的引脚,大可不必另外使用硬件。有些人,也认识到了这个问题,他们采用了单片机定时器中断来输出脉冲,省掉了硬件D触发器。其实,用定时器,还是很浪费的。完全使用软件,也可以达到输出周期性脉冲的目的。做而论道注意到:在单片机软件中,基本上都要编写延时函数。在延时函数中实现输出CLK脉冲,就可以既不用外接硬件,也不占用单片机本身的硬件资源,同样也达到了延时目的,可谓一举多得。这个做法,在目前所见到各种书籍、各个网文中,还没有人提到 !这个做法,可说是做而论道的独创。呵呵,颇为自豪。下面就是利用ADC0808仿真ADC0809的画面:图中右边的拨

12、动开关用于选择模拟通道,选好的通道号码将在数码显示器的最高位显示。图中左边,可以输入8路模拟信号,但是限于幅面,仅仅画出了一路,读者可自行加入另外的7路。图中下方是一个频率计,测量出CLK的频率约有50KHz,在这个频率下,ADC0809大约用10ms即可进行一次转换,速度足够快了。适当修改延时函数达到参数,输出CLK的频率还可以高出很多。C语言程序如下:#include /-sbit ALE = P33; sbit OE = P34; sbit EOC = P35; sbit STA = P36; sbit CLK = P37;/-unsigned int num; /AD转换后的数字量ch

13、ar ch; /通道号码/-void delay(unsigned int z) /延时函数 unsigned int x, y; for(x = z; x 0; x-) for(y = 110; y 0; y-) CLK = CLK; /在延时函数中,给ADC0809送去CLK,也算是做而论道的一个独创吧 !/-void display(void) char code table = /共阴段码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, /07 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;

14、 /8F P0 = 0; P2 = 0xf7; P0 = tablech; delay(2);/通道号码 P0 = 0; P2 = 0xfb; P0 = tablenum / 100 + 128; delay(2);/百位加上小数点 P0 = 0; P2 = 0xfd; P0 = tablenum % 100 / 10; delay(2);/十位 P0 = 0; P2 = 0xfe; P0 = tablenum % 10; delay(2);/个位 P0 = 0; /关闭显示器/-void main(void) while(1) /无穷循环 ch = P2 / 32; /取来通道号码 P3 = ch + 0xf8; /送给ADC0809 ALE = 1; ALE = 0; /地址锁存 STA = 1; STA = 0; /开始转换,稍候,才可读EOC display(); /显示,既做延时,又输出CLK while(EOC = 0) display(); /等待转换结束 num = P1; /取出转换结果 num = num * 100 / 51; /比例变换:255 - 500 /-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1