- 1、本文档共169页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C51教程课件
程序如下: # 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 ;
文档评论(0)