2011年微机原理与接口技术-第7章_第1页
2011年微机原理与接口技术-第7章_第2页
2011年微机原理与接口技术-第7章_第3页
2011年微机原理与接口技术-第7章_第4页
2011年微机原理与接口技术-第7章_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

第7章数/模与模/数转换7.1数/模(D/A)转换7.2A/D转换7.3典型A/D转换器芯片7.4数据采集系统数字量(Digit)和模拟量(Analog)数字量:从键盘读入的字符代码,送往磁盘存储的文

件信息等。

模拟量:语音信号,送往VGA显示器的视频信号,以

及工业生产过程中温度、流量等物理量。它们随

着时间连续变化。为了使用计算机对模拟量进行采集、加工和输出,需

要把模拟量转换成便于数字计算机存储和加工的

数字量(A/D转换,ADC),或者把数字量转换

成模拟量(D/A转换,DAC)。D/A与A/D转换是计算机用于多媒体、工业控制等领

域的一项重要技术。图7-1模拟量输入输出通道1.传感器(变送器)把外部的物理量(例如:声音、温度、压力、流量

等)转换成电流或电压信号。2.A/D转换器(AnalogDigitConverter,ADC)将电压表示的模拟量转换成数字量,送计算机处理。

它是输入通道的核心环节。AD转换器输入模拟信号通常有以下几种电压范围:

单极性0~5V、0~10V、0~20V;

双极性±2.5V、±5V、±10V等。3.信号处理传感器输出的信号比较微弱,需要经过放大,获得ADC

所要求的输入电平范围。安装在现场的传感器及其传输线路容易受到干扰信号的

影响,需要加接滤波电路,滤去干扰信号。4.多路开关(Multiplexer)需要监测或控制的模拟量往往多于一个。可以使用多路

模拟开关,轮流接通其中的一路,使多个模拟信号共用

一个ADC进行A/D转换。5.采样/保持器(SampleHolder)如果在一次转换期间,输入的模拟量有较大的变化,

那么转换得到的结果会产生误差,甚至发生错误。A/D转换期间保持输入信号不变的电路称为采样/保持

电路。转换开始之前,采样/保持电路采集输入信号(采样)转换进行过程中,它向A/D转换器保持固定的输出

(保持)。6.D/A转换器(DigitAnalogConverter,DAC):D/A转换器将成数字量转换成模拟量输出。7.1数/模(D/A)转换7.1.1数/模转换原理7.1.2D/A转换芯片—DAC0832图7-21.权电阻D/A图7-32.R-2RT型电阻网络D/A转换器D/A转换器进行一次数字量到模拟量的转换需要的时间,

称为D/A转换时间,一般在500ns(纳秒,1ns=10-9s)左右。为了保存由计算机送来的数字信号,通常还需要配置一

个“数据寄存器”,向D/A转换器提供稳定的数字信号。图7-47.1.2D/A转换芯片—DAC08321.DAC0832的引脚信号DI0~DI7:8位数字量输入。ILE:数据锁存允许信号,高电平有效;CS#:输入寄存器选择信号,低电平有效;WR1#:输入寄存器的“写”选通信号,低电平有效。输入寄存器的锁存信号LE1#=(CS#+WR1#)#·ILE。

LE1#=1,输入锁存器状态随数据输入状态变化;

LE1#=0时,锁存输入数据。XFER#:数据转移控制信号,低电平有效;WR2#:DAC寄存器的“写”选通信号。DAC寄存器的锁存信号LE2#=WR2#+XREF#。

LE2#=1时,DAC寄存器的输出跟随输入变化;

LE2#=0时,锁存输入寄存器状态。VREF:基准电压输入。(+10V~-10V)DAC0832的引脚信号Rfb:反馈信号输入,芯片内已连接有反馈电阻。IOUT1和IOUT2:电流输出引脚。IOUT1与IOUT2

的和为常数,IOUT1随DAC寄存器的内容线性变化。Vcc是工作电源;DGND是数字地,AGND为模拟

信号地。DAC0832的引脚信号为了保证转换精度,模拟信号部分应使用高精度基

准电源VREF和独立的地线。为了避免数字信号对模拟信号的干扰,提高输出的

稳定性,减少误差,应把数字地和模拟地分开:模拟地:模拟信号及基准电源的参考地;数字地:工作电源地,数据、地址、控制等数字

信号逻辑地。D/A转换器的输出一般都要接运算放大器,微小信

号经放大后才能驱动执行机构的部件。DAC0832的引脚信号图7-5DAC0832的连接2.DAC0832的应用直通输入:把CS#,WR1#,WR2#,XREF#都接地,由

微机的并口(例如8255)向0832输出。单缓冲:地址选通PORT0连接CS#。I/O写信号IOW#同

时连接到WR1#、WR2#和XREF#。执行一次输出指令可

以将数据写入。双缓冲方式:

在输出一个模拟信号的同时,可送入下一个数据,实现

多个DAC同时输出新的模拟量。

DAC0832占用两个端口地址,地址线A0=0时选中第一级,A0=1时选中第二级。

输出一个数据需要执行两条输出指令:第一条指令将数据写入0832的输入寄存器;第二条指令将数据从输入寄存器送入DAC寄存器图7-52.DAC0832的应用MOVAL,NUM ;被转换的数据送ALMOVDX,PORT0 ;输入寄存器偶地址送DXOUTDX,AL ;数据送到输入寄存器INCDX ;A0=1OUTDX,AL ;数据送入DAC寄存器双缓冲方式输出程序输出三角波的程序段S0: MOVAL,0 ;AL中置初值0,

S1: CALLOUTPUT ;输出三角波的上升段

INC AL

JNZ S1

DEC AL

S1: CALLOUTPUT ;输出三角波的下降段

DECAL ;产生下降段下一个值

JNZ S2 ;

JMP S1 ;下降段结束,

;输出下一个三角波输出锯齿波的程序段

MOV AL,0J1:CALL OUTPUT ;输出当前值

INC AL ;产生下一个输出值

JMP J1OUTPUT PROC NEAR

MOVDX,PORT0 ;DAC0832端口地址

OUTDX,AL

INCDX

OUTDX,AL;

PUSHAX

MOVAX,N ;延时的时间常数

WT: DEC AX

JNZWT ;延时

POP AX

RET

OUTPUT ENDP子程序“OUTPUT”

7.2A/D转换7.2.1信号变换中的采样、量化和编码7.2.2A/D转换原理7.2.3A/D转换器的主要技术指标7.2.1信号变换中的采样、量化和编码1.采样采样:模拟信号的大小随着时间不断地变化,按一定的规律和周期取出其中的某一瞬时值进行转换。采样定理:采样频率要高于或至少等于输入信号最高频率的2倍,实际应用中,采样频率可以达到信号最高频率的4~8倍。采样保持:对于变化较快的输入模拟信号,A/D转换前可采用采样保持器,使得在转换期间保持固定的模拟信号值。2.量化量化是把采样值取整为最小单位的整数倍。量化的最小单位称为量化单位Δ,它等于输入

信号的最大值/数字量的最大值,对应于数字量1。模数转换关系也可以用曲线表示图7-73.编码量化得到的数值通常用二进制表示。对有正负极性(双极性)的模拟量一般采用偏移码表示。

例如,8位二进制偏移码10000000代表数值0,

00000000代表负电压满量程,

11111111代表正电压满量程

(数值为负时符号位为0,为正时符号位为1)。7.2.2A/D转换原理这种方式的转换中有两个积分时间:

T0:用模拟输入电压对电容积分的时间

这个时间是固定的;

T1:以电容充电后的电压为初值,对参考电源

VRef反向积分,也就是积分电容被放电至

零所需的时间(或T2)。1.双积分型A/D转换器图7-8双积分型A/D转换器Vi/VRef=T1/T0。由于VRef、T0固定,通过测量放电时间T1,可求出输入模拟电压Vi的大小。双积分型A/D转换测量输入电压Vi在T0时间内的平均值,所以对常态干扰(串模干扰)有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。双积分型的A/D转换器电路简单,抗干扰能力强,精度高,但是转换速度比较慢,通常为ms级,一般用于低频信号的测量。双积分型A/D转换器图7-92.逐次逼近型的A/D转换器逐次逼近式的A/D转换器的特点(1)转换速度较快,转换时间在1~100μs以内,

分辨率可达18位,适用于高精度、高频信号

的A/D转换;(2)转换时间固定,不随输入信号的大小而变化;(3)抗干扰能力较双积分型弱。采样时,干扰信号会造成较大的误差,需要采取适当的滤波措施。图7-103.跟踪计数式模数转换器图7-114.∑-△型模数转换器(设输入模拟量Vin=1/4VREF)∑-△型模数转换器以串行数据流方式输出结果;转换精度为1LSB;

转换完成后,比较器输出0/1相间的数字流;输入模拟量Vin发生变化,输出数字流随之变化。模拟量输入端接有多路开关时,通道切换后要等

待足够长的时间,才能读取转换结果。∑-△型模数转换器抗干扰能力强,转换精度高,常用于高分辨率(常见为16、18、24位)的中、低频信号测量。AD7714是一个∑-△型模数转换器芯片,转换精度24位。∑-△型模数转换器1.分辨率分辨率反映A/D转换器对输入微小变化的响应能力,用数字量最低位(LSB)所对应的模拟输入电平值(Δ)表示。分辨率直接与转换器的位数有关,也可以用数字量的位数来表示分辨率。注意:分辨率与精度是两个不同的概念。

分辨率高的转换器,精度不一定高。7.2.3A/D转换器的主要技术指标2.精度(有绝对精度和相对精度两种)(1)绝对误差绝对误差等于实际转换结果与理论转换结果之差。也可以用数字量的最小有效位(LSB)的分数值表示。例如:±1LSB,±1/2LSB,±1/4LSB等(2)相对误差相对误差是指数字量所对应的模拟输入量的实际值与

理论值之差,用模拟电压满量程的百分比表示。例:10位A/D芯片,输入满量程10V,

绝对精度±1/2LSB(△=9.77mV)绝对精度为:1/2△(=4.88mV)相对精度为:4.88mV/10V=0.048%。3.转换时间

完成一次A/D转换所需要的时间。

(发出转换命令信号到转换结束的时间) 转换时间的倒数称为转换速率。

例:AD574的转换时间25μs,

转换速率为40KHz(=1/25μs)4.量程量程:被转换的模拟输入电压范围,

分单极性、双极性两种类型。单极性常见量程为0~5V,0~10V,0~20V;双极性量程常为-5V~+5V,-10V~+10V。5.逻辑电平与输出方式 多数A/D转换器输出的数字信号与TTL电平兼容,以并行方式输出。 ∑-△A/D转换芯片以串行方式输出数据,这对单片机类CPU连接是很方便的。6.工作温度范围 温度会对比较器、运算放大器、电阻网络等部件的工作产生影响。 A/D转换器的工作温度范围一般为0~70℃。 军用品为-55℃~+125℃。7.3典型A/D转换器芯片逐次逼近型8位A/D转换芯片;片内有8路模拟开关,可以同时连接8路模拟量;单极性,量程为0~5V;典型的转换速度100μs;片内有三态输出缓冲器,可直接与CPU总线连接;有较高的性能价格比,适用于对精度和采样速度要求不高的场合或一般的工业控制领域。7.3.1ADC0809图7-121.模拟输入部分模拟输入部分由8选1多路开关,地址锁存与译码逻辑组成。从IN0~IN7引脚输入8路单端模拟信号;由三位地址输入ADDA,ADDB,ADDC译码选择8路中的一路,ALE为高电平时,三个地址信号被锁存。2.A/D变换器部分由逐次逼近寄存器SAR(8位)、比较器、电阻网络等控制逻辑组成。3.基准电压输入VREF(+)和VREF(-)它们决定了输入模拟电压的最大值和最小值对转换精度要求不高时,可以把VREF(+)接到Vcc(+5V)电源上,VREF(-)接GND(地)为了避免数字脉冲信号对基准电源的干扰,可以设置独立的VREF(+)和VREF(-),加在两个引脚的电压必须满足以下条件:

VREF(+)+VREF(-)=Vcc,偏差值≤±0.1V Vcc≥VREF(+)≥VREF(-)≥0图7-134.ADC0809的时序(1)ALE信号锁存地址信号ADDA~ADDC。对应的模拟信号进入0809(2)START脉冲启动A/D转换(3)转换完成后,转换结束信号EOC变为高电平:可以作为状态信号由CPU查询;可以作为中断请求信号通知CPU。(4)CPU在查询式I/O程序或中断服务程序中:执行输入指令(读ADC0809数据端口);该指令经地址译码电路产生OE信号,0809内三态缓冲器被打开,转换结果通过数据总线进入CPU。ADC0809的工作过程ADC0809与系统有三种常见的连接方法:(1)占用三个I/O端口: 端口1用来向0809输出模拟通道号并锁存; 端口2用于启动转换; 端口3读取转换后的数据结果。(2)占用二个I/O端口: 端口1输出模拟通道号并锁存,同时启动转换; 端口2读取转换后的数据结果。(3)通过并行接口芯片(例如8255A)连接。5.ADC0809芯片应用举例图7-14ADC0809芯片应用举例START:MOVAL,98H ;8255A方式字:方式0,A口输入,B口输出 MOV DX,03FFFH;8255A控制端口地址 OUT DX,AL ;送8255A方式字 MOV AL,0BH ;通道号3、ALE信号 MOV DL,0FDH ;8255A的B口地址 OUT DX,AL ;送通道号3及ALE信号 MOV AL,1BH ;增加启动信号START OUT DX,AL ;启动A/D转换ADC0809转换程序 MOV AL,0BH ; OUTDX, AL ;撤销START信号

MOVDL,0FEH ;8255A的C口地址TST:IN AL,DX ;读C口状态 ANDAL,10H ;查询EOC状态 JZTST ;如未转换完,再测试 MOVDL,0FCH ;8255PA端口地址 IN AL,DX ;从A端口读入转换结果 ………ADC0809转换程序(续)1.AD转换器AD574的主要特性:美国AD公司的产品12位逐次逼近式A/D转换器,8位/12位A/D转换12位数据可以一次输出,也可以分二次输出三态缓冲输出;带有基准源和时钟;转换时间:25μs(12位);分辨率:12位;精度:±1LSB。7.3.2AD574AAD574共有28根引脚,DIP封装(1)12位数字量输出:DB11~DB0(2)模拟量输入:10VIN及20VIN,双极性±5V或

±10V输入,单极性0~+10V或0~+20V输入AD574的引脚信号CS#-片选信号,低电平有效。CE-芯片允许信号,高电平有效。R/C#-读出和转换控制信号,=1为读,=0为转换。12/8#-数据输出格式选择控制线,=1时12位同时输出;=0时高8位、低四位分两次输出,左对齐格式A0-字节方式下的高/低字节选择控制线。STS-状态输出信号线转换过程中,STS为高电平转换完成后,该脚为低电平。BIP-输入信号极性选择,接地时输入单极性信号;接+10V时输入双极性模拟信号(输出偏移码)(3)AD574的控制信号:图7-15AD574的引脚信号图7-163.AD574的输入连接图7-174.AD574A的输出接口(字节方式)以8位总线接口为例,直接读取(固定延时)方式实现一次转换的程序如下:

OUT80H,AL ;启动12位转换 CALLDELAY ;延时,等待转换结束 INAL,80H ;读入高8位 MOVAH,AL INAL,81H ;读入低位字节,转换值在AX的高12位中 MOV CL,4 SHR AX, CL ;把转换值移入AX低12位7.4数据采集系统某公司电镀线微机集散控制系统:一个以工控PC(PC-Busindustrialcomputer)为核心的数据采集系统。系统功能:检测电镀工艺参数(温度、电流、安培小时累计)电镀槽温度控制,加料控制。行车控制图7-18电镀线微机集散控制系统工业控制数据采集系统以往用单片机,单板机配以各种AD,DA芯片自行设计模拟量输入输出通道。优点:成本低,结构紧凑。缺点:软硬件开发周期长,难度大。工控PC特点:使用标准化的机箱,整机抗震、防尘能力强;有抗干扰能力极强的电源和主板,能24小时连续工作。软件开发以高级语言为主,设计周期短,软件的调试、移植较汇编语言方便。配有有各种商品化的I/O、A/D、D/A接口卡,结构紧凑,性能稳定,用户可迅速组装成一套完整数据采集系统,系统升级方便。7.4.1工控PC简介多功能ISA总线接口卡:16路开关量I/O16路A/D(12位)1路D/AA/D转换使用AD574,配以16路模拟开关及量程切换占用16个端口地址,基地址由开关设定7.4.2PCL818多功能接口卡(1)中断方式采样及数字滤波 对8个点的温度数据定时巡回采集 在1CH定时中断服务程序中(每55ms进入一次)对8路温度模拟量进行查询式输入,一路A/D转换时间小于40μs,8路采样所耗费的时间小于0.5ms。7.4.3数据采集软件设计(2)采用移动算术平均方法进行“数字滤波”。构造一个“先进先出(FIFO)”队列,每采样一次,把15个数据顺序向前移动一个位置,新的数据放入这个队列的尾部。将本次的采样值与前15次采样值相加,求出的平均值作为本次的采样值。本例中,对于8个点的数据采集,构造了二维数组ti[8][16],每一路温度存入数组的一行ti[i],滤波后(3)非线性标度变换实际的传感器存在着“非线性”,可以把温度K和转换值AD之间的关系近似看作由3个点表示的二条“折线”。测量每个传感器的三点6个坐标值,N路A/D有N×6个参数,将这些数据存放在TEMP.TXT文件中。根据每个传感器的6个坐标值(k1,k2,k3,ad1,ad2,ad3)计算相应的物理量。

测量值AD和它所对应的温度K之间的转换公式为:

AD>AD2时:

K=K2+(K3-K2)(AD-AD2)/(AD3-AD2) AD<AD2时:

K=K1+(K2-K1)(AD-AD1)/(AD2-AD1)图7-19三点式折线补偿法(4)更换传感器后,需要修改对应的参数:调整生产现场的工况使温度达到k2,测定出相应的A/D值NewAD2。相同型号传感器的转换曲线形态基本相同,其余点(AD1、AD3)用下面公式修正(上、下移动): AD2=NewAD2 AD1=AD1+(NewAD2-AD2) AD3=AD3+(NewAD2-AD2)新的参数值需要写入参数文件“TEMP.TXT”供以后使用 传感器参数的整定 /*符号名、全局变量和函数声明*/#include“dos.h”#defineN8 /*采样点数*/#defineBASE0x300 /*AD818卡基地址*/#defineINTERRUPT0x1c/*定时中断类型号*/int ad;staticunsignedt[N],tkad[N][6],tad[N],t1[N][16];voidfarhandler(); /*函数handler()声明*/voidinterruptfar(*oldhandler)(); /*定义oldhandler为指向中断服务程序的指针*/3.温度数据采集程序

main() {FILE*fp; inti,j; ………….. oldhander=getvect(INTERRUPT); /*读出原1CH中断向量*/

setvect(INTERRUPT,handler); /*把新的1CH中断向量写入向量表*/主函数(1)----设定中断向量*/if(fp=fopen(“TEMP.TXT”,“r”)==NULL) {printf(“CannotopenTEMP.TXT\n”); exit(1);} /*打开标定参数文件*/for(i=0;i<=N-1;i++)for(j=0;j<=5;j++)fscanf(fp,“%d”,tkad[i][j]); /*把标定参数读入数组tkad[N][6]*/…………..主函数(2)----读传感器参数文件kad(k,k1,k2,k3,ad1,ad2,ad3)int*k,k1,k2,k3,ad1,ad2,ad3;/*函数kad把测量得到的值ad转换成对应的温度值k*/{floatkf;

if(ad>ad2){kf=((float)(ad-ad2)/(ad3-ad2))*(k3-k2); *k=k2+(int)kf;}else {kf=((float)(ad-ad1)/(ad2-ad1))*(k2-k1); *k=k1+(int)kf;}/*转换结果通过指针k返回*/}kad----传感器数据转换函数AD818(intscan) {intlbit,hbit,it=0,result;outportb(BASE+2,scan);/*向AD818输出通道号*/

outportb(BASE+1,0);/*AD输入量程控制*/outportb(BASE+9,0);/*不使用中断或DMA*/outportb(BASE+0,0);/*启动AD转换*/AD818----AD转换函数(1)Do{it=it+1;result=inportb(BASE+8)&128;}while(result!=0&&it<=10000);/*读出AD状态寄存器,查询EOC,等待AD转换完成*/lbit=inportb(BASE+0)

温馨提示

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

评论

0/150

提交评论