基于CH375接口电路的LPT-USB打印机驱动器的设计与实现
1 引言
本课题来源于北京普析通用公司。 由于该公司现有光谱仪器的单机版(如1810和t6等)采用的是并行口打印技术,而随着usb打印机技术的逐渐普及,并行口打印机越来越少,有些用户原有的打印机只是usb接口而非并行口,因此现有仪器对打印机的支持不能适应用户需要。为了使该公司的并行口仪器直接和usb打印机相连,笔者设计了一种lpt-usb打印机驱动器,实现并口仪器与usb打印机的连接。
笔者利用单片机和usb总线接口器件实现lpt-usb打印机驱动器的设计。利用该设计将能够实现并行打印口数据在usb打印机上的直接打印,克服了有些并口仪器必须连接并口打印机才能打印的弊端,极大地方便了用户的使用。
2 ch375的特点及工作原理
2.1 ch375的特点
ch375是一个usb总线通用接口电路,支持host主机方式和slave设备方式。ch375内部集成了pll倍频器、主从usb接口sie、数据缓冲区、被动并行接口、异步串型接口、命令解释器、控制传输的协议处理器、通用的固件程序等。在本地端,ch375具有8位数据总线和读、写、片选控制线及中断输出,可以方便地挂接到单片机、dsp、mcu等控制器的系统总线上。ch375的usb主机方式支持各种常用的usb全速设备,外部单片机、dsp、mcu可以通过ch375按照相应的usb协议与usb设备通信。ch375的特点如下:
(1)全速usb-host主机接口符合usb1.1,支持动态切换主机与设备方式,外围元器件只需要1个晶体和2个电容;
(2)主机端点输入和输出缓冲区各有64字节,支持常用的12mb/s全速usb设备;
(3)支持usb设备的控制传输、批量传输、中断传输;
(4)自动检测usb设备的连接和断开,提供设备连接和断开的通知;
(5)内置控制传输的协议处理器,简化常用的控制传输;
(6)并行接口包含8位数据总线,4线控制:读选通、写选通、片选输入和中断输出;
(7)串行接口包括串行输入、串行输出和中断输出,支持通信波特率的动态调整。
(8)支持5v电源电压和3.3v电源电压。
2.2 ch375的工作原理
如图1所示,ch375通过被动并行接口电路可以方便地挂接到各种8位单片机、dsp、mcu的系统总线上,并且可以与多个外围器件共存。并口信号线包括8位双向数据总线d7-do、读选通输入rd、写选通输入wr、片选输入cs、中断输出int及地址输入线ao。ch375的rd和wr可以分别连接到单片机的读选通输出引脚和写选通输出引脚。int可以连接到单片机的中断输入引脚,中断请求是低电平有效。当cs、rd及ao都为低电平时,ch375中的数据通过d7-do输出;当cs和wr以及ao都为低电平时,d7-do上的数据被写入ch375;当cs、wr都为低电平而a1为高电平时,d7-do上的数据被作为命令码写入ch375。

3 硬件电路设计
图2所示为单片机通过ch375控制usb打印机的硬件电路。ch375通过被动并行接口电路挂接到8位单片机的系统总线上,ch375的txd引脚接地,使ch375工作于并口方式。ch375的8位双向数据总线d7-do直接与单片机的po数据口相连,rd和wr分别连接到单片机的读选通输出引脚和写选通输出引脚。片选信号cs连接到单片机的p2.6引脚,该引脚为低电平时选通ch375。int可以连接到单片机的中断输入into引脚,中断请求是低电平有效。地址输入线ao连接至单片机的p2.5引脚,当ao引脚为高电平时选择命令端口,可以写入命令,当ao引脚为低电平时选择数据断口,可以读写数据。

采用74hc245型三态双向总线驱动器作为打印机口向单片机传送并口数据的接口,其片选信号与单片机的p2.7相连,方向控制位dir与单片机的p3.4相连,当dir为高电平时,数据从a端口向b端口传送,此时单片机可以通过读取74hc245数据端口得到并口的数据,打印机状态信号busy连接至单片机的p1.5引脚,并口数据采集控制信号ctrl直接连至单片机的int1中断引脚,当int1产生中断时,单片机从并口读取数据,然后再发送至打印机进行打印。
4 软件设计
4.1 软件流程
软件流程如图3所示。该软件用c语言编程,通信过程主要包括初始化和并口数据的采集。

并口数据的采集是通过中断方式进行的。采集数据的控制信号ctrl连接至单片机的中断int1引脚,通过不断检测int1的状态进行并口数据的采集。当打印机不忙(busy=0)时,如果产生int1中断,则从74hc245的数据断口读出并口数据,同时将打印机忙标志busy置1(表示打印机忙),当数据已经发送至打印机打印时,则将打印机忙标志busy置0。然后重复上述步骤进行并口数据的采集及打印。
初始化过程分为单片机初始化和打印机的枚举初始化。单片机的初始化过程是直接向相应的i/0口写初始化值及设置看门狗,可调用函数watchdog_init()设置看门狗。
打印机的枚举初始化过程是很重要的,要打印采集到的并口数据首先必须成功地枚举初始化打印机。初始化usb打印机函数init_print()主要使用以下几个主要函数:



主程序代码如下:



5 结束语
本文详细介绍了基于80c51型单片机和ch375型usb总线通用接口电路的lpt-usb打印机驱动器的设计及c语言实现。测试结果表明,利用该设计能够实现并口仪器数据直接经usb打印机打印,打印结果正确无误。该设计现已用于并口仪器上,并行口仪器利用该驱动器可以直接和usb打印机相连并进行打印,克服了有些并口仪器必须连接并口打印机才能打印的弊端,方便了用户。
评论