北京炜煌A7A8热敏编辑机使用说明Word文档下载推荐.docx
《北京炜煌A7A8热敏编辑机使用说明Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《北京炜煌A7A8热敏编辑机使用说明Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
3
DATA1
这些信号分别代表并行数据的第一至第八位信号,每个信号当其逻辑为“1”时为“高”电平,逻辑为“0”为“低”电平。
5
DATA2
7
DATA3
9
DATA4
11
DATA5
13
DATA6
15
DATA7
17
DATA8
19
-ACK
出
回答脉冲,“低”电平表示数据已被接受而且打印机准备好接收下一数据
21
BUSY
“高”电平表示打印机正“忙”,不能接收数据
25
SEL
打印机内部经电阻上拉“高”电平,表示打印机在线
4
-ERR
打印机内部经电阻上拉“高”电平,表示无故障
2,6,8,26
空脚
10-24(中偶数)
81224
GND
—
接地,逻辑“0”电平
注:
1.“入”表示输入到打印机。
2.“出”表示从打印机输出。
3.信号的逻辑电平为TTL电平。
2.1.2并行接口引脚信号时序
并口时序如下图所示:
并行接口信号时序图
2.1.3并口例程
单片机控制打印机时汇编例程
BUSYEQUP3.2;
定义BUSY信号引脚
nSTBEQUP3.7;
定义nSTB信号引脚
PEEQUP3.3;
定义纸检测信号引脚
nACKEQUP3.4;
定义应答信号引脚
nERREQUP3.1;
定义错误检测信号引脚
nSELEQUP3.0;
定义在线检测信号引脚
ORG0000H
JMPstart
start:
MOVDPTR,#print_content
MOVR0,#9;
存待打印数据的字节数
main:
CLRA
MOVCA,@A+DPTR
LCALLPRINTB
INCDPTR
DJNZR0,MAIN
MOVA,#0DH
SJMP$;
打印结束死循环
;
PRINTB子程序将累加器A中的一字节数据发送到打印机
PRINTB:
JBBUSY,$;
等待打印机到空闲
MOVP1,A;
送数据到数据口
CLRnSTB;
置nSTB为低电平
NOP;
延长nSTB信号脉冲宽度以满足时序要求
nop
SETBnSTB;
置nSTB为高电平(此时数据将被读入打印机)
RET
print_content:
DB'
北京炜煌'
DB0dh
END
单片机C51例程
//北京炜煌科技打印机示例程序
//NockyTian
//2007-07-17
#include<
reg52.h>
//Hardwareconfiguration
#definePRINTER_DATAP1//定义打印机数据线端口
sbitBUSY=P3^2;
//定义打印机忙信号引脚
sbitnSTB=P3^7;
//定义打印机nSTB信号引脚
sbitPE=P3^3;
//定义打印机纸状态检测信号引脚
sbitnACK=P3^2;
//定义打印机应答信号引脚
sbitnERR=P3^1;
//定义打印机错误检测信号引脚
sbitnSEL=P3^0;
//定义打印机在线检测信号引脚
#defineCR0x0d
#defineLF0x0a
voidPrintByte(unsignedcharbyte_data);
voidPrintString(char*str);
voidPrintByteN(unsignedchar*data_src,unsignedcharN);
voidmain(void)
{
charstr[]="
Printerdemo"
;
PrintString("
WHKJPrinter"
);
PrintByte(CR);
while
(1);
}
/*PrintByte()
*Sendabytetoprinter
*NockyTian@2006-7-17
*/
intrins.h>
voidPrintByte(unsignedcharbyte_data)
while(BUSY==1){
}
PRINTER_DATA=byte_data;
nSTB=0;
_nop_();
//调整nSTB信号脉宽
nSTB=1;
/*PrintString()
*Printastringwhichisendingwitha'
\0'
character
*ToExcutedtheprintcommandaadditionCRcharacterisneeded
voidPrintString(char*str)
while(*str){
PrintByte(*(str++));
/*PrintByteN()
*PrintNbytesthroughprinter
*nomorethan255bytescouldbeprintedbythefunction
*Ifmorethan255bytesneedprinting,thetypeofNneedchanging
*tounsignedint,evenunsignedlongifnecessary.
*NockyTian@2006-07-17
voidPrintByteN(unsignedchar*data_src,//pointertodatasource
unsignedcharN)//numberofdata(byte)
while(N--){
PrintByte(*(data_src++));
2.2串行接口
2.2.1串行接口引脚定义
本系列打印机串口电平标准为两种:
TTL电平与232电平,当设为232电平时,其串口与标准RS-232接口兼容。
其接口分别如下图所示:
说明:
图中粗黑线条为短路块,当使用232电平时,T接口接图所示插上短路块,R接口为数据线接口;
当使用TTL电平时,R接口闲置不用,T接口为数据线接口。
接口引脚定义如下表所示:
引脚
信号
TxD
打印机从主计算机接收数据
RxD
当使用X-ON/X-OFF握手时,打印机向上微机发送控制码
2
该信号高电平时,表示打印机正“忙”不能接受数据,而当该信号低电平时,表示打印机“准备好”,可以接收数据)
6
同BUSY(TTL电平时,此引脚为空引脚)
信号地
1.“入”表示输入到打印机;
2.“出”表示从打印机输出
2.2.2修改波特率和通讯模式设置
1、按SEL键不放手同时给打印机上电,打印机进入串口设置与打印方向设置状态,并打印出状态设置报告,
2、此后,再按SEL键,打印机打印出串口状态设置报告,打印机进入串口设置状态。
3、进入串口设置状态后,由LF键设置切换打印机波特率,每按一次LF键即打印出串口设置状态报告,在1200、2400、4800、9600、和19200B.P.S.内选择需要的波特率,出厂时设定波特率为9600B.P.S.。
4、由SEL键切换设置串行口的工作方式,串行连接为方式1或方式3通信两种,出厂时设定工作方式1。
串行连接采用异步传输格式,如下图所示:
1位
8位
1位
起始位0
数据位
奇偶校验位
停止位1
串行口工作方式1:
一帧信息为10位,1位起始位,8位数据位,1位停止位。
串行口工作方式3:
一帧信息为11位,1位起始位,8位数据位,1位校验位,1位停止位。
5、修改完之后需要重新上电启动。
另附改变打印机打印浓度、打印方向的方法:
●改变打印浓度操作
1、按LF键不放手给打印机上电,打印机打印出打印浓度状态设置报告后,打印机进入打印浓度设置状态。
2、按SEL键,增量调整打印浓度,按LF键,减量调整打印浓度,得到自已满意的浓度后打印机重新上电
●改变打印方向操作步骤
1、按SEL键不放手同时给打印机上电,打印机进入串口设置与打印方向设置状态(并口打印机没有关于串口设置的提示),并打印出状态设置报告,
2、此后,按LF键,打印机打印出打印方向设置报告,打印机进入打印方向设置状态。
3、按LF键,打印机正向打印,按SEL键,打印机反向打印。
得到想要的打印方向后,给打印机重新上电
2.2.3串口例程
北京炜煌串口打印机示例程序
NockyTian
2006-07-18
BUSYEQUP3.0;
ORG30h
MOVDPTR,#print_content
MOVR2,#77;
R2保存待打印数据的字节数
LCALLSETUART;
设置串口
CLRA
MOVCA,@A+DPTR;
读出待打印字符
MOVR0,A
LCALLPRINTB;
打印一个字节
INCDPTR
DJNZR2,MAIN
MOVA,#0DH
LCALLPRINTB
SJMP$;
打印结束无限循环
待发送数据通过R0传递
PUSHACC
JBBUSY,$;
JNBTI,$;
等到上一字节是否发送完,第一个字节发送前要手动置TI,见SETUART了函数
CLRTI
MOVA,R0;
保存待打印数据
MOVSBUF,A;
送数据到打印机
POPACC
RET
设置串口子程序
不使用中断,定时器1用作波特率发生器
SETUART:
MOVTMOD,#20H;
设置定时器T1工作模式3
MOVTH1,#0FAH
MOVTL1,#0FAH;
设置波特率9600bps@22.1184MHz
SETBTR1;
启动定时器T1
MOVSCON,#50H;
设置串行口工作方式为异步串行口,模式1
SETBTI;
设置标志位,为发送数据作准备
定义待打印数据内容
保存在程序段
DB'
北京炜煌科技微型打印机'
0DH,'
MicroPrinterdemo'
0DH
画线工具栏'
0dh
-------------------------'
END
#defineucharunsignedchar
sbitBUSY=P3^0;
//定义一个发送字节数据到串口的函数
voidPrint_Byte(ucharch){
while(BUSY){
}
SBUF=ch;
while(!
TI){
REG52.H>
TI=0;
//定义发送一个数组的数据到串口的函数
voidPrint_Array(array,n)
uchararray[];
intn;
inti;
for(i=0;
i<
n;
i++)
Print_Byte(array[i]);
//定义一个把字符串送到串口的函数
voidPrint_String(uchar*str){
while(*str){
Print_Byte(*str++);
voidmain(){
TMOD=0x20;
//定时器1工作于方式2
SCON=0x40;
//串口工作于方式1
TH1=0xfa;
//装入初值,22.1184MHZ的晶振,9600的波特率
TL1=0xfa;
PCON=0x00;
//波特率无倍增
TR1=1;
//开启定时器1开始工作
Print_Byte(0x1C);
Print_Byte(0x26);
Print_Byte(0x00);
Print_String("
北京炜煌科技发展有限公司"
Print_Byte(13);
while
(1);
2.3电源连接
本系列打印机采用DC3.5V~9V2A直流电源,电源插口如下图所示:
1接电源正极,2为空脚,3接电源负极。
打印机出厂时配有一根红白颜色的电源线,其中红线接电源正极,白线接电源负极。
第三部分打印命令祥解
一、选择字符集命令
3-1-1、【选择字符集1】
格式:
ASCII:
ESC6
10进制:
2754
16进制:
1B36
在该命令之后的字符将使用字符集1的字符进行打印。
字符集1中有字符224个,代码范围20H-FFH(32-255)。
包括ASCII字符,及各种图形符号等。
3-1-2、【选择字符集2】
ESC7
2755
1B37
在该命令之后输入的代码将选择字符集2的字符打印。
字符集2中有字符224个,代码范围20H-FFH(32-225)。
包括德、法、俄文、日语片假名等。
3-1-3、【进入汉字方式】
ASCII:
FS&
2838
1C26
该命令用于进入汉字方式。
在中文打印方式时,打印机接收的汉字代码为标准机内码,根据该代码寻找打印机内的硬汉字字模,如找到则打印,否则不打印。
打印机接收到单字节的ASCII码(范围20H-7FH)时,打印出相应的ASCII字符,与汉字等高
●打印机分24点阵与16点阵两种打印机
●进入字符集1和字符集2后,打印机打印6*8点阵的ASCII码字符
●24点阵打印机默认打印24*24点阵一、二级国标汉字与20H~7FH范围内的12*24点阵的标准ASCII码字符
●16点阵打印机默认打印16*16点阵一、二级国标汉字与20H~7FH范围内的8*16点阵的标准ASCII码字符
二、进纸命令
3-2-1、【换行】
LF
10
0A
打印缓冲区内容,打印机向前走纸一个字符行,即(字符行高+行间距)个点行。
若打印缓冲区内无内容,则每执行两个0A打印机向前走纸一个字符行。
3-2-2、【执行n点行走纸】
ESCJn
2774n
1B4An
打印纸向前进给n点行(点为绝对值,不受放大或缩小命令影响),1≤n≤255.
三、格式设置命令
3-3-1、【设置n点行间距】
ESC1n
2749n
1B31n
为后面的换行命令设置n点行间距(点为绝对值,不受放大或缩小命令影响),0≤n≤255,上电或初始化后n=3。
3-3-2、【设置字符间距】
ESCpn
27112n
1B70n
该命令是设定字符之间的空点。
默认方式为零,即字符之间没有空点(点为绝对值,不受放大或缩小命令影响),n在0~255之间。
3-3-3、【设置垂直造表值】
ESCBn1n2...NUL
2766n1n2...0
1B42n1n2...00
输入垂直造表间隔间隔值n1,n2等,最多可输入8个间隔值。
例n1=3,则执行垂直造表(VT命令)进纸到第3个单位行开始打印,单位行的高度按8+行间距个点行计算(每单位行高度的实际值是绝对的,不受字符的放大或缩小命令影响)。
数据NUL加在最后表示该命令的结束。
所有输入的垂直造表位置,可用该命令以ESCBNUL的格式清除。
3-3-4、【执行垂直造表】
VT
11
0B
打印纸进给到由ESCB命令设置的下一垂直造表位置。
如果垂直造表位置已清除,或当前位置已等于或超过最后一个垂直造表位置,VT命令将只走纸一单位行。
3-3-5、【设置水平造表值】
ESCDn1n2...NUL
2768n1n2...0
1B44n1n2...00
输入水平造表位置n1,n2等,最多可输入8个位置,这些数据应在所配打印头和放大倍数等制约下的每行能打印最多字符数之内。
例n1=3,则执行水平造表(HT命令)时在第3个字符处开始打印,每个字符的宽度按(字符点阵宽度+字间距)个点计算(每个字符宽度的实际值是相对的,受字符的放大或缩小命令影响)。
数据NUL加在最后表示该命令结束。
所有输入的水平造表位置,可用该命令以ESCDNUL的格式清除。
当对汉字执行水平造表的命令时,因其造表的位置是按字符设置的,还要受到放大倍数的影响,设置时需要注意,以达到预设置效果。
3-3-6、【执行水平造表】
HT
9
09
打印位置进行到由ESCD命令设置的下一水平造表位置。
如果水平造表位置已清除,或当前打印位置已等于或超过最后一个水平造表位置,HT命令将不执行。
3-3-7、【打印空格或空行】
ESCfmn
27102mn
1B66mn
如果m=0,ESCfNULn将打印n个空格,每个空格的宽度按(字符点阵宽度+字间距)计算。
n值应在所配打印头行打印最多字符数内。
如果m=1,ESCfSOHn将打印n行单位行(8点行),1≤n≤255。
3-3-8、【设置右限】
ESCQn
2781n
1B51n
右限即打印纸右侧不打印的字符数,每个字符的宽度按(字符的点阵宽度+字间距)计算(每个字符宽度的实际值是相对的,受字符的放大或缩小命令影响);
n的数值应在0到所配打印头的能打印的字符数内;
上电或初始化后n=0;
即没有右限。
3-3-9、【设置左限】
ESC1n
27108n
1B6Cn
左限即打印纸左侧不打印的字符数,每个字符的宽度按(字符点阵宽度+字间距)计算(每个字符宽度的实际值是相对的,受字符的放大或缩小命令影响);
n的数值应在0到所配打印头的行宽范围内,上电或初始化后n=0。
3-3-10、【灰度打印】
ESCmn
27109n
1B6Dn
n的值为1~12级,“1”颜色最浅,“12”颜色最深,默认值为“1”。
用于针对不同的热敏纸的颜色深浅不一问题。
四、字符设置命令
3-4-1、【横向放大】
ESCUn
2785n
1B55n
该命令之后的字符将以正常宽度的n倍进行打印。
1≤n≤8,上电或初始化后16点阵n=2,24点阵n=1。
3-4-2、【纵向放大】
ESCVn
2786n
1B56n
该命令之后的字符将以正常高度的n倍进行打印。
3-4-3、【横向纵向放大】
ESCWn
2787n
1B57n
在该命令之后的字符将以正常宽度和正常高度的n倍进行打印。
3-4-4、【允许/禁止下划线打印】
ESC-n
2745n
1B2Dn
n=1允许下划线打印,n=0禁止下划线打印,上电或初始化后n=0允许下划线打印后,所有字符和汉字包括空格都打印出下划线。
3-4-5、【允许/禁止上划线打印】
ESC+n
2743n
1B2Bn
n=1允许上划线打印,n=0禁止上划线打印,上电或初始化后n=0允许上划线打印,所有字符和汉字包括空格都打印出上划线。
3-4-6、【允许/禁止反白打印】
格式:
ASCII:
ESCIn
10进制:
27105n
16进制:
1B69n
n=1允许反白打印,n=0禁止反白打印,上电或初始化后n=0。
允许反白打印后的字符和汉