汉字显现屏广泛运用与轿车报站器,广告屏等。本文介绍一种有用的汉字显现屏的制造,考虑到电路元件的易购性,没有运用8*8的点阵发光管模块, 而是直接运用了256个高测量发光管,组成了16行16列的发光点阵。一起为了下降制造难度, 仅作了一个字的轮番显现,实践运用时可根据这个原理自行扩大显现的字数。
1汉字显现的原理:
咱们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显现。即国标汉字库中的每一个字均由256点阵来表明。咱们能够把每一个点理解为一个像素,而把每一个字的字形理解为一幅图画。事实上这个汉字屏不只能够显现汉字, 也能够显现在256像素
范围内的任何图形。
咱们以显现汉字“大”为例,来阐明其扫描原理:
在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显现。假如用
8位的AT89C51单片机操控, 因为单片机的总线为8位,一个字需求拆分为2个部分。
一般咱们把它拆分为上部和下部,上部由8*16点阵组成, 下部也由8*16点阵组成。
在本例中单片机首要显现的是左上角的榜首列的上半部分,即第0列的p00—p07口。方向为p00到p07 ,显现汉字“大”时,p05点亮,由上往下摆放,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。即二进制00000100,转换为16进制为 04h.。
上半部榜首列完结后,持续扫描下半部的榜首列,为了接线的便利,咱们仍规划成由上往下扫描,即从p27向p20方向扫描,从上图能够看到,这一列悉数为不亮, 即为00000000,16进制则为00h。
然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04h.
这一列完结后持续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h.
按照这个办法,持续进行下面的扫描,总共扫描32个8位, 能够得出汉字“大”
的扫描代码为:
04H,00H,04H,02H,04H,02H,04H,04H
04H,08H,04H,30H,05H,0C0H,0FEH,00H
05H,80H,04H,60H,04H,10H,04H,08H
04H,04H,0CH,06H,04H,04H,00H,00H
由这个原理能够看出, 不管显现何种字体或图画, 都能够用这个办法来分分出它的扫描代码然后显现在屏幕上。
不过现在有许多现成的汉字字模生成软件, 咱们就不用自己去画表格算代码了。
软件翻开后输入汉字,点“检取”,十六进制数据的汉字代码即可主动生成,把咱们所需求的竖排数据复制到咱们的程序中即可。
咱们把队伍总线接在单片机的i0口,然后把上面剖析到的扫描代码送入总线, 就能够得到显现的汉字了。 在这个比如里,因为总共用到16行,16列, 假如将其悉数接入89c51单片机, 总共运用32条io口,这样造成了io资源的耗尽,体系也再无扩大的地步。 实践运用中咱们运用4-16线译码器74ls154来完结列方向的显现。 而行方向16条线则接在p0口和p2口。
程序清单:
ORG 00H
LOOP: MOV A,#0FFH ;开机初始化,铲除画面
MOV P0,A ;铲除P0口
ANL P2,#00 ;铲除P2口
MOV R2,#200
D100MS: MOV R3,#250 ;延时100毫秒
DJNZ R3,$
DJNZ R2,D100MS
MOV 20H,#00H ;取码指针的初值
l100: MOV R1,#100 ;每个字的停留时刻
L16: MOV R6,#16 ;每个字16个码
MOV R4,#00H ;扫描指针清零
MOV R0,20H ;取码指针存入R0
L3: MOV A,R4 ;扫描指针存入A
MOV P1,A ;扫描输出
INC R4 ;扫描指针加1,扫描下一个
MOV A,R0 ; 取码指针存入A
MOV DPTR,#TABLE ;取数据表的上半部分的代码
MOVC A,@A+DPTR
MOV P0,A ; 输出到P0
INC R0 ;取码指针加1,取下一个码。
MOV A,R0
MOV DPTR,#TABLE ;取数据表下半部份的代码
MOVC A,@A+DPTR
MOV P2,A ;输出到P2口
INC R0
MOV R3,#02 ;扫描1毫秒
DELAY2: MOV R5,#248 ;
DJNZ R5,$
DJNZ R3,DELAY2
MOV A,#00H ;铲除屏幕
MOV P0,A
ANL P2,#00H
DJNZ R6,L3 ;一个字16个码是否完结?
DJNZ R1,L16 ;每个字的停留时刻是否到了?
MOV 20H,R0 ;取码指针存入20H
CJNE R0,#0FFH,L100 ;8个字256个码是否完结?
JMP LOOP ;重复循环
TABLE :
;汉字“倚”的代码
db 01H,00H,02H,00H,04H,00H,1FH,0FFH
db 0E2H,00H,22H,00H,22H,0FCH,26H,88H
db 2AH,88H,0F2H,88H,2AH,0FAH,26H,01H
db 63H,0FEH,26H,00H,02H,00H,00H,00H
;以下别离输入天,一,出, 宝,刀,屠,龙,的代码,略。
end
电路中行方向由p0口和p2口完结扫描,因为p0口没有上拉电阻,因而接一个4.7k*8的排阻上拉。 如没有排阻,也可用8个一般的4.7k 1/8w电阻。为供给负载才能,接16个2n5551的NPN三极管驱动。
列方向则由4—16译码器74LS154完结扫描,它由89C51的P1.0—P1.3操控。相同,驱动部分则是16个2N5401的三极管完结的。
电路的供电为一片LM7805三端稳压器,耗电电流为100Ma左右。
选用一块12*20cm的全能电路板,应当选用质量好些的发光管,(不然有坏点现象, 替换起来较费事)首要将256个发光管刺进电路板,留意刺进方向,一起使高度一致,行方向直接焊接起来, 列方向则搭桥架空焊接,完结后用万用表测验一下如有不亮的替换掉。
然后找一个电脑硬盘的数据线, 截取所需的长度,别离将行,列线引出至电路的相关管脚即可。原理图为了简练,故只画出了示意图,队伍方向只画出了2个三极管,屏幕只画出4个发光管, 实践上发光管为256只,三极管队伍方向各16只,总共32只。焊接进程认真仔细一天时刻即可完结悉数制造。将程序编译后烧写入89c51, 刺进40pin Ic座,即可看到屏幕轮番显现:“倚天一出宝刀屠龙”。
当然,你可将程序的汉字代码部分替换为您所需求的代码即可显现你所需求的汉字。
上图为什物的相片,对本文感兴趣的读者可在本期无线电杂志的配套光盘中找到他的完结程序,或许到作者网站www.51c51.com下载。
称号
|
数量
|
标准
|
4.7k 1/8w
|
32
|
电阻
|
4.7k*8排阻
|
1
|
|
2n5551
|
16
|
小功率NPN三极管
|
2n5401
|
16
|
小功率PNP三极管
|
led
|
256
|
3mm白发红高亮度
|
22P
|
2
|
瓷片电容
|
10uf/50v
|
1
|
电解电容
|
100uf/25v
|
2
|
电解%&&&&&%
|
AT89C51
|
1
|
或AT89S51
|
40pin Ic座
|
1
|
插89c51用
|
12M
|
1
|
晶体
|
74LS154
|
1
|
或74HC154
|
LM7805
|
1
|
稳压%&&&&&%
|
电源插座
|
1
|
|
稳压电源
|
1
|
9-12V/200Ma稳压电源
|
万用电路板
|
1
|
12*20(cm)
|