微型打印机的汉字打印
,
微型打印机的
1) ,,?
,
j
圈圈
微型打印机具有体积小,价格低,打印方式灵活,
可与主机装配为一体等特点,特别适合于工业控制,智
能仪器仪
等小型单片机系统但微型打印机一般不
能直接打印汉字,或只提供.甲乙丙丁……”等少量简
易汉字,远不能满足通常的汉字打印要求.笔者根据应
用实践,介绍GP16微型打印机用图形方式实现汉字
打印的方法.GP16是目前国内广泛使用的一种微型
打印机,采用日本M0DEL15O—I型点阵式4针打
印机心.采用8039(GP16一I采用8031)单片机控制,
可接受和执行用户系统主机的命令完成打印.
一
,确定打印方式
GP16有4种打印方式:空走纸,字符串打印,数
据打印和图形打印.在字符串打印方式下,GP16本身
可提供96个ASCII码西文字符和26个非ASCII码
的5X7点阵简易汉字.数据打印方式则只能打印16
进制的数据.图形打印由用户定义要打印的图形.用户
可以根据系统的要求设计出所需的汉字,采用该方式
实现汉字打印.
二,设计汉字字模
微型打印机的汉字字模,主要是根据应用系统的
需要设计的.不仅汉字数量较少(一般为几十至几百个
汉字),字形结构也力求简单,这与一般微机使用的汉
字字模有很大区别.笔者采用的是8×8点阵的汉字结
构.
这种8×8点阵字模,是以列为序按二进制码纵向
排列的,与一般微机汉字字模的横向排列点阵信息不
同.横向排列的点阵信息便于从CRT显示器上显示,
××××××
×××
××××××X×
×××
X×××××
××
×
×××××××
但针式打印机是
按纵向接受信息
打印的.所以横向
排列的点阵信息
在打印前必须先
转换成纵向排列
的点阵信息,才能
传送给打印机.采
用纵向点阵建立
史建军
字模,可不经转换直接将字模信息
送给打印机,有利于简化系统的软
件设计.
以坦克的”坦字为例,其字模
的编码可设计为84,7F,A4,9F,95,
95,95,9F(十六进制)共8个字节.
各字节从左至右排列,其二进制码
从上至下为0”7位,”1”为打印点,
以”×”表示,”O为空点,不打印,字
形结构如图所示.一
对于个别笔划较多的复杂字
形,可依视读效果作合理简化.从实际打印效果看,这
种结构的汉字可满足一般系统的要求.
三,打印汉字
举个简单的例子,说明GP16打印机服务于8031
单片机用户系统时,如何打印一行汉字.
设20H~6FH为输出缓冲区(8031片内RAM数
据存储器),在其中依次存放有一行十个汉字的打印
字模信息.
打印程序
如下:
PRINT:M0VDPTR,#7FFFH
LP0:MOVXA,@DPTR
ANL人,#81H
JNZLP0
LP1:MOVA,#OB8H
M0VX@DPTR,A
N0P
LP2lMOVXA,@DPTR
JBACC,7,LP1
JBACC,7,LP2
M0VA.#O1H
M0VX@DPTR,A
M0VR0.#20H
M0VR1.#O8r
M0VR2,#9O
LP4:MOVXA,@DPTR
JBACC,0,LP4
M0VA,@RO
M0VX@DPTR,A
INCRO
DJNZR1,LP4
M0VR1.#8
M0VA.#0
M0VX@DPTR,A
DJNZR2,LP4
END
I读GP16状态
~GP16忙否?
I送图形打印命令
I读GP16状态
,命令出错否?
IGP16忙否?
I送打印行数
I字模首址
l单字字节数
I行信息长度
IGP16忙否?
I送字模信息码
I信息地址+1
I1个汉字打完否?
;打印1列空格
I1行信息打印完否?
I(程序段结束)
程序执行后,可打印一行十个汉字,每个字之间
《无线电》
23456町
计算机屏幕上的
?字技术
冯亚波
飞字技术是使字符在屏幕上运动的一种技巧,它
利用人眼的视觉暂留现象造成动感.其实质是在某行
某列显示字符(串),然后隔一段时间将其消隐.在
FOXBASE语言中用@X,YSAY(表达式语句)显示,
用@X,YCLEARTOM,N或@X,YSAYSPACE
消隐,最后用循环语句形成飞字.
笔者在长城286上用FOXBASE语言编写了一
段小程序”欢迎光临”,从右面逐字飞向屏幕.可以控制
P的大小来控制飞行速度.
源程序如下:
*飞字程序段
CLEA
SETTALKOFF
SETSC0ROFF
SETSTAT0FF
@0,0CLEAT024,8O
I一1
D0WHILI<=68
@9,77一ISAY”欢”
@9,79一ISAYSPACE(2)
I=I+1
D0TIME
ENDD0
I一1
D0WHILI<一64
@9,77一ISAY.迎
@9,79一ISSPACE(2)
I—I+1
D0TIME,
ENDD0
I一1
D0WHILI<一60
@9,77一ISAY”光”
@9,79一ISAYSPACE(2)
I=II
D0TIME
ENDD0
I一1
D0WHILI<一56
@9,77一ISAY”临”
@9,79一ISAYSPACE(2)
I=I+1
D0TIME
ENDD0
SETC0NSON
SETSC0R0N
SETSTAT0N
*延时子程序(TIME.PRG)
‘P一1
D0WHILEP<2
P—P—一1
ENDD0
RETU
有一列空点间隔.
四,建立字库
一
般把汉字信息存放在系统的EPROM中,打印
时以查表方式取得汉字信息码直接输出,不再经过
RAM缓冲区.
若打印内容是固定的,只需要将汉字按打印顺序
存放在字库中,打印时依次取出即可.但实际的打印
内容往往是变化的,有的字需多次重复使用.一种解
决的途径是采用间接查表方式.除基本字库外,建立
一
个地址
,将汉字在基本字库中的首地址按打印
顺序逐行排列在地址表格中.程序运行中需打印某行
时,先由程序控制转向地址表格中该行的地位,从表格
中取出存放的汉字首地址,据此地址再从基本字库中
查出相应的汉字信息码输出打印.地址表格中只存放
汉字的首地址,所以该表格占用的存储单元不多.这
种间接查表方式,可灵活地打印各种需要的内容.
五,中,西文综合打印
1994年第11期
需要同时打印中文和数字(西文)的系统,为了避
免频繁地转换GPI6的打印方式,可不使用GPI6的
字符串打印方式打印数字,而统一使用图形打印方式
打印中,西文.这时应将所需的西文信息字模设计好并
与汉字一起存放在基本字库中.
六,本汉字打印方式的特点
1.字库容量合理
每个汉字占用8个字节,如使用100个汉字,所建
立的字库为800字节.字库容量规模不大,可以被单片
机系统所接受.
2.便于按行打印
GPI6在图形方式下按字节接受打印数据,接收
的每个字节8个点纵向排列,接收96个字节后正好为
一
行信息.即GPI6一行正好打印8X96点阵.8X8
点阵汉字不仅便于按字节向GPI6传递数据,而且每
打印一行正好是一行完整汉字,这对于简化打印程序
非常有利.
?33(总673)?