ch11 8051数据采集的C编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch11 8051数据采集的C编程

void int_0(void)interrupt 0 using 1 /* INT0 中断服务*/ { EA=0;TR0=0; count=TL0+TH0*256; /* 取计数值 */ rflag=1; /* 设标志 */ EA=1; } void main(void) { contro1( ); while(rflag==0); /* 等待一周期 */ period=count*2; /* fosc=6 MHz,2 μs计数增1,周期值单位μs */ } * * * * * * * * * * * * * * * * * * * * * * * 控制时, 1、首先P1.0发一个清零负脉冲,使U1、U2两个D触发器复位,其输出封锁与门G1和G2。 2、由P1.1发一个启动正脉冲,在D=1时,其有效上升沿使U1=1,门G1被开放。 3、之后,被测脉冲上升沿通过G2送T1计数; 4、同时U2输出的高电平使INT0 =1,定时器0的门控GATE有效,启动T/C0开始定时。 5、直到定时结束时,从P1.0发一负脉冲,清零 U2,封锁G2,停止T/C1计数,完成一次频率采样过程。 * * * * * * * * 第11章 8051数据采集的C编程 11.1 8位A/D芯片ADC0809 11.2 12位A/D芯片ADC574 11.3 V/F变换芯片AD650 11.4 频率量的测量 11.1 8位A/D芯片ADC0809 11.1.1 ADC0809的结构和引脚 一个8位逐次逼近式A/D转换器、8路模拟转换开关、3-8地址锁存译码器和三态输出数据锁存器。 2、引脚功能 IN3 IN2 IN4 IN1 IN5 IN0 IN6 ADDA IN7 ADDB EOC ALE D3 D7 OE D6 CLK D5 VCC D4 Vref+ D0 GND Vref- D1 D2 ADC0809 IN0—IN7:8通道模拟量输入端 D0—D7: 8位数字量输出端 ADDC、ADDB、ADDA: 接地址锁存器的低三位地址 ALE: 地址锁存允许控制信号 START:清0内寄存器,启动转换 OE: 允许读A/D结果,高有效 CLK:时钟输入端,应≤640KHz EOC:转换结束时为高 Vcc:+5V Vref+:参考电压,+5V Vref-:0V 3、ADC0809 工作时序 11.1.2 ADC0809与8051的接口 89C51单片机 ADC 0809 锁存器74LS373 P0.0-P0.7 ALE P2.0 8D Q0 ALE CLK ADDA D0-D7 G EA OE START RD WR OE Q1 Q2 ADDB ADDC +5V INT1 EOC ≥1 ≥1 6MHz 30Px2 ?2 CK Q D /Q 图中的2分频电路可用D触发器实现 口地址可以为:0FE00~0FE07H 也可为: 0FEF0~ 0FEF7H #includeabsacc.h #includereg51.h #define uchar unsigned char #define IN0 XBYTE[0xFEF8] /*设置ADC0809的通道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 idat

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档