關於編碼和字庫

問一個問題,單片機液晶上的字是怎麼顯示出來的,電腦上的字是怎麼顯示出來的,您真的知道真真實實的原理了嗎??php

關於字庫,您真的知道實質是如何調用的嗎????編碼

 

先看一下spa

 

 

 

 

相信你們都據說過 GB2312,實際上就是用16進制來表示咱中國人的符號和字,咱主要說一下字.net

能夠看一下3d

https://blog.csdn.net/halchan/article/details/78353947  GB2312blog

https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php  GBK  國標擴展      GBK包含GB2312  是在GB2312之上進行了補充get

 

 

 

 

 

實際上就是把每個漢字用兩個16進製表示,  0xB0,0xA1 就表示   啊原理

好了這裏就說完了,如今看如何把0xB0,0xA1和字庫聯繫上擴展

首先說一下液晶是如何顯示字的,im

 

實質上就是一個一個的小燈,假設咱用16*16的燈來顯示字,0控制燈滅,1控制燈亮

 

 而後寫完全部控制的數據,字就顯示出來了.

而後說一下,實質上字庫就是上面的0x08,0x80......0x10,0x40,.....後面的其它字,這樣的數據

假設我要顯示 "你" 就是把提取0x08,0x80.....0x10,0x40 就能夠了

 

可是你們有沒有發現像那種帶字庫的芯片咱們只須要 寫給它 "啊"  或者 0xB0,0xA1 這個 "啊" 就顯示出來了,實際上你寫的 "啊" 單片機也是換作 0xB0,0xA1

而後丟給處理芯片就能夠了.

如今說處理芯片是如何作的

假設用的GBK編碼

 

 

 假設數據是從存儲芯片的0地址開始存的

我要顯示 "丂"  是否是隻須要從0地址開始取,取32個字節而後用這32個字節控制小燈就能夠了

 

但是我們讓含有字庫的芯片顯示 丂  是給芯片的 0x81,0x40

 

 

 實質上吧!芯片是這樣作的

0x81-0x81 + 0x40-0x40   就是0啦,就是從存儲芯片的0地址開始取,取32個字節

 

假設

   

 

 

 

 (0x81-0x81 + 0xEF-0x40)*32(由於每個字都會產生32個字節的數據哈)   就是5600,就是從存儲芯片的5600地址開始取,取32個字節

 

假設

 

 

   (192*(0xD0-0x81)+(0xDE-0x40))*32     本身去算哈

 

實質上這就是最終的

(192*(漢字前面的字節-0x81)+(漢字後面的字節-0x40))*32  = 漢字在字庫的位置

 

說一下,注意看,間隔了192個,空的地方在字庫裏面就是..我也不肯定,可是佔位置,不是32個0,就是32個ff

 

 

 假設存儲芯片存儲的地址有偏移

 

 (192*(漢字前面的字節-0x81)+(漢字後面的字節-0x40))*32 +偏移的地址 = 漢字在字庫的位置

相關文章
相關標籤/搜索