C 語言嵌入式系統(tǒng)編程修煉之四:屏幕操作 一、 漢字處理 現(xiàn)在要解決的問題是,嵌入式系統(tǒng)中經常要使用的并非是完整的漢字庫,往往只是需要提供數(shù)量有限的漢字供必要的顯示功能。例如,一個微波爐的LCD 上沒有必要提供顯示"電子郵件"的功能;一個提供漢字顯示功能的空調的LCD 上不需要顯示一條"短消息",諸如此類。但是一部手機、小靈通則通常需要包括較完整的漢字庫。 如果包括的漢字庫較完整,那么,由內碼計算出漢字字模在庫中的偏移是十分簡單的:漢字庫是按照區(qū)位的順序排列的,前一個字節(jié)為該漢字的區(qū)號,后一個字節(jié)為該字的位號。 每一個區(qū)記錄94 個漢字,位號則為該字在該區(qū)中的位置。因此,漢字在漢字庫中的具體位置計算公式為:94*(區(qū)號-1)+位號-1。減1 是因為數(shù)組是以0 為開始而區(qū)號位號是以1 為開始的。只需乘上一個漢字字模占用的字節(jié)數(shù)即可,即:(94*(區(qū)號-1)+位號-1)*一個漢字字模占用字節(jié)數(shù),以16*16 點陣字庫為例,計算公式則為:(94*(區(qū)號-1)+(位號-1))*32。漢字庫中從該位置起的32 字節(jié)信息記錄了該字的字模信息。 對于包含較完整漢字庫的系統(tǒng)而言,我們可以以上述規(guī)則計算字模的位置。但是如果僅僅是提供少量漢字呢?譬如幾十至幾百個?最好的做法是: 定義宏: # define EX_FONT_CHAR(value) # define EX_FONT_UNICODE_VAL(value) (value), # define EX_FONT_ANSI_VAL(value) (value), 定義結構體: typedef struct _wide_unicode_font16x16 { WORD value; /* 內碼 */ BYTE data[32]; /* 字模點陣 */ }Unicode; #define CHINESE_CHAR_NUM … /* 漢字數(shù)量 */
[hide]
C 語言編程修煉之四屏幕操作.doc
(139 KB, 下載次數(shù): 0)
2020-8-20 17:49 上傳
點擊文件名下載附件
下載積分: 聯(lián)盟幣 -5
[\hide]
|