
本站地址:http://www.bajiao123.com

用Delphi 3.0和AX5412卡开发数据采集和处理系统
一、微机数据采集与处理系统简介
系统主要由被测控对象(设备)、A/D ~D/A 通道、开关量I/O
通道、微机等组成,如图1
所示。较复杂的系统包括单片机等多机系统。

利用IBM PC 系列微机及其兼容机I/O
通道开放的设计特点,许多厂商已经设计出采用板卡级结构的数据采集产品。这类产品在一块印刷电路板上包括了模拟多路开关(MUX)、采样保持电路(S/H)、模/
数、数/ 模转换器(ADC、DAC)等部件(有的板型还提供并行I/O 接口8255,定时/计数器8254
/8254 等通用可编程芯片),采用IBM PC
总线,可直接插入微机任一扩展槽。本文介绍台湾AXIOM 公司生产的AX5412
高速数据采集板,以及利用Delphi 开发该产品A/D ~D/A
接口软件的方法。
二、AX5412 数据采集板简介
本文简要介绍与接口编程有关的重要部分,以便阅读下文所述程序时有助理解。
1、采用12 位A/D 转换器,A/D 转换时间为9 μs。
2、可编程增益控制。
3、开关选择单端16 通道模拟输入或差动8
通道模拟输入(可抑制噪声,得到高精度A/D 转换结果)。
4、占用16 个连续I/O
端口地址,通过板上基地址选择开关设置基地址,默认为300H。
5、定时器基频率选择开关(J3):AX5412 自带一片8254
计数/定时器,8254 中的计数器1 和计数器2
在内部串联起来产生一个固定周期信号作为A/D
转换的触发源。有两个基频率1MHz 或10MHz 通过J3 选择,默认为1MHz。级联定时器的频率由下式确定:

除数1 和除数2 分别对应于8254 计数器1 和计数器2
设定的计数值(2 ~65535,计数器是16 位的)。计数器1 和计数器2
值串联相当于一个32 位的计数器,可以用于时间很长的定时。
6、A/D 数据寄存器(基址+0 和基址+1)
* 基址+0(读):低4 位说明进行A/D 转换的通道号(0 ~15);高4
位是A/D 转换值的低4 位;
* 基址+0(写):写任意值即实施软件触发开始A/D 转换;
* 基址+1(读):A/D 转换值的高8 位。
7、转换通道控制寄存器(基址+2,读/写):低4
位表示多通道A/D 转换的开始通道,高4 位表示多通道A/D
转换的结束通道。如低4 位和高4
位写入的值相同,表示单一通道连续采样。
8、0 通道D/A 输出(基址+4 和基址+5,写)
* 基址+4:写该寄存器高4 位输出D/A0 低4 位,该寄存器低4
位无效;
* 基址+5:写该寄存器8 位输出D/A0 高8 位。
9、1 通道D/A 输出(基址+6 和基址+7,写)
* 基址+6:写该寄存器高4 位输出D/A1 低4 位,该寄存器低4
位无效;
* 基址+7:写该寄存器8 位输出D/A1 高8 位。
10、状态寄存器(基址+8)
* 读:第7 位(A/D 转换完成位)EOC 表示A/D 转换是否完成。若EOC=0,A/D
转换已完成,可以读取A/D 转换数据;若EOC=1,A/D
转换未完成。当开始读取数据,EOC 被重新置1;
*
写:向该寄存器写任何值清除中断请求。在实际中断服务程序中,在开中断前应先清中断,再利用控制寄存器(基址+9)开中断。
11、控制寄存器(基址+9)
* 0 ~1 位:控制启动A/D 的触发源;
* 2 位:为1,DMA 方式有效;为0,DMA 方式无效;
* 4 ~6 位:选择中断级别。(PC 机8259
中断控制器管理的中断中,中断2 系统未用,一般选2 级中断)
12、定时器控制寄存器(基址+10,写)
* 0 位:若为1,表示AX5412 板上8254 计数器中由计数器1 和计数器2
串联成的定时器触发起作用;否则,不起作用。
13、增益控制寄存器(基址+11,读/写):低4
位组合表示增益。
三、编程实例
1. 软件启动,查询管理
·A/D 轮换:
设有一模拟输入信号单端输入,输入10 通道,现对其进行A/D
转换,输入计算机。
{...}
var
const Basea:Word= $300;//AX5412
默认基地址为300H
{...}
procedure Adc:Integer;//A/D 转换
var
state :Byte;// 读取A/D 转换完成位
al :Byte;//A/D 转换低4 位
ah :Byte;//A/D 转换高8 位
adval :Integer;//A/D 转换结果
begin
with myPort do
begin
Port[Basea +2]:= $AAH;
//10 通道单通道连续采样,170D=AAH
Port[Basea +11]:=0;// 增益为1
Port[Basea +9]:=0;// 软件启动A/D 转换
Port[Basea]:=0;// 开始A/D 转换
repeat
state:=Port[Basea +8];
until b and $80= $80
;// 检测A/D 转换完成情况
al:=Port[Basea];// 读A/D 转换值低4 位
ah:=Port[Basea +1];// 读A/D 转换值高8 位
adval:=(al/16) or (ah *16)
;// 计算12 位A/D 转换结果
Adc:=adval;// 返回值
end;
end;
·D/A 转换:
设将一模拟控制电压Volt 从D/A1 通道输出,控制某一对象。
说明:AX5412 数字量输出满量程(即12 位均为1 时,数字值为4095D)时输出的模拟电压为5
伏。
procedure Dac(Volt:Float);//D/A 转换
var
al :Integer;//D/A 转换低4 位
ah :Integer;//D/A 转换高8 位
daval :Float;
begin
daval:=4095/5 *Volt;
// 将欲输出的模拟电压值近似为数字值
ah:=Int(daval/16);//A/D 转换高8 位
al:=Int(daval -ah *16) *16;//A/D 转换低4 位
with myPort do
begin
Port[Basea +6]:=al;
// 取D/A 通道1,输出D/A 转换值低4 位
Port[Basea +7]:=ah;// 输出D/A 转换值高8 位
end;
end;
2. 定时启动,中断管理
设采样点数为1024,采样频率为3000Hz,32 位定时器采用1MHz
基频率,连接PC 机8259 的2 级中断。
⑴
本站地址:http://www.bajiao123.com

