80C51和CH375的USB打印机驱动设计

发布者:梦想启航最新更新时间:2006-04-11 来源: 单片机及嵌入式系统应用关键字:CH375  LPT  USB  打印 手机看文章 扫描二维码
随时随地手机看文章

引 言

  本课题来源于北京普析通用公司的一个项目。由于公司现有单机版光谱仪器产品(如1810、T6等)采用的是并行口打印技术,而随着USB打印机技术的逐渐普及,并行口打印机越来越不好买到,而且有些用户的打印机只是USB接口而非并行口,因此现有仪器产品对打印机的支持变得不能适应用户需要。为了实现能将公司的并行口仪器直接和USB打印机相连进行打印,决定设计开发一款LPT-USB打印机的驱动器,负责并口仪器和USB打印机的连接。

  本文利用单片机和USB总线接口芯片实现LPT-USB打印机的驱动器设计。利用该设计将能够实现并行打印口数据可以在USB打印机上的直接打印工作,克服了有些并口仪器必须连接并口打印机才能打印的弊端,极大地方便了用户的使用。

1 CH375芯片特点及工作原理

1.1 CH375芯片特点

  CH375 是一个USB总线的通用接口芯片,支持Host主机方式和Slave设备方式。CH375芯片内部集成了PLL倍频器、主从USB接口SIE、数据缓冲区、被动并行接口、异步串行接口、命令解释器、控制传输的协议处理器、通用的固件程序等。在本地端,CH375 具有8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU 等控制器的系统总线上。CH375 的USB 主机方式支持各种常用的USB 全速设备,外部单片机/DSP/MCU 可以通过CH375 按照相应的USB 协议与USB 设备通信。CH375芯片有如下特点:

  ① 全速USBHOST 主机接口USB V1.1,支持动态切换主机与设备方式,外围元器件只需要一个晶体和2个电容;

  ② 主机端点输入和输出缓冲区各64 B,支持常用的12 Mbps 全速USB设备;

  ③ 支持USB 设备的控制传输、批量传输和中断传输;

  ④ 自动检测USB 设备的连接和断开,提供设备连接和断开的事件通知;

  ⑤ 内置控制传输协议处理器,简化常用的控制传输;

  ⑥ 并行接口包含8 位数据总线,4 线控制(读选通、写选通、片选输入和中断输出);

  ⑦ 串行接口包含串行输入、串行输出和中断输出,支持通信波特率动态调整;

  ⑧ 支持5 V电源电压和3.3 V电源电压。

1. 2CH375芯片工作原理

  如图1所示,CH375芯片通过被动并行接口芯片可以很方便地挂接到各种8 位单片机、DSP和MCU 的系统总线上,并且可以与多个外围器件共存。并口信号线包括:8 位双向数据总线D7~D0、读选通输入RD、写选通输入WR、片选输入CS、中断输出INT以及地址输入线A0。CH375 芯片的RD和WR可以分别连接到单片机的读选通输出引脚和写选通输出引脚。INT可以连接到单片机的中断输入引脚,中断请求是低电平有效。当CS和RD以及A0 都为低电平时,CH375 中的数据通过D7~D0 输出;当CS和WR以及A0 都为低电平时,D7~D0 上的数据被写入CH375 芯片中;当CS和WR都为低电平而A1 为高电平时,D7~D0 上的数据被作为命令码写入CH375 芯片中。

       
            图1主机通过CH375控制USB设备原理图

  
                图2硬件电路原理图

2 硬件电路设计

  单片机通过CH375控制USB打印机的硬件电路,如图2所示。

  如图2所示,CH375芯片通过被动并行接口芯片挂接到8 位单片机的系统总线上,CH375 的TXD 引脚接地,从而使CH375 工作于并口方式。CH375芯片的8 位双向数据总线D7~D0直接与单片机的P0数据口相连,RD和WR分别连接到单片机的读选通输出引脚和写选通输出引脚。片选信号CS连接到单片机的P26引脚,该引脚为低电平时选通CH375芯片。INT可以连接到单片机的中断输入INT0引脚,中断请求是低电平有效。地址输入线A0连接至单片机的P25引脚,当A0引脚为高电平时选择命令端口,可以写入命令;当A0引脚为低电平时选择数据端口,可以读写数据。

  采用74HC245三态双向总线驱动器作为打印机口向单片机传送并口数据的接口,其片选信号与单片机的P27相连,方向控制位DIR与单片机的T0相连。当DIR置成高电平时,数据从A端口向B端口传送,此时单片机可以通过读取74HC245数据端口即可得到并口数据。打印机状态信号BUSY连接至单片机的P15引脚,并口数据采集控制信号CTRL直接连至单片机的INT1中断引脚,当INT1产生中断时,单片机从并口将数据取走,然后再发送至打印机打印出来。

3 软件设计实现

  软件实现的流程如图3所示。该软件编程是用C语言实现的,通信过程主要包括两部分:初始化和并口数据的采集。

  并口数据的采集是通过中断方式进行的。采集数据的控制信号CTRL连接至单片机的中断INT1引脚,通过不断检测INT1的状态来进行并口数据的采集。当打印机不忙(即BUSY=0)时,如果有INT1中断产生,则从74HC245的数据端口将并口数据读出,同时将打印机忙标志BUSY置1(表示打印机忙)。当数据已经发送至打印机打印时,则将打印机忙标志BUSY置0。然后重复上述步骤进行并口数据的采集及打印。

  初始化过程分两部分:单片机初始化和打印机的枚举初始化。单片机的初始化过程就是直接向相应的I/O口写初始化值及设置看门狗,可调用函数watchdog_init()实现设置看门狗。

      
                  图3软件实现流程图

  打印机的枚举初始化过程很重要,要实现打印采集到的并口数据,首先必须成功地枚举初始化打印机。初始化USB打印机函数init_print()主要用到以下几个主要函数:

  ◇ get_descr(1),获取设备描述符。
  ◇ rd_usb_data(buffer),从CH375中读取数据到单片机中。
  ◇ set_addr(3),设置打印机的USB地址。
  ◇ get_full_descr(buffer),获取配置描述符。
  ◇ set_config(unsigned char cfg),加载USB配置值。

  编者注:具体程序见本刊网站:www.mesnet.com.cn

结语

  本文详细介绍了基于80C51单片机和USB总线通用接口芯片CH375的LPT-USB打印机驱动器设计及C语言实现。经测试表明,利用该设计能够实现并口仪器数据直接经USB打印机打印出来,打印结果正确无误。该设计现已被用于并口仪器上,利用该驱动器,并行口仪器可以直接和USB打印机相连进行打印,极大克服了有些并口仪器必须连接并口打印机才能打印的弊端,从而很大程度上方便了用户。

关键字:CH375  LPT  USB  打印 引用地址:80C51和CH375的USB打印机驱动设计

上一篇:80C51和CH375的USB打印机驱动设计
下一篇:基于89C51单片机的环境噪声测量仪

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

全方位解析USB 3.0测试方法(上)
  随着主流市场即将演进到SuperSpeed USB,许多设计团队正力图加快设计认证。本文将为您提供专家建议参考,帮助您轻松完成这一过程。   尽管市场上已经出现了早期的USB 3.0产品,但主流市场转向Super Speed USB 还有待时日。部分原因在于,USB 2.0接口无所不在,且生产成本低廉。高带宽设备(如摄像机和存储设备)已经率先演进到SuperSpeed USB。但就目前而言,基于成本因素考虑,USB3.0实施仍限于较高端的产品。   大规模部署任何新的行业标准(包括USB3.0)都存在内在挑战。此外,USB2.0到USB 3.0并非简单的跳跃,其性能提高了十倍之多。尽管性能得到大幅度提升,但消费者对低成本互连
[嵌入式]
沁恒股份8位USB设备单片机: CH552概述
概 述 CH552芯片是一款兼容MCS51 指令集的增强型E8051内核单片机,其79%的指令是单字节单周期指令,平均指令速度比标准MCS51快8~15 倍。 CH552 支持最高24MHz 系统主频,内置16K 程序存储器ROM 和256 字节内部iRAM 以及1K 字节片内xRAM,xRAM 支持DMA直接内存存取。 CH552内置了ADC 模数转换、触摸按键电容检测、3 组定时器和信号捕捉及PWM、双异步串口、SPI、USB设备控制器和全速收发器、USB type-C等功能模块。 系统框图 特 点 》 增强型E8051内核CPU,速度比标准MCS51快8-15倍,特有XRAM数据快速复制指令; 》 内置16KB
[单片机]
沁恒股份8位<font color='red'>USB</font>设备单片机: CH552概述
ADP5065:兼容USB功率电能快速电池充电管理方案
  ADI公司的ADP5065是一款内嵌互联直流电压充电输出端与电池端的FET器件,通过FET可以实现电池隔离,当系统驱动电能来自于废电池或没有电池时,系统会立即切换到USB供电模式。ADP5065的输入电压范围为4V~5.5V,最大输入电压高达20V,不用担心USB总线断开或连接过程中的峰值。ADP5065充电器兼容USB2.0、USB3.0和USB电池充电规范1.1。ADP5065采用一个非常小的封装,20引脚WLCSP封装(0.5mm间距)。   ADP5065主要特性   • 3MHz开关模式充电器      图1 ADP5065设计原理图   • 1.25A专用充电器充电电流   •最高680 mA的充电电流(500
[电源管理]
ADP5065:兼容<font color='red'>USB</font>功率电能快速电池充电管理方案
利用简单电路解决带电插拔过程的USB电流过冲问题
        将一个简单的录音笔或其它外设插入USB端口时,可能导致不希望发生的系统复位。此时需要在端口前端提供一个限流器,在插拔端口时提供短路和过载保护。这种接口的一个特征是需要给各种需要连接的外设供电,例如:录音笔、小型硬盘、调制解调器、MP3、存储器卡等。服务器板提供12V主电源供电,有些应用中包含一个降压转换器,将该电压降至3.3V,用于逻辑电路供电。此外还需要一个升压电路,把3.3V电压提升到标准的USB端口电压(5V,可提供500mA电流)。   带电插入外设时可能引发一些问题:瞬间在端口的5V引脚插入一个不是纯电阻的负载,由于存在容性元件,会产生快速、大幅升高的电流,使得USB端口的电流远远超出500mA。
[电源管理]
利用简单电路解决带电插拔过程的<font color='red'>USB</font>电流过冲问题
高压开关机械特性测试仪打印机的维护
高压开关机械特性测试仪是一种全新设计的检测高压断路器机械动特性的专用仪器。高压开关综合测试仪采用高科技技术,集计算机、打印机、测量接口电路、操作电源等于一体,是高压断路器检测的新专用仪器 高压开关机械特性测试仪采用高科技技术,集计算机、打印机、测量接口电路、操作电源等于一体,是高压断路器检测的新专用仪器。配置了两种适用于不同距离、精度测试的位移传感器,由仪器自动识别系统对选用的传感器进行识别,完成对少油、多油、六氟化硫、真空高压断路器的测距、测速。在仪器的设计上,只需一次合(分)动作,即能将六个断口的全部数据采样记录下来,用单键操作显示测量结果,并能打印记录测量数据,打印六个断口的电流波形图及一个断口的动触头时间特性曲线图。仪
[测试测量]
USB Type-C工作原理深度解析--入门级
自从Apple发布了新MacBook,就一堆人在说USB Type-C。我来从硬件角度解析下这个USB Type-C,顺便解惑。 特色 尺寸小,支持正反插,速度快(10Gb)。这个小是针对以前电脑上的USB接口说的,实际相对android机上的microUSB还大了点: USB Type-C:8.3mmx2.5mm microUSB:7.4mmx2.35mm 而lightning:7.5mmx2.5mm 所以,从尺寸上我看不到USB Type-C在手持设备上的优势。而速度,只能看视频传输是否需要了。 引脚定义 可以看到,数据传输主要有TX/RX两组差分信号,CC1和CC2是两个关键引脚,作用很多: • 探测连接,区分正
[嵌入式]
<font color='red'>USB</font> Type-C工作原理深度解析--入门级
基于MSP430及USB总线的便携式血压计的设计
  目前,市场上的血压计大部分仍是水银血压计,电子血压计在国外已经大量普及,而我国才开始应用。水银血压计每次测量必须由医生戴上听诊器进行测量,测量过程复杂,而且不同的医生,测量结果可能不同。而电子血压计弥补了水银血压计的不足。本文使用低功耗MSP430单片机对人体血压信号进行采集,通过USB控制芯片CH375将这些数据存储到U盘中,可以通过PC机的软件分析一天中血压的变化。   1 硬件设计   1.1芯片介绍   MSP430是近几年流行的16位单片机,由于它具有超低功耗(在5V电压下运行于12MHz的80C51工作电流达到十几mA;而MSP430在3V时的工作电流为340μA,在2.2V的工作电流为220μA)、众多的片
[单片机]
基于MSP430及<font color='red'>USB</font>总线的便携式血压计的设计
基于CPLD的USB总线的隔离接口实现
1 引言    大容量数据的高速传输是存储技术的研究的热点技术,而在工业环境的数据传输中抗干扰技术以及医疗设备对人身的安全也是目前研究的热门课题,USB(Universal Serial Bus)是 “通用串行总线”。它是一种应用在 PC领域的接口技术。其主要优点是:可以热插拔、携带方便、标准统一,因而得到了广泛的应用。 USB用于测试与测量应用的优势很多,使用 USB接口的设备也与日俱增,例如数码相机、扫描仪、图像设备、医疗设备、打印机等等。在工业环境自动化程度较高的现场,医疗设备对人体信息的提取和诊断,大量信息数据的获取与存储往往应用快速的 USB接口来实现,而目前的 USB接口对工业干扰非常敏感,在医疗上对人身安全存在隐
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习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