傾城winnie:
2.不帶漢字庫的HS12232-1下的漢字顯示 2.1顯示原理 利用PC上的16×16點陣漢字庫,提取后將點陣文件存入ROM,直接利用PC中漢字內碼作為單片機系統的編碼(不再形成新的漢字編碼)。 2.2硬件組成 首先要采用點陣圖形液晶顯示器。(例如一行為240點,總列數為128點,可以容納16×16點陣的漢字15個[因為240/16=15],128列可以顯示8行[因為128/16=8]),廣州市千喜科技開發有限公司的HS12232-1內置SED1520驅動控制器的點陣為122×32點,每行7個半漢字,共2行。如果要擴展存儲器,全部國標16×16點陣漢字、8×16點陣的ASCII碼點陣數據及漢字語句編碼數據要使用1片512KB的存儲器來存儲,多出部分可以留作數據存儲器。本文只探討液晶顯示器與單片機的接口部分,擴展存儲器部分略。下面給出HS-12232-1與單片機8031的一種接口,如圖1所示(VDD=+5V)。 2.3漢字顯示原理 國家標準信息交換用漢字字符集GB2312-80共收錄了漢字、圖形符號等共7445個,其中漢字6763個,按照漢字使用的頻度分為兩級,其中一級漢字3755個,二級漢字3008個。漢字、圖形符號根據其位置將其分為94個“區”,每個區包含94個漢字字符,每個漢字字符又稱為“位”。其中“區”的序號由01區至94區,“位”的序號也由01位至94位。若以橫向表示“位”號,縱向表示“區”號,則“區”和“位”構成一個二維坐標。給定一個“區”值和“位”值就可以確定一個惟一的漢字或圖形符號。即4位阿拉伯數字就可以惟一地確定一個漢字或符號。如“北”字的區位碼是“1717”,而京字的區位碼是“3009”。前兩位是“區”號,后兩位是“位”號。其中1至15區是各種圖形符號、制表符和一些主要國家的語言字母,16區至87區是漢字,其中16區至55區是一級漢字,56至87區是二級漢字。 UCDOS軟件中的文件HZK16和文件ASC16分別為16×16的國際漢字點陣文件和8×16的ASCII碼點陣文件,HZK16中按漢字區位碼從小到大依次存放國標區位碼表中的所有漢字,每個漢字占用32字節,每個區為94個漢字。而asc16文件中按ascii碼從小到大依次存有8×16的ASCII碼點陣,每個ASCII碼占用16字節。 PC的文本文件中,漢字是用機內碼的形式存儲的,每個漢字占2字節,其中第一個字節為機內碼的區碼,漢字機內碼的區碼范圍是從0A1H(十六進制)開始,對應區位碼中區碼的第一區;而機內碼的第二個字節為機內碼的位碼,范圍也是從0A1H(十六進制)開始,對應某區中的第一個位碼。就是說將漢字機內碼減去0A0AH就得到該漢字的區位碼。例如漢字“北”的機內碼是十六進制的“B1B1”,其中前兩位“B1”表示機內碼的區碼,后兩位“B1”表示機內碼的位碼。所以“北”的區位碼為0B1B1H-0A0A0H=1111H,將區碼和位碼分別轉換為十進制,得漢字“北”的區位碼為“1717”。即“北”的點陣位于第17區的第17個字的位置,在文件HZK16中的位置為第32×[(17-1)×94+(17-1)]=48640D以后的32個字節為“北”的顯示點陣。用RF-1800編程器讀入二進制文件hzk16j.bin后利用其編輯功能中的緩沖區編輯查找到BE00H(48640D是十進制,將其轉變為十六進制后得BE00H)開始的32個字節:048004800488049804A07CC00480048004800480048004801C82E482447E0000(以上全為下十六進制),將其寫在16×16點陣方格紙上,即得圖2。由此可以理解其相互邏輯關系。 在單片機系統中,連續取32個字節送到LCD的相應位置,就能正確顯示漢字后的圖形符號。從HS-12232-1使用的SED1520的控制原理得知,字模送顯示前要旋轉90°,例如“逢”的區位碼是3778,在HZK16中的位置為第32*[(37-1)*94+(78-1)]=110752D以后的32個字節:0444FFFE054041F8331014E00118F6461BF8104013F8104017FC1040284647FC,旋轉90°后上16個字節:828A92B202A7925E2AAF2A5A4A838200,下16個字節;0080403F0490959595FF959595D04000。2.4ASCII碼的顯示原理 ASCII碼的顯示與漢字的顯示基本原理相同,在ASC16文件中不存在機內碼的問題,其顯示點陣直接按ASCII碼從小到大依次排列,不過每個ASCII碼在文本文件中只占1個字節并且小于80H,每個ASCII碼為8×16點陣,即在ASCII16文件中,每個ASCII碼的點陣也只占16個字節。