用VC实现PC并行端口数字信息的输入/输出
作者: 游志宇 文章来源: vckbase目前,在实验室和工业应用的各种控制系统中,串口是常用的计算机与外部控制系统之间的数据传输通道。由于串行通信方便易行,所以应用广泛。但是使用串行通信,在实时性、速度、数据量等方面受到限制。而计算机的并行端口传输数据时是一次性传送8个位(一个字节)或更多,由于传输量较大,因此数据的传输速度要比串口快,在许多必须讲究传输速度的控制系统里,用PC并行端口与之连接就是一个很好的解决方案。
本文介绍PC并行端口在单片机等控制系统中作为数字I/O口的应用。在控制系统中,有许多的数字开关量、数字控制信号、数字信号等,都可以通过计算机并行端口进行采集;并将采集的数字信号经计算机处理后形成数字控制信号,再从计算机的并行端口输出进行各种自动控制。
一、PC并行端口介绍
目前,计算机中的并行接口主要作为打印机端口,接口使用的不再是36针接头而是25针D形接头。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高。
现在常见的并口有五种:SPP型、PS/2型、EPP型、ECP型和多模式接口,大多数PC机配有SPP并口:
SPP标准并行口有4位、8位、半8位:4位口一次只能输入4位数据,但可以输出8位数据;8位口可以一次输入和输出8位数据;半8位也可以。
PS/2简单双向并行口:它引入双向数据端口,这种双向数据端口容许外设每次向PC机发送8位信息。PS/2型并口是指所有具有双向数据端口,但不支持后面介绍的EPP或ECP模式的并行接口。
EPP增强并行口:允许8位双向数据传送,它可以在大约1ms的时间内完成包括握手联络在内的一个字节的数据传送;而SPP或SP/2接口则需要大约4ms才能完成同样的工作。因此可以连接各种非打印机设备,如扫描仪、LAN适配器、磁盘驱动器和CDROM 驱动器等。
ECP口扩展并行口:是双向数据端口,并能以ISA总线速度传送数据。ECP有缓冲区,支持命令周期、数据周期和多个逻辑设备寻址,在多任务环境下可以使用DMA(直接存储器访问)。
多模式接口:许多新型接口支持多种模式,可以工作在以上提到的部分或全部模式下,用户可以使用配置选择,使用上述各种接口形式,或只使用其中一些而禁止其它。
二、PC标准配备并行口介绍
本文主要介绍计算机的标准配备并行端口即25针的母接头端口的应用,在此基础上可以运用相同的原理使用其它模式的并行端口。并行端口共有25支脚,但不是每支脚均被使用到。这些脚被区分为3种主要的功能,分别是用于数据的传送、检查打印机的状态及控制打印机,其接口如下所示:
在PC机中,标准并行口使用3个8位的端口寄存器,PC就是通过对这些寄存器,也就是所说的数据、状态、控制寄存器的读写访问并口的信号的。本文中使用一些通用的叫法,8个数据位分别为D0~D7,5个状态位为S3~S7,4个控制为C0~C3。其中字母表示了端口寄存器,数字则表示该信号在寄存器中的位。
数据寄存器
数据端口或称数据寄存器(D0~D7)保存了写入数据输出端口的一字节信息。数据端口可以写入数据,也可以读出数据(即可擦写);写进去的当然是我们希望从数据端口引脚输出的数据,不过读进来的也只是我们上次写进去的数据,或是原来保留在里面的数据,并不是从端口引脚输入PC的数据。数据端口引脚是PIN2~PIN9,其定义如下:
数据寄存器(即数据输出端口) 可擦写、基地址 bit 引脚:D-sub 信号名 信号源 是否在连接器处倒相 0 Pin2 D0 PC 否 1 Pin3 D1 PC 否 2 Pin4 D2 PC 否 3 Pin5 D3 PC 否 4 Pin6 D4 PC 否 5 Pin7 D5 PC 否 6 Pin8 D6 PC 否 7 Pin9 D7 PC 否
如果我们把这8支脚当成一般的数字输出的脚位看待,上述8支脚就相当于是8个数字输出的位置一般,我们就可以把它们当成是8个可以自由控制的输出点。当我们通过数据端口传送数据时,就是改变这8支脚的电平状态;而接受方也按照相同的编码原则解释,就可以获得传送的数据。
状态寄存器
状态端口或称状态寄存器保存的是5个输入(S3~S7)的逻辑状态。S0~S2位不出现在并口连接器中。除了S0以外,状态寄存器是只读的,读出数据信息是状态端口引脚上的逻辑状态。S0是支持EPP传输并口的超时标志信息,可以用软件方法清零。在许多并口中,状态输入接有上拉电阻。状态端口引脚是Pin10~Pin13、Pin15,其定义如下:
状态寄存器(即状态输入端口) 基地址+1 bit 引脚:D-sub 信号名 信号源 是否在连接器处倒相 0 Time-Out 1 未使用 2 未使用 3 Pin15 nError(nFault) 外设 否 4 Pin13 Select 外设 否 5 Pin12 PaperEnd 补充:软件开发 , Vc ,
上一个:VC利用原始套接字实现网络监听
下一个:VC++学习经验之谈八大精髓
- 更多VC++疑问解答:
- VC++ 算法。
- MFC CListCtrl获取列数出错了,怎么回事?
- 谁有VC++6.0企业版中文版的下载地址
- vc++,关于TextOut的一个小问题
- 定义一个三维的CStringArray//一定要使用CArray模板?那操作的时候,使用那个类的函数对数组进行操作呢?
- 关于mfc消息映射的问题
- MFC中用TextOut输出的问题
- 请问如何在VC6.0里MFC下对万年历进行编程
- iArray.Add(iValue);//Add函数的参数不可以用CArray模板???
- 'USES_CONVERSION' : undeclared identifier;'A2W' : undeclared identifier
- vc6.0能不能用CImage,能的话给个例子,以及atlimage.h,
- VC 对话框 标题栏 怎么变成这个样子????如图!
- spin控件的UDN_DELTAPOS消息//下面代码什么作用? [
- VC修改DNF
- vc 套接字 struct
- asp
- php
- Delphi
- Matlab
- JSP
- Foxpro
- JS
- C/C++
- C#/ASP.NET
- VC++
- JAVA
- VB
- 汇编语言
- html/css
- CGI
- XML/UML
- wap
- 网站相关
- 网页素材
- python
- 微信小程序
- thinkphp
如果你遇到编程学习难题:
访问www.zzzyk.com 试试CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,