本文主要是介绍Arduino-ILI9341驱动介绍二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Arduino-ILI9341驱动介绍二
1.概述
第一篇文章介绍了Arduino-点亮TFT触摸屏,没有介绍如何改变屏幕的内容。这篇文章介绍Arduino-使用ILI9341驱动控制TFT触摸屏原理和ILI9341驱动源代码设计原理以及常用函数
2.Arduino控制TFT触控屏原理
- Arduino使用什么方式控制屏幕取决于屏幕的驱动芯片和他的通信方式,在第一篇文章中介绍的TFT屏可以使用SPI通讯方式与Arduino通信,该屏幕集成了Adafruit_ILI9341驱动,通过该驱动控制屏幕显示内容。
- 掌握了Adafruit_ILI9341驱动的使用就可以使用 Arduino控制TFT触控屏显示设置好的内容。
3.ILI9341驱动程序原理
3.1.ILI9341驱动源代码
1.ILI9341继承体系
Adafruit_ILI9341驱动封装好了操作TFT屏幕的函数,只要调用写好的函数就可以编辑屏幕的内容
Adafruit_ILI9341驱动是Adafruit包中的一个类文件,只有该类还不能完成操作TFT屏幕,因此他还继承了其他类的函数。该类的继承关系如下
Adafruit_ILI9341类
——>继承Adafruit_SPITFT类
;Adafruit_SPITFT类
——>继承Adafruit_GFX类
;- 因此
Adafruit_ILI9341类
间接——>继承Adafruit_GFX类
,该类拥有了Adafruit_SPITFT类
和Adafruit_GFX类
函数。
各个类库作用
名称 | 作用 |
---|---|
Adafruit_GFX | 实现了向屏幕输出字符串和各种形状的图形 |
Adafruit_SPITFT | 控制SPI通信数据传输 |
Adafruit_ILI9341 | 实现了选择屏幕通信方式以及初始化屏幕信息 |
2.查看ILI9341继承体系过程和方法
1.查看Adafruit_ILI9341继承关系
在GitHub中搜索Adafruit_ILI9341项目,查看该项目的Adafruit_ILI9341.h文件,地址如下
https://github.com/adafruit/Adafruit_ILI9341/blob/master/Adafruit_ILI9341.h
查看该文件源代码可以看到他继承了Adafruit_SPITFT
// Adafruit_ILI9341 继承 Adafruit_SPITFT
class Adafruit_ILI9341 : public Adafruit_SPITFT {
public:Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK,int8_t _RST = -1, int8_t _MISO = -1);Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _RST = -1);...}
2.查看Adafruit_SPITFT继承关系
在GitHub中搜索Adafruit_GFX项目,查看该项目的Adafruit_SPITFT.h文件,地址如下
https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Adafruit_SPITFT.h
查看该文件源代码可以看到他继承了Adafruit_GFX
class Adafruit_SPITFT : public Adafruit_GFX {
3.2.Adafruit_ILI9341源代码介绍
Adafruit_ILI9341.h文件源代码做了三件事情
// 1.为各个地址创建引用的变量
#define ILI9341_TFTWIDTH 240 ///< ILI9341 max TFT width
#define ILI9341_TFTHEIGHT 320 ///< ILI9341 max TFT height#define ILI9341_NOP 0x00 ///< No-op register
#define ILI9341_SWRESET 0x01 ///< Software reset register
#define ILI9341_RDDID 0x04 ///< Read display identification information
#define ILI9341_RDDST 0x09 ///< Read Display Status
...
...
...//2.定义颜色对应的编码地址
// Color definitions
#define ILI9341_BLACK 0x0000 ///< 0, 0, 0
#define ILI9341_NAVY 0x000F ///< 0, 0, 123
#define ILI9341_DARKGREEN 0x03E0 ///< 0, 125, 0
...
...
...//3.创建该类的构造器和函数
class Adafruit_ILI9341 : public Adafruit_SPITFT {
public:Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK,int8_t _RST = -1, int8_t _MISO = -1);Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _RST = -1);
#if !defined(ESP8266)Adafruit_ILI9341(SPIClass *spiClass, int8_t dc, int8_t cs = -1,int8_t rst = -1);
#endif // end !ESP8266Adafruit_ILI9341(tftBusWidth busWidth, int8_t d0, int8_t wr, int8_t dc,int8_t cs = -1, int8_t rst = -1, int8_t rd = -1);void begin(uint32_t freq = 0);void setRotation(uint8_t r);void invertDisplay(bool i);void scrollTo(uint16_t y);void setScrollMargins(uint16_t top, uint16_t bottom);// Transaction API not used by GFXvoid setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h);uint8_t readcommand8(uint8_t reg, uint8_t index = 0);
};
4.ILI9341驱动控制TFT触控屏基础使用
1.硬件电路
Arduino接口端 | TFT触摸屏端 |
---|---|
5V | VCC |
GND | GND |
10 | 串联10KΩ电阻到CS |
8 | 串联10KΩ电阻到REST |
9 | 串联10KΩ电阻到DC |
11 | 串联10KΩ电阻到MOSI |
13 | 串联10KΩ电阻到SCK |
VCC | LED |
12 | MISO |
2.ILI9341驱动代码
下面演示一个最简单的入门示例,通过ILI9341驱动提供的函数向显示屏输出文字。
#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 Test!"); //2.初始化tfttft.begin();//在IDE控制台输出调试信息Serial.print(F("Text "));Serial.println(testText());delay(3000);Serial.println(F("Done!"));}void loop(void) {//调用函数输出文本内容testText();
}// 创建函数定义ILI9341驱动操作屏幕输出字符串的功能
unsigned long testText() {//设置背景颜色tft.fillScreen(ILI9341_BLACK);unsigned long start = micros();// 设置文字显示的坐标tft.setCursor(100, 100);//设置文字颜色和字号tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1);//设置屏幕输出文字内容tft.println("Hello World!");tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2);tft.println(1234.56);tft.setTextColor(ILI9341_RED); tft.setTextSize(3);return micros() - start;
}
这篇关于Arduino-ILI9341驱动介绍二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!