风筝
发表于: 2020-10-15 18:19:08 | 显示全部楼层

嗨,大家好,在以前的帖子中,我们讨论过TFT显示屏的使用方法,以及如何在Arduino项目中连接和使用它们。在本篇文章,我们将研究如何在Arduino开发板上使用1.44英寸TFT显示屏(ILI9163C)。

screen.jpg


基于ILI9163C的1.44英寸彩色TFT显示屏是基于SPI协议的显示屏,分辨率为128 x 128像素。它可以显示多达262,000种不同的颜色。该模块可以说是1.8英寸TFT显示屏的同级产品,但与1.8英寸TFT显示屏相比,该模块速度更快且具有更好的整体性价比。显示器的某些功能如下:

√    尺寸:1.44英寸

√    接口:SPI

√    分辨率:128 * 128像素

√    视觉区域:1:1正方形

√    TFT彩色屏幕,效果远胜于其他小型CSTN屏幕

√    驱动器IC:ILI9163

√    完全兼容且可替代5110接口

√    板载LDO ,支持5V / 3.3V输入电压,LED背光,3.3V输入


在本篇文章中,我们将重点演示如何将此显示屏与Arduino一起使用以显示文本、形状和图像。


所需的组件

本文需要以下组件:

●    1.44英寸TFT显示屏

●    Arduino Uno开发板

●    面包板

●    跳线


原理图

如前所述,TFT显示屏通过SPI与微控制器通信,因此要使用它,我们需要将其连接到Arduino的SPI引脚,如下图所示。

Untitled-Sketch_bb.jpg


请注意,本教程使用的显示屏版本在原理图使用的软件fritzing上不可用,因此请遵循下面的引脚连接列表以进一步了解TFT显示器的每个引脚应如何连接到Arduino。

1.44“ TFT引脚
Arduino引脚
VCC
5V
GND
GND
CS
D10
RST
D9
A0
D8
SDA
D11
SCK
D13
LED
3.3V

连接显示屏时,在将其直接连接至Arduino的5v逻辑电平之前,请确保具有稳压器(如下图所示)。这是因为如果您使用的显示屏版本没有稳压器,则可能会损坏显示屏;如果显示屏没有稳压器,则可以在显示器和Arduino之间使用逻辑电平转换器。

regulator.jpg

再次确认连接,以确保所有组件均已正确连接,然后再继续进行下一部分。


代码

为了允许Arduino与显示屏配合使用,我们需要两个Arduino库;可从此链接下载的sumotoy TFT ILI9163C Arduino库以及我们在多个教程中广泛使用的流行的Adafruit GFX Arduino库。下载这些库并将它们安装在Arduino IDE中。

对于今天的教程,我们将使用bigtest示例,该示例是sumotoy ILI9163C Arduino库随附的示例代码之一,以展示如何使用TFT显示屏。转到File–>Examples–>TFT_ILI9163c–>bigtest 打开,如下图所示。应当指出的是,只有在安装了sumotoy库之后才能使用。

Capture.jpg


与往常一样,要做的第一件事是包括代码所需的所有库。

  1. #include <SPI.h>
  2. #include <Adafruit_GFX.h>
  3. #include <TFT_ILI9163C.h>
复制代码

接下来,我们定义将与相应的十六进制值一起使用的一些颜色。如果您阅读过使用Adafruit GFX库的任何以前的教程,您会发现该代码包含GFX库中的很多内容,应该更容易理解。

  1. // Color definitions
  2. #define BLACK   0x0000
  3. #define BLUE    0x001F
  4. #define RED     0xF800
  5. #define GREEN   0x07E0
  6. #define CYAN    0x07FF
  7. #define MAGENTA 0xF81F
  8. #define YELLOW  0xFFE0  
  9. #define WHITE   0xFFFF
复制代码

接下来,声明与TFT显示屏的CS和DC引脚相连的Arduino引脚。

  1. #define __CS 10
  2. #define __DC 9
复制代码

接下来,使用CS和DC参数作为输入创建了名为“ display”的ILI9163c库的对象,但是由于所使用的显示类型不同,我们需要包括Arduino的引脚,TFT显示器的A0引脚位于该引脚上。连接的是D8。

  1. TFT_ILI9163C display = TFT_ILI9163C(__CS,8, __DC);
复制代码

完成此操作后,我们介绍void setup()函数。在此函数中,我们发出用于初始化显示的命令,然后创建由millis更新的时间变量,此后,我们发出命令以清除屏幕并在屏幕上显示一些随机文本。

  1. void setup(void) {
  2.   display.begin();


  3.   uint16_t time = millis();
  4.   time = millis() - time;

  5. //  lcdTestPattern();
  6. //  delay(1000);

  7.   display.clearScreen();
  8.   display.setCursor(0,0);
  9.   display.print("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa");
  10.   delay(1000);
复制代码

然后,在执行某些函数(包括显示快速线,绘制矩形等)之后,每个函数将调用延迟,以使文本或图形在屏幕上停留足够长的时间以使其可见。

  1. tftPrintTest();
  2.   delay(2000);

  3.   //a single pixel
  4.   display.drawPixel(display.width()/2, display.height()/2, GREEN);
  5.   delay(500);

  6.   // line draw test
  7.   testlines(YELLOW);
  8.   delay(500);   

  9.   // optimized lines
  10.   testfastlines(RED, BLUE);
  11.   delay(500);   

  12.   testdrawrects(GREEN);
  13.   delay(1000);

  14.   testfillrects(BLUE, YELLOW);
  15.   delay(1000);

  16.   randomRect(0);
  17.   delay(100);
  18.   randomCircles(0);
  19.   delay(100);
  20.   randomLines();
  21.   delay(100);
  22.   randomPoints();
  23.   delay(500);
  24.   
  25.   display.clearScreen();
  26.   testfillcircles(10, BLUE);
  27.   testdrawcircles(10, WHITE);
  28.   delay(1000);

  29.   testroundrects();
  30.   delay(500);

  31.   testtriangles();
  32.   delay(500);
复制代码

接下来是void loop()函数。 loop函数还调用在void setup()函数下调用的某些相同函数,以显示圆形、矩形等,其中包括上用于测试屏幕的testline函数。

  1. void loop() {
  2.   testlines(random(0x0010,0xFFFF));
  3.   randomLines();
  4.   //randomCircles(1);
  5.   randomCircles(0);
  6.   randomRect(1);
  7.   randomRect(1);
  8.   randomRect(1);
  9.   randomRect(1);
  10.   randomRect(1);
  11.   randomRect(0);
  12.   randomRect(0);
  13.   randomRect(0);
  14.   randomRect(0);
  15.   randomRect(0);
  16.   randomRect(0);
  17.   randomPoints();
  18. }
复制代码

其余代码用于已调用的函数,并不难理解。以下是此项目的完整代码: main.rar (2.12 KB, 下载次数: 32)


演示

安装完库后,打开Arduino IDE的实例,打开最初描述的示例,别忘了对代码进行A0引脚(D8)校正,然后上传到Arduino开发板上。 您应该会在屏幕上看到不同种类的文本和图形。 我截取了运行中的屏幕,其图像如下图所示。

demo-1.jpg


是不是觉得很棒? 如果您对本文有任何疑问,请随时在下面进行回复。

跳转到指定楼层
Mondraker
发表于: 2021-2-2 15:13:44 | 显示全部楼层

非常好爱了爱了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-20 21:17 , Processed in 0.138235 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表