1引言
在基于單片機(jī)" title="單片機(jī)">單片機(jī)" target="_blank">單片機(jī)的智能系統(tǒng)中,,漢字顯示模塊是很重要的一個(gè)組成部分,,它應(yīng)用廣泛、操作容易,、調(diào)試簡(jiǎn)便,。
然而,在單片機(jī)上顯示漢字" title="顯示漢字">顯示漢字也存在幾個(gè)問題,。首先,,單片機(jī)資源有限,我們不能為了顯示漢字占用太多的資源,;其次,,漢字存儲(chǔ)讀取比較繁瑣,使用不方便,;第三,,漢字是通過點(diǎn)陣" title="點(diǎn)陣">點(diǎn)陣顯示出來的,往往與LCD" title="LCD">LCD寫入方式不一樣,,這就得進(jìn)行轉(zhuǎn)換和調(diào)整,。
值得注意的是,,基于單片機(jī)的漢字顯示不能在字符LCD上實(shí)現(xiàn)。使用圖形LCD有很多優(yōu)點(diǎn),,不僅能顯示漢字,,而且可以實(shí)現(xiàn)漢字動(dòng)態(tài)移動(dòng)和上下滾屏,實(shí)現(xiàn)漢字與圖形的混合顯示,,同時(shí)功耗低,。
2基于單片機(jī)的漢字顯示原理
2.1漢字字模
漢字一般是以點(diǎn)陣式存儲(chǔ)的,如16×16,,24×24點(diǎn)陣(即漢字的字模),每個(gè)漢字由32字節(jié)(16點(diǎn)陣)或72字節(jié)(24點(diǎn)陣)描述,。根據(jù)漢字的不同字體,也可分為宋體字模,、楷體字模、黑體字模等等,。
漢字的字模其實(shí)是漢字字形的圖形化,。對(duì)于16點(diǎn)陣字模,就是把漢字寫在一個(gè)16×16的網(wǎng)格內(nèi),,漢字的筆畫能過某網(wǎng)格時(shí)該網(wǎng)格就對(duì)應(yīng)1,,否則該網(wǎng)格對(duì)應(yīng)0,這樣每一網(wǎng)格均對(duì)應(yīng)1或0,,把對(duì)應(yīng)1的網(wǎng)格連起來看,,就是這個(gè)漢字。漢字就是這樣通過字節(jié)表示點(diǎn)陣存儲(chǔ)在字庫中的,。
為了方便查找所需漢字的漢字字模" title="漢字字模">漢字字模,,每個(gè)漢字都與一個(gè)雙字節(jié)的內(nèi)碼一一對(duì)應(yīng)。通過漢字的內(nèi)碼可以計(jì)算出它的點(diǎn)陣起始字節(jié)?,F(xiàn)以16點(diǎn)陣為例說明,。
先由內(nèi)碼計(jì)算出它在漢字庫中的區(qū)位碼,計(jì)算公式為:
區(qū)碼=內(nèi)碼第一字節(jié)-160
位碼=內(nèi)碼第二字節(jié)-160
再由區(qū)位碼可以得到它在漢字庫中字模第一個(gè)字節(jié)的位置:
(區(qū)碼×94+位碼)×32 于是,,可以向后連續(xù)讀出由32個(gè)字節(jié)組成的該字的點(diǎn)陣數(shù)據(jù),。
2.2漢字顯示
漢字占用資源太多(如16點(diǎn)陣,每個(gè)漢字就需32字節(jié)),,因而通常把漢字庫放在EEPROM里,,需要顯示某個(gè)漢字時(shí),先算出它的區(qū)位碼,,再求出點(diǎn)陣起始位置,,從EEPROM中順序調(diào)出該字的點(diǎn)陣數(shù)據(jù),存在緩沖區(qū)里,,最后依次送往LCD顯示,,描出該字,。需要說明的是漢字存儲(chǔ)方式與LCD顯示方式有一定差別。
本文使用另一種顯示方法,,即事先將程序用到的漢字,、符號(hào)和數(shù)碼(為了節(jié)省顯示空間,可以將數(shù) 碼壓成8×16點(diǎn)陣),,編成一個(gè)文本文件,,用一段小程序做出相應(yīng)小的漢字庫,這個(gè)小字庫的漢字點(diǎn)陣數(shù)據(jù)取自于一般漢字庫,。再經(jīng)過轉(zhuǎn)換和調(diào)整,,得到新的漢字庫,最后把新字庫固化在EEPROM中,。單片機(jī)只需按序號(hào)讀出點(diǎn)陣字節(jié),,送往LCD即可顯示所需漢字。減輕了單片機(jī)的負(fù)擔(dān),,去除了繁瑣的查找內(nèi)碼,、求起始位置、轉(zhuǎn)換,、調(diào)整等工作,,提高了系統(tǒng)可靠性。
表116點(diǎn)陣漢字字庫存儲(chǔ)方式
3自定義小字庫的制作
典型的漢字庫可選用UCDOS下的字庫,,如16點(diǎn)陣字庫HZK16,。需要256K空間,用了較大的EEPROM,,又不方便讀取,,而實(shí)際應(yīng)用中需要的漢字又非常少,因而我們可以自己制作小的漢字庫,,在這個(gè)小字庫里只包含系統(tǒng)需要的漢字,。這樣,一方面節(jié)省讀取時(shí)間,,另一方面大大地節(jié)省了資源,。
限于篇幅,這里僅僅給出流程圖(假定事先將所需漢字寫到了一個(gè)文本文件),,如圖1所示,。
4圖形點(diǎn)陣液晶顯示模塊ACM19264ASB的結(jié)構(gòu)與原理
4.1技術(shù)參數(shù)和性能
1)電源:+5V;
2)顯示內(nèi)容:192(列)×64(行)點(diǎn)陣,,可顯示圖形,,也可顯示12×4(16點(diǎn)陣)漢字;
3)全屏幕點(diǎn)陣;
4)7種指令,;
5)與CPU接口采用8位數(shù)據(jù)總線并行輸入輸出和8條控制線,。
4.2模塊主要外部接口
1)VSS:地;
2)D/I:高時(shí)表示DB7~DB0為顯示數(shù)據(jù),,低時(shí)表示為顯示指令數(shù)據(jù),;
3)R/W:讀寫控制;
4)E:使能信號(hào),;
5)DB7~DB0:數(shù)據(jù)線,;
6)CS3~CS1:3組列驅(qū)動(dòng)選擇器;
7)RESET:復(fù)位控制,;
8)VEE:負(fù)電壓驅(qū)動(dòng),。
4.3指令說明,指令字為【R/W,D/I,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0】
1)顯示開關(guān)控制【0,0,0,0,1,1,1,1,1,D】,,D=1表示開顯示,,可進(jìn)行各種顯示操作;
2)設(shè)置顯示起始行【0,0,1,1,A5,A4,A3,A2,A1,A0】,起始行地址可以是0~63的任意一行,;
3)設(shè)置頁地址(即X地址)【0,0,1,0,1,1,1,A2,A1,A0】,,8行為一頁,,模塊共64行即8頁,,0~7可選;
4)設(shè)置Y地址【0,0,0,1,A5,A4,A3,A2,A1,A0】,,Y可從0~63選,,對(duì)應(yīng)CS3~CS1,各包含64列,,Y可選擇其中一列作讀寫操作起始列,,每操作一次Y自動(dòng)加1;
5)讀狀態(tài)【1,0,BF,0,ON/OFF,RST,0,0,0,0】,,其中BF為忙標(biāo)志,,BF=1表示內(nèi)部正進(jìn)行操作,不接受外部指令,,ON/OFF為顯示控制觸發(fā)器狀態(tài),,ON/OFF=1為開顯示,數(shù)據(jù)就顯示在屏幕上,,RST=1表示內(nèi)部正進(jìn)行初始化,,不接受任何指令和數(shù)據(jù);
6)寫顯示數(shù)據(jù)【0,1,D7,D6,D5,D4,D3,D2,D1,D0】,寫入顯示數(shù)據(jù)存儲(chǔ)單元進(jìn)行顯示,,Y地址指針自動(dòng)加1,;
7)讀顯示數(shù)據(jù)【1,1,D7,D6,D5,D4,D3,D2,D1,D0】,讀出數(shù)據(jù),Y自動(dòng)加1。