热敏打印机与高速数字处理器DSP的接口应用
随着测试技术手段的不断发展,各种测量仪器仪表已经由最初的数码管显示发展到液晶屏全中文显示,由最初的手工抄写测量结果发展到自带微型打印机,到目前为止,在各种测量型仪器仪表中,或大或小都有一个打印子系统,打印机已经成为打印测量结果和实现人机对话的重要工具。微型打印机简称微打,是针对通用打印机而言的,这种打印机具有体积小、操作电压低等特点,是打印机家族中一个细小而特别的种类。目前微型打印机的应用越来越广泛,市场需求不断扩大。其中的热敏打印机由于具有噪声小,打印速度快等优点,正逐渐取代传统嵌入面板的针式打印机。本文在介绍SPRT系列微型热敏打印机原理的同时,给出了它与DSP的接口方法以及相应的C语言程序。
SPRT系列微型热敏打印机的打印命令与IBM及EPSON打印机命令标准相兼容;并行接口方式兼容PC打印机接口(并行接口相对串行接口接线复杂些,本文重点介绍);采用BUSY/ACK握手协议和IDC-25插座;串行接口方式兼容RS-232C接口?也采用握手方式(标志控制码或X-ON/X-OFF协议)及D型9线孔型插座;打印头寿命为 1*100000000行;打印宽度可以设置为16字/行、24字/行、32字/行或者40字/行;打印速度可达27mm/s。另外,该打印机的工作电压为5V直流电源,但与针式打印机相比,其功耗比较大,平均耗流为2A、峰值耗流有时可高达5A。
1 并行接口打印机引脚功能介绍
SPRT系列并行热敏打印机采用与CENTRONICS标准兼容的并行接口,接口插座为26线扁平电缆插头或其替代品,其并行引脚插座接口的示意图如图1所示。
一般情况下,打印机两排并行接口处总会有一面留有缺口,有缺口的那排就是奇数引脚排,无缺口的则是偶数排,其引脚号按顺序从右向左数,要千万注意不要接错线。各个引脚的功能如表1所列。
表1 打印机并行引脚接口说明
引脚号 | 引脚名称 | 信号传输方向 | 说 明 |
1 | STB(片选) | 输入 | 选通触发,上升沿时读入数据 |
3 | D0(数据线) | 输入 | 数据信号线,分别代表并行数据线零位到第八位的信息。信号输入为高电平,表示为逻辑“1”;输入为低电平,表示为逻辑“0” |
5 | D1(数据线) | 输入 | |
7 | D2(数据线) | 输入 | |
9 | D3(数据线) | 输入 | |
11 | D4(数据线) | 输入 | |
13 | D5(数据线) | 输入 | |
15 | D6(数据线) | 输入 | |
17 | D7(数据线) | 输入 | |
19 | ACK(应答线) | 输出 | 低电平表示数据已接收,且可接收下一组数据 |
21 | BUSY(忙信号) | 输出 | 高电平表示打印机“忙”,不能接收数据 |
23 | PE(检测纸) | 输出 | 高电平表示打印机有纸,低电平表示无纸 |
25 | SEL(状态线) | 输出 | 一般接上拉电阻,表示打印机“在线” |
4 | ERR(状态线) | 输出 | 一般接上拉电阻,表示打印机无故障 |
2,6,8,26 | NC(空) | - | 可以不接,或者接上拉电阻。一般情况下,为防止干扰建议接入上拉电阻 |
10~24 | GND(电源地) | - | 接5V电源地。仅指10~24之间的偶数号引脚 |
2 热敏打印机与DSP的接口设计
TI公司的16bit定点DSP芯片TMS320F206是一种低功耗DSP器件,采用改进的哈佛结构,有1条程序总线和3条数据总线,采用流水线操作。TMS320F206内含高速并行的32bit算术逻辑单元、1616bit并行硬件乘法器、存储器、外设和专业化的指令集,特别适合于数字信号处理,并越来越多的应用于工业控制领域和各类仪器仪表的开发设计。
本设计选用的微型热敏打印机有8根数据线、1根电源线和3根信号控制接收线。为了增加信号的驱动能力,可在DSP与微型打印机之间接一个总线收发器芯片。由于该打印机的功耗非常大,因而最好给该收发器芯片单独设计一组5V电源,以免干扰其它硬件电路,而造成DSP的不正当复位。图2是微型热敏打印机与TMS320F206的典型接口电路。
3 软件程序设计
各种类型的微型热敏打印机虽然性能或者功能上略有差别,但几乎都具有满足CENTRONICS标准的并行接口,因而其对应的软件程序可适用于大多数打印机。下面介绍用C语言编写的打印机初始化程序,该程序已经仿真通过并应用在测试仪器中。以下是等待程序,用于检测打印机是否接收到数据。
ioport unsigned int port9000; /*设置片选I/O口地址*/
#define PrintPort port9000
void Wait(unsigned int f) /*等待程序开始*/
{ int i,k;
for (i=0,*f=0xffff;i<0x870;i++)
{ for(k=0;k<0x77f;k++)
{ asm(" BCND _PWait1,BIO");}}
/*检测BUSY信号*/
} /*等待程序结束*/
打印机初始化程序,使打印机处于工作就绪状态。
void Print_Init() /*打印机初始化程序开始*/
{ unsigned int f;
Wait(f); /*等待*/
PrintPort=0x001b;Wait(f); PrintPort=0x0040?Wait(f);
PrintPort=0x001b;Wait(f); PrintPort=0x0031? Wait(f);
PrintPort=0x0000;Wait(f); PrintPort=0x001b?Wait(f);
PrintPort=0x006c; Wait(f); PrintPort=0x002? Wait(f);
PrintPort=0x001b;Wait(f); PrintPort=0x0056? Wait(f);
PrintPort=0x0001;Wait(f); PrintPort=0x001b? Wait(f);
PrintPort=0x0055;Wait(f); PrintPort=0x0001?Wait(f);
PrintWait(&f); if(f==0)return;
} /*初始化程序结束*/
4 结束语
本文详细介绍了SPRT系列并行接口微型热敏打印机的引脚功能、接口设计和使用方法,该方法同样可以作为单片机、微处理器及PC机等其它应用系统和打印机接口电路设计的直接参考。笔者在GK-H型高压开关特性精密测量仪以及BLC-H氧化锌避雷器测试仪等电力测试设备中使用该方法连接热敏打印机,取得了很好的打印效果。
评论