LCD_ShowString(0, 0, "瑞生");
這條語句,是調用了一個函數,其中,0,0是液晶屏的坐標,代表著你要在液晶屏的什麼位置顯示。然後,KEIL會在編譯的時候,自動將你輸入的漢字「瑞生」編譯成GBK碼...
「瑞」的GBK碼是十六進位C8F0,「生」的GBK碼是十六進位C9FA。
記住:每個中文字符的GBK碼都是唯一的、兩個字節,例如,「瑞」的GBK碼的兩個字節分別用十六進位表示為:0xC8和0xF0。(0x代表:後面的是十六進位數據),當你看到一個GBK碼是0xC8F0,它也只能是「瑞」這個字。
記住上面那段話很重要,2個重點:
1.GBK碼是2個字節
2.每個中文字符的GBK是唯一的
1、為什麼中文字符GBK碼是2個字節?
學過計算機的都聽說過Ascii,每個英文字符都有自己的Ascii碼,你可以百度一下,查詢英文字符對應的Ascii碼,一共有95個,我們知道,一個字節的數據範圍是0~255,所以,用一個字節,就可以表示所有的英文字符了。
但是...,中文字符有很多,已經遠遠超過了一個字節的數據範圍(255),而2個字節的數據範圍是0~65535,已經足夠表示所有的中文字符了。(GBK碼有2萬多個字符,65535是6萬多)
這下你就想通了為什麼是2個字節表示中文字符了吧?
2、為什麼是唯一的?
答:規定的。你知道什麼叫「協議」嗎?你知道為什麼會有「協議」嗎?如果沒有協議,人們就會亂來。所以,協議其實就是一種規定。
就拿GBK協議來說,協議說「瑞」的GBK碼是0xC8F0,那「瑞」的GBK碼就是0xC8F0。
GBK碼,規定了所有漢字的碼,並且宣布:大家以後用的話,都按照協議來就好!所以,現在GBK碼基本上都在計算機上普及了。這就是前面提到的:KEIL會自動把漢字轉換為對應的GBK碼的原因。
3、我想知道某個漢字的GBK碼,怎麼查詢?
這個不是必須要知道,剛才說過了,你寫程序的時候,KEIL會自動把漢字變成GBK碼,你都不用參與。
但是,可能有其它用途需要用到,比如,我寫這篇文章,需要知道「瑞」的GBK碼,就需要查詢一下。
方法如下:
百度搜索:gbk碼查詢,如下圖所示,點開第一個連結就可以查了。
點開以後,按照要求,輸入「瑞生」兩字,點擊「查看編碼」就可以了。
好了,我們繼續!
GBK碼的2個字節,第一個字節的範圍是0X81~0XFE,第二個字節的範圍是0X40~0XFE。你看看,他們不是從字節0開始的,從哪開始,都是規定的。
這樣說的話,第一個GBK碼就是0x8140,能看懂嗎?
第二個GBK碼就是0x8141...一直到0x81FE,再後來就是0x8240...依次列推...
看懂了上面三段話,你就可以理解了:GBK碼其實就是一座公寓,公寓裡面有126個房間,每個房間有191個字符。
GBK碼的第一個字節代表著公寓的房間號,公寓的房間號是從0x81~0xFE,你可以算一下,一共有126個門牌號。0xFE-0X81+1=126。
GBK碼的第二個字節代表著公寓裡面的每個房間裡有多少個字符,0xFE-0X40+1=191。
實際上,GBK協議規定,第二個字節的0x7F位置是空著的,沒有字節,所以,每個房間是有190個字符,不過,並不是每個字符的位置都有字符,所以,我們這裡說191個,也無所謂了。
除此之外,GBK的漢字順序都是排好的,第一個是哪個字,第二個是哪個字...都是規定的!
下圖是排好順序的GBK字庫txt文件的開始部分...
你可以看到,第一個字符是「丂」,從上面的GBK碼協議,你也可以知道,第一個字符的GBK碼應該是0x8140,也就是說,「丂」的GBK碼就是0x8140,我們來驗證一下...
怎麼驗證呢?用我上邊給你提到的百度搜索出來的那個在線查詢GBK碼的網站就可以了。
這次,我們在下邊的輸入框輸入,網頁提示你,輸入十六進位的話,前面加字符「&H」,所以我們輸入的是「&H8140」,然後點擊「查看文字」,就可以看到,這個字是「丂」了。
驗證正確。
上面我講的,你理解了嗎?今天就先給大家介紹這些GBK碼的定義吧,以後再給大家講如何使用GBK碼顯示到液晶屏上。
重磅開源:帶屏幕LCD脫機下載器離線下載器! 【開源方案】2.4G遙控器,接收器全套詳細設計資料 【全開源功放】美國NS公司的經典晶片,LM3886! 分享一個來自蘇泊爾的超低成本隔離交流電壓檢測+掉電檢測二合一電路軟體神器TortoiseGit,曉宇姐姐教你使用圖形化方式管理單片機程序版本!
請戳右下角,給我一點在看!