微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机与PC机之间并行通讯的一种实现方法

单片机与PC机之间并行通讯的一种实现方法

时间:02-04 来源:互联网 点击:

1 引言

  在许多单片机控制系统的研制过程中,为使控制系统达到最佳的控制状态和最高的技术性能,进行控制参数的在线反复细致调整是必不可少的。以往单片机与外界进行人机对话都是通过可编程键盘显示接口器件8279实现的,但8279的加入,占用了大量的程序空间,有的将近整个程序的三分之一,另外,用小键盘进行控制参数的小幅度修正也不方便。

  再者,产品开发人员对控制系统内部的计算过程十分感兴趣,如果能将每一步的计算结果传送出来进行分析检验,必将对产品研制带来益处。单片机与PC机之间的串行通讯虽然也可以实现单片机与PC机之间的数据交换,但速度较低(最高19200byte/s),无法满足实时传送大量数据的要求。为此,开发了利用双端口RAM IDT7132和PC机的并行打印机接口,实现单片机与PC机之间并行通讯的方法,该方法只需通过接口电路与PC机打印机接口相连即可使用,且通讯速度也可满足要求。

图1 IDT7132结构功能框图

2 双端口RAM IDT7132的结构和特点

  IDT公司的双端口RAM时序与INTEL公司的单片机系统兼容,与现今流行的MCS—98/96系 列单片机相配合,特别适用于单片机与单片机、单片机与PC机之间大量数据的高速双向传送 。

  IDT7132是一种高速2K×8CMOS双端口静态RAM,它提供了两个带有自身控制、地址和I/O 引脚的独立端口,可独立地读写存储器中的任何单元。IDT7132还带有片内硬件端口总线仲裁电路,提供了BUSY总线仲裁方式,可以允许双机同步地读或写存储器中的任何单元,同时保证数据的完整性。IDT7132结构功能框图参见图1,非竞争的读写控制如表1所示。


表1 IDT7132非竞争读写控制字

左或右端口功能
R/D0-7 
XHXZ掉电模式
LLX数据输入数据写入存储器
HLL数据输出存储器中数据输出
HLHZ输出呈高阻

注:L=低电平,H=高电平,X=任意,Z=高阻


图3 硬件接口电路

3 PC机并行打印机接口各信号作用

  PC机都配有一个标准的CENTRONICS并行打印机适配器接口,长期以来一直是作为打印机 接口而应用的,通过对其分析发现:它也可以作为通用I/O并行口来使用。通过对该适配器 内的三个I/O端口的控制,可实现数据和控制信号的输入、输出[1]。下面对各I/O 端口及并行口各引线功能进行说明。

  PC机并行打印机适配器接口具有8位数据输入输出线,可通过读写378H I/O端口对外引线上的数据进行读写操作。对该端口进行一次写数据操作,意味着一个8位数据被写到一个8 位寄存器锁存并输出到外引线上。而对该端口进行一次读操作,读入的只是由写操作锁存在输出寄存器中的值,所以读操作只能用于打印机接口的自检。对于双机通讯来说,8位数据线只 能起到从PC机向外发送数据的作用。

  PC机并行打印机适配器接口具有5根控制信号输出线,可通过写37AH I/O端口把控制信号输出到外引线上,该输出信号也经过寄存器锁存 。控制字格式如表2所示。


表2 37AH I/O端口控制字格式

输出数据D7D6D5D4D3D2D1D0
外引线XXXIRQENINIT


  D4位IRQEN为中断允许控制,如果不采用中断方式,应使D4=0。另外,还要注意:外引 线INIT输出的信号逻辑与D2相同,而其它3位相反。

  PC机并行打印机适配器接口具有5根状态输入线,可通过读379H I/O端口把外引线上的 状态信号读入PC机,该端口输入缓冲器与状态输入线的对应情况如表3所示。

表3 379H I/O端口状态信号格式

输入数据D7D6 D5D4D3D2D1D0
外引线BUSYPESLCTXXX


  对于双机通讯来说,PC机可通过该端口读入数据,并且一般只使用D4到D7这4位。另外,由于D7位BUSY信号反相,可接一非门加以校正。注意:如果采用中断方式,中断请求信号必须从D6位 ACK引入,那么输入数据线只能使用D3、D4、D5、D7,数据的重组稍微麻烦些。

4 硬件接口电路设计

  该并行通讯的原理框图如图2所示,由PC机、并行通讯接口以及包括双端口RAM的单片机 控制系统组成。

图2 并行通讯原理框图

  单片机控制系统与PC机之间的并行通讯是通过对双端口RAM的读写实现的。单片机对双端口RAM的访问与片外扩展RAM没有区别,而PC机侧对双端口RAM的读写则需设计一接口电路才能实现。从以上的分析可以看出,PC机并行打印机适配器接口共有13根输出线和5 根输入线可供访问双端口RAM,而双端口RAM IDT7132的地址总线宽度是11位、数据总线的宽度是8位,因此必须使用锁存器74LS373实现地址和数据总线的共享,使用双路开关74LS157 实现将 IDT7132的8位数据分两次读入PC机。硬件接口电路如图3所示。

端口RAM的控制字、地址、输出数据都是通过PC机对378H端口写操作发出的,3个74LS37 3的锁存命令以及74LS157的控制命令则是通过对37A端口写操作实现的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top