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

发布者:那是一条路都最新更新时间:2012-02-04 来源: 计算机自动测量与控制关键字:并行通讯  双口RAM  打印机接口 手机看文章 扫描二维码
随时随地手机看文章

1 引言

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

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

t3201.gif (10399 bytes)

图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/33-1.gif (125 bytes) 33-2.gif (149 bytes) 33-3.gif (156 bytes) D0-7  
X H X Z 掉电模式
L L X 数据输入 数据写入存储器
H L L 数据输出 存储器中数据输出
H L H Z 输出呈高阻

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


t3302.gif (31577 bytes)

图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端口控制字格式

输出数据 D7 D6 D5 D4 D3 D2 D1 D0
外引线 X X X IRQEN 33-4.gif (272 bytes) INIT 33-5.gif (373 bytes) 33-6.gif (187 bytes)


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

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

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

输入数据 D7 D6  D5 D4 D3 D2 D1 D0
外引线 BUSY 33-7.gif (192 bytes) PE SLCT 33-8.gif (279 bytes) X X X


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

4 硬件接口电路设计

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

t3301.gif (2705 bytes)

图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的33-3.gif (156 bytes)为高电平,使H3输出呈高阻状态,以避免对读入数据 产生影响。而PC机向双端口RAM中写数据时,H3的33-3.gif (156 bytes)应为低电平。

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

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的33-3.gif (156 bytes)为高电平*/
  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的33-3.gif (156 bytes)为低电平*/
  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.

关键字:并行通讯  双口RAM  打印机接口 引用地址:单片机与PC机之间并行通讯的一种实现方法

上一篇:MCS-51单片机访问超大容量存储器的实现
下一篇:MCS-51单片机与二线制串行E2PROM的接口方法

推荐阅读最新更新时间:2024-03-16 12:52

基于FPGA的RAM实现及应用
  随着电子技术的飞速发展,大量的高速数据采集和在线测试对现代工业测控系统和仪器仪表的功能和性能提更高要求。CPU并行工作(双单片机系统)方式得到广泛应用。为了使2个单片机能够快速有效交换信息,充分利用系统资源,采用双口RAM实现存储器共享是目前较为流行的方法。   大容量、高速FPGA器件具有集成度高、体积小、灵活可重配置、实验风险小等优点,在复杂数字系统中得到越来越广泛的应用。数字电路设计采用l片FPGA器件、存储设备和一些电气接口匹配电路的解决方案已成为主流选择方案。用FPGA来实现双口RAM的功能可以很好地解决并行性和速度问题,而且其灵活的可配置特性使得基于FPGA的双口RAM易于进行修改、测试及系统升级,可降低设计成本
[嵌入式]
基于FPGA的<font color='red'>双</font><font color='red'>口</font><font color='red'>RAM</font>实现及应用
RAM在自动化系统中的应用
摘要:对双口RAM操作中共享冲突的几种方式进行了讨论和分析。给出了防止这些共享冲突的基本方法,同时结合其在自动化系统中的应用给出了双口RAM和现场总线、工业以太网的接口应用方案。 关键词:双口RAM;现场总线;工业以太网;CAN;DSP 1 引言 在现代工业测控系统中,由于对系统的功能和性能要求越来越高,一般都采用高性能的CPU(如DSP)或嵌入式系统(如386EX等来实现测控功能,并将这些智能设备联网组成自动化系统。在早期的应用中,设备联网普遍采用RS232/RS422/RS485方式。随着计算机技术的发展,现场总线技术在自动化系统中的应用逐渐普遍,而采用工业以太网技术则是今后技术发展的一个趋势。 测控设备的设计可以
[缓冲存储]
基于RAM的LonWorks智能通信节点设计
摘要:介绍一种基于双口RAM的LonWorks现场总线智能通信节点的设计方法,并给出详细的设计步骤、硬件及软件实现。通过此LonWorks智能通信节点,能够完成RS-232-C/RS-485标准与LonTalk协议间的转换提供RS-232-C/RS-485网络到LonWorks网络的接口,因此,具有很高的应用价值。 关键词:现场总线 LonWorks 智能节点 神经元芯片 双口RAM 引言 LonWorks(Local Operating Networks,局部操作网络)总线是由美国Echelon公司推出的一种现场总线技术。由于LonWorks控制网络的开放性、高速性和互操作性,它已广泛用于工业、楼宇、家庭、办公设备、交通
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved