简单快速使用arduino和esp32 c3驱动ST7735屏幕显示中文

前言

我看网上都是用TFT_eSPI做的,这个库在新版本不兼容我的板子,会一直重启,于是使用了U8g2的库实现显示中文。我看网上也没人写教程,自己写一个吧。

本篇教程默认你已经点亮过你的7735屏幕了,这一步还没做到的请移步我的b站视频(还在做)参考。

准备清单

以esp32 c3为例

  • arduino软件
  • esp32 c3
  • st7735屏幕

需要额外安装的库

  • esp32(开发板)
  • Adafruit_GFX.h
  • Adafruit_ST7735.h
  • U8g2_for_Adafruit_GFX.h

代码分块解释一下,最后有完整代码

头文件引用

#include <Adafruit_GFX.h>   
#include <Adafruit_ST7735.h> 
#include <SPI.h>
#include <U8g2_for_Adafruit_GFX.h>

定义屏幕管脚,根据自己屏幕连接情况修改

#define TFT_CS   1  
#define TFT_DC   2   // 也有的叫RS
#define TFT_RST  0  

屏幕的数据时钟管脚请在pins_arduino.h文件里改好,以实现硬件spi,刷新速度更快;参考在Arduino环境下设置ESP32的i2c/spi接口

ps:数据管脚有的叫MOSI或SDA,时钟管脚为SCLK或SCL。

初始化屏幕和u8g2库

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx;

step函数中

tft.initR(INITR_BLACKTAB); // 屏幕类型,下文有解释
tft.setRotation(0);//屏幕旋转角度
tft.fillScreen(ST77XX_BLUE);//填充的背景色
u8g2_for_adafruit_gfx.begin(tft);//U8g2库初始化

以上代码是必须的

屏幕类型参数:

1.8“屏幕:

tft.initR(INITR_BLACKTAB);

1.44”屏幕:

tft.initR(INITR_144GREENTAB);

0.96″ 180×60屏幕:

tft.initR(INITR_MINI160x80);

输出中文

u8g2_for_adafruit_gfx.setFontMode(0);                 // 透明背景设置,下文有效果演示
u8g2_for_adafruit_gfx.setFontDirection(0);            // 从左到右(默认)
u8g2_for_adafruit_gfx.setForegroundColor(ST77XX_WHITE);      // 设置文本颜色
u8g2_for_adafruit_gfx.setFont(u8g2_font_wqy14_t_gb2312 );  // 设置字体,其他字体:https://github.com/olikraus/u8g2/wiki/fntlistall
u8g2_for_adafruit_gfx.setCursor(20, 20);               // 设置文字开始坐标
u8g2_for_adafruit_gfx.print("世界,你好");      //标准的Hello World

FontMode演示:

自带的其他中文字体:

  • u8g2_font_wqy12_t_chinese1
  • u8g2_font_wqy12_t_gb2312b
  • u8g2_font_wqy14_t_chinese1
  • u8g2_font_wqy14_t_gb2312b
  • u8g2_font_wqy16_t_chinese1
  • u8g2_font_wqy16_t_gb2312b

完整代码

#include <Adafruit_GFX.h>    
#include <Adafruit_ST7735.h> 
#include <SPI.h>
#include <U8g2_for_Adafruit_GFX.h>


#define TFT_CS   1  
#define TFT_DC   2   
#define TFT_RST  0  
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx;

void setup(void) 
{
  tft.initR(INITR_BLACKTAB);      
  tft.setRotation(0);
  tft.fillScreen(ST77XX_BLUE);
  u8g2_for_adafruit_gfx.begin(tft);
}

void loop() 
{
  u8g2_for_adafruit_gfx.setFontMode(1);                 
  u8g2_for_adafruit_gfx.setFontDirection(0);            
  u8g2_for_adafruit_gfx.setForegroundColor(ST77XX_WHITE);      
  u8g2_for_adafruit_gfx.setFont(u8g2_font_wqy14_t_gb2312;
  u8g2_for_adafruit_gfx.setCursor(20, 20);
  u8g2_for_adafruit_gfx.print("世界,你好");
  delay(1000);
}

总结

u8g2的库使用起来非常方便,省去了取模的功夫;屏幕驱动使用的还是adafruit的库,兼容性会更好。

以及,有什么错误和问题可以留言或者邮我personal@lumkfs.cn,我看到了会即使修改的~

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇