基于不帶字庫的圖形LCD模塊漢字顯示解決方案
2 字庫芯片與單片機的接口
2.1 漢字的編碼標準
為了用0、1代碼串表示漢字,規(guī)定了漢字的信息交換碼:GB 2312-80,簡稱國標碼,共有字符7445個,包括漢字和其他字符。一級漢字3755個,按漢語拼音順序排列;二級漢字3008個,按部首和筆畫排列。其他字符有常用符號、序號、GB1988圖形字符集、希臘字符、制表符等。國標碼的每一個符號都用兩個字節(jié)(16位二進制)代碼來表示一個漢字。
1) 國標碼:行、列各94(0-93),用先行后列的兩個7位二進制數(shù)表示。
2) 區(qū)位碼:由于二進制國標碼表示不很方便,因此漢字也可用十進制區(qū)位碼表示。區(qū)、位各94(1-94),用先區(qū)后位的兩個2位十進制數(shù)表示。
3) 機內(nèi)碼:是計算機內(nèi)部表示漢字的代碼,在微機中多用兩字節(jié)(最高位為1)代碼作為機內(nèi)碼。
2.2區(qū)位碼和機內(nèi)碼的相互轉(zhuǎn)換
西文系統(tǒng)的交換碼和機內(nèi)碼都采用美國標準信息交換碼ASCII,用一個字節(jié)表示,一般只用低七位,可以表示128可符號。在軟件中嵌入的漢字經(jīng)編譯器編譯后存放的格式為機內(nèi)碼。區(qū)位碼和機內(nèi)碼之間的轉(zhuǎn)換關系可概括為:(區(qū)位碼的十六進制表示)+A0A0H=機內(nèi)碼。以漢字“大”為例,“大”字的區(qū)內(nèi)碼的十六進制表示為1453H,加上A0A0H得到機內(nèi)碼為B4F3H。
2.3 漢字字模庫
漢字的輸出是將漢字的筆劃離散化,用點陣來表示。點陣的中每個點位只有兩種狀態(tài):有筆畫(1)、無筆畫(0)。
描述漢字點陣信息的二進制代碼集稱為漢字的字模。所有漢字和符號的點陣信息就組成了漢字庫。
2.3 混合字符的顯示
在本系統(tǒng)中,每個漢字的顯示采用16×16圖形點陣方式顯示。國標GB2312-80一、二級漢字點陣庫存放在一片ROM芯片AT27C040中,每個漢字占用32個字節(jié)。當需要顯示漢字時,首先根據(jù)區(qū)碼和位碼計算出該漢字點陣在ROM中存放的起始地址,然后從此地址連續(xù)的取出32個字節(jié)的漢字點陣,并寫入LCD模塊對應的地址中,就可以顯示出該漢字。根據(jù)漢字區(qū)位碼和該漢字計算漢字在字庫ROM位置的轉(zhuǎn)換關系可概括為:起始地址=(區(qū)碼×94+位碼)×32
在應用中,常需要漢字和英文字符混合顯示,在軟件處理時需要判斷顯示的內(nèi)容是漢字的編碼還是英文字符的編碼,如果是漢字編碼則根據(jù)其機內(nèi)碼計算區(qū)位碼,并根據(jù)區(qū)位碼計算出該漢字在字模中的起始地址。圖3是混合顯示的軟件流程圖。
3 應用實例
在某檢測設備中,需要給用戶顯示電流、電壓、頻率值以及一些事件記錄等。用戶的命令通過設備的8鍵鍵盤輸入,顯示的內(nèi)容有漢字、數(shù)字和英文字符。
以下列出了顯示漢字、數(shù)字和英文字符串部分軟件
/*-----------------------------------------------------------------------------------------
混合顯示一串漢字和英文字符
row:行(1-8), column: 列(1-15)
str:字符代碼(標準機內(nèi)碼)指針
---------------------------------------------------------------------------------------*/
LCD顯示屏相關文章:lcd顯示屏原理
lcd相關文章:lcd原理
評論