当前位置:网站首页>初出茅庐的小李第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;
}
边栏推荐
- Application of workflow engine in vivo marketing automation
- 主题域模型
- Problems encountered in punching
- 我为OpenHarmony 写代码,战“码”先锋第二期正式开启!
- Scala learning -- six uses of generics [t]
- Wechat hotel reservation applet graduation project (7) Interim inspection report
- 文件上传,服务器文件名中文乱码文件上传,服务器文件名中文乱码
- LAN SDN hard core technology insider 17 from one to 100
- 关于Redis,是先更新数据库,还是先更新缓存?
- Redis——JedisConnectionException Could not get a resource from the pool
猜你喜欢

记一次线上SQL死锁事故:如何避免死锁?

4G传输模块的功能应用

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

FastAPI学习(二)——FastAPI+Jinjia2模板渲染网页(跳转返回渲染页面)

Wechat hotel reservation applet graduation project (7) Interim inspection report

Patrick McHardy事件对开源社区的影响

Wechat hotel reservation applet graduation project (8) graduation project thesis template

Chapter 2 how to use sourcetree to update code locally

弥散张量分析开源软件 DSI Studio 简体中文汉化版可以下载了

Application of workflow engine in vivo marketing automation
随机推荐
How to use the order flow analysis tool (Part 2)
2022年暑假ACM热身练习4(总结)
[record of question brushing] 18. Sum of four numbers
局域网SDN硬核技术内幕 19 团结一切可以团结的力量
Wechat campus second-hand book trading applet graduation design finished product (5) assignment
ETL tool (data synchronization)
百度搜索打击盗版网文站点:互联网内容侵权现象为何屡禁不止
類和對象(1)
Information system project managers must recite the core examination points (49) contract law
002_Kubernetes安装配置
2022 employment season surprise! The genuine Adobe software can finally be used for nothing
1.11 ArrayList&学生管理系统
scala idea提示函数参数
局域网SDN硬核技术内幕 21 亢龙有悔——规格与限制(中)
flink批量读取es
Scala 获取指定目录下的所有文件
Classes and objects (1)
Summary in the development process BaseService provides a public access service file for all controllers or services to reduce repeated injection
ROS based navigation framework
局域网SDN硬核技术内幕 22 亢龙有悔——规格与限制(下)