Arduino-ILI9341驱动实现TFT屏输出中文四

Arduino-ILI9341驱动实现TFT屏输出中文四

1.概述

ILI9341驱动在TFT屏幕上不支持直接输出汉字,需要借助提取字模软件将汉字转为十六进制地址,然后通过改地址控制每行和每列点阵的亮和灭实现显示汉字功能。

2.ILI9341显示汉字

2.1.PCtoLCD2002取模软件

在网上搜索PCtoLCD2002取模软件使用教程,就能够获取到汉字生成结果,其结果为每个汉字都是一个十六进制数组。

2.2.显示汉字

使用Adafruit_GFX类提供的drawBitmap函数输出位图实现绘制图形和汉字。
函数介绍如下

//int16_t x 和 int16_t y:这两个参数定义了位图在屏幕或绘图表面的左上角应该开始的坐标。x 是水平坐标,y 是垂直坐标。//const uint8_t bitmap[]:这是一个指向位图数据的指针,位图数据通常是一个字节数组,其中每个字节代表一行或多列像素的状态(开或关,通常使用二进制表示)。
//int16_t w 和 int16_t h:这两个参数分别定义了位图的宽度和高度。它们告诉函数位图的大小,以便正确地绘制它。//uint16_t color:这个参数定义了位图应该使用的颜色
void drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w,int16_t h, uint16_t color);

2.3.显示中文示例

#include "Adafruit_ILI9341.h"// 定义引脚功能
#define TFT_DC 9
#define TFT_CS 10
#define  TFT_RST 8
#define TFT_MISO 12
#define TFT_MOSI 11
#define TFT_CLK 13// 1.创建Adafruit_ILI9341类的对象tft,传入SPI引脚参数,
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);void setup() {Serial.begin(9600);Serial.println("ILI9341驱动控制显示屏显示内容"); //2.初始化tfttft.begin();//在IDE控制台输出调试信息Serial.print(F("在IDE控制台输出文字内容"));Serial.println(testText());delay(5000);Serial.println(F("Done!"));}void loop(void) {//调用函数输出文本内容testText();
}/************************ 二、显示中文 ***********************/static const unsigned char PROGMEM str1[] =
{0x00,0x00,0x27,0xF8,0x12,0x08,0x12,0x08,0x82,0x08,0x41,0x10,0x49,0x10,0x09,0x10,
0x10,0xA0,0x10,0xA0,0xE0,0x40,0x20,0x40,0x20,0xA0,0x21,0x10,0x22,0x08,0x0C,0x06};/*汉*/
static const unsigned char PROGMEM str2[] =
{0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,0x00,0x40,0x00,0x80,
0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00};/*"字",1*/// 创建函数定义ILI9341驱动操作屏幕输出字符串的功能
unsigned long testText() {//设置背景颜色tft.fillScreen(ILI9341_BLACK);unsigned long start = micros();/*1.10,20表示x和y轴起点位置2.str1和str2表示汉字数组3.16,16表示显示的宽高4.ILI9341_GREEN设置汉字颜色*/tft.drawBitmap(10,20,str1,16,16,ILI9341_GREEN);tft.drawBitmap(25,20,str2,16,16,ILI9341_GREEN);return micros() - start;
}

2.4.二维数组汉字显示示例


/*********************** 一、初始化设置部分 **********************/#include "Adafruit_ILI9341.h"// 定义引脚功能
#define TFT_DC 9
#define TFT_CS 10
#define  TFT_RST 8
#define TFT_MISO 12
#define TFT_MOSI 11
#define TFT_CLK 13// 1.创建Adafruit_ILI9341类的对象tft,传入SPI引脚参数,
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);void setup() {Serial.begin(9600);Serial.println("ILI9341驱动控制显示屏显示内容"); //2.初始化tfttft.begin();//在IDE控制台输出调试信息Serial.print(F("在IDE控制台输出文字内容"));Serial.println(testText());delay(3000);Serial.println(F("Done!"));}void loop(void) {//调用函数输出文本内容testText();
}/************************ 二、显示汉字 ***********************/const unsigned char zw16[10][16] = { //一个字16x16,也就是256bit,占32个元素
{0x00,0x00,0x00,0x00,0x3D,0xFE,0x46,0x20,0x44,0x20,0x44,0x20,0x44,0x20,0x44,0x20},
{0x7C,0x20,0x47,0xFC,0x44,0x20,0x44,0x20,0x44,0x20,0x44,0x20,0x44,0x20,0x3B,0xFF},/*"旺",0*/
{0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x10,0x00,0x60,0x00,0x80,0x01,0x00,0x00,0x80},
{0x7F,0xFE,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x18,0x40,0x07,0x80},/*"子",1*/
{0x00,0x00,0x00,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},
{0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFE},/*"工",2*/
{0x00,0x00,0x00,0x00,0x12,0x00,0x13,0xFE,0x12,0x80,0x24,0x80,0x24,0x80,0x64,0xFC},
{0x68,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0xFE,0x20,0x80,0x20,0x80,0x00,0x80},/*"作",3*/
{0x00,0x00,0x02,0x00,0x01,0x00,0x7F,0xFC,0x40,0x02,0x40,0x02,0x7F,0xFE,0x04,0x20},
{0x04,0x10,0x08,0x08,0x07,0xF4,0x01,0x00,0x3F,0xFC,0x01,0x00,0x01,0x00,0x7F,0xFE},/*"室",4*/
};// 创建函数定义ILI9341驱动操作屏幕输出字符串的功能
unsigned long testText() {//设置背景颜色tft.fillScreen(ILI9341_BLACK);unsigned long start = micros();uint8_t zw[32];for (int i = 0; i < 16; i++){zw[i]=zw16[0][i];}for (int i = 0; i < 16; i++){zw[i+16]=zw16[1][i];}tft.drawBitmap(10,20,zw,16,16,ILI9341_GREEN);for (int i = 0; i < 16; i++){zw[i]=zw16[2][i];}for (int i = 0; i < 16; i++){zw[i+16]=zw16[3][i];}tft.drawBitmap(26,20,zw,16,16,ILI9341_RED);for (int i = 0; i < 16; i++){zw[i]=zw16[4][i];}for (int i = 0; i < 16; i++){zw[i+16]=zw16[5][i];}tft.drawBitmap(42,20,zw,16,16,ILI9341_GREEN);for (int i = 0; i < 16; i++){zw[i]=zw16[6][i];}for (int i = 0; i < 16; i++){zw[i+16]=zw16[7][i];}tft.drawBitmap(58,20,zw,16,16,ILI9341_GREEN);for (int i = 0; i < 16; i++){zw[i]=zw16[8][i];}for (int i = 0; i < 16; i++){zw[i+16]=zw16[9][i];}tft.drawBitmap(74,20,zw,16,16,ILI9341_GREEN);return micros() - start;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试宝典(2)——缓存篇(Redis)

面试宝典&#xff08;2&#xff09;——缓存篇&#xff08;Redis&#xff09; 1.Redis的主要用途有哪些&#xff1f; 缓存分布式锁&#xff1a;setnx&#xff0c;redisson消息队列&#xff0c;延迟队列 2.什么是缓存穿透&#xff1f; 查询一个不存在的数据&#xff0c;数据…

C++入门指南(中)

目录 ​编辑 一、C关键字(C98) 二、命名空间 2.1 域 2.2 命名空间域 2.1 命名空间定义 2.2 命名空间使用 三、C输入&输出 四、缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 五、函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling)…

告别黑板粉笔 高新技术进课堂 未来教室会成什么

现在&#xff0c;全国许多院校都经过引进信息化技能&#xff0c;完成智慧校园建造&#xff0c;推进教育均衡展开。一些校园的小学教室的信息化配备投入经费已达50万元/每间&#xff0c;初中是70万元&#xff0c;高中是90万元。这些新技能的投入运用有用的共享教育内容、精准地分…

基于select for update 实现数据库分布式锁

1、select for update 的基本语法 SELECT * FROM table_name WHERE condition FOR UPDATE;2、select for update 的定义及作用 2.1 、select for update的含义是在查询数据的同时对所选的数据行进行锁定&#xff0c;以保证数据的一致性和并发控制。在并发环境下&#xff0c;多…

ES6 笔记02

目录 01 对象的扩展 02 链判断运算符 03 属性名表达式 04 Symbol 类型 05 set集合的使用 06 Map集合的使用 07 Set集合和Map集合的遍历方式 08 iterator迭代器 01 对象的扩展 对象的属性和方法的简洁表示: es6允许在字面量对象里面直接写变量名 let 变量名变量值; let …

金融业开源软件应用 评估规范

金融业开源软件应用 评估规范 1 范围 本文件规定了金融机构在应用开源软件时的评估要求&#xff0c;对开源软件的引入、维护和退出提出了实现 要求、评估方法和判定准则。 本文件适用于金融机构对应用的开源软件进行评估。 2 规范性引用文件 下列文件中的内容通过文中的规范…

WS2811 单线 256 级灰度三通道恒流 LED 驱动器芯片 IC

产品概述 WS2811 是三通道LED驱动控制专用电路&#xff0c;芯片内部包含了智能数字接口数据锁存信号整形放大驱动电路&#xff0c;还包含有高精度的内部振荡器和15V高压可编程定电流输出驱动器。同时&#xff0c;为了降低电源纹波&#xff0c;3个通道有一定的延时导通功…

【数据结构课程学习】:队列学习

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f697; 1.队列的基本概念&#xff1a…

软考高级最容易被挂掉的论文,千万别乱写!

高级考生最没把握的科目应该就是论文了&#xff0c;有些考生考了几次都败在论文上了。那么导致论文不合格的写作误区有哪些&#xff1f;最后十多天&#xff0c;该如何准备呢&#xff1f; 常见写作误区 误区一&#xff1a;偏题 在论文写作时不能偏题&#xff0c;要紧扣子题干…

Visual Studio构建NodeJS原生代码在Electron中的报错问题

文章目录 对比NODE-GYP工具解决问题进一步研究win_delay_load_hook.cc代码MAC中是不需要这个东西的这个标题有点长,相对是一个比较具体的场景,但是这个问题在我自己的实际开发中,确实困扰了我一段时间。 因为在windows下做设备驱动,上位机的开发中。Visual Studio是一个比较…

要想通过等保测评,这7个问题你必须了解

1.什么是等级保护测评&#xff1f; 2.为什么要做等级保护测评&#xff1f; 3.等保1.0与2.0的区别在哪里&#xff1f; 4.等级保护测评参考标准有哪些&#xff1f; 5.等级保护测评的级别有哪些以及哪些系统需要&#xff1f; 6.等保测评的主要内容是什么&#xff1f; 7.等级…

如何利用代理IP高效采集全球热点,赋能短视频创作?

如何利用代理IP高效采集全球热点&#xff0c;赋能短视频创作&#xff1f; 一、摘要二、代理IP1. 什么是代理IP&#xff1f;2. 代理IP的分类3. 代理的重要性 三、如何选择可靠的代理IP服务商&#xff1f;四、IPIDEA代理IP简介1.IPIDEA简介2.IPIDEA的优势 五、获取代理IP1. 注册平…

python随机显示四级词汇

python实现一个浮动窗口随机显示四级单词在桌面跑来跑去 实现一个浮动窗体随机显示四级单词在windows桌面置顶移动 tkinter库来创建窗口和显示单词&#xff0c;以及random库来随机选择单词。 使用after方法来定时更新窗口的位置&#xff0c;实现单词窗口的慢慢移动效果 使用…

有机硅改性氟树脂性能进一步提升 市场需求增长空间大

有机硅改性氟树脂性能进一步提升 市场需求增长空间大 有机硅改性氟树脂&#xff0c;利用有机硅树脂对氟树脂进行改性得到一种新型的、性能更为优异的树脂材料。 有机硅树脂&#xff0c;具有柔韧性好、电绝缘、憎水、耐候、耐老化等优点&#xff0c;但固化温度高且时间长、附着力…

使用Apache Spark从MySQL到Kafka再到HDFS的数据转移

使用Apache Spark从MySQL到Kafka再到HDFS的数据转移 在本文中&#xff0c;将介绍如何构建一个实时数据pipeline&#xff0c;从MySQL数据库读取数据&#xff0c;通过Kafka传输数据&#xff0c;最终将数据存储到HDFS中。我们将使用Apache Spark的结构化流处理和流处理功能&#…

MySQL中表的插入,修改,删除语法

插入 插入数据有四种方法,代码如下 -- 给表中添加元素 -- insert into 表名 (列名) values(数据)INSERT INTO student(NAME,gender,birthday,phone)VALUES(张三,男,2003-2-10,13333333333) INSERT INTO student(NAME,gender,birthday,phone,address,height,rig_time) VALUES(…

在Mac环境下打包Python应用

1、创建虚拟环境 conda create -n ur_name python3.7 pip install -r requirement.txt 2、配置文件生成 cd ur_project py2applet --make-setup __main__.py 3、APP打包 # 编辑setup.py文件,具体参考本文文献 python setup.py py2app 用 py2app 将 Python 脚本打包成 Mac…

高级优化理论与方法(十二)

高级优化理论与方法&#xff08;十二&#xff09; LPDuality of LPWeek LP Duality TheoremStrong LP Duality TheoremCorollary Complementary Slackness ConditionRemarksExample Non-Simplex MethodsKhachiyan (Ellipsoid)Karmarkar (Interior point) Integer Linear Progra…

Leetcode-有效的括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/valid-parentheses/ 题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&…

MongoDB 数据探索之道:查询文档操作详解

在 MongoDB 数据库中&#xff0c;查询文档是一种强大的工具&#xff0c;能够帮助您深入了解数据并提取所需信息。无论是从大型数据集中检索特定记录&#xff0c;还是进行数据统计和分析&#xff0c;查询文档都是不可或缺的。在本指南中&#xff0c;我们将深入探讨 MongoDB 查询…