基于89S51单片机的微型热敏打印机软件设计
扫描二维码
随时随地手机看文章
1引言
由于常用的微型针式打印机的速度慢,噪声大,无法满足某些场合的需要。微型热敏打印机具有打印速度快、噪音低、可靠性高、字迹清晰、机头小而轻等优点,可满足各种场合的打印要求,因此得到广泛应用。笔者在汽车行驶记录仪的开发过程中,根据厂家要求,选用较为先进的热敏打印机作为打印设备。但微型热敏打印头对打印时序和温度要求较高,一旦控制不当极易造成打印头烧毁。因此,在有合理的硬件设计的基础上,软件设计也十分重要。本文使用某些软件设计替代了部分硬件电路,使打印机的控制电路得到了简化。
2 打印原理
选用的FTP-628作为热敏打印头。该热敏打印头点结构384点/行,水平方向点密度:8点/mm,垂直方向行间距:8点/mm。有效打印宽度48mm。打印速度最大为60mm/秒[1]。
要打印的数据在时钟CLK的配合下,经由数据输入脚DI移到热敏机芯内部的移位寄存器中。经384个时钟周期,一行384位数据全部移到移位寄存器后,锁存端的锁存信号/LAT由CPU置低,移位寄存器的数据被锁存到锁存器。然后热敏头加热控制信号STB产生高电平,此时根据384点输入的DI数据是1或者是0决定发热元件是否发热,由此在热敏纸上产生要打印的点行。
3 系统整体框图
本文介绍的微型热敏打印机由主控芯片、步进电机驱动模块、热敏打印头过热保护模块、热敏打印头缺纸检测模块、RS-232通信模块、供电模块等部分组成。其中步进电机驱动模块负责控制打印纸走纸及走纸速度;热敏打印头过热保护模块防止热敏打印头温度过高损坏;热敏打印头缺纸检测电路完成热敏打印头是否有纸检测;RS-232通信模块实现打印机与上位机之间的通信;供电模块给控制电路及热敏打印头供电。根据实际需要,考虑成本,选择89S51单片机作为主控芯片[2]。如图1,给出了主控芯片与各个模块之间的接口功能设计。
4 系统软件设计
4.1 整体流程
如图2,给出了整个系统工作的软件流程图。本热敏打印机的软件设计主要是通过RS-232通信模块接收由主机传来的数据。当接收到数据时,首先要判断是命令字还是字符 数据。如果是命令字,则打印机按照命令动作;如果判断为字符数据,则从字库中提取字符点阵,按行打印,走纸。
4.2 数据加载与印字
将内存缓冲区的数据输出到热敏打印头的移位寄存器中,可以通过硬件方式和软件移位的方式实现[3]。本打印机实现方案采用的是后者。一般情况下,软件移位是由I/O口模拟串行数据传输时序。图3为I/O口实现数据移位流程图。P1.0口模拟时钟CLOCK,P1.1口在CLOCK的配合下输出数据DATA,输出数据到热敏打印头内部的移位寄存器中。
P2[0:5]分别与打印头内部的加热选通信号STB[0:5]相连接。当数据全部移入到移位寄存器后,对STB[0:5]操作,加热印字。由于热敏打印机是通过打印头加热后在热敏打印纸上灼烧印字,所以,加热时间的长短决定了印字的清晰与快慢。因此,根据实际情况,合理的设计加热时间对于实现热敏打印机的高质量打印十分重要。
4.3 步进电机走纸及驱动
设计的热敏打印机内部的二相四拍步进电机控制打印头的走纸及走纸速度。由2路I/O口模拟2路PWM输出,再经过两个非门,将输出的2路模拟PWM波形转换为4路,输入步进电机驱动器,驱动步进电机[4]。图4为P1.2与P1.3口模拟输出PWM的时序图。在一个周期内,P1.2较P1.3延时3/4个周期。
4.4 保护与中断
热敏打印头加热时间一般为1ms,连续加热超过1s后,很容易烧毁、损坏热敏头,所以实际的热敏打印机必须对热敏打印头添加过热保护电路。当热敏打印头温度过高时,过热保护模块输出一个低电平到/INT0脚,使打印机进入中断[3]。图5为过热保护中断流程图。进入中断后,主控芯片断开热敏打印头加热供电控制继电器,停止热敏打印头的加热供电,并暂停其他动作。当热敏打印头温度降低后,则过热保护模块输出一个高电平到/INT0脚,此时,打印机延时一段时间后出中断。
热敏打印头内部用光电继电器作为传感器,检测打印头是否有纸。当热敏打印头无纸时,传感器中的发光二极管发出的光束无法经由打印纸反射到光敏三极管上,光敏三极管由此而无法导通,经过外部电路后,/INT1为低电平,进入中断。反之,/INT1为高电平,工作正常。其中断流程与过热保护中断类似。
4.5 字符库的构造与提取
由于本打印机是应用于汽车行驶记录仪的专用打印机,按照汽车行驶记录仪的要求,约需使用100个左右的汉字以及26个大写英文字母以及10个阿拉伯数字,为降低字库对硬件存储空间的要求,采用自定义的字符库。另外,自定义的字符库灵活性较强,在自定义字库中,这样既可以在同等打印宽度的情况下实现灵活打印,也可以使打印出来的字符效果美观。提取字符点阵时,首先判断字符类型,再寻得要打印字符的首地址,按照该字符的点阵规范,从字库中取出打印点阵放入缓冲区,进而加载,并打印。
5 结束语
本文创新点:为简化硬件电路,采用软件移位实现数据加载,通过软件产生步进电机所需的 PWM驱动信号;为减小打印机对存储空间的需求,针对汽车行驶记录仪使用字符少的特点,设计了自定义的字符库。
本文使用软件实现了热敏打印机的运行控制。实验证明,微型热敏打印机在实时性要求不高的诸多场合能正常运行,验证了设计方案的合理性。而对于实时性要求高、成本并不敏感的打印环境,则应该引入实时操作系统,实现对打印机的实时操作。