![3aa6b71f7bee6c6acc02be8154df346c.png](https://i-blog.csdnimg.cn/blog_migrate/a87bb6de389986155745abb7a3f9723b.png)
0 引言
还记得通常在MCU驱动LCD,OLED是怎样显示汉字的吗?采用取字模工具,生成字模数组,然后要显示某个字符,直接索引这个字符的数组,然后对这个数组数据进行显示就行了,就像这样:
![a0790c138111ad4d44c95635ac21d7be.png](https://i-blog.csdnimg.cn/blog_migrate/1a781bc08163eb9d698a6ab8796c1506.jpeg)
最近有开发一个物联网项目,将网络端的发过来的汉字显示到屏幕上,但问题来了,我还不知道网络端要发送具体哪些汉字,我是无法对具体的汉字取模,因此,得想办法先对所有汉字进行取模,或使用字库,于是就有了下文。
1 字符编码
先从字符编码说起:参考阮一峰博客字符编码
- ASCII码:一共规定了128个字符的编码,这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0。
- 非ASCII码:英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。
- GB2312,GBK,Unicode,UTF-8均为非ASCII编码
- Unicode码:如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode,就像它的名字都表示的,这是一种所有符号的编码。
- 注意:Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储
- UTF-8码:UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式,是Unicode 的实现方式之一。
- GB2312,GBK:GB2312是常用汉字的专用编码,GBK是所有汉字的专用编码。
- 注意:GB类的汉字编码与后文的 Unicode 和 UTF-8 是毫无关系的
2 液晶屏汉字显示原理
- ASCII字符显示,由于ASCII字符仅128个,可以实现对每个字符一一取模,且占用MCU的RAM不会过大,此处不再介绍ASCII字符的显示。
- 为什么显示英文一般不用字库芯片? 英文的单词都是由26个字母构成了,加上大小写的区别和其它一些字符,也不过才95个。假如要显示8 * 16像素大小的字符,每一个字符需要16个字节的字库空间,95个字符即是95