本文介绍如何把一台PC机当做一台5通道(可扩展至8通道)的逻辑分析仪来使用的方法。这种方法利用PC机的并口提供5通道输入,实现此功能的软件是用Turbo C++编写的。
简介
本电路简单易做,比较实用,能够提供商品化的逻辑分析仪的大部分功能。这个设备的最大缺点是受并口能力的限制,采样率比较低。在奔腾75的PC机上采样率最高为5kHz。虽然这样的采样率还不能与商品化的逻辑分析仪相比,但对于不少电路来说还是足够了。
这个电路对计算机要求很低,只要有并口及VGA显示器就可以了。对计算机速度没有要求,不过计算机的速度快一些的话,采样率也会得到一定提高。功能运行程序是DOS下的,但可以在Windows的DOS窗口下运行。
工作原理
正如上面所提到的,计算机的并口作为提供5通道信号输入的接口。
实现该功能软件是通过3个8位的端口来控制并口LPT1,其3个控制端口地址分别是378H、379H、37AH。378H端口是基地址端口,这个端口用来从并口输出8位数据。基地址加1的端口379H是状态端口,基地址加2的端口37AH是控制端口,我们可以利用这两个端口来从并口获得8位的输入数据。图1说明了并口的每一个控制端口对应的实际引脚。

控制采样率的方法
采样率的控制是由PC机内部的8253或者同类型芯片完成的。8253的输入频率大约为1.19MHz。8253有3个频率定时器:Time 0 提供一个18Hz的定时信号作定时用途;Time 1 用于提供内存刷新信号;Time 2 用于控制PC机内部的扬声器和其他设备。Time 0 连接到8259的IRQ0 依次调用INT 08中断、INT 1C中断。通常情况下,PC机使用INT 08中断来保持确定时间。通过重新设定8253定时和写一个新的INT 1C中断历程,就可以控制采样率。
重新设定8253定时控制器的C语言程序如下:
void set_rate(void)
{
int number;
int ratehi;
int ratelo;
number=65536/(sample-rate/18.2);
ratehi=number&0xff00;
ratehi=ratehi/256;
ratelo=number&0x00ff;
outportb(0x43,0x36);
outportb(0x40,ratelo);
outportb(0x40,ratehi);
9}
首先把INT 1C中断设置为完成采集5通道数据并把结果画到屏幕上。然后,8253定时控制器被重新设定到需要的采样率。
当上面两步完成后,在每一次8253定时时间到时会自动调用新的INT 1C中断历程。8253的频率可在18Hz到65kHz之间任意调节。但是,运行后的程序将限制采样率在100Hz到5kHz之间。
新的INT 1C中断历程如下:
void interrupt sample()
{
static int x=35;
int y;
int offset=0;
char temp;
int mask=1;
ticks++;
if (sample-on) 9
if(index==0){
x=35;
if(x==639){ 9
x=35;
cleartraces();
}9
temp=readport();
if (compare(stop_trigger_mask)==1)
sample_on=0;
for(y=429;y>=79;y-=50){ 9
if (((int)temp&mask)>0)
offset=25;
else
offset=0;
mask=mask<<1;
writedot(x,y-offset);
}
data[index%100000]=temp;
index++;
x++;
}9
}9
注:上述两个用Turbo C++编写的程序供读者加深理解,其可执行文件,读者可到文后提供的网址下载。
制作接口电路
制作这个电路仅需要一根打印电缆和一个74LS245缓冲器,缓冲器用来保护并口。图2是具体的电路图。
电路部分非常简单,用到了一片74LS245作为缓冲,可以直接焊接到并口的壳子里面。输入部分可以用标准的测试棒,如果实在找不到,也可以使用鳄鱼夹或者万用表笔之类的代替,测试棒与并口之间的距离不要太长。
程序的使用
前面说过,程序为DOS版本,但可以在Windows的DOS窗口下运行。程序界面如图3所示。

1.其主要功能如下:
进入程序后,为采样显示区,在这里,我们可以进行采样或者停止采样、设置采样率等功能。程序还具有存储功能,当我们按V键会进入存储显示区,在存储显示区可查看刚才采集到的数据。这样我们可以先采集数据,然后切换到存储显示区慢慢研究分析数据,而不受时间的限制。
2.采样显示区操作指示
ESC:
退出程序
S:开始采样或停止采样。当进入程序后,按下“S”键,开始采样,如果再次按下“S”键,停止采样。
V:显示存储的轨迹
R:提升采样率
r:降低采样率
采样率可在100Hz到5kHz之间调整,调整可以使用键盘的“R”键(即shift+r)或“r”键。
C:清除缓冲区
3.存储显示区操作指示
存储显示区见图4。

当按下“V”键可显示刚才采集到的数据。
这时可用键盘的“左”键和“右”键来滚动显示。
用键盘的“上”键和“下”键来放大显示或缩小显示。
按ESC键可返回主菜单。
本文涉及的软件和软件的源代码可到网站http://ediy.yeah.net上下载。
(电子DIY工作室)