搜索
您的当前位置:首页实验1图

实验1图

来源:爱问旅游网
A/D转换结束时,EOC为高电平,经单稳电路74LS123送入PC4端,供CPU查询A/D转换结束否。一旦A/D转换结束,则将其转换结果由8255A的A口读入CPU。

图2.24 由ADC0809构成的64路数据采集系统

1. 接口程序

由图2.24可看出:8255A的A口为输入口且工作于方式1,B口为输出口且 工作于方式0,C口的PC7为输出、PC4为输入。

设8255A的A口、B口、C口及控制寄存器的端口地址分别为60H、61H、62H 和63H。64路模拟通道的地址分别为80H ~ BFH,并对64路巡回检测24次。则 查询方式程序如下:

DATA SEGMENT

BUF DB 1536 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOVE AX,DATA MOV DS,AX

MOV DI OFFSET BUF

CLD ;清DI,地址增量 MOV AL,10110000B OUT 63H,AL 设控制字,初始化8255A MOV DL,18H ;设巡检次数初值(18H=24) LOOP1:MOV BX,4080H ;设采样通道数(40H=64送BH) 及通道地址初值(80H送BL) LOOP2:MOV AL,BL

OUT 61H,AL 选择通道,由B口送出 MOV CX,006FH

LOOP3:DEC CX 延时,使输入信号保持稳定 JNZ LOOP3

MOV AL,0FH (使PC7=“1”)启动A/D转换 OUT 63H,AL 并使采样保持器处于保持状态 MOV AL,0EH 使PC7复位

OUT 63H,AL AGAIN:IN AL,62H

TEST AL,00010000B 检测PC4的IBFA 信号 JZ AGAIN

IN AL,60H 由A口读出转换数据 STOSB 并送内存 MOVE CX,1525H LOOP4:DEC CX 延时20ms,控制采样周期 JNZ LOOP4

INC BL ;通道地址加1 DEC BH ;采样次数减1 JNZ LOOP2 ;未完,继续采样 DEC DL ;巡检次数减1 JNZ LOOP1 ;未完,继续巡检 MOV AX,4C00H INT 21H 返回 CODE:ENDS

END START

例二:由AD574A构成的16路A/D卡线路 1.硬件构成(如图2.25所示)

图3 由AD574A构成的16路A/D卡线路

由图2.25可看出: 1)端口地址的设置

该线路的接口采用8255、量值比较器74LS688和位置拨动开关DIP构成。因而,A/D卡线路的口地址可以通过拨动开关DIP来灵活选择。

由前述已知:根据PC系列I/O口地址分配要求,欲使扩展槽上的I/O板被选中,其地址

应在200 H~3FFH范围内,为此需保证A9=1。当DIP设定的地址与执行软件时送出的地址(A9~ A2)一致,则74LS688选通,其19端输出的信号作为8255的片选信号(CS)。设8255的A、B、C口地址及控制端口分别为300H~303H,则口地址的设置如下所示:

A9 A8 ,A7 A6 A5 A4 , A3 A2 A1 A0 1 1 ,0 0 0 0 ,0 0 0 0 300H ~ ~ 1 1 ,0 0 0 0 , 0 0 1 1 303H 注:DIP 置ON=“0”,OFF=“1” 2) 接口连接

8255的A口和C口为输入口、B口为输出口。A/D转换器采用12位的AD574A,工作在双极性方式。A/D转换器输出的12位数据线直接连于8255的A口和下C口。A/D转换结束信号STS送入PC7,供CPU查询。8255的B口输出A/D的启动信号和通路选择信号,即:PB7提供启动信号,PB2~ PB0与多路开关CD4051的C、B、A相连,提供通路选择信号。由于采用2片CD4051构成16路模拟量输入通路,由PB3产生CD4051(1)的片选信号;PB3经非门CD4049后,作为CD4051(2)的片选信号。输入的模拟电压为-5V~+5V与-10V~+10V两种形式,受CD4052的选择控制,CD4052的通路选择信号B、A由PB4提供。欲使该线路工作,除确定好口地址外,另一重要的事就是PB口送出的控制字如何产生?根据该线路的连接方式,PB口控制字设置如下: PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

0000 IN1 未用,可置0 ~ ~ =0 启动A/D 1111 IN16

=1 读A/D转换数

注:在编程时,只要送PB口控制字的初值即可,即:在选择通路时,

通道地址为80H,选通IN1,之后通道地址+1,依次选通其余通路; 在启动启动A/D 时,送00H。

1.接口程序

在了解硬件连接之后,就可编写其驱动程序。假如主机采用8088CPU,则采用 8088汇编语言编程,其程序如下: MOV AL,99H MOV DX,303H 初始化8255 OUT DX,AL

MOV BH,10H ;送通路数16至BH MOV BL,80H ;送通道地址初值至BL LOOP1:MOV DX,301H

MOV AL,BL 选通IN1 OUT DX,AL

NOP

NOP 延时,等待输入信号稳定 NOP

MOV AL,00H 启动A/D OUT DX,AL NOP NOP

MOV AL,80H

OUT DX,AL PB7复位 MOV DX,302H , 置C口地址 LOOP2: IN AL,DX

AND AX,80H 由C口的PC7读出STS的状态并测试 SUB AX,80H JS LOOP2 MOV DX,300H

IN AL,DX 从A口读出低8位数据并存入CL中 MOV CL,AL INC DX INC DX

IN AL,DX 从C口读出高4位数据并存入CH中 MOV CH,AL STOSB INC BL DEC BH JNS LOOP1 END

例三:用C言编写的查询法数据采集系统 1.硬件构成 ( 如图2.26所示)

图2.26 查询法A/D卡原理框图

该电路板可插于PC机的任一插槽中,接受16路模拟量输入,A/D采用12位。 分配给选择通道号的口地址为300H,如:执行outportb(0x300,0)选择0通道;分配给A/D转换器的口地址为301H,由于启动A/D时需送一个低电平信号,只要执行outportb(0x301,0)即可启动A/D;分配给查询的口地址为302H,转换结束信号的状态由D0读出,则执行a=inportb(0x302)即可;用口地址303H读取低8位数据;用304H读取高4位,最后合并成为12为数据(并转换为十进制),即:a=inportb(0x303);b=inportb(0x304);data=(b&0x0f)*256+a;

2.接口程序

A/D转换部分,以函数adin(int ch)形式提供,在主程序中由用户输入选择的信号通道号ch传给adin,以进行转换,转换完后将转换结果回传给主程序,由主程序将其结果转换为画图象素的y坐标,并画出其象点来,再存到数组ad[ ]中。这样一个画面共640个点,周而复始,清除掉旧的,画出新的点,屏幕上将动态地显示采样点构成的波形,直到按任意键为止。

程序清单如下:

int adin(int ch) main( ) { { int a,b,data; int m,n,y,i,ch;float da; outportb(0x300,ch); static int ad[640];

outportb(0x301,0); int graphdriver=DETECT,graphmode; begin: initgraph(&graphdriver,&graphmode,” ”);

a=inportb(0x302); if(graphdriver==VGA)n=480,m=2; a=a&0x01; else n=199,m=1;

if(a!=0)goto begin; printf(”%s”,” Please input A/D channel number(0-15)”) else scanf(“%d”,&ch);

{ a=inportb(0x303); do b=inportb(0x304); { for(i=1;i<640;i++) data=(b&0x0f)*256+a; { da=adin(ch);

return(data); y=n-(int)da*n/4095);

} putpixel(i,ad[i],0); } ad[i]=y;

#include ”graphics.h” putpixel(i,y,m); #include }

#include < stdlib.h> }while(!kbhit());

closegraph(); }

2.3.4 AO通道

在工业过程控制中,各种过程参数经AI通道采集、CPU处理后,还需经AO通道输出控制信号,最终实现过程的计算机控制。

前述已知:AO通道=接口+ D/A + V/I + 执行器 一. D/A转换器

D/A转换器是AO通道的核心,其性能的好坏、速度的高低,将决定着AO通道工作性能的好坏。

电压型 Vout

D/A转换器的输出有两种类型: 电流型 I + I/V Vout

注:大多D/A转换器的输出属电流型。在应用时,还需加运算放大器,获得模拟电压输出。

1. D/A转换器的原理

图2.27(a)、(b)分别为D/A转换器的结构框图和原理图。

图2.27(a) D/A转换器的结构框图 图2.27 (b) D/A转换器的原理图

D/A转换器的原理为:输出的数据信号Dn-1~D0经 BSn-1~BS0,在各2R支路上产生与二进制

n

数各位的权成比例的电流:(1/2~1/2)I,则:

I∑=(1/2D0 + 1/2–D1+...+1/2 Dn - 1)I (2-7)

又因: I= VREF/R ,Vout = - I∑Rfb,如果R= Rfb,则:

n n 1

Vout= - VREF(1/2D0 + 1/2–D1+...+1/2 Dn -1)

n 01n-1

=( - VREF/2)×(D02 + D12...+ Dn –12) (2-8)

其中, VREF为基准电压, Rfb为反馈电阻,n为D/A转换器的位数。 显然,Vout与n和VREF有关。

2. D/A转换器的主要性能指标

n

①分辨率:用n或VREF/2×100%表示。多用n表示,且位数越多,分辨率就越高。 ②稳定时间:输入二进制数变化满刻度时,Vout达到离终值+1/2LSB所需时间。 ③转换精度:实际Vout与理想Vout的接近程度,常用+1/2LSB表示。 ④输出范围:5V、10V、+5V、+10V等。

二.D/A芯片(8、10、12、16位)介绍 1.常用的D/A芯片

D/A芯片的种类和型号实际中是很多的,在此仅列出常用的几种供读者参考。其它D/A芯片可在有关的集成电路大全或Protel软件的元件库中查找。

n

n 1

表2.9 常用的D/A芯片 型 号 DAC0832 DAC1020/1021 /1022 DAC1208/1209 /1210 DAC1230/1231 /1232 DAC709 16 <=8μS +15V +5V 12 <=1μS +5V~+15V 12 <=1μS +5V~+15V 24引脚,能直接与16位 或8位CPU 连接,内有输入寄存器。 20引脚,便于直接与8位CPU连接,内部结构与DAC1208系列相同。 与16位机接口,内有输入寄存器、基准电源及电压输出放大器,模拟电压输出有+5V、+10V、+10V。 位数 稳定时间 工作电压范围 8 10 <=1μS <=500ns +5V~+15V +5V~+15V 说 明 能直接与8位CPU接口,内有输入寄存器 内无输入寄存器 注:①D/A芯片转换的快慢用稳定时间来衡量。一般<100ns 为超高速、100ns-1μS 为

较高速、1μS~10为高速、10μS ~100μS为中速、>100μS为低速;

② D/A的位数[C>=log2(1+μmax/μmin)]≤A/D位数。 μmax、μmin为调节阀 的最大开度和灵敏度;

③为满足各种不同系统的要求,还生产出了许多特殊的D/A转换器。如:输出为 4-20mA的D/A转换器DAC1420/1422,可直接驱动执行机构;多道D/A转换器 AD7528(2道)、 AD7226(4道)。

2.几种常用D/A芯片管脚及功能介绍 ①DAC0832管脚分布及内部结构 如图2.28(a)、(b)所示。

图2.28(a) DAC0832管脚分布 图2.28 (b) DAC0832内部结构框图

②DAC1208/1209/1210和DAC1230/1231/1232管脚分布及内部结构 如图2.29(a) 、(b)所示。

图2.29 (a) DAC1208/1209/1210和DAC1230/1231/1232管脚分布

图2.29 (b) DAC1208/1209/1210内部结构框图

D/A芯片管脚功能说明:

D0~ D11 or 数据端 VREF 基准电源 Rfb 运算放大器的反馈电阻(已在片内) D0~ D7 Vcc 工作电源 Iout1、Iout2 输出电流端 ILE 片允许使用信号=“1”时有效 片选信号CS CS.WR1 =“0”时, 写信号1 WR1 选通输入寄存器 B1/B2 字节控制信号 =“1” D0~ D11同时存入输入寄存器 =“0” 只将D3~ D0 存入寄存器 写信号2 WR2 WR2 . XFER =“0”时, 选通DAC寄存器并开始D/A转换. 传送控制信号XFER 注:① DAC1230/1231/1232与DAC1208/1209/1210的管脚分布及内部结构几乎相同,仅数据端不同, 有8位数据输入端,D3~ D0 与D11~ D8 共用,分时传送。 ②DAC0832、DAC1230/1231/1232 、DAC1208/1209/1210 等芯片均为电流输出型,在使用时,应 加运算放大器。 ③ D/A输出电压的范围与VREF有关,一般有单极性+5V/+10V和双极性+5V/+10V。

3.D/A输出端单/双极性的连接 如图2.30所示。

图2.30 D/A转换的单/双极性电压输出

KB的1-2短接时,则为单极性电压(0~10VDC)输出;KB的1-4和2-3短接时,则为(-10 VDC ~+10VDC)输出双极性电压。

三 D/A接口设计

在D/A接口设计中,主要考虑的问题是:

①D/A芯片的类型(决定了DB的位数); ②D/A芯片的工作方式; ③输出极性及范围。

D/A与CPU的一般接口示意图如图2.31所示。

图2.31 D/A与CPU的一般接口示意图

同理,D/A接口的设计也包括两部分:接口硬件和接口软件。其中,接口硬件的设计主要考虑数据端DB和控制信号CS.WR1 、XFER .WR2等与CPU的连接;接口软件的设计主要考虑的是用何种语言来编写D/A启动程序。 (一)接口硬件设计

D/A的芯片类型一定,主要与芯片的工作方式和输出的极性有关。D/A芯片一般由三部分构成:输入寄存器、DAC寄存器、D/A转换,如图2.28/29(b)所示。其控制信号一般有CS.WR1 、XFER .WR2、ILE or B1/B2。 1.D/A芯片的工作方式

控制信号的接法不同,就有不同的工作方式,通常D/A有三种,即: 1) 直通方式

控制信号均接为有效状态(CS.WR1 、XFER .WR2 接为“0”,ILE 接为“1”), 只要有数

据来就开始转换并输出 。此方式多用于数字控制仪器中。 2) 单缓方式

除ILE or B1/B2直接接成有效状态外,只需一次选通控制信号CS.WR1 或XFER .WR2,就可使D/A芯片开始工作。一般又有四种选通方式: ①CS.WR1均接为“0”,选通XFER .WR2: 只要DB来,就送入DAC寄存器锁存;一旦选通XFER .WR2,DAC寄存器输出并开始D/A转换。 ②XFER .WR2均接为“0”,选通CS.WR1: 一旦选通输入寄存器,就将DB送DAC寄存器并开始D/A转换。

③WR1.WR2均接IOW, 选通CS.XFER: 输入寄存器和DAC寄存器同时选通,一有IOW(执行启动指令out产生)就开始D/A转换。 ④WR1.WR2 .XFER均接为“0”,选通CS:一旦选通CS就开始D/A转换。

只要接成上述四种方式之一,均可使D/A转换器工作在单缓方式。此方式用于多路 D/A依次转换并输出,如图2.32所示。大多计算机控制系统多采用此方式输出控制信号。

图2.32工作在单缓方式的多路D/A

3)双缓方式:除ILE or B1/B2直接接成有效状态外,需依次选通控制信号CS.WR1 和XFER .WR2 ,使多路D/A同步转换和输出,如图2.33所示。即分两步进行:先依次选通各CS.WR1, 分时传送DB至各输入寄存器;再同时选通XFER .WR2,实现D/A的同步转换和输出。如果有的计算机控制系统要实现同步控制,则可采用此方式。

图 2.33 D/A转换器双缓工作方式

2.接口电路的构成

接口电路= 数据驱动器(如:74LS244/245) 或锁存器(如:74LS273) + 译码电路(位置拨动开关、 或I/O芯片(如:8255A) 量值比较器/译码器等构成) 1)选通信号的产生

确定了D/A的工作方式后,就需考虑选通信号的产生及连接。一般选通信号可由译码器或I/O芯片某端口的某几位来产生。 2)数据端口的连接

数据端口的连接主要与D/A芯片和CPU的数据位数有关;与D/A芯片内有无输入寄存器有关。

①如果D/A芯片内无输入寄存器,则需外加数字锁存器(如74LS273)或经I/O芯片(8255A等),再与CPU的数据总线相连。一般大多D/A芯片内均有输入寄存器。有时为提高数据总线的驱动能力,往往还需加数据线驱动器74LS244/245。 ②数据宽度的匹配问题

D/A芯片的数据有8、10、12、16位, CPU的位数有8、16、32、64等。 a.D/A芯片的位数(8、10、12、16位)≤CPU的位数(8、16位)

两者可直接相连(即省去虚线框部分)或DB经接口芯片与D/A相连,数据可同时传送。如:8位D/A与8位CPU;8、10、12、16位D/A与16位CPU,如图2.34(a)、(b)所示。

(a) (b)

图2.34 D/A芯片位数<=CPU位数的数据端接口

a.D/A的位数(10、12、16位)>CPU的位数(8位)

数据需分时传送(先低8位,后高8/4/2位);DB需通过接口芯片,再与D/A相连。如10、12、16位D/A与8位CPU,如图2.35(a)、(b)所示。

(a) (b)

图2.35 D/A位数>CPU位数的数据端接口

(二)接口软件设计

D/A接口硬件连接好后,即可进行接口软件的设计。与A/D的接口软件相比,D/A的接口软件的编写较简单。一般有两条途径:用户编程和调用组态软件中的输出模块。 1. 用户编程

可用汇编语言或C语言编程: 采用输出指令out or outport(), 设D/A 通道数 通道地址+1 一般的程序流程如图2.36所示。 取数据区首址 通道数-1 2.调用组态软件模块 N 此方法较简单,只要在工具 设D/A 通道地址 转换完? ①

箱中直接调用 AO 模块,指定 ① Y 其输出通道号即可。 送数据至D/A并 返回 启动D/A转换

图2.36 D/A接口的一般程序流程图

四 应用举例

例一:4路8位D/A转换电路 1.主要性能指标 .通路数:4路 .分辨率:8位

.输出方式:0~10mA/4~20mA

.转换时间:~50μs(其中TLP-521-4延时8μs、D/A转换2μs、V/I转换~40μs) 2. 硬件结构

该电路由数据缓冲器U1 、控制电路U2~ U4 、数据寄存器U5、控制寄存器U6、光电耦

合器U7~ U9、4片D/A转换器及其相应的V/I等组成。其原理框图如图2.37所示,其线路图如图2.38所示。

该线路的CPU采用8088、系统总线采用STD总线,D/A采用DAC0832。其原理如下:用开关S1~S7 来设置板的基地址,一旦软件送来的地址A1~A7与S1~S7相符,则量值比较器通;当A0=0时,控制电路产生的信号WD用于选通数据寄存器U5,将要转换的数据DB经光电耦合器U7 、U8送入D/A的输入寄存器锁存;当A0=1时,控制电路产生的信号WC用于选通控制寄存器U6,送出4个控制字D0~D3(与WC0~WC3对应),分别作为4个D/A的片选信号,以启动D/A转换。D/A工作于单缓方式。 因D/A输出为电压信号,如果执行器接受的是电流信号,则需加 V/I转换电路。图2.39所示的V/I电路可提供0~10mA或4~20mADC的标准信号,用户可根据需要选择其中之一。

图2.37 4路8位D/A转换原理框图

图4 4路8位D/A转换线路图

图2.39 V/I转换电路

注:当KA的1-2短接时,通过调节调零电位器W1和量程电位器W2,为负载RL提供0~10mADC的电流;当KA的1-3短接时,通过调节W1和W2,为RL提供4~20mADC的电流。

3.接口程序

假设4路D/A转换数据存放在BUF0~BUF3四个连续单元中,则接口程序如下: …

MOV DX,BUF0 ;D/A转换数据区首址 DX MOV BL,04H ;D/A的通道数 BL MOV BH,0FEH ;D/A0控制字 BH BEG:MOV AL,[DX] ;

OUT BASE+0,AL;送D/A转换数

INC DX MOV AL,BH ;控制字BH AL

OUT BASE+1,AL;启动D/A D7 D0 ROL BH ;控制字循环左移如: 1 1 1 1 1 1 1 0 DEC BL ;通道数-1 JNZ BEG ;未完继续 RETURN ;完则返回

例二:16路共享D/A转换接口线路(如图2.40所示)。

该线路适应Z80、8085、8086、8088等CPU工作下的STD总线模式。其中,D/A采用DAC0808。 由于DAC0808内无输入寄存器,线路中采用8D锁存器74LS273作为D/A的数据接口,需转换的数据由STD的数据总线送入74LS273 锁存。一旦选通74LS273,则将数据经光电耦合器521-4(2片)送DAC0808转换。

又因采用16路共享D/A转换方式,需采用“一至多”多路转换器来实现。在此,选2片CD4051构成16路输出。输出通路的选通信号则由控制字D3~D0来确定,即控制字先锁存在4D锁存器74LS175中,一旦选通74LS175 ,控制字经光电耦合器521-4(1片)送入CD4051的INH和A、B、C端,选择其中的某一路输出。

由于采用共享方式,为了确保输出的控制信号稳定、可靠,还需在每个输出通路加保持电路。在此,采用电容C1~C16和TL084四运放大器构成,每路均可输出0~5V的模拟信号,并且有一定的驱动能力。

图5 16路共享D/A转换接口线路

2.3.5 AI/AO板综合实例

前面分别介绍了A/D 、D/A、 DI/DO板的构成、芯片、接口等知识,有了这些知识,用户就可自行设计或选用各厂商提供的过程接口板,从而实现过程的计算机控制。

一般,可将A/D板 和D/A板集成在一块板上;将DI、DO集成在一块板上;有的则将A/D 、D/A、 DI/DO 集成在一起,以便一块接口板上有多种功能。在工控机系统中,厂商往往提供多种规格的接口板和组态软件,供用户灵活选用,以实现过程的计算机控制。通过综合实例,了解其设计思想,以便今后举一反三。

综合实例一:PC机系列微机上实用的8位A/D 、D/A转换电路板 其线路如图2.41所示。

口地址译码 该线路由三部分构成 A/D转换

D/A转换

①口地址译码电路

该部分由74LS688、74LS00、74LS138、DIP-8和74LS125构成,受PC机读/写信号(IOR/IOW)、地址信号(A0~A9)和AEN信号的控制。为减轻微机的读/写负载,IOR、IOW均通过74LS125(处于常通状态)缓冲。在此规定该接口板可用口地址为278H~27FH,由A9~ A0确定,即:

A9 A8 ,A7 A6 A5 A4 , A3 A2 A1 A0

1 0 0 1 1 1 1 0 0 0 278H

1 0 0 1 1 1 1 1 1 1 27FH

如何设定口地址呢?显然,在278H~27FH 中A9~ A3的值不变,其状态由DIP-8来设

定。一旦执行OUT指令时,送出的A9~ A3与DIP-8的开关状态一致,则74LS688通,其选通信号送74LS138的G2B端,而IOR、IOW、A2 A1 A0 送74LS138的其余输入端,此时分别译出地址278H~27FH。其口地址分配如下: 278H:用于启动A/D。

279H:用于检查A/D转换结束否。 27AH:用于向A/D送读信号。 27BH:用于启动D/A转换。 27CH:用于开中断。 27DH:用于关中断。 27EH~27FH:未用。

图 6 PC机系列微机上实用的8位A/D 、D/A转换电路板

因篇幅问题不能全部显示,请点此查看更多更全内容

Top