【摘要】简要介绍了IEEE-488通用标准总线,重点介绍了使用IEEE-488总线实现8031单片机数据采集系统与PC机通信的硬件结构、接口电路及软件设计。
关键词:IEEE-488总线,单片机,数据采集,PC机
单片机数据采集系统,由于具有体积小、实时性好、编程灵活等优点,在仪器仪表、自动测试及工业控制等领域中得到越来越广泛的应用。同时单个单片机系统接口的标准化设计也显得越来越重要,为了能够充分利用微机的软、硬件资源,带有与微机通信接口的单片机系统已经成为一种发展趋势。IEEE-488总线是国际公认的通用标准接口总线,当仪器配备了IEEE-488标准总线后,就可像搭积木一样任意组成所要求的测试系统。本文介绍了使用IEEE-488总线实现8031单片机数据采集系统与PC机通信的硬件构成原理及软件设计。
1 IEEE-488总线简介
仪器设备接口的标准化,最早是由美国惠普(HP)公司倡导实施的,叫做HP-IB,由于其良好的接口性能,很快得到广泛应用,被美国电气与电子工程师学会命名为IEEE-488,并得到国际电工委员会的认可,同时颁布了相应的标准IEC625。在英国、日本、俄罗斯则称为GP-IB,我国已制定了相应的国家标准(GB249.1-249.2),虽然有多种叫法,但实质上除了机械标准方面欧美有所不同外,其余完全相同。使用该总线可以把世界上不同国家、不同厂家生产的仪器设备有效地连接起来。这样组成的系统方便灵活,功能强,适应性好,不仅大大降低了组建系统的成本,提高了效率,而且使每台仪器的功能和作用获得充分发挥,极大地提高了它们的使用价值。
IEEE-488总线是并行无源双向传输总线。其中有8根数据总线,3根挂钩总线和5根管理总线。
数据总线:DIO0~DIO7,它们是可以输入也可以输出的双向总线,用于发布地址、指令等多线消息,传递数据。
管理总线:ATN(ATTENTION,注意)线;IFC(INTERFACE CLEAR,接口清除)线;REN(REMOTE ENABLE,远控使能)线;SRQ(SERVICE REQUEST,服务请求)线;EOI(END OR IDENTIFY,结束或识别)线。
挂钩总线:DAV(DATA VALID,数据有效)线;NRFD(NOT READY FOR DATA,未准备好接收数据)线;NDAC(NOT DATA ACCEPTED,未接收到数据)线。
利用这三条线进行挂钩控制消息和数据的传递,确保信息传送的准确无误。
IEEE-488总线最多可同时挂接15台设备,不同的设备需分配不同的地址;要求传输电缆总长小于20 m,最高数据传输速率可达1 MB/s。当系统工作时,总线上的不同设备承担不同的任务,从逻辑功能上分为:控者、讲者、听者。
控者:可以设定挂接在总线上的设备的地址,设定讲者、听者,向它们发送命令,PC机则是典型的控者。
讲者:向系统中其他设备发送测量数据、状态数据等器件消息;一个系统中允许有多个讲者,但同一时刻只能有一个。
听者:可以接收数据的设备。
听者、讲者都要由控者来任命。一台设备可以同时具备上述三种功能中的一种、两种或三种。比如:当控者PC机任命信号源为听者,则可发送程控数据,规定它输出的信号的波形、频率、幅值;当PC机任命自己为听者,任命万用表为讲者,PC机就可以接收万用表的状态数据和测量数据。
2 硬件构成原理
该通信系统硬件采用模块化结构,其原理如图1所示。它主要由8031单片机数据采集系统,单片机IEEE-488总线接口,MS-2105A型 IEEE-488总线接口板(直接插入PC机总线扩展槽中)及PC机组成。

图1 系统结构框图
其中单片机系统的IEEE-488总线接口是用标准接口专用集成电路,即由Intel公司的8291总线收发器,8293总线驱动器构成,如图2所示。其中8291内部有16个寄存器(8个读寄存器和8个写寄存器)。它们由微处理器通过CS、RD、WR和RS0~RS2引脚寻址。

图2 8031与IEEE-488总线的接口电路
D0~D7:数据总线与8031数据总线P0口相连;RS0~RS2:选择寄存器进行读写操作。CS为片选端,低电平有效,连接至P2.5,地址从DFF0H到DFF7H。RD,WR分别控制对读、写寄存器进行操作。INT连接到8031的INT1,为高电平时表示有中断请求,因与8031的中断极性相反,所以需在程序中颠倒极性。
PC机IEEE-488总线接口板能够实现PC总线的各种微机与标准总线的通信,这里选用的MS-2105型接口板采用总线式连接,设备直接挂在总线上,8位并行数据双向传送。占用IBM-PC的8个连续地址端口。本接口板选用大规模集成电路D7210C,实现了IEEE-488接口的全部功能。芯片内有16个寄存器,包括8个读寄存器,8个写寄存器;工作时,首先用程序对寄存器进行初始化,然后再通过数据输出寄存器,向IEEE-488总线上的设备发送命令,传送数据。通过读某些状态寄存器,可以了解所需要的状态,也可通过数据输入寄存器读回IEEE-488总线上的设备发来的数据,整个通信都可通过程序控制,从而达到自动测试的目的。另外还可以在DMA方式或中断方式下进行数据传送。限于篇幅,具体内容在此不作详解。
3 软件设计
在单片机数据采集系统与PC机的通信中,PC机作为控者,其地址应为0,同时PC机设为听者,接收单片机发送的数据。单片机系统在此系统中地址设为5,并设为讲者,采集完数据后发送给PC机。单片机数据采集采用查询方式,采用INT1中断方式发送数据。本系统软件由两部分构成:单片机数据采集、发送程序(用8031汇编语言编制)和PC机控者设定、数据接收及处理程序(用C语言编制)。
3.1 单片机数据采集及数据发送流程
① 开始;延时1 s;系统可靠复位;初始化8291,包括:8291复位、8291初始化、开放8291讲中断、设地址为5、选定通信方式;颠倒INT引线极性,使之与8031中断极性相容。
② 等待控者设定,也就是等待PC机任命为讲者或听者。
③ 当控者设定成功(IEEE-488总线连接成功),初始化8031中断及相关寄存器。
④ 启动A/D转换,采集数据。
⑤ 当一次A/D转换完成,返回上一步,循环采集数据。其间单片机响应8291产生的INT1中断,发送数据到IEEE-488总线。采用中断方式发送可使采集与发送数据同时进行,提高了数据传输速度。INT1中断服务程序流程如图3所示。

图3 发送数据中断流程
3.2 PC机设定及读取数据程序流程
PC机设定及读取数据程序流程图如图4所示。

图4 PC机程序流程
4 结束语
用带有IEEE-488标准接口的模块组成系统时,如果模块是台式仪器,用标准无源电缆将各模块连接起来就成系统;如果模块为插件板,只要将插件板插入标准机箱即可。这类系统的灵活性和可扩展性是显而易见的。如果目前广泛应用的单片机系统能带有IEEE-488接口,无疑对于组建功能更强、规模更大的测试系统,对于减少不必要的重复劳动,提高效率,是有明显的实际应用价值的。
参考文献
1 刘文彦等.现代测试系统.长沙:国防科技大学出版社,1995
2 詹惠琴,宋兴华.使用IEEE-488总线的计算机自动测试系统.自动化与仪器仪表,1998,(6)
3 张旭东等.IBM微型机实用接口技术.科学技术文献出版社,1993




