ADC0809进行AD转换.doc

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
ADC0809进行AD转换

ADC0809进行A/D转换(C描述) 2008-06-24 16:53 指针:可对内存地址直接操作 ????? 基于存贮器的指以贮器类为参量,它在编译时才被确定。因此为指针选择存贮器的方法可以省掉,以这些指针的长度可为1个字节(idata *,data *,pdata *)或2个这节(code *,xdata *)。 ????? char xdata *address; ????? ADC0809具有8个模拟量输入通道,采用中断方式,在中断函数中读取8个通道的A/D转换值,分别存储在外部RAM的1000H~1007H单元。ADC0809端口地址为00F0H。 ????? 程序定义了两个指针变量* ADC和* ADCdata,分别指向ADC0809端口地址(00F0H)和外部RAM单元地址(1000H~1007H) ????? 由*ADC=I送入通道数,启动ADC0809进行A/D转换,转换结束时产生INT1中断。在中断服务函数int1()中通过temp=*ADC和*ADCdata=temp;读取A/D转换结果并存到外部RAM中。 ????? #includereg51.h ????? unsigned int xdata *ADC; /*定义ADC0809端口指针*/ ????? unsigned int xdata *ADCdata; /*定义ADC0809数据缓冲器指针*/ ????? unsigned char I; void main( ) { ????? ADC=0x00f0; /*定义端口地址和数据缓冲器地址*/ ????? ADCdata=0x1000; ????? I=8; /* ADC0809有8个模拟输入通道*/ ????? EA=1; EX1=1;IT1=1; /*开中断*/ ????? *ADC=I; /*启动ADC0809*/ ????? WHILE(I); /*等待8个通道A/D转换完*/ } void int1() interrupt 2 { ????? unsigned char tmp; ????? temp=*ADC; /*读取A/D转换结果*/ ????? *ADCdata=temp; /*结果值存到数据缓冲区*/ ????? ADCdata++; /*数据缓冲区地址加1*/ ????? i—; ????? *ADC=I; /*启动下一个模拟输入通道A/D转换*/ } 除了用指针变量来实现对内存地址的直接操作外,c51编译器还提供一组宏,该宏定义文件为:“absacc.h”,利用它可十分方便地实现对任何内存空间的直接操作,改写上面的程序: ????? #includereg51.h ????? #includeabsacc.h /*包含绝对地址操作预定义头文件*/ ????? #define ADC 0x00f0; /*定义ADC0809端口地址*/ ????? #define ADCdata 0X1000 /*定义数据缓冲器地址*/ ????? unsigned char I; void main( ) { ????? I=8; / *ADC0809有8个模拟输入通道*/ ????? EA=1;ex1=1;it1=1; / *开中断*/ ????? XBYTE[ADC]=I; /*启动0809 */ ????? While(i); /*等待8个通道转换完毕*/ } void int1() interrupt2 { ????? unsigned char tmp; ????? tmp=XBYTE[ADC]; /*读取A/D转换结果*/ ????? i--; ????? XBYTE[ADCdata+I]=tmp; /**结果值存储到数据缓冲器*/ ????? XBYTE[ADC]=I; /*启动下一个模拟输入通道A/D转换*/ } [ 来源:机电论文 | 类别:技术 | 时间:2009-2-24 10:47:12 ] [字体:大 中 小] 1. 实验任务 利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。 2. 电路原理图     3. 系统板上硬件连线 a) 把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 b) 把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。 c) 把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档