当前位置: 首页 > news >正文

LCD 上显示字符

有两种方式实现LCD显示字符:

(1)像单片机的点阵式显示屏一样,通过字符取模软件获取到字符的子模来显示字符
(2)freetype

(1)像单片机的点阵式显示屏一样,通过字符取模软件获取到字符的子模来显示字符

通过一些字符取模软件获取到字符的子模;所谓子模,其实就是一个二维数组,用于表示字符
点阵中,哪些小方块应该要填充颜色、哪些小方块不填充颜色。使用一个二维数组来表示这个字符点阵unsigned char arr[86][8];

(2)freetype

对于linux系统,在/usr/share/fonts 目录下有很多已经被编码的字体,我们只需要解析字体文件、访问字体文件,从字体文件中读取出字符的位图数据即可!

freetype 移植

源码地址:https://download.savannah.gnu.org/releases/freetype/
进入该第之后,选择freetype-2.8.tar.gz版本压缩文件,下载完成后解压缩。在另一地址下新建一个文件家为freetype作为freetype的安装路径。
在终端激活交叉编译环境,配置include/freetype/config/ftoption.h文件。该文件定义了很多宏,这里我们打开以下两个配置宏:

#define FT_CONFIG_OPTION_SYSTEM_ZLIB//使用系统安装的 zlib 库
#define FT_CONFIG_OPTION_USE_PNG//支持 PNG bitmap 位图

配置好之后,进行配置freetype工程源码:

./configure --prefix=/home/ps/work/linux/tool/freetype/ --host=arm-poky-linux-gnueabi --with-zlib=yes --with-bzip2=no --with-png=yes --with-harfbuzz=no  ZLIB_CFLAGS="-I/home/ps/work/linux/tool/zlib -L/home/ps/work/linux/tool/zlib" ZLIB_LIBS=-lz LIBPNG_CFLAGS="-I/home/ps/work/linux/tool/png/include -L/home/ps/work/linux/tool/png" LIBPNG_LIBS=-lpng

解释:
–prefix 选项指定 FreeType 库的安装目录;–host 选项设置为交叉编译器名称的前缀
几个章节内容都已经给大家详细地解释过。
–with-zlib=yes 表示使用 zlib;
–with-bzip2=no 表示不使用 bzip2 库;
–with-png=yes 表示使用 libpng 库;
–with-harfbuzz=no 表示不使用 harfbuzz 库。
ZLIB_CFLAGS 选项用于指定 zlib 的头文件路径和库文件路径,根据实际安装路径填写;
ZLIB_LIBS 选项指定链接的 zlib 库的名称;
LIBPNG_CFLAGS 选项用于指定 libpng 的头文件路径和库文件路径,根据实际安装路径填写;
LIBPNG_LIBS 选项用于指定链接的 libpng 库的名称。
配置完成结果:
在这里插入图片描述
如果结果有问题,请检查freetype工程源码配置中的地址是否正确
接下来make make install
在这里插入图片描述
最终结果:在这里插入图片描述
移植到开发板:

(1)删除原有环境
rm -rf /usr/lib/libfreetype.*
(2)将我们编译得到的库文件拷贝到开发板/usr/lib 目录下(注意符号链接的问题)

移植结果
在这里插入图片描述

FreeType 库使用

字形(glyph):书写风格
字形索引:在字体文件中,通过字形索引找到对应的字形
dpi:表示每英寸的像素点数,像素点数 = 点数 * dpi / 72
未完待续。。。。。。

http://www.dtcms.com/a/353661.html

相关文章:

  • zookeeper-集群扩缩容
  • 稳敏双态融合架构--架构师的练就
  • banner这个文件是怎么请求到后端数据的
  • Rust:引用
  • Vue-24-利用Vue3的element-plus库实现树形结构数据展示
  • Autodesk Maya 2026.2 全新功能详解:MotionMaker AI 动画、LookdevX 材质增强、USD 工作流优化
  • 在MiniOB源码中学习使用Flex与Bison解析SQL语句-第二节
  • 【Linux】正则表达式学习记录
  • FFMPEG api使用
  • 从disable_cost到disabled_nodes,最小代价预估质的飞跃
  • nestjs日志(nest-winston)
  • pyecharts可视化图表-tree:从入门到精通
  • Linux 系统调优与CPU-IO-网络内核参数调优
  • Task04: CAMEL框架中的多智能体系统(课程第三章剩余章节)
  • 大模型安全概述、LlamaFirewall
  • ESP8266:Arduino学习
  • 前端性能优化:从指标监控到全链路落地(2024最新实战指南)
  • 短视频矩阵管理软件推荐——小麦矩阵系统深度解析
  • 关于两视图相机几何关系
  • DevExpress WPF中文教程:如何将WPF数据网格绑定到本地集合?
  • 软件定义汽车(SDV)调试——如何做到 适配软件定义汽车(SDV)?(下)
  • vue新能源汽车销售平台的设计与实现(代码+数据库+LW)
  • 【Vue2✨】 Vue2 入门之旅(二):模板语法
  • Python异步编程:从理论到实战的完整指南
  • Qt---项目架构解读
  • BiLSTM-Attention分类预测+SHAP分析+特征依赖图!深度学习可解释分析,Matlab代码实现
  • 【GaussDB】深度解析:创建存储过程卡死且无法Kill会话的疑难排查
  • codeforces(1045)(div2)D. Sliding Tree
  • 装饰器模式(C++python)
  • 第十四章 Leaflet-Ant-Path 实现西气东输管线动态流向可视化