STC系列单片机与微型打印机接口电路设计
2019-05-23白天明
白天明
摘要:本文给出了一种以STC系列单片机为核心的微型打印机电路的设计方法,着重介绍了该系统的硬件设计及其软件驱动程序。该打印机电路可以实现数字、符号、汉字和图形的打印。
关键词:STC;单片机;微型打印机
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2019)05-0211-02
单片机具有体积小、功耗低、价格廉、抗干扰能力强的特点。微型打印机是智能仪表、测控仪器重要的输出设备。本文系统地介绍了STC单片机与热敏微型打印机的接口电路及软件实现方法。
1 系统硬件组成
STC系列高性能单片机是由宏晶公司科技设计、生产的一款新型单片微型计算机。与传统的51系列单片微型计算机相比,具有功能强、功耗低、价格低、运算速度快的优点。指令代码与传统的8051系列完全兼容,但由于系统采用单时钟方式,运算速度非常快。系统内部了集成高可靠复位电路,可以内置复位与低电压复位。特别适用于高速通信、电机控制、智能控制、强干扰场合。
单片机的片内ROM为FLASH存储器,最大可达63.5K字节,擦写次数超过10万次。片内RAM数据存储器最大为8192字节。芯片内还集成了EEPROM,最大48KB。片内有40个通用输入输出口,可以通过对PxM1、PxM0设置端口状态为准双向口/弱上拉、推挽/强上拉、仅为输入/高阻和开漏四种工作模式。可以进行在线编程,无须专用编程器、仿真器,即可实现在线调试。
RD--D系列打印机采用热敏方式进行打印,不仅可以打印国标一、二级汉字库中全部汉字,还可以打印英文字符、图形符号等。与单片机连接可以采用标准并行接口、RS23串行接口,TTL电平串口,485接口,USB等多种接口形式。在消费电子、医疗设备、消防报警、测量设备、电力仪器、电子衡器、票据打印等行业都有广泛的应用。
微型打印机的串口引脚信号如下:
以串口为例介绍一下STC单片机与打印机的接口电路。
RD-D 型热敏打印机可直接由单片机控制,串行接口与标准RS232C接口完全兼容。与单片机接口的连接方法如下:
1、将单片机串行口与打印机的串口TXD、RXD引脚与相连接,由单片机发送打印数据。系统默认的单片机串行口为P3.0(RXD)、P3.1(TXD),由于程序下载专用通信口占用了P3.0(RXD)、P3.1(TXD),所以可以将串行口设置在P1.6、P1.7。
其中,S1_S1=1、S1_S0=0可以实现将串口由P3.1、P3.0切换到P1.6、P1.7,指令如下:
ORL AUXR1,#080H ;將AURX1的第七位置一
2、打印机的BUSY端子输出“设备忙”信号。可以接到单片机的P4.2引脚。表示打印机正“忙”时,该信号为“1”状态,不能接收数据。打印机“空闲”时,该信号为“0”状态,表示可以接收数据。
由于传统的51系列单片机没有P4口,而STC单片机有P4口。如果在程序进行“BUSY BIT P4.2”定义,在编译时仿真软件会有“符号未定义”的错误提示。
对STC系列单片机P4口进行访问,与访问常规的输入输出口相同,但是需要进行位地址的定义。位地址如下:
2 打印指令
RD-D 型微型打印机提供丰富的打印指令,打印指令与很多的打印机指令完全兼容。而且增加了中文字符打印、汉字字符旋转、行间距调整、二维条型码打印等多种功能。
1)初始化指令:
十六进制: 1BH 40H
执行该指令后打印机恢复为默认的状态,将当前缓冲区清空。一般在发送打印指令之前执行该指令,以免数据残留在打印缓冲区中,打印出乱码。
2)汉字打印指令:
十六进制: 1BH 38H xH
打印机在接收该指令之后将根据x值选择不同点阵的汉字。在汉字打印方式时,打印机接收汉字代码格式是2个字节,对应标准机内码中的一个汉字的。即打印机每调出一个汉字,需要接收2个字节的机内码。打印机接收机内码的顺序为先高位字节,再低位字节。
当热敏打印机的汉字库为24×24点阵时,x选择为0,只能打印24×24点阵中文字符,以及12×24 点阵字符。
3)设置x点行间距指令:
十六进制:1BH 31H xh
为换行指令设置x点行间距,x的取值范围一般应在0~255 之间。默认值为3。如果需要连续打印图形,需要将x设置为0。
4)打印空格或空行指令:
十六进制:1BH 66H xH yH
如果x=0,y表示空格的数量,执行1BH 66H 00H yH指令将打印y个空格。如果x=1,y表示空行的数量,执行1BH 66H 01H yH指令将打印n行空行。
一般打印空格的宽度按字间距+12计算,y的值应不超过该型号打印机的行宽。每个空行的高度按行间距+16计算,y的取值范围应不超过255。
5)换行指令:
十六进制:0AH
打印机将当前缓冲器里的数据进行打印,并向前走纸一行。如果缓冲器里没有数据,则不进行打印,只向前走纸一行,一行为行间距+16。
3 单片机串行打印程序设计
将“辽宁机电职业技术学院”打印出来,其参考程序如下:
BUSY EQU 0C2H ;打印机端口设置
AUXR1 EQU 0A2H
ORG 0000H
JMP MAIN
ORG 0030H
MAIN: CALL PRN
SJMP $
PRN: CALL PRN_INT ;初始化打印机
MOV DPTR,#PRN_D1
CALL PRN_S
MOV DPTR,#PR1_C2
CALL PRN_S
RET
PRN_D1: DB '辽宁机电职业技术学院'
DB 0FFH
PRN_INT:
MOV TH1,#250
MOV TMOD,#00100000B
MOV SCON,#11010000B
SETB TR1
ORL AUXR1,#80H
MOV DPTR,#PRN_C1
CALL PRN_S
RET
PRN_C1: DB 1BH,40H ;初始化打印机
DB 1BH,38H,00H ;選择不同点阵汉字
DB 1BH,31H,06H ;选择不同行间距
DB 0FFH ;参数设置完毕
PR1_C2: DB 1BH,66H,01H,06H ;打印6行空行
DB 0FFH ;参数设置完毕
PRN_S: CLR A
MOVC A,@A+DPTR ;取数据
CJNE A,#0FFH,PR_S1 ;”0FFH”发送结束标志
SJMP PR_SE
PR_S1: INC DPTR ;地址加一
CALL OUT_BYTE ;向打印机输出
SJMP PRN_S
PR_SE: RET
OUT_BYTE:
SETB BUSY
JB BUSY,OUT_BYTE ;判断打印机是否忙?
CLR TI
NOP
NOP
NOP
MOV SBUF,A
JNB TI,$
CLR TI
RET
END
4 结束语
本文介绍的是STC单片机与RD系列微型打印机接口电路以及程序设计方法。该电路已经得到实际应用,效果很好,具有硬件电路简单、低成本、编程方便、通信可靠性高的特点。
但是在实际应用中要注意,热敏打印机的工作电流大,可达到3A,最好单独对打印机提供电源,以保证其可靠、稳定工作。
参考文献:
[1] 康华光,陈大钦.电子技术基础(模拟部分[M].北京:高等教育出版社,2002.
[2] 何为民.低功耗单片微机系统设计[M].北京:北京航空航天大学出版社,1994.
[3] 黄曙,梁慧冰.微型打印机打印程序设计[M].北京:控制工程出版社,2004.
[4] 张培仁.基于C语言MCS 51单片机原理与应用[M].北京:清华大学出版社,2003.
【通联编辑:唐一东】