STM32+TFT彩屏实现汉字字库显示
2015-08-25 00:16
281 查看
http://jingyan.eeboard.com/article/70998
作者: wbsouth
上传时间为: 2014-08-23 12:24 AM
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/ac572c3d33a4c2d40cde8fe3fea5a623.png)
3265
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/46b805fce60f3c156f91689efd66998c.png)
1
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/408ad91d9cf3e757c05f79426116a801.png)
3
Cortex-M3
•
1
0
分享
返回
顶部
TFT彩屏是大家经常用到的一个显示模块,用来显示字符图片等一些信息,作为产品的一个重要部分,实现人机交互。其中汉字显示是非常必要的,显示字符只需 要采用对应的取模软件,把字符的点阵数据放在程序中即可。当我们要显示少量且固定的汉字时也可以采用这种方法,但是,需要大量且随机的汉字时,靠取模就不 能完成了,需要汉字字库来实现。 这个实验使用的汉字大小是16*16,字库是放在SD卡根目录下sys文件夹中的。下面简单的解释一下实现过程。
先来一张图片看看实验效果。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/1546608340a91d383f592b181e4cffda.jpg)
本实验中,涉及到SD卡的使用,文件系统的移植,LCD屏的使用等。这里主要说明的是LCD的汉字显示,首先是对SD卡的初始化,以及LCD的初始化。然后下面开始汉字以及一些字符的显示,字符的显示还是采用的字符点阵的方式。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/a620a2978f2b2160805a7966a646ce7a)
首先是判断的显示位置,是否超过屏的显示范围,如果超过则是实现换行功能。然后下面是判断显示内容的ASCII知道下一个要显示的是字符还是汉字,如果 ASCII大于0x80,则是汉字,小于0x80则是字符。因为字符是16*8,所以每显示一个字符横坐标+8,如果是汉字(16*16),横坐标 是+16。如果你要使用其它大小的字体显示,请修改相应的数据。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/4f5b0a871f999f2f4af5c9827710c8be)
在主要讲解汉字显示,字符显示和汉字一样的道理。显示汉字里面,首先开辟一个缓冲区,用来存储点阵数据,然后获取点阵数据,下面是通过获取的点阵数据来进 行打点显示。注意我们是16*16的字体,所以每行16个点,一共16行。这里简单说一下打点,主要是采用设置一块16*16显示区域,然后逐一把每个点 的数据送给LCD即可,注意要设置号彩屏内部的地址自增方向。否则容易出现错位等现象。注意最后要把显示区域设置成全屏显示。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/c2c6992d91a885c7cd5004691a3bfd21)
怎么在字库中找到对应的汉字点阵信息,这里的文件系统已经移植好了,打开字库文件。注意的是,每个汉字都有一个内码,占两个字节,通过汉字内码的高低字 节,通过公式32*((High8bit-0xa0-1)*94+(Low8bit-0xa0-1))来找到该汉字在字库中的偏移位置,然后读取32个字 节,也就是该汉字的点阵数据。字体是16*16=256。256/8=32字节。最后关闭文件就可以了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/746e47a2ae1b029af2c1f73224e439a5)
在整个实验中,要注意字体大小的设置,以及LCD设置的地址自增方向,否则容易出现错位现象。
STM32+TFT彩屏实现汉字字库显示
作者: wbsouth上传时间为: 2014-08-23 12:24 AM
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/ac572c3d33a4c2d40cde8fe3fea5a623.png)
3265
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/46b805fce60f3c156f91689efd66998c.png)
1
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/408ad91d9cf3e757c05f79426116a801.png)
3
Cortex-M3
•
stm32开发板
10
分享
返回
顶部
TFT彩屏是大家经常用到的一个显示模块,用来显示字符图片等一些信息,作为产品的一个重要部分,实现人机交互。其中汉字显示是非常必要的,显示字符只需 要采用对应的取模软件,把字符的点阵数据放在程序中即可。当我们要显示少量且固定的汉字时也可以采用这种方法,但是,需要大量且随机的汉字时,靠取模就不 能完成了,需要汉字字库来实现。 这个实验使用的汉字大小是16*16,字库是放在SD卡根目录下sys文件夹中的。下面简单的解释一下实现过程。
先来一张图片看看实验效果。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/1546608340a91d383f592b181e4cffda.jpg)
本实验中,涉及到SD卡的使用,文件系统的移植,LCD屏的使用等。这里主要说明的是LCD的汉字显示,首先是对SD卡的初始化,以及LCD的初始化。然后下面开始汉字以及一些字符的显示,字符的显示还是采用的字符点阵的方式。
首先是判断的显示位置,是否超过屏的显示范围,如果超过则是实现换行功能。然后下面是判断显示内容的ASCII知道下一个要显示的是字符还是汉字,如果 ASCII大于0x80,则是汉字,小于0x80则是字符。因为字符是16*8,所以每显示一个字符横坐标+8,如果是汉字(16*16),横坐标 是+16。如果你要使用其它大小的字体显示,请修改相应的数据。
在主要讲解汉字显示,字符显示和汉字一样的道理。显示汉字里面,首先开辟一个缓冲区,用来存储点阵数据,然后获取点阵数据,下面是通过获取的点阵数据来进 行打点显示。注意我们是16*16的字体,所以每行16个点,一共16行。这里简单说一下打点,主要是采用设置一块16*16显示区域,然后逐一把每个点 的数据送给LCD即可,注意要设置号彩屏内部的地址自增方向。否则容易出现错位等现象。注意最后要把显示区域设置成全屏显示。
怎么在字库中找到对应的汉字点阵信息,这里的文件系统已经移植好了,打开字库文件。注意的是,每个汉字都有一个内码,占两个字节,通过汉字内码的高低字 节,通过公式32*((High8bit-0xa0-1)*94+(Low8bit-0xa0-1))来找到该汉字在字库中的偏移位置,然后读取32个字 节,也就是该汉字的点阵数据。字体是16*16=256。256/8=32字节。最后关闭文件就可以了。
在整个实验中,要注意字体大小的设置,以及LCD设置的地址自增方向,否则容易出现错位现象。
相关文章推荐
- MongoDB(1)--简介以及安装
- [POJ2001]Shortest Prefixes
- iOS 另外一个使用类的代码,四则运算,很简单,熟悉以下
- POJ3181--Dollar Dayz
- phpstorm通过ftp远程开发服务器上的项目
- JavaScript设置自适应居中
- android ble 4.0实现自动配对
- 链表
- 用命令行(CMD)中启动和关闭ORACLE服务
- UVA 11427 Expect the Expected (概率dp+推公式求期望 详解)
- Java泛型总结(转)
- UDP通信(Red Hat Enterprise Linux 6)
- Opencv + Qt 获取视频中任意一帧
- UVA - 11613 Acme Corporation(最小费用流)
- display:table的几个妙用:垂直居中、浮动……
- cocos2d-x中CCSprite更换图片
- LeetCode Ugly Number
- Java 类加载机制 ClassLoder
- Java 类加载机制 ClassLoder
- [笔记]软件体系结构(2)--分层