当前位置:网站首页>初出茅庐的小李第111篇博客之中英文点阵字符显示原理
初出茅庐的小李第111篇博客之中英文点阵字符显示原理
2022-07-22 21:34:00 【初出茅庐的小李】
字符介绍
字符分中文字符和英文字符,英文字符就是我们经常说的ASCII字符,中文字符就是指汉字以及一些中文常用的汉字和符号
显示原理
其实在嵌入式显示设备上想要显示一个字符本质上就是打点,通过在一定的区域内描绘出这个字符的形状从而显示出这个字符的形状。
英文字符

这里以这个字符“H”为例,可以发现在总共816的小格子里显示了一个字符,第一行全是不显示,第二行也是不显示,第三行也是一样,第四行就是有显示的有不显示的 如果我们把显示的地方编码成1,把不显示的地方编码成0那么第一行数据就可以拜尼马成00000000,第二行数据也是00000000,第三行同理00000000,第四行111001111,这样一来十六行数据就都可以用这种方法去表示,那么这十六行的数据就是H这个字符的字模编码数据,我们通常把这些数据写成十六进制,比如第一行写成0x00,第二行也是0x00,依次类推,以16号字体为例总共需要816个格点也就是 16个字节的数据,因为一个字节就是八个格点。
中文字符

同样的道理,但是不同的是同样的一个字符占用的格点数不一样,这里需要的字节数就变成了16*16个,字节数也变成了32个字节。同理字模数据也就32个字节。
ASCII字符集
把ASCII字符的字模(有规律的字节数据)做成一个集合就是ASCII字符集。
中文字符集
把中文字符的字模(有规律的字节数据)做成一个集合就是中文字符集。常见的中文字符集合有GB2312字符集GBK字符集等等。
字库文件
把字符集合的数据写到一个文件里这个文件就叫字库文件,有单独的ASCII字库文件也有,也有单独的中文字库文件,还有用这二者合成的字符文件。

字符文件的读取和显示

英文字符显示

中文字符显示

显示效果
英文
中文
显示代码
int main(void)
{
char ch = 'A';
char BUFF[2] = {
"李"};
uint8_t AB = 0x00;
uint8_t CD = 0x00;
int ZK_NUM = 0;
int GB2312_NUM = 0;
int ASCII_NUM = 0;
char *p = &BUFF[0];
int i = 0;
AB = (uint8_t)*p;
CD = ((uint8_t)*(p+1));
//GB2312_NUM = ((AB-0xa1)*94+(CD-0xa0)-1);
printf("%X %X %d \r\n",AB,CD,GB2312_NUM); //fseek(fp,(1445*32),SEEK_SET);
char Table_Text[32]={
0};
//FILE *fp0 = fopen("C:/Users/23206/Desktop/ASC16.bin","r+");
//FILE *fp1 = fopen("C:/Users/23206/Desktop/HZK16.bin","r+");
FILE *fp = fopen("C:/Users/23206/Desktop/ZK16.bin","r+");
for(ZK_NUM = 128;ZK_NUM<150;ZK_NUM++)
{
printf("\r\n*GB2312_16_16_ZK第%-4d个字符字模*\n",ZK_NUM);
printf("\n");
if(ZK_NUM*16<0x00000806)
{
printf("\r\n*GB2312_16_16_ZK第%-4d个英文字模*\n",ASCII_NUM);
fseek(fp,(ASCII_NUM*16),SEEK_SET);
fgets(&Table_Text[0],16+1,fp);
Printf_ASCII(&Table_Text[0],16);
ASCII_NUM++;
printf("ASCII_NUM = %d\r\n",ASCII_NUM);
}
else
{
printf("\r\n*GB2312_16_16_ZK第%-4d个中文字模*\n",GB2312_NUM);
fseek(fp,((GB2312_NUM)*32+0x00000806),SEEK_SET);
fgets(&Table_Text[0],32+1,fp);
Printf_HZ(&Table_Text[0],16);
GB2312_NUM++;
printf("GB2312_NUM = %d\r\n",GB2312_NUM);
}
printf("\n");
mssleep(10);
//sleep(1);
}
fclose(fp);
return 0;
}
边栏推荐
- Leetcode 757 set the intersection size to at least 2[sort greedy] the leetcode path of heroding
- VMware 中搭建 SylixOS 环境
- 弥散张量分析开源软件 DSI Studio 简体中文汉化版可以下载了
- Mysql A left(right) join B on A.id=B.id and A.age=1与A left(right) join B on A.id=B.id where A.age=1
- 程序员最想干的三件事 |漫画
- 局域网SDN技术硬核内幕 7 从二层到大二层
- 工作流引擎在vivo营销自动化中的应用实践
- 【09】程序装载:“640K内存”真的不够用么?
- Clever use of curl
- etcdv3·watch操作实现及相关重点说明
猜你喜欢

信息系统项目管理师必背核心考点(四十九)合同法

Application of workflow engine in vivo marketing automation

LeetCode(剑指 Offer)- 11. 旋转数组的最小数字

93.(leaflet篇)leaflet态势标绘-进攻方向修改

Redis三种集群方案

船新 IDEA 2022.2 正式发布,新特性真香

Copytexture, copytoresolvetarget of UE4 engine

Report on the progress of writing Chinese experiments by latex

沃尔沃xc90的安全性如何?一起来看看吧

Delete the duplicate items in the array (keep the last duplicate elements and ensure the original order of the array)
随机推荐
LAN SDN technology hard core insider 7 from layer 2 to layer 2
Summary in the development process BaseService provides a public access service file for all controllers or services to reduce repeated injection
Scala Generic 泛型类详解 - T
1.10 API 和字符串
LAN SDN technology hard core insider 4 from computing virtualization to network virtualization
(五)数电——公式化简法
【翻译】宣布Krius--加速你对Kubernetes的监控采用
开发过程中的总结 BaseService 为所有的 Controller或Service 提供一个公共获取 Service 的文件,减少重复注入
局域网SDN技术硬核内幕 10 云网融合的红娘EVPN
Squid proxy service +ip proxy pool
Overview of multisensor fusion -- FOV and bev
redis 哨兵模式,主节点检查脚本
4G传输模块的功能应用
Wechat campus second-hand book trading applet graduation design finished product (4) opening report
局域网SDN硬核技术内幕 18 美丽新世界
【开发技术】SpingBoot数据库与持久化技术,JPA,MongoDB,Redis
Scala 获取指定目录下的所有文件
LAN SDN hard core technology insider 18 beautiful new world
Z-Wave 800: Se firmware upgrade
Mysql无法访问,navicat提示:is not allowed to connect to this MySQL server