汉字取模
好的!汉字取模是指 将汉字的图形信息转换成计算机可识别、存储和显示的二进制数据(点阵数据) 的过程。这些数据通常用于嵌入式系统、LED显示屏、液晶屏等显示设备上显示汉字。
以下是关于汉字取模的关键要点:
-
核心概念:
- 视觉图形 -> 数字编码: 把一个汉字看作是由一个个小方格(像素点)组成的图形。
- 点阵: 在指定的宽度(x)和高度(y)范围内(如16x16, 24x24, 32x32等),给能显示汉字的区域填充“1”(表示黑点/点亮),给空白区域填充“0”(表示白点/不亮)。最终得到一个由
0和1组成的二进制矩阵。 - 数据化: 计算机存储和处理的是这些
0和1。通常按字节(8位)为单位存储,并用十六进制表示以便查看(如0x00,0xFF等)。
-
取模方式:
- 点阵取模: 最常用。将汉字分割成固定大小(如16x16)的点阵。
- 矢量取模: 使用贝塞尔曲线等数学方法描述汉字的轮廓线条。更灵活(可无损缩放),但计算复杂,常用在印刷或高清显示上。嵌入式设备常用的是点阵取模。
-
取模方向/顺序(至关重要): 决定生成的二进制数据如何排列。常见的模式有:
- 列行式:
- 扫描方向: 逐列 扫描。
- 字节排列: 从上到下 扫描一列,将每8个点作为一个字节(高位在下或高位在上)。扫完一列再扫下一列(从左向右)。
- 常用变种: C51方式(高位在下,低位在上)、共阴/共阳LED模块常用方式等。
- 行行式:
- 扫描方向: 逐行 扫描。
- 字节排列: 从左到右 扫描一行,将每8个点作为一个字节(高位在左或高位在右)。扫完一行再扫下一行(从上到下)。
- 常用变种: 图形LCD常用方式。
- 其他模式: 如纵向取模(字节旋转90度)、倒序(字节位序反转)等,取决于具体硬件的扫描和寻址方式。
- 列行式:
-
取模过程(举例 - 16x16点阵,列行式,高位在下):
- 想象一个16行高、16列宽的网格。
- 扫描: 从最左边第一列开始:
- 读取该列第1个(最顶部的)点:是黑点吗?是 -> 记为
1;不是 -> 记为0。 - 读取该列第2个点,直到第16个(最底部的)点。这样得到该列的16位数据。
- 读取该列第1个(最顶部的)点:是黑点吗?是 -> 记为
- 转换为字节: 16位数据分成2个字节。
- 高8位(第1位到第8位):对应该列的第1行到第8行的数据。
- 低8位(第9位到第16位):对应该列的第9行到第16行的数据。
- 高位在下:意味着在字节内部,数值上的高位(MSB)代表该列中相对靠下的行(第8行),低位(LSB)代表该列中相对靠上的行(第1行)。
- 存储: 该列的数据就是这2个字节(高8位字节 + 低8位字节)。顺序通常是
低8位字节在前,高8位字节在后。 - 移动到下一列: 然后向右移动到下一列,重复上述过程,直到第16列扫描完成。
- 结果: 一个16x16的汉字,最终会得到
16列 * 2字节/列 = 32字节的数据。
-
如何使用:
- 生成一个巨大的
字库:为每个需要用到的汉字(根据其编码,如GB2312, GBK, Unicode)生成对应的点阵数据。 - 存储:将这些数据按编码顺序存储在ROM(程序存储器)或外部存储器(如SD卡、SPI Flash)中。
- 显示时:根据字符的编码在字库中找到对应的点阵数据,然后按照与取模时相同的扫描方式和方向,逐个点亮/熄灭显示屏上对应的点。
- 生成一个巨大的
-
常用工具:
- PC软件: PCtoLCD2002(及其变种)、字模提取软件、部分嵌入式IDE自带工具。
- 在线取模网站: 搜索“汉字取模”、“点阵取模”。
- 编程方式:
- 使用支持点阵字库的图形库(如嵌入式GUI库:u8g2, LittlevGL, emWin, LVGL)。
- 使用字体文件(如TTF, OTF)配合FreeType等库生成点阵(更灵活,但资源消耗大)。
-
关键考虑因素:
- 点阵大小: 决定清晰度和空间需求(16x16常用,24x24更清晰但占空间大)。
- 取模方式(扫描方向与字节位序): 必须与目标显示设备的扫描方式和驱动芯片要求完全匹配,否则会显示乱码或错位。这是最常出错的环节!
- 字符集编码: 字库中的数据组织必须与实际使用的字符编码(GB2312, GBK, UTF-8, Big5等)匹配。
- 存储空间: 字库占用空间 = 字符数量 x 单字点阵数据大小。需要优化存储(如只存需要的字)。
简单示例(非常简化): 一个3x3的点阵中显示一个“点”状的图形(只点中间一点):
0 0 0
0 1 0
0 0 0
- 按列行式(高位在“下”)取模:
- 第一列:0, 0, 0 -> 垂直3位不够一字节?假设扩展为0填充到8位:
00000000->0x00 - 第二列:0, 1, 0 ->
00000010(如果高位定义在最底行) ->0x02 - 第三列:0, 0, 0 ->
00000000->0x00
- 第一列:0, 0, 0 -> 垂直3位不够一字节?假设扩展为0填充到8位:
- 数据序列(假设每列一个字节):
0x00, 0x02, 0x00
理解并正确设置点阵大小、扫描方向和字节内部位序是成功使用汉字取模的关键!在实际项目中,请务必查阅你的显示设备规格书或驱动芯片手册以确定正确的取模参数。
汉字取模读取并显示的方法
目录一、概述二、什么是点阵1、8×8点阵原理图2、8×8点阵实物图三、汉字编码1、区位码2、机内码3、对于16×16点阵字库4、对于14×14与12×12点阵字库5、汉字点阵的获取5.1 利用区位码
汉字取模读取并显示
目录一、概述二、什么是点阵1、8×8点阵原理图2、8×8点阵实物图三、汉字编码1、区位码2、机内码3、对于16×16点阵字库4、对于14×14与12×12点阵字库5、汉字点阵的获取5.1 利用区位码
资料下载
佚名
2021-12-27 19:27:40
STM32取模软件设置
一、取模软件设置,参考下图二、软件参考,正点原子开发板//放头文件struct typFNT_GB16 // 汉字字模数据结构体{u8 Inde
在线取模软件
1. 背景:众所周知,如果想让电子纸显示屏显示图像,需要在程序中写入图像的C语言数组,那么我们不可避免的需要将图片转换为C语言数组,此流程即通常所说的取模。一般我们使用
【HarmonyOS HiSpark Wi-Fi IoT 套件】OLED取模教程
原文链接:https://bbs.elecfans.com/jishu_2005899_1_1.html资料内容包括:1、汉字取模教程2、英文
为什么我的汉字取模取出的都是0?
大家有没这样的取模软件,就是第一个生成的是国标码,{"海",0x21,0x00,0x11,0x00,0x11,0xFE,0x02
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机