示屏广泛应用与汽车报站器,广告屏等. 本文介绍一种实 用的汉字显示屏的制作, 考虑到电路元件的 的点阵发光管模块,而是直接使用了 256 化次菌炬戴酞点阵式汉字LED 显示屏的原理与制作脂剐沸 点阵式汉字LED显示屏的原理与制作 石学军 本文版权属 单片机学习网所有如需要转载请著名出处! 汉字显示屏广泛应用与汽车报站器,广告屏等。本文介绍一种实用的汉字显示屏的制作,考虑到电路元件 的易购性,没有使用8*8 的点阵发光管模块, 而是直接使用了256 个高量度发光管,组成了16 行16 光点阵。同时为了降低制作难度,仅作了一个字的轮流显示,实际使用时可根据这个原理自行扩充显示的字 汉字显示的原理:我们以UCDOS 中文宋体字库为例,每一个字由16 行16 列的点阵组成显示。即国标汉字库中的每一个字均 由256 点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个 汉字屏不仅可以显示汉字, 也可以显示在256 像素 范围内的任何图形。 我们以显示汉字“大”为例,来说明其扫描原理: 在UCDOS 中文宋体字库中,每一个字由16 行16 列的点阵组成显示。如果用 位的AT89C51单片机控制, 由于单片机的总线为8 位,一个字需要拆分为2 个部分。
一般我们把它拆分为上部和下部,上部由8*16 点阵组成, 下部也由8*16 点阵组成。 在本例中单片机首先显示的是左上角的第一列的上半部分,即第0 列的p00---p07 口。方向为p00 到p07 示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 p0.2灭p0.3 p0.5亮,p0.6 灭,p0.7 灭。即二进制00000100,转换为16 进制为 04h.。 上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27 p20方向扫描,从上图可以看到,这一列全部为不亮led显示屏字体, 即为00000000,16 进制则为00h。 然后单片机转向上半部第二列,仍为p05 点亮,为00000100,即16 进制04h. 这一列完成后继续进行下半部分的扫描,p21 点亮,为二进制00000010,即16 进制02h. 依照这个方法,继续进行下面的扫描,一共扫描32 可以得出汉字“大”的扫描代码为: 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 ANLP2,#00 ;清除P2 MOVR2,#200 D100MS: MOV R3,#250 ;延时100 毫秒 DJNZ R3,$ DJNZ R2,D100MS MOV 20H,#00H ;取码指针的初值 l100: MOV R1,#100 ;每个字的停留时间 L16: MOV R6,#16 ;每个字16 MOVR4,#00H ;扫描指针清零 MOV R0,20H ;取码指针存入R0 L3: MOV A,R4 ;扫描指针存入A MOV P1,A ;扫描输出 INC R4 ;扫描指针加1,扫描下一个 MOV A,R0 取码指针存入AMOV DPTR,#TABLE ;取数据表的上半部分的代码 MOVC A,@A+DPTR MOV P0,A 输出到P0INC R0 ;取码指针加1,取下一个码。