资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
PC 机并行端口的数据和使用早期 PC 机的并行口通常用作打印机的端口,但它的功能不止如此,在工业控制应用上相当广泛,而且有很大的优势,1 设计简单,设计人员只需考虑所需的控制功能而不必花大的精力去考虑接口。2 速度快可以满足较高的需求。3 编程方便,只要输入输出语句就可以实现多路控制信号和不同精度数据的采集。4 适合初学者或非专业人员做复杂高水平的控制系统。和USB 比较应用 USB 串口则需要较高的专业知识,还要建立庞大的子系统,因为串口是位传送数据,不可能传送大量的数据进行控制,采用的是指令系统,就象我们现实中常见的对下级发出的命令,执行一号方案,至于怎么执行由下级去做。至于串 COM 口电路简单,编程容易,但在一些高精确度的实时控制中在响应速度上仍有些力不从心(485 标准的可以) 。因此并口在计算机控制和数据采集方面是非常方便的工具,它可以充分利用计算机的软硬件资源。要想使用好并行口就必须对定义和数据充分的了解,借鉴别人的使用方法事半功倍,我也是在实践中不断提高的,因为工作需要才涉入其中,现将我搜集到并口资料发到网上供需要者参考,因为我也在网上获益非浅,本文提供的是打印机对端口的使用数据做为例程,根据自己的需要进行参考,相信会对初学者有所帮助。并行口数据 微机并行口可提供多达成 12 路标准 TTL 电平输入,和 5 路 TTL 电平输入信号,如果外加译码电路还可扩展更多的输入输出通路。微型机的操作系统没有提供实用的可控制并口软件,但可以自己编程实现。在 DEBUG 环境中可用 I/O 命令进行端口的操作,LPT1 的基地址为 378H,LPT2 的基地址为 279H,LPT3 的基地址为 3BCH(输出) ,基地址加 1 为状态口(输入) ,基地址加 2 为控制口(输出) 。引脚 功能 I / O 引脚 功能 I / O1 STROBE 选通 I / O 10 ACK 确认 I2 data 0 数据位 0 O 11 busy 忙 I3 data 1 数据位 1 O 12 pe 缺纸 I 4 data 2 数据位 2 O 13 slct 选择 I 5 data 3 数据位 3 O 14 auto feedxt 自动换行 I / O 6 data 4 数据位 4 O 15 error 错误 I 7 data 5 数据位 5 O 16 init 初始化 I / O 8 data 6 数据位 6 O 17 slct in 选择输入 I / O 9 data 7 数据位 7 O 18-25 GND 接地 / 这里使用的标准的并口模式SPP 模式,现在的板载并行口大都支持 EPP 和 ECP 模式,由于硬件上数据端口是支持双向传输的,所以在 SPP 模式下也可以在数据口输入数据。数据口-378H,状态口-379H,控制口-37AH数据寄存器-8 位 占用基地址连接于接口的 2-9 脚,当你向寄存器写入二进制数据时对应的引脚就被置为 1 高平或 0 低电平(TTL) 。 控制寄存器 8 位 连接于 DB25 针接口 1、14、16、17 脚D0 1=数据选通, 0.5 微秒后复位。D1 1=自动换行, 0 = 无自动换行。D2 1=正常 0 = 初始化。D3 总是为 1。D4 1=允许中断, 0=禁止中断。D0 位选通位,此位初始化后应为 0,CPU 将字符或控制代码送入数据寄存器后,先将此位置 1 并保持 0.5 微秒然后再复位为 0。相当于输出一个正脉冲选通信号,使打印机读取字符。D1 位置为 1 时,打印机接到回车符( 0DH)后,打字头回车并自动换行,D1 位置零时,接到回车符后,仅回车(移至左侧) ,但不换行,要使打字机换行,必须再加一个换行符。D2 位:初始化打印机时,使 D2=0 保持 50uS,然后将共置为 1。D4 位:若以中断方式打印时, D4 置为 1,以查询方式打印时, D4 置为 0。状态寄存器 连接于 DB25 针接口 10-15 脚不含 14、D3-1=打印机正常 0=打印机出错D4-1=打印机连机 0=打印机脱机D5-1=打印机缺纸 0=有纸D6-1=正常输入 0=打印机应答D7-1=打印机空闲 0=打印机忙中断方式打印机字符,须首先将待打印的数据由 CPU 送入并口寄存器,然后通过控制寄存器发送一个选通信号给打印机,打印机打印完毕后,发送一个认可信号通过状态线给 CPU,允许 CPu 发送下一个数据。这时如果打打印机工作在中断状态,将同时向 CPU 发中断请求信(通过 8259A 的 IR7).CPU 利用中断方式与打印机通信时应注意:把控制寄存器的第 4 位(中断申请位)置 1,当输出数据送入打印机数据端口上,通过数据寄存器向打印机送出选通信号后,且在打印机将数据打印完毕后才能通过打印机适配器向 CPU 申请中断。*用中断方式处理输出与中断方式处理输入有所不同,当输出设备就绪请求 CPU 输出,而 CPU又无数据输出时,CPU 必须封锁该设备的中断,以防满足中断响应的条件连续中断 CPU,这点在程序设计时应特别注意。封锁设备的中断有 2 种方法。一是将 8259A 的中断屏蔽寄存器对应位置 1,二是将该设备的中断允许位清 0。BIOS 打印功能调用 BIOS 提供的打印机服务程序用 INT 17H,使用 INT 17H 返回的打印机状态字节和打印机寄存器不完全一样,打印机状态字节的状态 1 时有效,而且增加了一个超时错标志,是指在规定的时间(1s),打印机仍处于忙碌状态,则置超时错以避免因打印机总处于忙碌状态,而使查询程序无限的等待。打印机状态字节D0-1=超时错 D3-1=打印机出错 0=打印机正常D4-1=打印机脱机 0=打印机联机D5-1=无纸 0=打印机有纸D6-0=打印机应答 1=正常输入D7-1=打印机空闲 0=忙打印机基本控制代码代码 名称 控制功能 代码 名称 控制功能 代码 名称 控制功能 09H HT 水平制表(跳格)0AH LF 换行 OBH VT 垂直制表(跳行)0CH FF 换页 0DH CR 换行 0EH SO 选择倍宽打印0FH SI 撤消倍宽打印 11H DC1 打印机联机 13H DC3 打印机脱机18H CAN 清除行缓存 以上代码对我们无用,只是帮助理解打印机对端口的使用情况,应用中我们要编写自己的控制代码。最简单的使用就是直接用端口的信号来进行控制,需要注意输出的是 TTL 电平也就是 0和 5V 不能远距离传送,自己做个接口进行缓冲,功率部件要加光耦,如果控制路数不够可适当扩展,如下图所示:上图是用四片数字芯片将 D0、D1 、D2 扩展为 6 路,可根据自己需要设计,要注意的是前三位不再是简单的对应输出,要编码。这样就可以用数据口,控制口输出,状态口输入来进行简单的控制了,或者再加一些发光二极管自己做一个学习编程的辅助工具。再下载一个并口调试软件,学习和编程很有用。输入和输出就是向数据控制寄存器写入,从状态寄存器读出,汇编语句中 IN 和 OUT 是专门对端口的输入输出指令 ,用 D 寄存器间接寻址。Mov dx,ADDress / ADDress 为数据或状态、控制、寄存器地址Mov al,xxH /XX 为数据 8 位 16 进制数Out dx,al /向寄存器(端口)写数据Mov dx,ADDress / ADDress 是输入的端口地址In al,dx /读数据Mov Result,al /向主程序返回读出的数据上面的用法功能有限,一切控制都由计算机来操作,正常应该和单片结合起来设计开发就灵活多了,如图 2 所示。单片机的 P1 口扩展成一个双向接口和一个单向输出或输入口,40245 的 DR 脚接高电平是输入,也可接到单片机 I/O 口上用软件控制数据流向, 74ls373 是三态数据锁存器,放入一个 8位数据锁存后用控制线通知 PC 机来取,74LS244 用来接收 PC 机的数据,P3 口当做普通的 I/O口来使用的。图中单片机可扩展 64k 程序存储器,通常用不了那么多,8051 有 4K 片内程序存储 ROM,如果不够用改用 AT8052 可提供 8K 片内 ROM 让出宝贵的 P2 I/O 口,把扩展 P1 I/O口的控制线接到 P2 I/O,因为 P3 口的第二功能非常有用,真要是用到了片外 ROM,你对 I/O的分配已不在话下了。如果你的计算机不支持双向接收,可用状态端口和控制端口组成一个接收 8 位数据的端口还要注意数据位的关系和输入电平,从不同的寄存器读出,用软件调整初学者不太好掌握,容易乱,还有一种方式用 74LS157 组成一个电路每次只读 4 位半个字节读取后再合并起来,用Strobe 控制 A 或 B 通道,以可搭建电路试试如下图所示。再就是 WINDOWS 编程,用汇编虽然实现容易,但只能 DOS 和 9X 下下运行,程序功能可能不错,可人机界面实在不友好,根本编不出象样的图形界面,太不入流。如果还没掌握WINDOWS 编程方法,建议你学一学 VB,它它简单易用,只是没有对端口直接访问的函数,但可使用 Winlo 这个工具,它是其实是已经编写好的对硬件端口访问的函数集。记住这个工具就行了,到用时一查就清楚了。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号