Download presentation
Presentation is loading. Please wait.
Published byAntoon Verstraeten Modified 5年之前
1
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺: 技术论坛: 开源电子 网 公众平台:“正点原子” 官方网站: 联系电话: ddddd ALIENTEK 淘宝店铺: 技术论坛:
2
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
《手把手教你学STM32》 汉字显示实验 适用平台 STM32F1xx 开发板 (正点原子) STM32F4xx 开发板 (正点原子) ddddd 淘宝店铺: 技术论坛:
3
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 参考资料: 战舰STM32F1开发板 《STM32F1开发指南-库函数版本》-第45章 汉字显示实验 精英STM32F1开发板 《STM32F1开发指南-库函数版本》-第42章汉字显示实验 miniSTM32F1开发板 《STM32不完全手册-库函数版本》-第35章汉字显示实验 探索者STM32F4开发板 《STM32F4开发指南-库函数版本》 -第45章 手写识别实验 淘宝店铺: 技术论坛:
4
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
目录 汉字显示原理 1 实验讲解 2 淘宝店铺: 技术论坛:
5
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 常用汉字编码 GB2312 GB13000 GBK BIG5(繁体) 淘宝店铺: 技术论坛:
6
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 汉字显示原理 汉字在液晶上的显示其实就是一些点的显示与不显示,这就相当于我们的笔一样,有笔经过的地方就画出来,没经过的地方就不画。所以要显示汉字,我们首先要知道汉字的点阵数据,这些数据可以由专门的软件来生成。只要知道了一个汉字点阵的生成方法,那么我们在程序里面就可以把这个点阵数据解析成一个汉字。 淘宝店铺: 技术论坛:
7
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 字符/汉字显示方法(PCtoLCD2002.exe) 淘宝店铺: 技术论坛:
8
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 { 0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04, 0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00 },/*"0",16*/ { 0x01,0x00,0x41,0x01,0x41,0x02,0x41,0x0C,0x7F,0xF0, 0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00, 0x7F,0xFF,0x41,0x00,0x41,0x00,0x41,0x00,0x01,0x00, 0x00,0x00 },/*"开",0*/ 淘宝店铺: 技术论坛:
9
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 汉字内码(GBK/GB2312)查找点阵库解析显示。 淘宝店铺: 技术论坛:
10
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 GBK码 每个GBK码由2个字节组成,第一个字节为0X81~0XFE,第二个字节分为两部分,一是0X40~0X7E,二是0X80~0XFE。 我们把第一个字节代表的意义称为区,那么GBK里面总共有126个区(0XFE-0X81+1),每个区内有190个汉字(0XFE-0X80+0X7E-0X40+2),总共就有126*190=23940个汉字。 淘宝店铺: 技术论坛:
11
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 我们的点阵库只要按照这个编码规则从0X8140开始,逐一建立,每个区的点阵大小为每个汉字所用的字节数*190。这样,我们就可以得到在这个字库里面定位汉字的方法: 当GBKL<0X7F时:Hp=((GBKH-0x81)*190+GBKL-0X40)*(size*2); 当GBKL>0X7F时:Hp=((GBKH-0x81)*190+GBKL-0X41)*(size*2); 其中GBKH、GBKL分别代表GBK的第一个字节和第二个字节(也就是高位和低位),size代表汉字字体的大小(比如16字体,12字体等),Hp则为对应汉字点阵数据在字库里面的起始地址(假设是从0开始存放)。 淘宝店铺: 技术论坛:
12
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 淘宝店铺: 技术论坛:
13
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 注意: 电脑端的字体大小与我们生成点阵大小关系为: fsize=disize* 6/8; 其中fsize为电脑端字体大小,dsize是点阵大小(12,16,24)。所以16X16点阵大小对应的是12字体 淘宝店铺: 技术论坛:
14
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
汉字显示实验 汉字显示程序思路 存字库(fontupd.c): 做好字库。 将字库GBK12,GBK16,GBK24依次写入SPI FLASH连续地址:update_font(); 字库写入完毕之后,做标记:ftinfo.fontok=0XAA; 显示汉字(text.c): Show_Str ->Show_Font->Get_HzMat->解析显示。 淘宝店铺: 技术论坛:
15
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
谢谢您对“正点原子”团队的支持 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺: 技术论坛: 淘宝店铺: 技术论坛:
Similar presentations