目录

字符编码

ASCII编码

中文编码

GB2312编码

区位码

GBK编码

Unicode字符集和编码

UTF-32

UTF-16

UTF-8

字模

字模的构成

字模显示原理

如何制作字模

字模寻址公式

存储字模文件

各种模式的液晶显示字符实验

显示ASCII编码的字符

代码分析

ASCII字符和中文显示函数

字符编码

由于计算机只能识别0和1,文字也只能以0和1的形式在计算机里存储,所以我们需要对文字进行编码才能让计算机处理,编码的过程就是规定特定的01数字字符串来表示特定的文字,最简单的字符编码就是ASCII编码。

ASCII编码

学习C语言的时候,我们知道在程序设计中使用的ASCII编码表约定了一些控制字符、英文及数字。他们在存储器中,本质也是二进制数,只是我们约定这些二进制数可以表示某些特殊意义,如以ASCII编码解释数字“0x41”时,它表示的是英文字符“A”。ASCII编码表可以分为两部分,第一部分是控制字符或通讯专用字符,它们的数字编码从0-31,它们并没有特定的图形显示,但会根据不同的应用程序,而对文本显示有不同的影响.ASCII表的第二部分包括空格、阿拉伯数字、标点符号、大小写英文字符以及“DEL”,这部分的数字编码从32-127,除了最后一个DEL符号外都能以图形的方式显示,具体的ASCII表这里不再赘述,读者可以网上查找。

后来,计算机推广之后,还加入了各种形状和符号,一直编号到255,从128-255的字符被称为ASCII的扩展字符集,至此,基本存储单位Byte能表示的编号已经全部用完了。

中文编码

由于汉字非常多,常用字就有6000多个,如果像ASCII编码表那样只使用1个字节最多只能表示256个汉字、所以我们使用2个字节来编码。

GB2312编码

我们首先定义的就是GB2312编码,它把 ASCII码表127之后的扩展字符集直接取消掉,并规定小于127的编码按原来的ASCII标准解释字符,当2个大于127的字符联结在一起时,就表示1个汉字。
第一个字节使用(0xA1-0xFE)编码,第2个字节使用(0xA1-0xFE)编码,这样的编码组合起来可以表示了7000多个符号,其中包括汉字6763个汉字。在这些编码里,我们还把数学符号、罗马字母、日文片假名等都编进表中,就连原来在ASCII表中原有的数字、标点以及字母也重新编了2个字节长的编码,这就是平时在输入法可以切换“全角”和“半角”符号的原因,半角就是原来的1个字节的ASCII编码。

下面的表格说明GB2312兼容ASCII码的原理,说明了GB2312是如何兼容ASCII的,当我们设定系统使用GB2312标准的时候,它遇到一个字符串时,会按字节检测值得大小,若遇到连续两个字节得数值都大于127时,就把这两个连续得字节合在一起,用GB2312解码,若遇到得数值小于127,就直接用ASCII解码。

第1字节 第2字节 表示的字符 说明
0x68 0x69 (hi) 两个字节的值都小于127(0x7F),使用ASCII解码
0xB0 0xA1 (啊) 两个字节的值都大于127(0x7F),使用GB2312解码

区位码

在GB2312编码的实际使用中,有时会用到区位码的概念,见图GB2312的部分区位码。GB2312编码对所收录字符进行了“分区”处理,共94个区,每区含有94个位,共8836个码位。而区位码实际是GB2312编码的内部形式,它规定对收录的每个字符采用两个字节表示,第一个字节为“高字节”,对应94个区;第二个字节为低字节,对应94个位。所以它的区位码范围就是:0x0101-0x9494。为兼容ASCII码,区号和位号分别加上0xA0偏移就得到GB2312编码。在区位码上加上0xA0,可求得GB2312编码的范围:0xA1A1-0XFEFE,其中汉字的编码范围是0xB0A1-0XF7FE,第一字节0xB0-0xF7(对应位号16-87),第二字节0xA1-0XFE(对应位号01-94)。

例如,“啊”字是 GB2312 编码中的第一个汉字,它位于 16 区的 01 位,所以它的区位码就是 1601, 加上 0xA0 偏移,其 GB2312 编码为 0xB0A1。其中区位码为 0101 的码位表示的是“空格”符。

GBK编码

据统计,GB2312 编码中表示的 6763 个汉字已经覆盖中国大陆 99.75% 的使用率,单看这个数字
已经很令人满意了,但是我们不能因为那些文字不常用就不让它进入信息时代,而且生僻字在人
名、文言文中的出现频率是非常高的。为此我们在 GB2312 标准的基础上又增加了 14240 个新汉
字 (包括所有后面介绍的 Big5 中的所有汉字) 和符号,这个方案被称为 GBK 标准。增加这么多字
符,按照 GB2312 原来的格式来编码,2 个字节已经没有足够的编码,我们聪明的程序员修改了
一下格式,不再要求第 2 个字节的编码值必须大于 127,只要第 1 个字节大于 127 就表示这是一
个汉字的开始,这样就做到了兼容 ASCII 和 GB2312 标准。
表格 GBK 兼容 ASCIIGB2312 的原理 说明了 GBK 是如何兼容 ASCII 和 GB2312 标准的,当我 们设定系统使用 GBK 标准的时候,它按顺序遍历字符串,按字节检测字符值的大小,若遇到一
个字符的值大于 127 时,就再读取它后面的一个字符,把这两个字符值合在一起,用 GBK 解码,
解码完后,再读取第 3 个字符,重新开始以上过程,若该字符值小于 127,则直接用 ASCII 解码。
第1字节 第2字节 第3字节 表示的字符 说明
0x68(<7F) 0xB0(>7F) 0xA1(>7F) h啊 第1字节小于127,使用ASCII解码,第2字节大于127直接使用GBK解码,兼容GB2312
0xB0(>7F) 0xA1(>7F) 0X68(<7F) 啊h 第1字节大于127,直接使用GBK解码,第3字节小于127直接使用ASCII解码
0XB0(>7F) 0X56(<7F) 0X68(<7F) 痴h 第1字节大于127,第2字节虽然小于127,直接使用GBK解码,第3字节小于127直接使用ASCII解码

后面还有GB18030编码,使用4字节编码,Big5繁体中文编码,由于篇幅原因,可以有兴趣的网上了解。

Unicode字符集和编码

由于各个国家或地区都根据使用自己的文字系统制定标准,同一个编码在不同的标准里表示不
一样的字符,各个标准互不兼容,而又没有一个标准能够囊括所有的字符,即无法用一个标准表
达所有字符。国际标准化组织 (ISO) 为解决这一问题,它舍弃了地区性的方案,重新给全球上所
有文化使用的字母和符号进行编号,对每个字符指定一个唯一的编号 (ASCII 中原有的字符编号
不变),这些字符的号码从 0x000000 到 0x10FFFF,该编号集被称为 Universal Multiple-Octet Coded CharacterSet,简称 UCS,也被称为 Unicode。最新版的 Unicode 标准还包含了表情符号 (聊天软件 中的部分 emoji 表情),可访问 Unicode 官网了解:http://www.unicode.org。
Unicode 字符集只是对字符进行编号,但具体怎么对每个字符进行编码,Unicode 并没指定,因此
也衍生出了如下几种 unicode 编码方案 (Unicode Transformation Format)。

UTF-32

对Unicode字符集编码,最自然的就是UTF-32方式。编码时,它直接对Unicode字符集里的每个字符都使用4字节来表示,转换方式很简单,直接将字符对应的编号数字转换为4字节的二进制数。如表格所示,由于UTF-32把每个字符都用4字节来存储,因此UTF-32不兼容ASCII码,也就是说ASCII编码使用的文件用UTF-32打开会乱码。
字符 GBK编码 Unicode编号 UTF-32编码
A 0x41 0x0000 0041  大端格式0x0000 0041
0xB0A1 0x0000 554A 大端格式0x0000 554A

对UTF-32数据进行解码的时候,以4字节为单位进行解析即可,根据编码可直接找到Unicode字符集中对应编号的字符。

UTF-32的优点是编码简单,解码方便,读取编码的时候每次都直接读4字节,不需要加其他的判断。它的缺点是浪费存储空间,大量常用的字符的编号只需要两个字节就能表示。其次在存储的时候需要指定字节顺序,是高位字节存储在前(大端格式),还是低位字节存储在前(小端格式)。

UTF-16

针对UTF-32的缺点,人们改进了UTF-16的编码方式,如表格UTF-16编码示例,它采用2字节或4字节的变长编码方式(UTF-32为定长编码方式)。对Unicode字符编号在0-65535的统一使用2字节来表示,将每个字符的编号转换为2字节的二进制数,即从0x0000到0xFFFF.而由

于 Unicode 字符集在 0xD800-0xDBFF 这个区间是没有表示任何字符的,所以 UTF-16 就利用这段 空间,对 Unicode 中编号超出 0xFFFF 的字符,利用它们的编号做某种运算与该空间建立映射关 系,从而利用该空间表示 4 字节扩展,感兴趣的读者可查阅相关资料了解具体的映射过程。

字符 GB18030编码 Unicode编号 UTF-16编码
A 0x41 0X0000 0041         大端格式0x0041
0xB0A1 0x0000 554A 大端格式0x554A

STM32——液晶显示中英文相关推荐

  1. STM32液晶显示中英文

    ✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!!

  2. 第28章 LTDC—液晶显示中英文—零死角玩转STM32-F429系列

    第28章     LTDC-液晶显示中英文 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...

  3. 第28章 LTDC—液晶显示中英文

    本章参考资料:<STM32F76xxx参考手册>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>. 关于开发板配 ...

  4. STM32 LCD中英文字符显示学习笔记

    本实验基于STM32 LCD英文字符显示学习笔记. 开发板:野火指南者(STM32F103VE) STM32库版本:STM32F10x_StdPeriph_Lib_V3.5.0 IDE:KEIL5(代 ...

  5. 第 28 章 LCD—液晶显示中英文(附个人遇到的一些问题)

    28.1 字符编码 1.1 ASCII 编码 1.2 中文编码 1.2.1 GB2312 标准 1.2.1.1 区位码 1.2.2 GBK 编码 1.2.3 GB18030 1.2.4 Big5 编码 ...

  6. LCD—STM32液晶显示(1.显示器简介及LCD显示原理)(6000字详细介绍)

    目录 显示器简介 液晶显示器 液晶 像素 液晶屏缺点 LED显示器 OLED显示器 显示器的基本参数 STM32板载液晶控制原理(不带微控制器) 液晶控制原理 控制信号线(不带液晶控制器) 液晶数据传 ...

  7. STM32液晶显示HT1621驱动原理及程序代码

    1.HT1621电路分析 HT1621为32×4即128点内存映像LCD驱动器,包含内嵌的32×4位显示RAM内存和时基发生器以及WDT看门狗定时器. HT1621驱动电路如下图所示: 图1 与单片机 ...

  8. 有一说一!这才是RabbitMQ实现分布式事务的正确姿势(项目实战)

    分布式事务 随着互联网快速发展,微服务,SOA 等服务架构模式正在被大规模的使用,现在分布式系统一般由多个独立的子系统组成,多个子系统通过网络通信互相协作配合完成各个功能. 有很多用例会跨多个子系统才 ...

  9. 基于STM32的12864液晶理解

    前言 字符型液晶显示模块是一种专门用于显示字母.数字.符号等点阵式 LCD,目前常用 161,162,202 和 402 行等的模块. 上面指的是以字符为单位,如161,也就是1行16列,最多能显示1 ...

最新文章

  1. 性能超越GPU、FPGA,华人学者提出软件算法架构加速AI实时化
  2. 分布式存储系统的关键技术-存储层级内的优化技术
  3. 二叉树为空意味着二叉树_程序员的进阶课-架构师之路(8)-二叉树
  4. StoryBoard学习..(很详细.)
  5. Jquery Uploadify插件+Servlet解决FTP多文件上传
  6. 用于存储过程的ASP.NET Core Blazor和EF Core原始SQL查询
  7. python怎么标注折线图_利用python画折线图
  8. 一个留美女博士的七年----分享给所有还相信梦想的朋友(zz 喜欢~~)
  9. 人脸面部情绪识别(一)
  10. Animation动画学习
  11. 用java画国际象棋棋盘
  12. 爱奇艺播放按钮动画解析
  13. 怎样和虐死人的老项目谈恋爱
  14. 怎么把html格式转换成数字,怎么把数字转变成文本格式
  15. pc客户端软件自动化测试工具,自动化测试工具(QuickTester)
  16. Echarts世界地图汉化及其数据包
  17. MYSQL关闭安全模式
  18. 分布式系统基础--CAP理论
  19. jQuery贼简单的选项卡切换
  20. 美光并没有背信弃义,而是在向英特尔示好

热门文章

  1. 飞机游戏代码(JAVA)
  2. 2021高考成绩查询河南文化课,河南美术生,文化需要多少分才能上本科? 2021
  3. Vista将推新下载内容 DreamScene登场
  4. 华为汽车再创奇迹,月订单可望破3万,将成特斯拉有力挑战者
  5. 将一个目录添加到pythonpath
  6. 个人笔记之面向对象--从游戏小DEMO方向了解继承
  7. 看完《泰坦尼克号》观后感
  8. 计算机处理器性能天梯,2021最新版电脑处理器性能天梯图:你的CPU排第几?
  9. 翼码张波O2O分享8:O2O的消费体验
  10. 奶牛逃跑_纪中1765_dp