“电子爱好者如何用电脑”系列之数字化仪器
基于PC机的简易5通道逻辑分析仪

🏠 首页 《无线电》杂志 2002年 🔗 第11期 🔗 第29页 分类:电脑与单片机 🔗

本文介绍如何把一台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说明了并口的每一个控制端口对应的实际引脚。

图1
图1 🔍原图 (850×292)

控制采样率的方法

采样率的控制是由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所示。

图2
图2 🔍原图 (567×454)

1.其主要功能如下:

进入程序后,为采样显示区,在这里,我们可以进行采样或者停止采样、设置采样率等功能。程序还具有存储功能,当我们按V键会进入存储显示区,在存储显示区可查看刚才采集到的数据。这样我们可以先采集数据,然后切换到存储显示区慢慢研究分析数据,而不受时间的限制。

2.采样显示区操作指示


ESC:
退出程序

S:开始采样或停止采样。当进入程序后,按下“S”键,开始采样,如果再次按下“S”键,停止采样。

V:显示存储的轨迹

R:提升采样率

r:降低采样率

采样率可在100Hz到5kHz之间调整,调整可以使用键盘的“R”键(即shift+r)或“r”键。

C:清除缓冲区

3.存储显示区操作指示

存储显示区见图4。

图3
图3 🔍原图 (567×454)

当按下“V”键可显示刚才采集到的数据。

这时可用键盘的“左”键和“右”键来滚动显示。

用键盘的“上”键和“下”键来放大显示或缩小显示。

按ESC键可返回主菜单。

本文涉及的软件和软件的源代码可到网站http://ediy.yeah.net上下载。

(电子DIY工作室)