點(diǎn)陣式漢字LED顯示屏制作原理
漢字顯示屏在日常生活中應(yīng)用相當(dāng)廣泛,大量應(yīng)用于各大汽車站、火車站、航班信息公告欄,商鋪廣告,高速路路牌標(biāo)示等。這里介紹一種實(shí)用的漢字顯示屏制作方法。
同時(shí)為了降低制作難度, 僅作了一個(gè)字的輪流顯示,實(shí)際使用時(shí)可根據(jù)這個(gè)原理自行擴(kuò)充顯示的字?jǐn)?shù)。
漢字顯示的原理:
以UCDOS中文宋體字庫為例,每一個(gè)字由16行16列的點(diǎn)陣組成顯示。即國(guó)標(biāo)漢字庫中的每一個(gè)字均由256點(diǎn)陣來表示。
我們可以把每一個(gè)點(diǎn)理解為一個(gè)像素,而把每一個(gè)字的字形理解為一幅圖像。事實(shí)上這個(gè)漢字屏不僅可以顯示漢字, 也可以顯示在256像素范圍內(nèi)的任何圖形。
用8位的AT89C51單片機(jī)控制, 由于單片機(jī)的總線為8位,一個(gè)字需要拆分為2個(gè)部分。
一般我們把它拆分為上部和下部,上部由8*16點(diǎn)陣組成, 下部也由8*16點(diǎn)陣組成。 在本例中單片機(jī)首先顯示的是左上角的第一列的上半部分,即第0列的p00---p07口。方向?yàn)閜00到p07 ,顯示漢字“大”時(shí),p05點(diǎn)亮,由上往下排列,為p0.0 滅,p0.1 滅, p0.2 滅p0.3 滅, p0.4 滅, p0.5 亮,p0.6 滅,p0.7 滅。即二進(jìn)制00000100,轉(zhuǎn)換為16進(jìn)制為 04h.。
上半部第一列完成后,繼續(xù)掃描下半部的第一列,為了接線的方便,我們?nèi)栽O(shè)計(jì)成由上往下掃描,即從p27向p20方向掃描,從上圖可以看到,這一列全部為不亮, 即為00000000,16進(jìn)制則為00h。
然后單片機(jī)轉(zhuǎn)向上半部第二列,仍為p05點(diǎn)亮,為00000100,即16進(jìn)制04h.
這一列完成后繼續(xù)進(jìn)行下半部分的掃描,p21點(diǎn)亮,為二進(jìn)制00000010,即16進(jìn)制02h. 依照這個(gè)方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個(gè)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
由這個(gè)原理可以看出, 無論顯示何種字體或圖像, 都可以用這個(gè)方法來分析出它的掃描代碼從而顯示在屏幕上。
不過現(xiàn)在有很多現(xiàn)成的漢字字模生成軟件, 我們就不必自己去畫表格算代碼了。
軟件打開后輸入漢字,點(diǎn)“檢取”,十六進(jìn)制數(shù)據(jù)的漢字代碼即可自動(dòng)生成,把我們所需要的豎排數(shù)據(jù)復(fù)制到我們的程序中即可。我們把行列總線接在單片機(jī)的i0口,然后把上面分析到的掃描代碼送入總線, 就可以得到顯示的漢字了。
在這個(gè)例子里,由于一共用到16行,16列, 如果將其全部接入89c51 單片機(jī), 一共使用32條io口,這樣造成了io資源的耗盡,系統(tǒng)也再無擴(kuò)充的余地。 實(shí)際應(yīng)用中我們使用4-16線譯碼器74ls154來完成列方向的顯示。 而行方向16條線則接在p0口和p2口。
程序清單:
雙擊代碼全選
電路中行方向由p0口和p2口完成掃描,由于p0口沒有上拉電阻,因此接一個(gè)4.7k*8的排阻上拉。 如沒有排阻,也可用8個(gè)普通的4.7k 1/8w電阻。為提供負(fù)載能力,接16個(gè)2n5551的NPN三極管驅(qū)動(dòng)。
列方向則由4—16譯碼器74LS154完成掃描,它由89C51的P1.0---P1.3控制。同樣,驅(qū)動(dòng)部分則是16個(gè)2N5401的三極管完成的。
電路的供電為一片LM7805三端穩(wěn)壓器,耗電電流為100Ma左右。