点阵式汉字LED显示屏制作原理
汉字顯示屏在日常生活中應用相当广泛,大量應用於各大汽车站、火车站、航班信息公告栏,商铺广告,高速路路牌标示等。这里介绍壹种实用的汉字顯示屏制作方法。 同時為了降低制作难度, 仅作了壹個字的轮流顯示,实际使用时可根據这個原理自行扩充顯示的字数。 汉字顯示的原理: 以UCDOS中文宋体字库為例,每壹個字由16行16列的点阵组成顯示。即國标汉字库中的每壹個字均由256点阵來表示。 我们可以把每壹個点理解為壹個像素,而把每壹個字的字形理解為壹幅图像。事实上这個汉字屏不仅可以顯示汉字, 也可以顯示在256像素范围内的任何图形。 用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口。 程序清单: 双击代码全选 電路中行方向由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左右。 |