電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 2579|回復: 0
收起左側

C 語言編程修煉之四屏幕操作

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2020-8-20 17:49:25 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
        C 語言嵌入式系統(tǒng)編程修煉之四:屏幕操作
一、 漢字處理
        現(xiàn)在要解決的問題是,嵌入式系統(tǒng)中經(jīng)常要使用的并非是完整的漢字庫,往往只是需要提供數(shù)量有限的漢字供必要的顯示功能。例如,一個微波爐的LCD 上沒有必要提供顯示"電子郵件"的功能;一個提供漢字顯示功能的空調(diào)的LCD 上不需要顯示一條"短消息",諸如此類。但是一部手機、小靈通則通常需要包括較完整的漢字庫。
        如果包括的漢字庫較完整,那么,由內(nèi)碼計算出漢字字模在庫中的偏移是十分簡單的:漢字庫是按照區(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;                         /* 內(nèi)碼 */
                BYTE data[32];                         /* 字模點陣 */
        }Unicode;
        #define CHINESE_CHAR_NUM … /* 漢字數(shù)量 */


[hide] C 語言編程修煉之四屏幕操作.doc (139 KB, 下載次數(shù): 0) [\hide]

回復

使用道具 舉報

發(fā)表回復

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關注微信 下載APP 返回頂部 返回列表