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

时间:2012-02-04来源:网络

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

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

输入数据D7D6 D5D4D3D2D1D0
外引线BUSY单片机与PC机之间并行通讯的一种实现方法PESLCT单片机与PC机之间并行通讯的一种实现方法XXX


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

4 硬件接口电路设计

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

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

图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端口写操作实现的。另需注意:当PC机 从双端口RAM中读数据时,应控制H3的单片机与PC机之间并行通讯的一种实现方法为高电平,使H3输出呈高阻状态,以避免对读入数据 产生影响。而PC机向双端口RAM中写数据时,H3的单片机与PC机之间并行通讯的一种实现方法应为低电平。

  为方便实时性的要求,可将双端口RAM右侧的片选信号单片机与PC机之间并行通讯的一种实现方法单片机与PC机之间并行通讯的一种实现方法相连(如图中虚线所示),借用PC机打印中断IRQ7采用中断方式进行并行通讯。单片机控制系统侧是主动方,单片机在每个控制周期最后将各项数据写入双端口RAM,然后由单片机与PC机之间并行通讯的一种实现方法发出中断请求。

5 软件设计

  下面给出用Turbo C2.0编写的非中断方式用于读写操作的两个函数。
  Void readdata(unsigned char read_address_L, unsigned char read_address_H,
  unsigned char read_data)
  {
  outportb(0x378,0x70); /*写双端口RAM控制字且使H3的单片机与PC机之间并行通讯的一种实现方法为高电平*/
  outportb(0x37a,0xf);
  outportb(0x37a,0xb);
  outportb(0x378,read_address_L);
  outportb(0x37a,0xa);
  outportb(0x37a,0xb);/*低8位地址送H2锁存*/
  outportb(0x378,read_address_H);
  outportb(0x37a,0xf);
  outportb(0x37a,0xb); /*高3位地址送H1锁存*/
  outportb(0x378,0x60); /*发读命令*/
  outportb(0x37a,0xf);
  outportb(0x37a,0xb);
  read_data=inportb(0x379)0xf; /*读低4位数据*/
  outportb(0x37a,0x9);
  read_data+=(inportb(0x379)0xf)4; /*读高4位,再与低4位合并*/
  }
  
  Void writedata(unsigned char write_address_L, unsigned char write_address_H,
  unsigned char write_data)
  {
  outportb(0x378,0x20); /*写双端口RAM控制字且使H3的单片机与PC机之间并行通讯的一种实现方法为低电平*/
  outportb(0x37a,0xf);
  outportb(0x37a,0xb);
  outportb(0x378,write_address_L);
  outportb(0x37a,0xa);
  outportb(0x37a,0xb); /*低8位地址送H2锁存*/
  outportb(0x378,write_address_H);
  outportb(0x37a,0xf);
  outportb(0x37a,0xb); /*高3位地址送H1锁存*/
  outportb(0x378,write_data);
  outportb(0x37a,0x3);
  outportb(0x37a,0xb); /*输出数据送H3锁存*/
  outportb(0x378,0x0); /*写命令*/
  outportb(0x37a,0xf);
  outportb(0x37a,0xb);
  }

6 结论

  利用双端口RAM和PC机的并行打印机接口实现单片机与PC机之间并行通讯,具有接口电路简单、对PC机侧不需作任何改动、易于实现以及通讯速度快等优点,选用CPU为486DX4/10 0的PC机通讯速率可达30kbyte/s,大大超过了串行通讯。该方案已成功地应用于以MCS196KC 为控制核心的机车柴油机数字式电子调速器的研制中,通过保留的历史数据为进一步改善调速器性能,特别是控制算法打下了基础。另外,该方案与笔记本电脑相结合,在今后数字式 电子调速器产品中可望扩展成便携式调试监控工具。

参考文献
[1]吕景瑜.微型计算机接口技术[M].北京:科学出版社,1995.
[2]钱占军.利用笔记本电脑打印机口实现数据采集[J].电子技术应用,1995( 6).
[3]张利. PC机打印口的原理及应用开发[M].北京:清华大学出版社,1996.

1 2

关键词: 并行通讯 双口RAM 打印机接口

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版