漢字顯示屏廣泛應(yīng)用與汽車報(bào)站器,,廣告屏等,。本文介紹一種實(shí)用的漢字顯示屏的制作,考慮到電路元件的易購(gòu)性,,沒(méi)有使用8*8的點(diǎn)陣發(fā)光管模塊, 而是直接使用了256個(gè)高量度發(fā)光管,,組成了16行16列的發(fā)光點(diǎn)陣,。同時(shí)為了降低制作難度, 僅作了一個(gè)字的輪流顯示,,實(shí)際使用時(shí)可根據(jù)這個(gè)原理自行擴(kuò)充顯示的字?jǐn)?shù),。 1漢字顯示的原理: 我們以UCDOS中文宋體字庫(kù)為例,每一個(gè)字由16行16列的點(diǎn)陣組成顯示,。即國(guó)標(biāo)漢字庫(kù)中的每一個(gè)字均由256點(diǎn)陣來(lái)表示,。我們可以把每一個(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è)原理可以看出,, 無(wú)論顯示何種字體或圖像, 都可以用這個(gè)方法來(lái)分析出它的掃描代碼從而顯示在屏幕上,。
不過(guò)現(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)也再無(wú)擴(kuò)充的余地,。 實(shí)際應(yīng)用中我們使用4-16線譯碼器74ls154來(lái)完成列方向的顯示。 而行方向16條線則接在 p0口和p2口,。
程序清單:
ORG 00H LOOP: MOV A,#0FFH ,;開機(jī)初始化,清除畫面
MOV P0,A ,;清除P0口 ANL P2,#00 ;清除P2口
MOV R2,#200 D100MS:
MOV R3,#250 ,;延時(shí)100毫秒
DJNZ R3,$ DJNZ R2,
D100MS MOV 20H,#00H ,;取碼指針的初值 l100:
MOV R1,#100 ;每個(gè)字的停留時(shí)間
L16: MOV R6,#16 ,;每個(gè)字16個(gè)碼
MOV R4,#00H ,;掃描指針清零
MOV R0,20H ;取碼指針存入
R0 L3: MOV A,R4 ,;掃描指針存入A
MOV P1,A ,;掃描輸出
INC R4 ;掃描指針加1,掃描下一個(gè)
MOV A,R0 ,; 取碼指針存入A
MOV DPTR,#TABLE ,;取數(shù)據(jù)表的上半部分的代碼
MOVC A,@A+DPTR MOV P0,A ; 輸出到P0 INC R0 ,;取碼指針加1,,取下一個(gè)碼。
MOV A,R0 MOV DPTR,#TABLE ,;取數(shù)據(jù)表下半部份的代碼
MOVC A