第九章8051外部接口的c编程_第1页
第九章8051外部接口的c编程_第2页
第九章8051外部接口的c编程_第3页
第九章8051外部接口的c编程_第4页
第九章8051外部接口的c编程_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1

第九章8051外部接口的C编程模拟量D/A传感器执行元件A/D数字量数字量模拟量模拟量输入(数据采集)模拟量输出(过程控制)计算机1、模拟接口的作用模拟量的输入、输出通道是微型计算机与控制对象之间的重要接口,也是实现工业过程控制的重要组成部分。实际工业生产环境——连续变化的模拟量

例如:电压、电流、压力、温度、位移、流量

计算机内部——离散的数字量二进制数、十进制数9.1模拟量与输入/输出通道22、模拟量I/O通道的组成输入通道模拟接口电路的任务模拟电路的任务0010110110101100工业生产过程传感器放大滤波多路转换&采样保持A/D转换放大驱动D/A转换输出接口微型计算机执行机构输入接口物理量变换信号处理信号变换I/O接口输出通道3传感器(Transducer)非电量→电压、电流变送器(Transformer)转换成标准的电信号信号处理(SignalProcessing)放大、整形、滤波多路转换开关(Multiplexer)多选一采样保持电路(SampleHolder,S/H)保证变换时信号恒定不变A/D变换器(A/DConverter)模拟量转换为数字量

4D/A变换器(D/AConverter)数字量转换为模拟量低通滤波平滑输出波形放大驱动提供足够的驱动电压,电流59.2D/A转换1、D/A转换的基本原理数字量是由一位一位的数位构成的,每个数位都代表一定的权。为了把一个数字量变为模拟量,必须把每一位的数码按照权来转换为对应的模拟量,再把各模拟量相加,这样,得到的总模拟量便对应于给定的数据。D/A转换器的主要部件是电阻开关网络,通常是由输入的二进制数的各位控制一些开关,通过电阻网络,在运算放大器的输入端产生与二进制数各位的权成比例的电流,经过运算放大器相加和转换而成为与二进制数成比例的模拟电压。62、D/A转换的主要参数

分辨率

由于数字量D是不连续的,当数字增加时,模拟量为阶梯波电压,如图所示:

阶梯波每一级增量对应于输入数字的最低数位1。把阶梯波每一级增量与最大模拟量的比值称为分辨率。

分辨率=1/(2n-1)例,4位DAC,其分辨率为=6.67%

通常,在工程中,直接以DAC能转换的二进制位数表示分辨率。如8、10、12、14、16位DAC。72、D/A转换的主要参数

输出范围

0~+5V,满量程FS=5V(FullScale)

-5V~+5V,FS=10V

0~+10V,FS=10V

-10V~+10VFS=20V转换精度

实际输出值与理论值之间的最大偏差。一般用最小量化阶⊿来度量,如±1/2LSB。也可用满量程的百分比来度量,如0.05%FSR(LSB-LeastSignificantBit,FSR-FullScaleRange)82、D/A转换的主要参数线性度(线性误差)DAC的理想特性为线性阶梯波,实际特性可能偏离理想特性,模拟量实际值与理想值间的最大差值,折合为数字量的最低有效位(一般,应小于±1/2LSB)。建立时间(转换时间)

指“大信号”工作时,从开始转换到模拟量输出到达最终值所需的时间,一般几纳秒~几百微秒。“大信号”工作:0~最大,或负最大~正最大。其他参数

温度漂移(ppm/℃)、绝缘电压、功耗等。9DAC0832由8位输入寄存器、8位DAC寄存器和8位D/A转换器构成。DAC0832有两级锁存器,第一级即输入寄存器,第二级即DAC寄存器。DAC0832可以在双缓冲方式下,输出模拟信号同时采集数字量。可以在D/A转换器同时工作时,利用第二级锁存信号实现多路D/A的同时输出。3、8位D/A芯片DAC083210主要特性如下:

分辨率--8位;建立时间--1us

增益温度系数--20×10-6/0C

输入--TTL电平功耗--20mW

DAC0832的输出为两个电流信号IOUT1和IOUT2。

IOUT1+IOUT2=常数当LE2有效时,数据输入寄存器的值进入第二级(DAC寄存器)。

当LE1有效时,数据进入第一级(数据输入寄存器)11数字接口

数据输入寄存器”工作在锁存状态,而“DAC寄存器”工作在不锁存状态(LE2始终有效,DAC寄存器直通),只使用一级缓冲。单缓冲方式112“数据输入寄存器”工作在不锁存状态(LE1始终有效,数据输入寄存器直通),而“DAC寄存器”工作在锁存状态。只使用一级缓冲。数字接口单缓冲方式2单缓冲方式适用于只有一路模拟量输出的场合。13数字接口使用两级缓冲设CS'由A15~A1经译码产生

ILE=1&CS=0&WR1=0,DAC0832内部LE1有效;WR=0&XFER=0,DAC0832内部LE2有效。

在双缓冲方式,输入寄存器的锁存信号和DAC寄存器的锁存信号分开控制。适用于几个模拟量需同时输出的系统。每一个模拟量输出需一个DAC0832,构成多个DAC0832同步输出系统。14双缓冲方式——同步转换举例15图中两片DAC0832的输入寄存器各占一个单元地址,而两个DAC寄存器占用同一单元地址。实现两片DAC0832的DAC寄存器占用同一单元地址的方法是将两个传送允许信号XFER相连后,接同一线选端。转换操作时,将两路待转换数据分别写入两个DAC0832的输入寄存器;之后将数据同时传送到两个DAC寄存器,传送的同时启动两路D/A转换。16双缓冲方式——同步转换举例两片DAC0832的输入寄存器地址分别为8FFFH和A7FFH,两个芯片的DAC寄存器地址都为2FFFH。#include<absacc.h>#include<reg51.h>#defineINPUTR1XBYTE[0x8fff]#defineINPUTR2XBYTE[0xa7ff]#defineDACRXBYTE[0x2fff]#defineucharunsignedcharVoiddac2b(uchardata1,uchardata2){ INPUTR1=data1;/*数据送到输入寄存器*/ INPUTR2=data2; DACR=0;/*启动两路D/A同时转换*/}17单缓冲方式——同步转换举例18DAC0832ILE接+5V,始终保持有效。写信号控制数据的锁存,WR1与WR2相连,接8051的WR,即数据同时写入寄存器;传送允许信号XFER与片选CS相连,即选中DAC0832后,写入数据立即启动转换。19单缓冲方式举例按照片选确定FFFEH为该片DAC0832的地址。#include<absacc.h>#include<reg51.h>#defineDA0832XBYTE[0xfffe]#defineucharunsignedchar#defineuintunsignedintvoidstair(void){ while(1){ for(i=0;i<=255;i++) DA0832=i; }}20AD7521是12位的D/A转换器,片内不带输入寄存器。对于没有输入寄存器的D/A转换器,当输入数据变化时,输出电流或电压会消失。在实际使用中,为控制一个对象,往往要求转换后的模拟量保持一定时间。因此,在这类D/A转换器之前,需增加一个数据锁存器再与总线相连。4、12位D/A芯片AD7521由于AD7521是12位数据输入,因此需外加12位数据锁存器。这里采用低8位和高4位2个锁存器,且低8位用2片74LS377作双缓冲器,高4位用1片74LS379作单缓冲寄存器。输出转换数据时,先输出低8位数据到第一级缓冲器,然后输出高4位数据到4位缓冲寄存器。在输出高4位数据的同时,把低8位数据打入第二级缓冲寄存器,以便12位数据同时转换。21AD7521波形发生器举例图中第一级缓冲器的地址为7FFFH,第二级缓冲器和4位缓冲器地址为BFFFH。#include<absacc.h>#include<reg51.h>#defineDA7521LXBYTE[0x7fff]#defineDA7521HXBYTE[0xbfff]#defineUP0x10#defineT1000#defineuintunsignedintVoiddlms(uinta);voidstair(void){ uintI; for(i=0;i<=4095;i+=UP){ DA7521L=i%256;/*送低8位数据到第一级缓冲器*/ DA7521H=i/256;/*送高4位数据到高4位缓冲器,同时低8位到第二级缓冲器转换*/ dlms(T); }}221、采样

采样就是将时间连续的信号变成时间不连续的离散信号。这个过程是通过模拟开关来实现的。模拟开关每隔一定的时间间隔T(称为采样周期)闭合一次,一个连续信号通过这个开关,一系列脉冲信号,称为采样信号。

9.2A/D转换232、采样定理

设连续信号X(t)的最高频率分量为Fm,以等间隔Ts(Ts称采样间隔,fs=1/Ts称为采样频率)对X(t)进行采样,得到Xs(t)。如果Fs>=2Fm,则Xs(t)保留了X(t)的全部信息(从Xs(t)可以不失真地恢复出X(t))。奈奎斯特采样频率243、A/D转换的参数

(1)模拟量输入范围和分辨率

ADC把模拟量转换为数字,模拟量输入范围可以是:

例:8位ADC,单极性输入0~5V,数字量为0~255,它能分辨的最小输入信号是Δ(5V/256)=20mV,分辨率=28=256位12位ADC,双极性输入-5V~+5V,数字量为-2048~+2047,它能分辨的最小输入信号是Δ(10V/4096)=2mV,分辨率=212=4096位0~5V0~10V单极性输入-5V~+5V:双极性输入转换后的数字量一般有8、10、12、14、16位。ADC的分辨率是指它能够分辨的最小输入信号,一般用位数来表示25(2)转换时间和转换率转换时间:ADC完成一次转换所需的时间。转换率:1秒时间内能完成转换的次数,kHZ,MHZ。A/D转换的参数(续)

26(3)转换精度ADC输出的实际数字量与理想数字量之间有一定误差,这种误差由两部分构成:量化误差量化误差是把连续的模拟量转换为离散的数字量(这一过程称为量化)时产生的误差,它必然存在的,是不可避免的。

器件误差器件误差是由于器件制造精度、温度漂移等造成的,可以通过提高产品质量来降低。如,8位ADC,单极性输入0~5V,数字量为0~255,它的量化误差是Δ=(1/2)*(5V/256)=10mV,如,4.99~5.00V输入对应的数字均为255,这是不可避免的。A/D转换的参数(续)

273.转换精度

A/D转换精度用数字量的最低有效位(LSB)来表示。如果模拟量在(±Δ/2)范围内,都产生相对应的唯一数字量,称为这个ADC是无误差的,或者称其精度为±0LSB如果模拟量在范围内,都产生相对应的唯一数字量,这个ADC的精度为±1/2LSB+△~-△如果模拟量在(+3Δ/4~-3Δ/4)范围内,都产生相对应的唯一数字量,这个ADC的精度为±1/4LSB。A/D转换的参数(续)

284、A/D转换的原理和方法

A/D转换器按转换原则可分为直接A/D转换器和间接A/D转换器

直接A/D转换把模拟信号直接转换为数字信号,如逐次逼近型,并联比较型等.间接A/D转换把模拟量转换成中间量,然后再转换为数字量,如电压/时间转换型,电压/频率转换型,电压/脉宽转换型等。295、8位D/A芯片ADC0809STARTEOCCLKOED7D0VREF(+)VREF(-)ADDCADDBADDAALEIN0IN7比较器8路模拟开关逐位逼近寄存器SAR树状开关电阻网络三态输出锁存器时序与控制地址锁存及译码D/A8个模拟输入通道8选1ADC0809是8位逐次逼近型A/D转换器,带8个模拟量输入通道,芯片内带通道地址译码锁存器,输出带三态数据锁存器,启动信号为脉冲启动方式,每一通道大约100us。30主要引脚如下:D7~D0:输出数据线(三态)IN0~IN7:8通道(路)模拟输入ADDA、ADDB、ADDC:通道地址(通道选择)ALE:通道地址锁存START:启动转换EOC:转换结束,可用于查询或作为中断申请OE:输出允许(打开输出三态门)CLK:时钟输入(10KHz~1.2MHz)VREF(+)、VREF(-):基准参考电压ADC0809由两大部分组成:一部分为输入通道,包括8位模拟开关、3条地址线的锁存器和译码器,可实现8路模拟输入通道的选择;一部分为逐次逼近型A/D转换器。31ADC0809的工作过程ADC0809的工作过程如下:①把通道地址送到ADDA~ADDC上,选择模拟输入;②在通道地址信号有效期间,ALE上的上升沿该地址锁存到内部地址锁存器;③START引脚上的下降沿启动A/D变换;

④变换开始后,EOC引脚呈现低电平,EOC重新变为高电平时表示转换结束;⑤OE信号打开输出锁存器的三态门送出结果。32

单路输入模拟信号可固定连接到任何一个输入端地址线根据输入线编号固定连接(高电平或低电平)多路输入模拟信号按顺序分别连接到输入端要转换哪一路输入,就将其编号送到地址线上(动态选择)单路输入时ADDCADDBADDAIN4输入多路输入时ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809输入0输入1输入2输入3输入4CPU指定通道号+5VADC0809与系统的连接

模拟输入端INi33ADC0809与系统的连接(续)

多路输入时,地址线不能接死,而是要通过一个接口芯片与数据总线连接。接口芯片可以选用:锁存器74LS273,74LS373等(要占用一个I/O地址)可编程并行接口8255(要占用四个I/O地址)CPU把通道地址通过接口芯片送给0809ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809输入DB74LS273Q2Q1Q0CP来自I/O译码D0-D7ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809DB8255PB2PB1PB0CS#来自I/O译码D0-D7A1A0A1A0地址线ADDA-ADDC34

内部已接有三态门,故可直接连到DB上也可另外通过一个输入接口与DB相连上述两种方法均需占用一个I/O地址D0-D7ADC0809DBOE来自I/O译码D0-D7ADC0809DBOE来自I/O译码直接连DB通过输入接口连DB74LS244+5VDIDOE1#E2#数据输出线D0-D7ADC0809与系统的连接(续)

35ADC0809与系统的连接(续)

两种连接方法:独立连接:用两个信号分别进行控制——需占用两个I/O端口或两个I/O线(用8255时);统一连接:用一个脉冲信号的上升沿进行地址锁存,下降沿实现启动转换——只需占用一个I/O端口或一个I/O线(用8255时)。ADC0809ALESTART独立连接来自I/O译码1来自I/O译码2ADC0809ALESTART统一连接来自I/O译码地址锁存ALE和启动转换START36

软件延时等待(比如延时1ms)——不用EOC信号CPU效率最低软件查询EOC状态EOC通过一个三态门连到数据总线的D0(其他也可以)三态门要占用一个I/O端口地址CPU效率低把EOC作为中断申请信号在中断服务程序中读入转换结果,效率高。转换结束EOCADC0809与系统的连接(续)37ADC0809应用举例ADC0809的启动信号START由片选P2.7与写信号WR的“或非”产生。要求一条向ADC0809写操作指令来启动转换。ALE与START相连,即按打入的通道地址接通模拟量并启动转换。输出允许信号OE由读信号RD与片选信号P2.7”或非“产生,即一条ADC0809的读操作使数据输出。38ADC0809应用举例ADC0809的模拟通道0~7的地址为7FF8H~7FFFH。从ADC0809的8通道轮流采集一次数据,采集的结果放在数组ad中。#include<absacc.h>#include<reg51.h>#defineucharunsignedchar#defineIN0XBYTE[0x7ff8]/*设置ADC0809的通道0地址*/sbitad_busy=P3^3;/*EOC状态*/voidad0809(ucharidata*x,ucharn)/*采样结果放指针中的A/D采集函数*/{ uchari; ucharxdata*ad_adr; ad_adr=&IN0; for(i=0;i<n;i++){/*处理8个通道*/ *ad_adr=0;/*启动A/D转换*/ i=i;i=i;/*延时等待*/ while(ad_busy==0);/*查询等待转换结束*/ x[i]=*ad_adr;/*存转换结果*/ ad_adr++; }}voidmain(void){ staticucharidataad[8]; ad0809(ad,8);}39例:A/D通道0采用查询方式采样50个数据,将其求平均并送共阴极数码管显示A/D采样地址为7FF8H,8位A/D最大值为255,用三个数码管显示,以P3.3为查询位。#include<reg51.h>#defineuintunsignedint#defineucharunsignedchar

#defineSAMPLENUM50sbitad_busy=P3.3;voidad0809(ucharidata*x){uchardatai;ucharxdata*ad_adr;ad_adr=0x7ff8;for(i=0;i<SAMPLENUM;i++){ *ad_adr=0; i=i;i=i; while(ad_busy==1); buf[i]=*ad_adr; }}P3=0x01;

40voidmain(void){uinti,j,m,total;ucharidatabuf[SAMPLENUM];ucharidatadis[3];ucharcodetab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelay(uchardatadelay1){uchardatai,j;for(i=0;i<delay1;i++)for(j=0;j<240;j++)i=i;}41例:A/D通道0采用查询方式采样50个数据,将其求平均并送数码管显示P1=0x00;while(1){total=0;ad0809(buf);for(i=SAMPLENUM-1;i>=0;i--)total+=buf[i-1];total=total/SAMPLENUM;dis[0]=total%10total=total/10;dis[1]=total%10;dis[2]=total/10;for(m=0;m<SAMPLENUM;m++){for(i=0;i<3;i++){if(i==0) P3=0x01;else P3<<=1;P1=tab[dis[i]];delay(50);}}}}42AD574是由模拟部分和数字部分混合而成:模拟部分由12位D/A芯片AD565和参考电压组成;数字部分由控制逻辑电路逐次逼近

温馨提示

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

评论

0/150

提交评论