- 1、本文档共169页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序如下:# include absacc.h # include reg51.h # define uchar unsigned char# define IN0 XBYTE [ 0x7ff8 ]/* 设置AD0809的通道0地址 */sbit ad_busy =P3^3 ;/* 即EOC状态 */void ad0809 ( uchar idata *x )/* 采样结果放指针中的A/D采集函数 */{ uchar i ;uchar xdata *ad_adr ;ad_adr= IN0 ;for ( i=0 ; i8 ;i++ )/* 处理8通道 */{ *ad_adr=0 ;/* 启动转换 */ i=i ;/* 延时等待EOC变低 */i=i ;while (ad_busy = =0 ) ; /* 查询等待转换结束 */x[i ]= * ad_adr ;/* 存转换结果 */ad_adr ++ ;/* 下一通道 */}}void main ( void ){ static uchar idata ad [ 10 ] ;ad0809 ( ad ) ;/* 采样AD0809通道的值 */} 例10 AD574与8031接口的数据采集程序举例。 图7.9 AD574与8031的接口电路 源程序如下: # include absacc.h # inlucde reg51.h # define uint unsigned int # define ADCOM XBYTE[ 0xff7c ]/* 使A0=0 ,R/C=0, CS=0 */ # define ADLO XBYTE [ 0xff7f ]/* 使 R/C =1,A0=1, CS=0 */ # define ADHI XBYTE [ 0xff7d ]/* 使R/C=1,A0=0,CS =0 */ sbit r = P3 ^ 7 ; sbit w = P3 ^ 6 ; sbit adbusy = P1 ^ 0 ; uint ad574 ( void )/* AD574转换器 */ { r = 0 ;/* 产生CE=1 */ w = 0 ; ADCOM = 0 ;/* 启动转换 */ while ( adbusy = =1 ) ;/* 等待转换 */ return ( ( uint )(ADHI4 )+( ADLO 0x0f ) ); /* 返回12位采样值 */ } main ( ) { uint idata result ;result =ad574 ( ) ;/* 启动AD574进行一次转换,得转换结果 */ } 7.10.3 MCS-51输出控制的C语言编程 例11 8031与DAC0832双缓冲接口的数据转换程序举例。 图7.10 DAC 0832的双缓冲接口电路 将data1和data2数据同时转换为模拟量的C51程序如下: # include absacc.h # include reg51.h # define INPUTR1 XBYTE[ 0x8fff ] # define INPUTR2 XBYTE[ 0xa7ff] # define DACR XBYTE [0x2fff ] # define uchar unsigned char void dac2b (data1 ,data2 ) uchar data1 , data2 ; {INPUTR1 = data1 ;/* 送数据到一片0832 */ INPUTR2 = data2 ;/* 送数据到另一片0832 */ DACR= 0 ;/* 启动两路D/A 同时转换 * / } 例12 8031与DAC0832单缓冲区接口的数据转换举例。 图7.11 DAC0832与8031 的单缓冲接口按片选线确定FFFEH为DAC0832的端口地址。使运行输出端输出一个锯齿波电压信号的C51程序如下: # include absacc.h # include reg51.h # define DA0832 XBYTE [0xfffe ] # define uchar unsigned char # define uint unsigned int void stair (void ) { uchar i ; while ( 1 ){for ( i=0 ; i=255 ; i=I++ )/* 形成锯齿波输出值,最大值为255 */{ DA0832 = i ;/* D/A转换输出 */} } } 例13 8031与AD7521接口的数据转换程序举例。 图7.12 AD7521与8
文档评论(0)