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