chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)上常用GB2312、GBK漢字取模與字庫(kù)

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 使用單片機(jī)開(kāi)發(fā)程序時(shí),經(jīng)常需要使用LCD顯示屏顯示一些文字、數(shù)字。單片機(jī)因?yàn)榕渲貌桓?,很多?chǎng)合也不需要顯示很多文字或者說(shuō)只是顯示一種大小、或者固定幾種大小的文字,或者顯示一些固定的文字或者一些英文字母、數(shù)字。如果只是顯示固定文字,這時(shí)可以直接將要顯示的文字提前取模存放到程序中,在通過(guò)LCD屏畫(huà)點(diǎn)函數(shù)將數(shù)據(jù)畫(huà)在LCD屏幕上去。如果顯示固定大小的文字,可以制作點(diǎn)陣字庫(kù)。

一、 GB2312編碼

GB2312 碼是中華人民共和國(guó)國(guó)家漢字信息交換用編碼,全稱《信息交換用漢字編碼字符集–基本集》, 由國(guó)家標(biāo)準(zhǔn)總局發(fā)布, 1981 年 5 月 1 日 實(shí)施,通行于大陸。新加坡等地也使用此編碼。GB2312 收錄簡(jiǎn)化漢字及符號(hào)、字母、 日文假名等共 7445 個(gè)圖形字符,其中漢字占 6763 個(gè)。GB2312 規(guī)定<對(duì)任意一個(gè)圖形字符都采用兩個(gè)字節(jié)表示,每個(gè)字節(jié)均采用七位編碼表示>,習(xí)慣上稱第一個(gè)字節(jié)為<高字節(jié)>, 第二個(gè)字節(jié)為<低字節(jié)>。GB2312-80 包含了大部分常用的一、二級(jí)漢字, 和 9 區(qū)的符號(hào)。該字符集是幾乎所有的中文系統(tǒng)和國(guó)際化的軟件都支持的中文字符集,這也是最基本的中文字符集。其編碼范圍是高位 0xa1- 0xfe, 低位也是 0xa1-0xfe;漢字從 0xb0a1 開(kāi)始,結(jié)束于 0xf7fe。GB2312 將代碼表分為 94 個(gè)區(qū),對(duì)應(yīng)第一字節(jié)( 0xa1 -0xfe);每個(gè)區(qū) 94 個(gè)位(0xa1-0xfe),對(duì)應(yīng)第二字節(jié),兩個(gè)字節(jié)的值分別為區(qū)號(hào)值和位號(hào)值加 32(20H), 因此也稱為區(qū)位碼。01-09 區(qū)為符號(hào)、數(shù)字區(qū), 16-87 區(qū)為漢字區(qū)(0xb0-0xf7),10-15 區(qū)、88-94 區(qū)是有待進(jìn)一步標(biāo)準(zhǔn)化的空白區(qū)。 GB2312 將收錄的漢字分成兩級(jí): 第一級(jí)是常用漢字計(jì) 3755 個(gè),置于 1 6-55 區(qū), 按漢語(yǔ)拼音字母/筆形順序排列;第二級(jí)漢字是次常用漢字計(jì) 3008 個(gè),置于 56-87 區(qū),按部首/筆畫(huà)順序排列。

故而 GB2312 最多能表示 6763 個(gè)漢字。

二、GBK編碼

全國(guó)信息技術(shù)化技術(shù)委員會(huì)于 1995 年 12 月 1 日《漢字內(nèi)碼擴(kuò)展規(guī)范》。GBK 向下與 GB2312 完全兼容,向上支持 ISO 10646 國(guó)際標(biāo)準(zhǔn),在前者向后者過(guò)渡過(guò)程中起到的承上啟下的作用。GBK 亦采用雙字節(jié)表示,總體編碼范圍為 8140-FEFE 之間,首字節(jié)在 81-FE 之間,尾字節(jié)在 40-FE 之間,剔除 XX7F 一條線。

GBK 共收入 21886 個(gè)漢字和圖形符號(hào),包括:

GB2312 中的全部漢字、非漢字符號(hào)。

BIG5 中的全部漢字。

與 ISO 10646 相應(yīng)的國(guó)家標(biāo)準(zhǔn) GB13000 中的其它 CJK 漢字,以上合計(jì) 20902 個(gè)漢字。

其它漢字、部首、符號(hào),共計(jì) 984 個(gè)。

GBK 編碼區(qū)分三部分:

  1. 漢字區(qū),包括:

GBK/2:OXBOA1-F7FE, 收錄 GB2312 漢字 6763 個(gè),按原序排列;

GBK/3:OX8140-AOFE,收錄 CJK 漢字 6080 個(gè);

GBK/4:OXAA40-FEAO,收錄 CJK 漢字和增補(bǔ)的漢字 8160 個(gè)。

  1. 圖形符號(hào)區(qū),包括:

GBK/1:OXA1A1-A9FE,除 GB2312 的符號(hào)外,還增補(bǔ)了其它符號(hào)

GBK/5:OXA840-A9AO,擴(kuò)除非漢字區(qū)。

  1. 用戶自定義區(qū):

即 GBK 區(qū)域中的空白區(qū),用戶可以自己定義字符

每個(gè) GBK 碼由 2 個(gè)字節(jié)組成:

第一個(gè)字節(jié)為 0X81~0XFE

第二個(gè)字節(jié)分為兩部分:

  1. 0X40~0X7E

2.0X80~0XFE。

其中與 GB2312 相同的區(qū)域,字完全相同。

我們把第一個(gè)字節(jié)代表的意義稱為區(qū),那么 GBK 里面總共有 126 個(gè)區(qū)( 0XFE-0X81+1),

每個(gè)區(qū)內(nèi)有 190 個(gè)漢字( 0XFE-0X80+0X7E-0X40+2),總共就有 126190=23940 個(gè)漢字。我們的點(diǎn)陣庫(kù)只要按照這個(gè)編碼規(guī)則從 0X8140 開(kāi)始,逐一建立, 每個(gè)區(qū)的點(diǎn)陣大小為每個(gè)漢字所用的字節(jié)數(shù)190。這樣,我們就可以得到在這個(gè)字庫(kù)里面定位漢字的方法:

當(dāng) GBKL<0X7F 時(shí): Hp=((GBKH-0x81)190+GBKL-0X40)(size*2);

當(dāng) GBKL>0X80 時(shí): Hp=((GBKH-0x81)190+GBKL-0X41)(size*2);

其中 GBKH、 GBKL 分別代表 GBK 的第一個(gè)字節(jié)和第二個(gè)字節(jié)(也就是高位和低位), size

代表漢字字體的大?。ū热?16 字體, 12 字體等), Hp 則為對(duì)應(yīng)漢字點(diǎn)陣數(shù)據(jù)在字庫(kù)里面的起始地址(假設(shè)是從 0 開(kāi)始存放)。

這樣我們只要得到了漢字的 GBK 碼,就可以顯示這個(gè)漢字了。從而實(shí)現(xiàn)漢字在液晶上的顯示。

簡(jiǎn)化公式:

if(L<0x7f)L=L-0x40;
else L=L-0x41;
H=H-0x81;   
Addr=(190*H+L)*size;

L 是漢字的低字節(jié),H是漢字的高字節(jié)。

Addr 是該漢字在字庫(kù)里的偏移量。

Size 是該漢字的應(yīng)點(diǎn)陣集所占的字節(jié)數(shù)量。

漢字的高字節(jié)大于0x80 ,才是漢字。高字節(jié)小于0X80就是英文字符。

字庫(kù)在FLASH尋址過(guò)程:

首先得到該漢字點(diǎn)陣碼在FLASH里的存儲(chǔ)偏移量,然后在加上該漢字庫(kù)在FLASH里的存放起始地址,就得到了該漢字的點(diǎn)陣數(shù)據(jù)位置。

得到絕對(duì)位置之后,就可以讀出點(diǎn)陣碼,進(jìn)行打點(diǎn)顯示。

BIG5 編碼

BIG5 是通行于臺(tái)灣、香港地區(qū)的一個(gè)繁體字編碼方案。雖然存在一些瑕疵,但廣泛應(yīng)用于電腦行業(yè),尤其是互聯(lián)網(wǎng)中,從而成為一種事實(shí)上的行業(yè)標(biāo)準(zhǔn)。

1983 年 10 月,***科學(xué)委員會(huì)、教育部國(guó)語(yǔ)推行委員會(huì)、中央標(biāo)準(zhǔn)局、行政院共同制定了《通用漢字標(biāo)準(zhǔn)交換碼》,后經(jīng)修訂于 1992 年 5 月公布,更名為《中文標(biāo)準(zhǔn)交換碼》,BIG5 是臺(tái)灣資訊工業(yè)策進(jìn)會(huì)根據(jù)以上標(biāo)準(zhǔn)制定的編碼方案。

BIG5 碼是雙字節(jié)編碼方案,其中第一個(gè)字節(jié)的值在 OXAO-OXFE 之間,第二個(gè)字節(jié)在 OX40-OX7E 和

OXA1-OXFE 之間。

BIG5 收錄 13461 個(gè)漢字和符號(hào),包括:

  1. 符號(hào) 408 個(gè),編碼位置 A140-A3BE
  2. 常用字 5401 個(gè),編碼位置 A440-C67E,包括臺(tái)灣教育部頒布的《常用國(guó)字標(biāo)準(zhǔn)字體表》的全部漢字 4808 個(gè),臺(tái)灣教科書(shū)常用字 587 個(gè),異體字 6 個(gè)。
  3. 次常用字 7652 個(gè),編碼位置 C940-F9D5,包括臺(tái)灣教育部頒布的《次常用國(guó)字標(biāo)準(zhǔn)字體表》的全部漢字 6341 個(gè),《罕用國(guó)字標(biāo)準(zhǔn)字體表》中使用頻率較高的字 1311 個(gè)。

GB13000 編碼

GB13000 等同于國(guó)際標(biāo)準(zhǔn)的《通用多八位編碼字符集 (UCS)》 ISO10646.1,就是等同于 Unicode 的標(biāo)準(zhǔn),代碼頁(yè)等等的都使用 UTF 的一套標(biāo)準(zhǔn)。

從 ASCII、GB2312、GBK 到 GB18030,這些編碼方法是向下兼容的,即同一個(gè)字符在這些方案中總是有相同的編碼,后面的標(biāo)準(zhǔn)支持更多的字符。在這些編碼中,英文和中文可以統(tǒng)一地處理。區(qū)分中文編碼的方

法是高字節(jié)的最高位不為 0。按照程序員的稱呼,GB2312、GBK 到 GB18030 都屬于雙字節(jié)字符集 (DBCS)。

三、偏移量計(jì)算

GB2312收錄簡(jiǎn)化漢字及符號(hào)、字母、日文假名等共7445 個(gè)圖形字符,其中漢字占6763 個(gè)。GB2312 規(guī)定“對(duì)任意一個(gè)圖形字符都采用兩個(gè)字節(jié)表示,每個(gè)字節(jié)均采用七位編碼表示”,習(xí)慣上稱第一個(gè)字節(jié)為“高字節(jié)”,即所謂的區(qū)碼。第二個(gè)字節(jié)為“低字節(jié)”,即所謂的位碼。GB2312―80包含了大部分常用的一、二級(jí)漢字,和9區(qū)的符號(hào)。該字符集是幾乎所有的中文系統(tǒng)和國(guó)際化的軟件都支持的中文字符集,這也是最基本的中文字符集。其編碼范圍是高位0xa1~0xfe,低位也是0xa1~0xfe;漢字從0xb0a1開(kāi)始,結(jié)束于0xf7fe。GB2312將代碼表分為94個(gè)區(qū),對(duì)應(yīng)第一字節(jié)(0xa1~0xfe);每個(gè)區(qū)94 個(gè)位(0xa1~0xfe),對(duì)應(yīng)第二字節(jié)。兩個(gè)字節(jié)的值分別為區(qū)號(hào)值和位號(hào)值加32(20H),因此也稱為區(qū)位碼。01~09區(qū)為符號(hào)、數(shù)字區(qū),16~87區(qū)為漢字區(qū)(0xb0~0xf7),10~15區(qū)、88~94區(qū)是有待進(jìn)一步標(biāo)準(zhǔn)化的空白區(qū)。GB2312將收錄的漢字分成兩級(jí):第一級(jí)是常用漢字計(jì)3755個(gè),置于16~55區(qū),按漢語(yǔ)拼音字母/筆形順序排列:第二級(jí)漢字是次常用漢字計(jì)3008 個(gè),置于56~87 區(qū),按部首/筆畫(huà)順序排列。故而GB2312 最多能表示6763 個(gè)漢字。

而GBK內(nèi)碼完全兼容GB2312,同時(shí)支持繁體字,總漢字?jǐn)?shù)有2萬(wàn)多個(gè),編碼格式如下,每個(gè)GBK 碼由2 個(gè)字節(jié)組成,第一個(gè)字節(jié)為0X81~0XFE,第二個(gè)字節(jié)分為兩部分,一是0X40~0X7E,二是0X80~0XFE。其中與GB2312相同的區(qū)域,字完全相同。把第一個(gè)字節(jié)代表的意義稱為區(qū),那么GBK里面總共有126個(gè)區(qū)(0XFE~0X81+1),每個(gè)區(qū)內(nèi)有190 個(gè)漢字(0XFE~0X80+0X7E~0X40+2),總共就有126x190=23940 個(gè)漢字。點(diǎn)陣庫(kù)只要按照這個(gè)編碼規(guī)則從0X8140開(kāi)始,逐一建立,每個(gè)區(qū)的點(diǎn)陣大小為每個(gè)漢字所用的字節(jié)數(shù)乘以190。這樣,就可以得到在這個(gè)字庫(kù)里面定位漢字的方法:

當(dāng)GBKL<0X7F 時(shí):Hp=((GBKH-0x81)×190+GBKL-0X40)×(sizex2);

當(dāng)GBKL>0X80 時(shí):Hp=((GBKH-0x81)×190+GBKL-0X41)×(sizex2);

其中GBKH、GBKLL 分別代表GBK 的第一個(gè)字節(jié)和第二個(gè)字節(jié)(也就是高位和低位),size 代表漢字字體的大小(比如16 字體,12 字體等),Hp 則為對(duì)應(yīng)漢字點(diǎn)陣數(shù)據(jù)在字庫(kù)里面的起始地址。

對(duì)于GBK 字庫(kù)和GB2312 字庫(kù),他們的解碼部分部分略有不同,這個(gè)區(qū)別主要是由于他們的編碼方式不同引起的,對(duì)于GBK 字庫(kù),解碼的方式如下:

qh=*code;

ql=*(++code);

if(ql<0x7f)

    ql -= 0x40;

else

    ql -= 0x41;

qh -= 0x81;

foffset = ((unsigned long)190*qh + ql)*(size * 2);

對(duì)于GB2312 字庫(kù),解碼的方式如下:

qh=*code;

ql=*(++code);

ql -= 0xa1;

qh -= 0xa1;

foffset = ((unsigned long)94*qh + ql)*(size * 2);

其中qh、ql 分別代表GBK 的第一個(gè)字節(jié)和第二個(gè)字節(jié)(也就是高位和低位),size代表漢字字體的大小(比如16字體,12字體等),foffset 則為對(duì)應(yīng)漢字點(diǎn)陣數(shù)據(jù)在字庫(kù)里面的起始地址。

四、ASCII字符集取模方式

  • 需要使用的工具軟件:PCtoLCD2002.exe
  • ASCII字符集:
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

注意:前面第一個(gè)字符是空格。

每個(gè)字符點(diǎn)陣碼所占用的字節(jié)數(shù)為:(size/8+((size%8)?1:0))*(size/2),其中size:是字庫(kù)生成時(shí)的點(diǎn)陣大小(12/16/24…)

  • PC2LCD2002取模方式設(shè)置:陰碼+逐列式+順向+C51格式
imgimgimgimg
  • 以下是16*16的字模示例

將取出的ASCII字模使用二維數(shù)組保存,方便訪問(wèn)。

//16*16 ASCII字符集點(diǎn)陣
const unsigned char asc2_1608[95][16]={	  
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/
{0x00,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x00,0x00},/*""",2*/
{0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x00,0x00},/*"#",3*/
{0x00,0x00,0x0E,0x18,0x11,0x04,0x3F,0xFF,0x10,0x84,0x0C,0x78,0x00,0x00,0x00,0x00},/*"$",4*/
{0x0F,0x00,0x10,0x84,0x0F,0x38,0x00,0xC0,0x07,0x78,0x18,0x84,0x00,0x78,0x00,0x00},/*"%",5*/
{0x00,0x78,0x0F,0x84,0x10,0xC4,0x11,0x24,0x0E,0x98,0x00,0xE4,0x00,0x84,0x00,0x08},/*"&",6*/
{0x08,0x00,0x68,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x18,0x18,0x20,0x04,0x40,0x02,0x00,0x00},/*"(",8*/
{0x00,0x00,0x40,0x02,0x20,0x04,0x18,0x18,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/
{0x02,0x40,0x02,0x40,0x01,0x80,0x0F,0xF0,0x01,0x80,0x02,0x40,0x02,0x40,0x00,0x00},/*"*",10*/
{0x00,0x80,0x00,0x80,0x00,0x80,0x0F,0xF8,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00},/*"+",11*/
{0x00,0x01,0x00,0x0D,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/
{0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80},/*"-",13*/
{0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/
{0x00,0x00,0x00,0x06,0x00,0x18,0x00,0x60,0x01,0x80,0x06,0x00,0x18,0x00,0x20,0x00},/*"/",15*/
{0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"0",16*/
{0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"1",17*/
{0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x11,0x84,0x0E,0x0C,0x00,0x00},/*"2",18*/
{0x00,0x00,0x0C,0x18,0x10,0x04,0x11,0x04,0x11,0x04,0x12,0x88,0x0C,0x70,0x00,0x00},/*"3",19*/
{0x00,0x00,0x00,0xE0,0x03,0x20,0x04,0x24,0x08,0x24,0x1F,0xFC,0x00,0x24,0x00,0x00},/*"4",20*/
{0x00,0x00,0x1F,0x98,0x10,0x84,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00},/*"5",21*/
{0x00,0x00,0x07,0xF0,0x08,0x88,0x11,0x04,0x11,0x04,0x18,0x88,0x00,0x70,0x00,0x00},/*"6",22*/
{0x00,0x00,0x1C,0x00,0x10,0x00,0x10,0xFC,0x13,0x00,0x1C,0x00,0x10,0x00,0x00,0x00},/*"7",23*/
{0x00,0x00,0x0E,0x38,0x11,0x44,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00},/*"8",24*/
{0x00,0x00,0x07,0x00,0x08,0x8C,0x10,0x44,0x10,0x44,0x08,0x88,0x07,0xF0,0x00,0x00},/*"9",25*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x03,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/
{0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/
{0x00,0x00,0x00,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10,0x04,0x00,0x00},/*"<",28*/
{0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00},/*"=",29*/
{0x00,0x00,0x10,0x04,0x08,0x08,0x04,0x10,0x02,0x20,0x01,0x40,0x00,0x80,0x00,0x00},/*">",30*/
{0x00,0x00,0x0E,0x00,0x12,0x00,0x10,0x0C,0x10,0x6C,0x10,0x80,0x0F,0x00,0x00,0x00},/*"?",31*/
{0x03,0xE0,0x0C,0x18,0x13,0xE4,0x14,0x24,0x17,0xC4,0x08,0x28,0x07,0xD0,0x00,0x00},/*"@",32*/
{0x00,0x04,0x00,0x3C,0x03,0xC4,0x1C,0x40,0x07,0x40,0x00,0xE4,0x00,0x1C,0x00,0x04},/*"A",33*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x11,0x04,0x0E,0x88,0x00,0x70,0x00,0x00},/*"B",34*/
{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x1C,0x10,0x00,0x00},/*"C",35*/
{0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"D",36*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x17,0xC4,0x10,0x04,0x08,0x18,0x00,0x00},/*"E",37*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x17,0xC0,0x10,0x00,0x08,0x00,0x00,0x00},/*"F",38*/
{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x44,0x1C,0x78,0x00,0x40,0x00,0x00},/*"G",39*/
{0x10,0x04,0x1F,0xFC,0x10,0x84,0x00,0x80,0x00,0x80,0x10,0x84,0x1F,0xFC,0x10,0x04},/*"H",40*/
{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x00,0x00,0x00,0x00},/*"I",41*/
{0x00,0x03,0x00,0x01,0x10,0x01,0x10,0x01,0x1F,0xFE,0x10,0x00,0x10,0x00,0x00,0x00},/*"J",42*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x03,0x80,0x14,0x64,0x18,0x1C,0x10,0x04,0x00,0x00},/*"K",43*/
{0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00},/*"L",44*/
{0x10,0x04,0x1F,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x1F,0xFC,0x10,0x04,0x00,0x00},/*"M",45*/
{0x10,0x04,0x1F,0xFC,0x0C,0x04,0x03,0x00,0x00,0xE0,0x10,0x18,0x1F,0xFC,0x10,0x00},/*"N",46*/
{0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"O",47*/
{0x10,0x04,0x1F,0xFC,0x10,0x84,0x10,0x80,0x10,0x80,0x10,0x80,0x0F,0x00,0x00,0x00},/*"P",48*/
{0x07,0xF0,0x08,0x18,0x10,0x24,0x10,0x24,0x10,0x1C,0x08,0x0A,0x07,0xF2,0x00,0x00},/*"Q",49*/
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x11,0xC0,0x11,0x30,0x0E,0x0C,0x00,0x04},/*"R",50*/
{0x00,0x00,0x0E,0x1C,0x11,0x04,0x10,0x84,0x10,0x84,0x10,0x44,0x1C,0x38,0x00,0x00},/*"S",51*/
{0x18,0x00,0x10,0x00,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x00,0x18,0x00,0x00,0x00},/*"T",52*/
{0x10,0x00,0x1F,0xF8,0x10,0x04,0x00,0x04,0x00,0x04,0x10,0x04,0x1F,0xF8,0x10,0x00},/*"U",53*/
{0x10,0x00,0x1E,0x00,0x11,0xE0,0x00,0x1C,0x00,0x70,0x13,0x80,0x1C,0x00,0x10,0x00},/*"V",54*/
{0x1F,0xC0,0x10,0x3C,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x10,0x3C,0x1F,0xC0,0x00,0x00},/*"W",55*/
{0x10,0x04,0x18,0x0C,0x16,0x34,0x01,0xC0,0x01,0xC0,0x16,0x34,0x18,0x0C,0x10,0x04},/*"X",56*/
{0x10,0x00,0x1C,0x00,0x13,0x04,0x00,0xFC,0x13,0x04,0x1C,0x00,0x10,0x00,0x00,0x00},/*"Y",57*/
{0x08,0x04,0x10,0x1C,0x10,0x64,0x10,0x84,0x13,0x04,0x1C,0x04,0x10,0x18,0x00,0x00},/*"Z",58*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x40,0x02,0x40,0x02,0x40,0x02,0x00,0x00},/*"[",59*/
{0x00,0x00,0x30,0x00,0x0C,0x00,0x03,0x80,0x00,0x60,0x00,0x1C,0x00,0x03,0x00,0x00},/*"",60*/
{0x00,0x00,0x40,0x02,0x40,0x02,0x40,0x02,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/
{0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00},/*"^",62*/
{0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01},/*"_",63*/
{0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
{0x00,0x00,0x00,0x98,0x01,0x24,0x01,0x44,0x01,0x44,0x01,0x44,0x00,0xFC,0x00,0x04},/*"a",65*/
{0x10,0x00,0x1F,0xFC,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"b",66*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00},/*"c",67*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x11,0x08,0x1F,0xFC,0x00,0x04},/*"d",68*/
{0x00,0x00,0x00,0xF8,0x01,0x44,0x01,0x44,0x01,0x44,0x01,0x44,0x00,0xC8,0x00,0x00},/*"e",69*/
{0x00,0x00,0x01,0x04,0x01,0x04,0x0F,0xFC,0x11,0x04,0x11,0x04,0x11,0x00,0x18,0x00},/*"f",70*/
{0x00,0x00,0x00,0xD6,0x01,0x29,0x01,0x29,0x01,0x29,0x01,0xC9,0x01,0x06,0x00,0x00},/*"g",71*/
{0x10,0x04,0x1F,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"h",72*/
{0x00,0x00,0x01,0x04,0x19,0x04,0x19,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"i",73*/
{0x00,0x00,0x00,0x03,0x00,0x01,0x01,0x01,0x19,0x01,0x19,0xFE,0x00,0x00,0x00,0x00},/*"j",74*/
{0x10,0x04,0x1F,0xFC,0x00,0x24,0x00,0x40,0x01,0xB4,0x01,0x0C,0x01,0x04,0x00,0x00},/*"k",75*/
{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"l",76*/
{0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC},/*"m",77*/
{0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"n",78*/
{0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00},/*"o",79*/
{0x01,0x01,0x01,0xFF,0x00,0x85,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"p",80*/
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x05,0x01,0xFF,0x00,0x01},/*"q",81*/
{0x01,0x04,0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x04,0x01,0x00,0x01,0x80,0x00,0x00},/*"r",82*/
{0x00,0x00,0x00,0xCC,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x98,0x00,0x00},/*"s",83*/
{0x00,0x00,0x01,0x00,0x01,0x00,0x07,0xF8,0x01,0x04,0x01,0x04,0x00,0x00,0x00,0x00},/*"t",84*/
{0x01,0x00,0x01,0xF8,0x00,0x04,0x00,0x04,0x00,0x04,0x01,0x08,0x01,0xFC,0x00,0x04},/*"u",85*/
{0x01,0x00,0x01,0x80,0x01,0x70,0x00,0x0C,0x00,0x10,0x01,0x60,0x01,0x80,0x01,0x00},/*"v",86*/
{0x01,0xF0,0x01,0x0C,0x00,0x30,0x01,0xC0,0x00,0x30,0x01,0x0C,0x01,0xF0,0x01,0x00},/*"w",87*/
{0x00,0x00,0x01,0x04,0x01,0x8C,0x00,0x74,0x01,0x70,0x01,0x8C,0x01,0x04,0x00,0x00},/*"x",88*/
{0x01,0x01,0x01,0x81,0x01,0x71,0x00,0x0E,0x00,0x18,0x01,0x60,0x01,0x80,0x01,0x00},/*"y",89*/
{0x00,0x00,0x01,0x84,0x01,0x0C,0x01,0x34,0x01,0x44,0x01,0x84,0x01,0x0C,0x00,0x00},/*"z",90*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x3E,0xFC,0x40,0x02,0x40,0x02},/*"{",91*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/
{0x00,0x00,0x40,0x02,0x40,0x02,0x3E,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/
{0x00,0x00,0x60,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00},/*"~",94*/
};  
  • 顯示一個(gè)字符:
void LcdShowChar(u16 x,u16 y,u8 num,u8 size)
{  							  
  u8 temp,t1,t;
	u16 y0=y;
	u8 csize=size/8+((size%8)?1:0))*(size/2);		//得到字體一個(gè)字符對(duì)應(yīng)點(diǎn)陣集所占的字節(jié)數(shù)	
 	num=num-' ';   //得到偏移后的值(ASCII字庫(kù)是從空格開(kāi)始取模,所以-' '就是對(duì)應(yīng)字符的字庫(kù))
	for(t=0;t;t++)>

五、封裝文字描點(diǎn)函數(shù)

void DisplayData(u32 x,u32 y,u32 w,u32 h,u8 *p,u16 c1,u16 c2)
{
   u16 i,j,x0=x;
   u8 data;
    u16 colortemp=POINT_COLOR;    
   for(i=0;i0x80) //判斷是否是中文-編碼規(guī)則從 0X8140 開(kāi)始
        {
            if(x+size>239)
            {
                    x=0; //橫坐歸0
                    y+=size; //換行
                    if(y+size>319)return;
            }
            //LCD_ShowChar2(x,y,size,*p,c1,c2);//顯示一個(gè)中文
            x+=size;
            p+=2; //偏移兩個(gè)字節(jié)
        }
        else if(*p>=' ' && *p<='~')  //常用的ASCII碼
        {
                if(x+size/2>239)
                {
                        x=0; //橫坐歸0
                        y+=size; //換行
                        if(y+size>319)return;
                }
                if(size==16)
                {
                    //顯示英文字母
                    DisplayData(x,y,size/2,size,(u8*)ASCII_8_16[*p-' '],c1,c2); 
                }
                else if(size==24)
                {
                    DisplayData(x,y,size/2,size,(u8*)ASCII_8_16[*p-' '],c1,c2); 
                }
            
                p+=1;
                x+=size/2;
        }
        else if(*p=='\n')
        {
                x=0;
                y+=size;
                p+=1; //偏移指針
        }
        else 
        {
                p+=1; //偏移指針
        }
    }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6071

    文章

    45265

    瀏覽量

    660891
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    36

    文章

    4565

    瀏覽量

    174847
  • GBK
    GBK
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    7390
  • GB2312
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    2045
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何給rt-thread studio 2.2.8 ide工具安裝支持其他字符編碼,如gb2312等?

    目前使用的rt-thread studio版本為2.2.8,當(dāng)前支持的字符集編碼如下 由于移植的工程,之前的文件編碼格式為gb2312的,因此在此ide中中文顯示為亂碼 請(qǐng)教如何給ide添加新的字符集支持。
    發(fā)表于 09-29 07:41

    rt-thread程序中的漢字字符串,如何提取漢字gb2312編碼?

    我希望程序中的漢字字串“歡迎光臨”取出來(lái)的字節(jié)數(shù)組是GB2312碼:“BB B6 D3 AD B9 E2 C1 D9 00”, 而實(shí)際出來(lái)的是UTF-8碼:“E6 AC A2 E8 BF 8E E5
    發(fā)表于 09-29 07:14

    終端GBK編碼顯示錯(cuò)誤的原因?怎么解決?

    RT-thread studio終端,使用UTF8編碼中文顯示正常,使用GBK編碼時(shí)終端顯示亂碼。(以使用其他串口助手等核驗(yàn)過(guò)串口數(shù)據(jù),例如GBK下輸出“中文”D6 D0 CE C4,在
    發(fā)表于 09-11 07:50

    請(qǐng)問(wèn)如何使用GB2312字體編碼?

    如何使用GB2312字體編碼?
    發(fā)表于 09-04 07:42

    怎么測(cè)單片機(jī)系統(tǒng)頻率

    ,各有其特點(diǎn)和操作要點(diǎn)。 示波器測(cè)量法 示波器是測(cè)量單片機(jī)系統(tǒng)頻率的常用工具,其原理是通過(guò)捕捉單片機(jī)輸出的周期性信號(hào),根據(jù)信號(hào)的周期計(jì)算頻率。 操作步驟 首先,確定單片機(jī)的時(shí)鐘輸出引腳
    的頭像 發(fā)表于 07-25 11:39 ?301次閱讀

    STM32單片機(jī)片上數(shù)字濾波器操作文檔 快速入門(mén)數(shù)字濾波器在單片機(jī)上的實(shí)現(xiàn)

    這個(gè)文檔,是為了幫助大家快速入門(mén)數(shù)字濾波器在單片機(jī)上的實(shí)現(xiàn)。
    的頭像 發(fā)表于 06-23 16:53 ?1094次閱讀
    STM32<b class='flag-5'>單片機(jī)</b>片上數(shù)字濾波器操作文檔 快速入門(mén)數(shù)字濾波器在<b class='flag-5'>單片機(jī)上</b>的實(shí)現(xiàn)

    單模跳線和多跳線哪個(gè)更常用

    單模跳線和多跳線在不同應(yīng)用場(chǎng)景下的使用頻率不同,單模跳線在長(zhǎng)距離、高速率傳輸場(chǎng)景中更常用,多跳線在短距離、高帶寬需求場(chǎng)景中更常用。以下是對(duì)兩者的具體分析: 單模跳線的
    的頭像 發(fā)表于 06-17 09:40 ?420次閱讀

    單片機(jī)常用算法源碼下載!

    單片機(jī)常用算法源碼下載!
    發(fā)表于 06-10 20:44

    安信可Ai-M61系列模組實(shí)現(xiàn)藍(lán)牙歌詞播放功能

    Controller: Title %sn", avrcp_subevent_value); memset(gb2312Data,'',sizeof(gb2312Data)); size_t gb2312
    的頭像 發(fā)表于 02-26 14:16 ?849次閱讀
    安信可Ai-M61系列模組實(shí)現(xiàn)藍(lán)牙歌詞播放功能

    《DNESP32S3使用指南-IDF版_V1.6》第三十九章 漢字顯示實(shí)驗(yàn)

    39.1.1 單個(gè)漢字顯示原理框圖上圖顯示了單個(gè)漢字顯示的原理框圖,單片機(jī)(MCU)先根據(jù)漢字編碼(①,②)從字庫(kù)里面找到該
    發(fā)表于 01-03 09:24

    單片機(jī)Debug工具性能對(duì)比 單片機(jī)調(diào)試常用命令

    。以下是對(duì)單片機(jī)調(diào)試工具性能的簡(jiǎn)要對(duì)比以及一些常用的調(diào)試命令。 單片機(jī)Debug工具性能對(duì)比 Keil uVision 性能 :Keil uVision 是一款功能強(qiáng)大的集成開(kāi)發(fā)環(huán)境(IDE),支持多種
    的頭像 發(fā)表于 12-19 09:56 ?1955次閱讀

    百問(wèn)LCD Framebuffer應(yīng)用開(kāi)發(fā) - 操作原理

    偏移位置用。 ④使用漢字庫(kù),調(diào)出點(diǎn)陣顯示漢字 ?HZK16 字庫(kù)是符合GB2312標(biāo)準(zhǔn)的16×16點(diǎn)陣字庫(kù)HZK16的編碼,每個(gè)字需要32個(gè)
    發(fā)表于 11-25 10:37

    單片機(jī)編程語(yǔ)言有哪些選擇

    常用單片機(jī)編程語(yǔ)言,以及它們的特點(diǎn)和應(yīng)用場(chǎng)景: 1. C語(yǔ)言 特點(diǎn) :C語(yǔ)言是一種通用的編程語(yǔ)言,以其高效性和靈活性而聞名。它提供了豐富的庫(kù)函數(shù)和直接的硬件訪問(wèn)能力,非常適合用于單片機(jī)編程。 應(yīng)用 :C語(yǔ)言是
    的頭像 發(fā)表于 11-01 14:13 ?3347次閱讀

    請(qǐng)問(wèn)TPA3112D1的datasheet上的control system要連在單片機(jī)上嗎?

    請(qǐng)問(wèn)TPA3112D1的datasheet上的control system 要連在單片機(jī)上嗎?AVCC是連在單片機(jī)上的某個(gè)引腳嗎?PVCC是連接電源嗎?附件是datasheet上給的參考電路圖。
    發(fā)表于 10-31 08:32

    TAS5711用GDE生成的EQ cfg配置文件怎么加載到單片機(jī)上?

    TAS5711 的用GDE 生成的EQcfg配置文件怎么加載到單片機(jī)上。
    發(fā)表于 10-25 13:48