ADC进行AD转换_第1页
ADC进行AD转换_第2页
ADC进行AD转换_第3页
ADC进行AD转换_第4页
ADC进行AD转换_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ADC0809进行A/D转换(C描述)2008-06-24 16:53指针:可对内存地址直接操作      基于存贮器的指以贮器类为参量,它在编译时才被确定。因此为指针选择存贮器的方法可以省掉,以这些指针的长度可为1个字节(idata *,data *,pdata *)或2个这节(code *,xdata *)。      char xdata *address;      ADC0809具有8个模拟量输入通道,采用中断方式,在中断函数中读取8个

2、通道的A/D转换值,分别存储在外部RAM的1000H1007H单元。ADC0809端口地址为00F0H。      程序定义了两个指针变量* ADC和* ADCdata,分别指向ADC0809端口地址(00F0H)和外部RAM单元地址(1000H1007H)      由*ADC=I送入通道数,启动ADC0809进行A/D转换,转换结束时产生INT1中断。在中断服务函数int1()中通过temp=*ADC和*ADCdata=temp;读取A/D转换结果并存到外部RAM中。  

3、    #include<reg51.h>      unsigned int xdata *ADC; /*定义ADC0809端口指针*/      unsigned int xdata *ADCdata; /*定义ADC0809数据缓冲器指针*/      unsigned char I;void main( )      ADC=0x00f0; /*定

4、义端口地址和数据缓冲器地址*/      ADCdata=0x1000;       I=8; /* ADC0809有8个模拟输入通道*/      EA=1; EX1=1;IT1=1; /*开中断*/       *ADC=I; /*启动ADC0809*/      WHILE(I); /*等待8个通道A/D转换完*/void int1() in

5、terrupt 2      unsigned char tmp;      temp=*ADC; /*读取A/D转换结果*/      *ADCdata=temp; /*结果值存到数据缓冲区*/      ADCdata+; /*数据缓冲区地址加1*/      i;      *ADC=I; /

6、*启动下一个模拟输入通道A/D转换*/除了用指针变量来实现对内存地址的直接操作外,c51编译器还提供一组宏,该宏定义文件为:“absacc.h”,利用它可十分方便地实现对任何内存空间的直接操作,改写上面的程序:      #include<reg51.h>      #include<absacc.h> /*包含绝对地址操作预定义头文件*/      #define ADC 0x00f0; /*定义ADC0809端口地址*

7、/      #define ADCdata 0X1000 /*定义数据缓冲器地址*/      unsigned char I;void main( )      I=8; / *ADC0809有8个模拟输入通道*/      EA=1;ex1=1;it1=1; / *开中断*/      XBYTEADC=I; /*启动0809 */ 

8、;     While(i); /*等待8个通道转换完毕*/void int1() interrupt2       unsigned char tmp;      tmp=XBYTEADC; /*读取A/D转换结果*/      i-;      XBYTEADCdata+I=tmp; /*结果值存储到数据缓冲器*/   &#

9、160;  XBYTEADC=I; /*启动下一个模拟输入通道A/D转换*/利用单片机AT89S51与ADC0809设计一个数字电压表(图) 来源:机电论文 | 类别:技术 | 时间:2009-2-24 10:47:12 字体:大 中 小 1 实验任务 利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量05V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。 2 电路原理图 3 系统板上硬件连线 a) 把“单片机系统”区域中的P1.0P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 b) 把“单片机系统”区域中的P2.0P2.7与“动

10、态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。 c) 把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。 d) 把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。 e) 把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。 f) 把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。 g) 把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。 h) 把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”

11、区域中的VR1端子上。 i) 把“单片机系统”区域中的P0.0P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。 4 程序设计内容 由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK信号的方法就得用软件来产生了;由于ADC0809的参考电压VREFVCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。实际显示的电压值(D/256*VREF) 5 汇编源程序 6 C语言源程序 #include <

12、;AT89X52.H> unsigned char code dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00; unsigned char dispbuf8=10,10,10,10,0,0,0,0; unsigned char dispcount; unsigned char getdata; unsigned int temp; unsigned char i;

13、 sbit ST=P30; sbit OE=P31; sbit EOC=P32; sbit CLK=P33; void main(void) ST=0; OE=0; ET0=1; ET1=1; EA=1; TMOD=0x12; TH0=216; TL0=216; TH1=(65536-4000)/256; TL1=(65536-4000)%256; TR1=1; TR0=1; ST=1; ST=0; while(1) if(EOC=1) OE=1; getdata=P0; OE=0; temp=getdata*235; temp=temp/128; i=5; dispbuf0=10; disp

14、buf1=10; dispbuf2=10; dispbuf3=10; dispbuf4=10; dispbuf5=0; dispbuf6=0; dispbuf7=0; while(temp/10) dispbufi=temp%10; temp=temp/10; i+; dispbufi=temp; ST=1; ST=0; void t0(void) interrupt 1 using 0 CLK=CLK; void t1(void) interrupt 3 using 0 TH1=(65536-4000)/256; TL1=(65536-4000)%256; P1=dispcodedispbu

15、fdispcount; P2=dispbitcodedispcount; if(dispcount=7) P1=P1 | 0x80; dispcount+; if(dispcount=8) dispcount=0; ADC0809引脚图与接口电路A/D转换器芯片ADC0809简介 8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100s左右。图9.8 ADC0809引脚图1. ADC0809的内部结构ADC0809的内部逻辑结构图如图9-7所示。  图9.7 ADC0809内部逻辑结构   

16、0;   图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。                       

17、60;       表9-1 通道选择表2信号引脚          ADC0809芯片为28引脚为双列直插式封装,其引脚排列见图9.8。              对ADC0809主要信号引脚的功能说明如下:         

18、IN7IN0模拟量输入通道         ALE地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。         START转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持 低电平。本信号有时简写为ST.A、B、C地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。其地址状态与

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

20、基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V). MCS-51单片机与ADC0809的接口         ADC0809与MCS-51单片机的连接如图9.10所示。       电路连接主要涉及两个问题。一是8路模拟信号通道的选择,二是A/D转换完成后转换数据的传送。1. 8路模拟通道选择图9.10 ADC0809与MCS-51的连接     如图9.11所示模拟通道选择信号A、B、C分

21、别接最低三位地址A0、A1、A2即(P0.0、P0.1、P0.2),而地址锁存允许信号ALE由P2.0控制,则8路模拟通道的地址为0FEF8H0FEFFH.此外,通道地址选择以作写选通信号,这一部分电路连接如图9.12所示。图9.11 ADC0809的部分信号连接                图9.12 信号的时间配合        从图中可以看到,把ALE信号与START信

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

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

24、#160; A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可却只转换是否完成,并接着进行数据传送。(3)中断方式     把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。不管使用上述那种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。不管使用上述那种方式,只要一旦确认转换结束,便可通过指令进行数据传送。所用的指令为MOVX 读指令,仍以图9-17所示为例,则有MOV DPTR , #FE00HMOVX A , DP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论