2.不帶漢字庫的HS12232-1下的漢字顯示
2.1 顯示原理
利用PC上的16×16點陣漢字庫,提取后將點陣文件存入ROM,直接利用PC中漢字內(nèi)碼作為單片機系統(tǒng)的編碼(不再形成新的漢字編碼)。
2.2 硬件組成
首先要采用點陣圖形液晶顯示器。(例如一行為240點,總列數(shù)為128點,可以容納16×16點陣的漢字15個[因為240/16=15],128列可以顯示8行[因為128/16=8]),廣州市千喜科技開發(fā)有限公司的HS12232-1內(nèi)置SED1520驅(qū)動控制器的點陣為122×32點,每行7個半漢字,共2行。如果要擴展存儲器,全部國標16×16點陣漢字、8×16點陣的ASCII碼點陣數(shù)據(jù)及漢字語句編碼數(shù)據(jù)要使用1片512KB的存儲器來存儲,多出部分可以留作數(shù)據(jù)存儲器。本文只探討液晶顯示器與單片機的接口部分,擴展存儲器部分略。下面給出HS-12232-1與單片機8031的一種接口,如圖1所示(VDD=+5V)。
2.3 漢字顯示原理
國家標準信息交換用漢字字符集GB 2312-80共收錄了漢字、圖形符號等共7445個,其中漢字6763個,按照漢字使用的頻度分為兩級,其中一級漢字3755個,二級漢字3008個。漢字、圖形符號根據(jù)其位置將其分為94個“區(qū)”,每個區(qū)包含94個漢字字符,每個漢字字符又稱為“位”。其中“區(qū)”的序號由01區(qū)至94區(qū),“位”的序號也由01位至94位。若以橫向表示“位”號,縱向表示“區(qū)” 號,則“區(qū)”和“位”構(gòu)成一個二維坐標。給定一個“區(qū)”值和“位”值就可以確定一個惟一的漢字或圖形符號。即4位阿拉伯數(shù)字就可以惟一地確定一個漢字或符號。如“北”字的區(qū)位碼是“1717”,而京字的區(qū)位碼是“3009”。前兩位是“區(qū)”號,后兩位是“位”號。其中1至15區(qū)是各種圖形符號、制表符和一些主要國家的語言字母,16區(qū)至87區(qū)是漢字,其中16區(qū)至55區(qū)是一級漢字,56至87區(qū)是二級漢字。
UCDOS軟件中的文件HZK16和文件ASC16分別為16×16的國際漢字點陣文件和8×16的ASCII碼點陣文件,HZK16中按漢字區(qū)位碼從小到大依次存放國標區(qū)位碼表中的所有漢字,每個漢字占用32字節(jié),每個區(qū)為94個漢字。而asc16文件中按ascii碼從小到大依次存有8×16的ASCII碼點陣,每個ASCII碼占用16字節(jié)。
PC的文本文件中,漢字是用機內(nèi)碼的形式存儲的,每個漢字占2字節(jié),其中第一個字節(jié)為機內(nèi)碼的區(qū)碼,漢字機內(nèi)碼的區(qū)碼范圍是從0A1H(十六進制)開始,對應(yīng)區(qū)位碼中區(qū)碼的第一區(qū);而機內(nèi)碼的第二個字節(jié)為機內(nèi)碼的位碼,范圍也是從0A1H(十六進制)開始,對應(yīng)某區(qū)中的第一個位碼。就是說將漢字機內(nèi)碼減去0A0AH就得到該漢字的區(qū)位碼。例如漢字“北”的機內(nèi)碼是十六進制的“B1B1”,其中前兩位“B1”表示機內(nèi)碼的區(qū)碼,后兩位“B1”表示機內(nèi)碼的位碼。所以“北”的區(qū)位碼為0B1B1H-0A0A0H=1111H,將區(qū)碼和位碼分別轉(zhuǎn)換為十進制,得漢字“北”的區(qū)位碼為“1717”。即“北”的點陣位于第17區(qū)的第17個字的位置,在文件HZK16中的位置為第32×[(17-1)×94+(17-1)]=48640D以后的32個字節(jié)為“北”的顯示點陣。用RF-1800編程器讀入二進制文件hzk16j.bin后利用其編輯功能中的緩沖區(qū)編輯查找到BE00 H (48640D是十進制,將其轉(zhuǎn)變?yōu)槭M制后得BE00 H)開始的32個字節(jié):04 80 04 80 04 88 04 98 04 A0 7C C0 04 80 04 80 04 80 04 80 04 80 04 80 1C 82 E4 82 44 7E 00 00(以上全為下十六進制),將其寫在16×16點陣方格紙上,即得圖2。由此可以理解其相互邏輯關(guān)系。
在單片機系統(tǒng)中,連續(xù)取32個字節(jié)送到LCD的相應(yīng)位置,就能正確顯示漢字后的圖形符號。從HS-12232-1使用的SED1520的控制原理得知,字模送顯示前要旋轉(zhuǎn)90°,例如“逢”的區(qū)位碼是3778,在HZK16中的位置為第32*[(37-1)*94+(78-1)]=110752D以后的32個字節(jié):04 44 FF FE 05 40 41 F8 33 10 14 E0 01 18 F6 46 1B F8 10 40 13 F8 10 40 17 FC 10 40 28 46 47 FC , 旋轉(zhuǎn)90°后上16個字節(jié):82 8A 92 B2 02 A7 92 5E 2A AF 2A 5A 4A 83 82 00,下16個字節(jié);00 80 40 3F 04 90 95 95 95 FF 95 95 95 D0 40 00。
2.4 ASCII碼的顯示原理
ASCII碼的顯示與漢字的顯示基本原理相同,在ASC16文件中不存在機內(nèi)碼的問題,其顯示點陣直接按ASCII碼從小到大依次排列,不過每個ASCII碼在文本文件中只占1個字節(jié)并且小于80 H, 每個ASCII碼為8×16點陣,即在ASCII16文件中,每個ASCII碼的點陣也只占16個字節(jié)。