[其它]第11章 8051数据采集的C编程_第1页
[其它]第11章 8051数据采集的C编程_第2页
[其它]第11章 8051数据采集的C编程_第3页
[其它]第11章 8051数据采集的C编程_第4页
[其它]第11章 8051数据采集的C编程_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、第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,IN0IN7:8

2、通道模拟量输入端 D0D7: 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的接口,#include #include #define uchar unsigned char #define IN0 XBYTE0 xFEF8 /*设置ADC0809的通道0地址*/ sbit

3、ad_busy=P33; /*即EOC状态*/ void ad0809(uchar idata * x) /*采样结果放指针中的A/D采集函数*/ uchar i; uchar xdata * ad_adr; ad_adr= /*采样ADC0809通道的值*/ ,11.2 12位A/D芯片ADC574,11.2.1 ADC574的结构和引脚,AD574是一种快速的12位逐次比较式A/D转换芯片,片内有两片双极型电路组成的28脚双插直列式芯片,无需外接元器件就可独立完成A/D转换功能。内部设有三态数据输出锁存器。一次转换时间为25s。芯片引脚如图所示。,REOUT:内部参考电源输出(+10 V)

4、; REFIN:参考电压输入; BIP:偏置电压输入; 10VIN:5 V或010 V模拟输入; 20VIN:10 V或020 V模拟输入; DB0DB11:数字量输出,高半字节为DB8DB11,低字节为DB0DB7; STS:工作状态指示端。 STS=1时表示转换器正处于转换状态, STS返回到低电平时,表示转换完毕。,2、AD574的引脚定义,12/-8:变换输出字长选择控制端,在输入为高电平时,变换字长输出为12位,在低电平时,按8位输出; CS、CE:片选信号。当CS=0、CE=1同时满足时,AD574才能处于工作状态。 R/C:数据读出和数据转换启动控制; A0:字节地址控制。它有两

5、个作用: 在启动AD574(R/C=0)时,用来控制转换长度。A=0时,按完整的12位A/D转换方式工作,A=1时,则按8位A/D 转换方式工作。 在AD574处于数据读出工作状态(R/-C=1)时,A0和12/8成为输出数据格式控制。,表11-1 AD574控制信号状态表,AD574启动转换时序图,读AD574读数据时序图,11.2.2 ADC574与8051的接口,uint ad574 ( void ) /* AD574转换器 */ r = 0 ; /* 产生CE=1 */ w = 0 ; ADCOM = 0 ; /* 启动转换 */ while ( adbusy = =1 ) ; /*

6、等待转换*/ return ( ( uint )(ADHI4 )+( ADLO sbit P1_1=P11; uchar msn=A; bit idata tf=0; /*500 ms时间到标志*/,uint count(void) P1_0=0 ; P1_0=1; /*产生清零用负脉冲*/ TMOD=0 x59 ; TH1=0 x00; TL1=0 x00;/* T/C1计数器 */ TH0=0 x3c ;TL0=0 xb0; /* T/C0定时器100 ms */ TR0=1;TR1=1;PT0=1;ET0=1;ET1=1;EA=1; /*启动T/C,开中断*/ P1_1=0 ; P1_1

7、=1 ; /* 产生启动正脉冲 */ while (tf!=1 ) ; /* 等待500 ms定时到 */ P1_0=0 ; P1_0=1 ; /* 产生负脉冲,封锁G2 */ TR0=0 ; TR1=0 ; /* 关T/C */ return (TH1*256+TL1) ; / 返回计数值*/ ,void timer0( void ) interrupt 1 using 1 /* 100 ms定时中断服务 */ TH0=0 x3c ; /* 重置初值 */ TL0=-0 xb0 ; msn - - ; if ( msn = = 0) msn=A ; tf=1 ; /* 500 ms定时时间到

8、设标志 */ void timer 1 (void ) interrupt 3 void main ( void ) float rate ; rate=( 10/A )* count( ) ; /* 得每秒的计数率 */ ,11.4.2 频率脉冲的测量周期法,#include #define uint unsigned int sbit P1_0=P10; uint count ,period; bit rflag=0; / * 周期标志 */,测量周期的程序举例。 设fosc = 6 MHz,机器周期为2 s,测周期的测量值为计数值乘以2。用C语言编写的程序如下:,void control (void) TMOD=0 x09; /*定时器/计数器0为方式1*/ IT0=1;TR0=1; TH0=0;TL0=0; P1_0=0;P1_0=1; /*触发器清零*/ TR0=1;ET0=1;EA=1;/*启动T/C0开中断*/ ,void int_0(void)interrupt 0 using 1 /* INT0 中断服务*/ EA=0;TR0=0; count=TL0+TH0*256; /* 取计

温馨提示

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

评论

0/150

提交评论