PC机标准并行接口的原理和应用_第1页
PC机标准并行接口的原理和应用_第2页
PC机标准并行接口的原理和应用_第3页
PC机标准并行接口的原理和应用_第4页
PC机标准并行接口的原理和应用_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在 PC 机开始流行的几年前 Centronics 公司制造出售过一种使用简单并 行总线接口的打印机 这种并总线用于将一台计算机的数据传送到一台打印机 上 同时它还能检测打印机的状态 一直到打印机空闲时才继续传送其它数据 后来这种形式被很多打印机制造商和外设商所采用 很快就被制定为工业标准 随着不同的接口形式在 PC 机中被应用 这种并行接口也一直不断的改进 现在 的 PC 电脑都会配备一个 25 针的并行接口 也称 LPT 口或打印接口 它现在一 般都支持 IEEE1284 标准中定义的三种并行接口模式 分别为 SPP Standara Parallel Port 标准并行接口 EPP Enhanced Parallel Port 增强并行接 口 ECP Extended Capabilities Port 扩展功能并行接口 ECP 模式除了 拥有双向数据传输的支持它还有特扩展的寄存器控制功能 使得传输速度从 SPP 模式的 50K Bit 秒提升到 2MB 秒 并行接口通常用于连接打印扫描设备或 其它要求并行传输的外部设备 如果我们了解它的工作原理和编程方法 就可 以把方便用于电子制作中 用它进行数据传输或实现自动控制 下面将以一个 简单实例 简易 8 位 LED 数字显示牌 来说明 PC 机标准并行接口 SPP 的 基本工作原理和编程方法 制作实例制作实例 现在电脑已经是很普及的了 一些小型或个体商店也会用到电脑去处理进 销存的账目 在一些场合中往往要让客人当场直观地知道要支付的金额或让客 人查询商品的售价 这时就需要超市 POS 系统中的 LED 报价牌 但它的整个价 格很高 我们在这里实验一个用电脑并口直接控制的简易 8 位 LED 数字显示牌 以此帮助大家更容易的理解电脑并行接口标准模式的基本工作原理 图 1 元件 先来看看要用到的元器件 请看图一和表一 图中就是部分的元件 它要 用的元件确实很少 甚至没有用到一个电阻 为了简化电路和充分利用电脑的 接口 这里选用了 USB 取电 把 USB 连线的一头剪下 可以看到有红黑绿白 四根不同颜色的线 黑色为地线 红色为 5V 其余为信号线不选用 焊接操作 时应小心不要把它接反在电路上 避免损坏 USB 口和并口可以加整流二极管以 防反接 共阳极双七段 LED 的引脚定义请看图三左半部 而右半部是测量其 好坏的示意图 数字万用表打到测二极量档 这时红表笔有一个正电压 普通 万用表则可以使用电阻档 黑表笔有正电压 用红表得笔接触 LED 阳极 V Vcc 黑表笔分别接触各个笔划 各笔划亮时为好 否则为坏 制作中也可 以使用共阴极的七段 LED 只要在软件发送数据时取反就行了 因用到二个 IC 和八个 LED 如用万用板去制作连线很多 有条件可以自己制板 如你只要了解 并口的原理也可以只接一个 LED 以简化电路 笔者则是使用一块从仪表拆下旧 的 8 位数字 LED 印刷电路板 最终的实验成品和演示程序请看图五图六 元 件用 量备 注 DB25 孔式插座 1 也可以用针式 双 DB25 针式插头连线 1 用于连接 74HC3732 74LS373 也可 20 脚 IC 座 2 可省 双七段 LED 4 共阳极 单个的要 8 个 USB 接线 1 用于取电 没有 USB 接口用 5V 电源替代 万用板 1 可以自行蚀刻电路 表一 元件表 这个电路的原理也是很简单的 先来看看图四的电路图 IC1 和 IC2 为 74HC373 三态八 D 锁存器 电路中只用到输出态和锁存态 而没有使用到高阻 态的控制 所以芯片上输出控制端 1 脚 只要接地就行了 IC1 是用来控制七 段 LED 的阳极电压的 IC2 是用来控制七段 LED 的笔划的 具体的控制过程为 第一步 软件置并口 16 脚为高电平 17 脚为低电平 这时 IC1 为输出态 IC2 为锁存态 送选择显示位数据到 LPT2 9 脚 D0 D7 对应 8 个 LED 因这时 IC1 为输出态故数据输出到 IC1 的 Q0 Q7 IC2 不受影响 第二步 置并口 16 脚为 低电平 17 脚为高电平 这时 IC1 的数据被锁存 IC2 为输出态 此时送笔划 数据到 D0 D7 重复第一步时 IC2 的数据被锁存 如此时 IC1 的 Q0 为高电平 IC2 的 Q1 Q2 为低电平 那么 DS1 号 LED 的 b 和 c 笔划段被点亮 显示 1 字 符 若这时置 IC1 为输出态 输入数据置 IC1 的 Q1 为高电平其它为低电平 1 字符便会移到第 2 个 LED 上显示 只要数据改变的快 人眼看起来就是二个 1 同时显示的 这就是动态显示的基本原理 要想向计算并口输入或输出数据那么要对它进行编程 那么下面我们来了 解一下并口的原理和软件的编写方法 图 2 USB 接线用于取电 图 3 共阳极双七段 LED 的引脚定义和测量方法 图 4 电路图 点击放大 图 5 制作成功的样品 图 6 演示程序 软件及接口工作原理软件及接口工作原理 先来看看图七和图八 它们是常用的并行接口形式 图七是 PC 后后面板上 的 DB25 孔式并行接口 现在它通常都会整合在主机板上 要应用 PC 并口就是 从这里取得 而在旧式的机器上则需外加打印卡或多功能卡取得 PC 机要扩展 多一个这样的接口也需要外加相应的板卡 图八是用于连接 PC 主机和打印机 或其它外设 的连接线 由一个针式 DB25 接头和一个 Centronics 公接头组 成 图九是打印机 或其它外设 的 Centronics 母接头 Centronics 是一种 36 脚弹簧式接口引脚定义看表二 图 7 PC 后面板上的 DB25 并行接口 图 8 打印机连接线 图 9 打印机上的 Centronics 并行接口 本文的实例制作里选用了标准的并口模式 SPP 模式 它是最简单的模 式 它可以提供 50K Bits 秒的典型传输速度 其最高的传输速度可达 150K Bits 秒 可进行 9Bits 的并行输入和 12Bits 的并行输出 通常可选择 Nibble 4bits 或 Byte 8bits 的方式进行输入数据 还有一种 Bi directional 的双向传输方式 这种方式需硬件支持 现在的板载 LPT 通常在 SPP 模式下也是可以进行双向传输的 SPP 硬件是由 8 条数据线 4 条控制线 和 5 条状态线所组成 它们分别对应三个不同的寄存器来进行数据的读写操作 表二是并行接口引脚定义表 并行接口输出的是 TTL 标准的逻辑电平 输入信号也要符合 TTL 标准 这 种特性可以使接口容易应用在电子设计中 大部分的 PC 并行接口能吸收和输出 12mA 左右的电流 如应用时小于或大于这个值 应使用缓冲电路 针脚 Centronics 针脚 D Type25 I O SPP 信号 寄存 器 硬件反 转 11 输入 输 出 nStrobe 选通控制是 22 输出 Data0 数据位 0数据 33 输出 Data1 数据位 1数据 44 输出 Data2 数据位 2数据 55 输出 Data3 数据位 3数据 66 输出 Data4 数据位 4数据 77 输出 Data5 数据位 5数据 88 输出 Data6 数据位 6数据 99 输出 Data7 数据位 7数据 1010 输入nAck 确认状态 1111 输入Busy 忙状态是 1212 输入 Pager Out 状态 Pager End 缺纸 1313 输入Select 选择状态 1414 输入 输 出 nAuto Linefeed 控制是 自动换行 3215 输入 nError nFault 状态 错误 3116 输入 输 出 nInitialize 初始化 控制 3617 输入 输 出 nSelect Printer 控制是 nSelect In 选择输 入 19 3018 25Gnd Ground 信号地 表 2 D 型 25 针和 36 针 Centronics 的针脚定义 表注 表注 没有在表中列出的 Centronics 引脚定义有 15 保留 悬空 16 逻辑地 17 机壳地 18 保留 悬空 33 地 34 保留 悬空 35 5V 表中 I O 栏中的 表示如果并行接口支持双向传输则该引脚可以输入数据 表中 SPP 信号 栏中 信号名称前的 n 表示该信号是低电平有效的 例如 nError 表示如果打印机出错则这个针脚将为低电平 正常为高电平 这里的信号是指 定于打印机的 其它的外设可能有不同的定义 表中的 硬件反转 栏所表示 的意思是 输入的信号先被并行接口硬件反相再送到相应的寄存器 例如 Busy 外部设备输入一个逻辑信号 1 TTL 5V 逻辑电平 信号被反相送入 状态寄存器 这时读状态寄存器 Bit7 最后一位 为 0 如输入信号为 0 Bit7 的值则为 1 现在整合在主板上的并行接口通常可以选择使用 3BCh 378h 和 278h 这三 个基地址 它们几乎都支持 SPP ECP 和 EPP 模式 你可以在 BIOS 设置为并行 接口选择基地址 地址值为 16 进制数加 h 表示 3BCh 这个地址在早期的并 口打印机适配器上是不支持 EPP 和 ECP 模式的 在实例程序中使用了直接检测 端口的方法来检测并行接口基地址分配 其方法是向基地址写一个非 FFh 的值 再读出该基地址的值 如果读出的是写入的值而不是 FFh 表明地址是可用的 这种方法在 DOS 或 Win9x 系统是很容易实现的 在 WinNT 或 Win2000 下可用第 三方写端口控件或自行编写有 Ring0 特权的程序 下面一段检测基地址的汇编 修改一下可以镶入到 C VC Delphi C Builder 中 只能在 Win9X 或 Dos 下 正常运行 若用软件也可以使其在 win2k 或 xp 下运行 具体可以参看本文范例 中的说明 mov dx Address Address 为基地址 如为控制 状态地址时向指定口地 址读写数据 mov al Data Data 为要向基地输出非 FFh 的数据 out dx al 向基地址写数据 in al dx 读基地址数据 mov Result al 向主程序返回读出的数据 再用主程序比较 Data 和 Result 的值 若相同则该基地址可用 那么如何对端口读写数据呢 在实例制作中程序又是如何控制并行接口引 脚电平的呢 SPP 标准并行接口模式有三个寄存器 分别为数据寄存器 状态寄存器和 控制寄存器 通常称为数据端口 状态端口 控制端口 在本文的实例中用到 数据寄存器和控制寄存器 下面来看看它们的具体操作方法 数据寄存器 数据寄存器 数据寄存器所占用的地址是并行接口的基地址 连接于接口的 2 9 针 如 果你的并行接口不支持双向传输 则它只能输出数据 当你向寄存器写一个八 位二进制数时 这个二进制数的每一位的值分别对应设置该接口 2 9 针的电平 状态 当数据为 1 时 引脚就被设定为高电平 数据为 0 时引脚则为低电平 也就是说我们要想使引脚 2 引脚 4 和引脚 9 为高电平时 就要向数据寄存器 写二进制 10000101 十进制为 133 十六进制为 85 可以用下面一段程序 mov dx Address Address 为数据寄存器地址 LPT 基地址 mov al 85H 数据 out dx al 向数据寄存器写数据 在使用 EPP 或 ECP 模式下是 数据寄存器是支持双向传输的 这样它可以 用来接收输入的电平状态 要注意的是在读入数据前时最好先把数据寄存器置 为高电平 可以只单独设置要读取的数据位 然后可以用以下的语句去读取 数据 mov dx Address Address 为基地址 如为控制 状态地址时向指定口地 址读写数据 in al dx 读基地址数据 mov Result al 向主程序返回读出的数据 以上的读写程序同样适用于下面介绍的控制寄存器和状态寄存器 只要把 Address 的值改为相应的寄存器地址就可以了 这里所说的读就是从寄存器返 回一个值 这个值就是所对应的引脚逻辑电平值 写就是向寄存器发送一个值 这个值将会反映到相对应的引脚上 引时引脚逻辑电平的高低变化 知道这些 我们就可以明白如何控制实例电路显示数字了 如要在最右边的第一位显示 8 先要得知 8 在共阳极七段 LED 中的编码 因是共阳极的所以要显示 8 就 要要求 abcdefg 极为低电平 在这个电路编码就为 10000000 十进制为 128 也就是说要 IC2 的 Q0 Q7 的电平为这个值 同时还要求 VCC 为高电平也就是 IC1 的 Q0 端为高电平 要满足这个要求先要向 LPT 控制寄存器写 12 这时 LPT16 脚为高电平 17 脚为低电平 IC1 为输出态 IC2 为锁存 送 1 到数据寄 存器 此时 IC1 的 Q0 为高电平 向控制寄存器写 0 IC1 为锁存 IC2 为输出 态 是写 128 到数据寄存器 这时 IC2 输出脚电平符合要求 LED 显示 8 具 体的编程方法请看所附例程 地址 I O 数据位引脚SPP 信号 数据位为 1 时引脚电平状态 Bit02Data0 H H 为高电平 L 为低电平 Bit13Data1H Bit24Data2H Bit35Data3H Bit46Data4H Bit57Data5H Bit68Data6H 基地址输出 如果并口支持双向 传输则也可输入数据 Bit79Data7H 表 3 数据寄存器的相关参数 状态寄存器 状态寄存器 状态寄存器占用的地址是基地址加一 与接口的 10 11 12 13 15 针相连 这个寄存器是只读寄存器 在用于打印机驱动时用来取得打印机的当前状态 如出错 选中 缺纸等等 该寄存器中包含一个 IRQ 中断寄存器 由 Ack 相反后 形成 当有中断发生这个数据位为 0 在读入数据时要注意的是 Bit7 引脚 11 在输入 5VTTL 电平时 数据值为 0 有反转的特性 地址 I O数据位引脚 SPP 信号 数据位为 1 时引脚电平状态 Bit0 保留 Bit1 保留 Bit2 IRQ Not Bit315ErrorH Bit413Select InH Bit512Paper OutH Bit610AckH 基地址 1输入 Bit711BusyL 表 4 状态寄存器的相关参数 控制寄存器控制寄存器 控制寄存器占用的地址是基地址加二 与接口的 1 14 16 17 针相连 寄存 器可读写 其中 Bit0 Bit1 Bit3 有反转的特性 通常用于打印机控制时 这个 端口只用发送控制数据 如初始化机印机 自动换行等 这个端口还有高阻特 性 在应用时可以根据要求加电阻 以使电平足够高或足够低 Bit4 为 IRQ 应 用 当向 Bit4 写入 1 时 将使 ACK 引脚 10 信号反相后成为中断请求 IRQ 信号 通常为 IRQ5 或 IRQ7 在本文中的实例里 用到 LPT16 17 引脚去控制 IC1 和 IC2 的控制端 无论是使用那一个寄存器在程序的编写过程中一定要注 意引脚电平和数据位的相互关系 否则就得不到想要的电平或数据 地址 I O 数据 位 引 脚 SPP 信号 数据位为 1 时引脚电平 状态 Bit01StrobeL Bit114Auto LinefeedL Bit216 Initialize Printer Reset H Bit317Select PrinterL Bit4 Enable IRQ Via Ack Line Bit5 Enable bi directional Port Bit6 基地址 2 输入 输 出 Bit7 表 5 控制寄存器的相关参数 握手信号 握手信号 使用标准 PC 并行接口的打印机会用到 Centronics 标准的握手信号 时序 图见图十 首先数据加到数据寄存器 然后检查 Busy 引脚 11 是否为高 为 高打印机处在以下状态之一 正在输入数据 正在打印操作 打印机出错 处 在脱机状态 这时打印机不接收数据 Busy 为低时 nStrobe 引脚 1 输出一 最小宽度大于 1us 的负脉冲 打印机随后接收数据并使 Busy 变为高 打印机接 收完一个字节后回送给并行接口 nAck 引脚 10 一个宽度大于 5us 的响应负脉冲 这个信号可以被并行接口硬件反相之后作为 IRQ 中断信号或做为查询的状态信 号 由于该信号的负脉冲较短 一般不会查询它 而是查询 Busy 打印机状态 回复 准备接收下一个字节 在应用标准并行接口的外部设备中并不一定就会 用到这种握手信号 通常它们都有自己相应的握手信号 在我们自己的制作中 也可以制定相应的握手信号 在本文的实例中就没有必要用到握手信号 所谓的 握手就是 PC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论