GB2312编码
在區碼和位碼的基礎上,分別加上0XA0的偏移,便是GB2312編碼;
我們制作ASCII字庫時,一般只做可以顯示出來的字符字模,前面命令型的ASCII字符,我們不做字模,即從“空格開始”,ASCII表對應0x20,所以當我們使用PCtoLcd的16X16選項制作字庫時,(注意英文的實際占用的是8X16,要比漢字小半個字寬),所以,如果根據標準ASCII表制作字庫時,可以根據字符的漢字相對于“空格”的偏移找到對應字庫中的偏移地址,找到對應的字模;如找到"A"對應的字模:Address = ("A" - " ") X (8 X 16 )/8,從這個偏移地址向后連續取16個字節,即是"A"的所有字模 。
GB2312是在區位碼的地址基礎上分別偏移0xA0,每個區有94個漢字;每個漢字占用的字節為(16X16)/8=32個字節;漢字字庫的第一個字符也是“空格”,但這個是全角的和ASCII的不一樣;如我們再寫液晶驅動程序顯示一個英文字母時,void (uchar x,uchar y,uchar en) 可以這樣尋找偏移='en'-' ' 。
該空格的區位碼是“0101”,所以任意一個漢字的偏移地址公式是,Address= ( (CodeH-0x30-1)*94+(CodeL-0x30-1) )*( 16*16 )/8;CodeH是GB2312的第一個字節,CodeL是GB2312的第二個字節,減一 是因為區位碼是從第一區開始的,而字模數組表是從0開始的; (以上的計算均是按16*16取模時計算的)
當我使用單片機編程工具寫程序時,編譯的時候,編譯器會根據我們的選擇(如MDK)會自動將字符串轉換成機內碼即GB2312形式進行存儲,所以我們可以根據GB2312與區位碼的關系進行尋找地址偏移。如我們在液晶驅動程序中寫一個中文漢字顯示程序,void(uchar x,uchar y,uint16hz ) 可以這樣找區位碼,CodeH=hz>>8; CodeL=hz&0x00ff;
注意英文和漢字的參數定義類型一個是8位uchar 型的,一個是u16位int16型的,因為GB2312在系統中是占用2個字節的,英文只占用一個字節
總結
- 上一篇: 最新SCI影响因子发布!Nature屠榜
- 下一篇: 使用注册表文件(REG)添加、修改或删除