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

ESP32-Arduino IDE的开发学习记录(二)显示屏

记录ESP32-Arduino IDE的学习

关于ST7735驱动屏的显示

开发板:合宙ESP32C3

#include <Adafruit_GFX.h> #include <Adafruit_ST7735.h> #include <SPI.h> #include "image.h" //图像头文件 #include <U8g2_for_Adafruit_GFX.h> // 屏幕引脚定义 #define TFT_CS 4 #define TFT_DC 6 #define TFT_RST -1 // 创建TFT对象 Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx; //显示图片 void showImage(const uint16_t* imageData, int width, int height) { int x = (tft.width() - width) / 2; int y = (tft.height() - height) / 2; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { int index = i * width + j; tft.drawPixel(x + j, y + i, imageData[index]); } } } void setup() { // 初始化屏幕 Serial.begin(115200); Serial.println("=== 测试程序 ==="); tft.initR(INITR_BLACKTAB); tft.setRotation(0); // 尝试不同的旋转值:0, 1, 2, 3 tft.fillScreen(ST77XX_WHITE); u8g2_for_adafruit_gfx.begin(tft); u8g2_for_adafruit_gfx.setFontMode(1); u8g2_for_adafruit_gfx.setFontDirection(0); u8g2_for_adafruit_gfx.setForegroundColor(ST77XX_BLACK); u8g2_for_adafruit_gfx.setFont(u8g2_font_wqy14_t_gb2312); u8g2_for_adafruit_gfx.setCursor(0, 0); u8g2_for_adafruit_gfx.print(""); // 空字符串,只是触发字体初始化 delay(100); // 短暂延迟确保初始化完成 } void displayText(uint16_t bgColor, uint16_t textColor, const uint8_t *font, const char *text, int16_t x, int16_t y) { tft.fillScreen(bgColor); u8g2_for_adafruit_gfx.setFontMode(1); u8g2_for_adafruit_gfx.setForegroundColor(textColor); u8g2_for_adafruit_gfx.setFont(font); u8g2_for_adafruit_gfx.setCursor(x, y); u8g2_for_adafruit_gfx.print(text); } void loop() { displayText(ST77XX_WHITE, ST77XX_BLACK, u8g2_font_wqy14_t_gb2312, "Hello!我是小美", 14, 14); //背景颜色,文字颜色,字体,文字,位置 delay(2000); tft.fillScreen(ST77XX_WHITE); showImage(image, IMAGE_WIDTH, IMAGE_HEIGHT); delay(2000); }

图片数据

//image.h const uint16_t image[0x5000] PROGMEM ={ 0xFFDC, 0xF7DC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDB, 0xFFDA, 0xFFD9, 0xFFB6, 0xFFB5, 0xFFB5, 0xFFD4, 0xFFB4, 0xFFB5, 0xFFB5, 0xFFB6, // 0x0010 (16) 0xFFD8, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDB, 0xFFDA, 0xFFD9, 0xFFB7, 0xFF96, 0xFFB6, 0xFFB5, 0xFFB5, 0xFFB5, // 0x0020 (32) 0xFFB5, 0xFFB5, 0xFFB7, 0xFFD9, 0xFFDA, 0xFFDB, 0xFFBC, 0xFFDD, 0xFFBC, 0xFFDC, 0xFFDB, 0xFFB9, 0xFF97, 0xFF95, 0xFF94, 0xFFB5, // 0x0030 (48) 0xFFB5, 0xFFB6, 0xFF96, 0xFF97, 0xFFB8, 0xFFDA, 0xFFFB, 0xFFDB, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDA, // 0x0040 (64) 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFFC, 0xFFFC, 0xFFDB, 0xFFDA, 0xFFB9, 0xFF97, 0xFF76, 0xFF96, 0xFF96, // 0x0050 (80) 0xFFB5, 0xFFB5, 0xFFB6, 0xFF96, 0xFFB8, 0xFFFA, 0xFFFC, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDC, 0xFFDA, 0xFFD8, 0xFFB6, 0xFF95, // 0x0060 (96) 0xFFB5, 0xFFB5, 0xFFB5, 0xFFB6, 0xFFB6, 0xFFB7, 0xFFB8, 0xFFDA, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFDD, 0xFFFC, 0xFFDC, 0xFFFB, 0xFFFA, // 0x0070 (112) 0xFF96, 0xFF95, 0xFFB5, 0xFFB5, 0xFFB4, 0xFFD5, 0xFFB6, 0xF7B6, 0xFFB8, 0xFFD9, 0xFFFB, 0xFFDB, 0xF7DB, 0xFFFC, 0xFFFB, 0xF7DB, // 0x0080 (128) 0xFFDC, 0xF7DC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDB, 0xFFDA, 0xFFD9, 0xFFB6, 0xFFB5, 0xFFB5, 0xFFD4, 0xFFB4, 0xFFB5, 0xFFB5, 0xFF96, // 0x0090 (144) 0xFFD8, 0xFFF9, 0xFFFB, 0xFFFB, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDB, 0xFFDA, 0xFFD9, 0xFFB7, 0xFF96, 0xFFB5, 0xFFB5, 0xFFB5, 0xFFB5, // 0x00A0 (160) 。。。。 。。。。 }; int IMAGE_WIDTH = 128; int IMAGE_HEIGHT = 160;

使用ImageConverter565图片转换工具

点击Open image选择一个想要显示的图片,图片导进来之后选择Save保存转换好的数据,会生成一个.c文件,打开把数据复制到image.h里就可以使用

文字和图片都可以通过屏幕显示出来

http://www.jsqmd.com/news/578738/

相关文章:

  • 为什么你的C++量子模拟器总在2^10后崩溃?内存优化、张量压缩与SIMD加速三重方案揭秘
  • RPlatform教育机器人运动控制库详解
  • 群晖 /dev/md0 根分区爆满 100% 排查清理全流程
  • 拯救996:OpenClaw+百川2-13B量化模型自动生成周报
  • OpenClaw社交媒体管理:Gemma-3-12b-it自动回复评论与生成周报
  • 从一次RDP爆破到全网挖矿:复盘Windows Server 3389端口的安全加固与监控策略
  • DOCX转LaTeX:从繁琐排版到学术自动化的无缝过渡
  • OpenClaw+Qwen3-14b_int4_awq:跨平台文件同步助手
  • 端边云协同,全域智治——奥尔特云智慧安保解决方案
  • 短视频 SEO 优化能给企业带来什么好处_短视频 SEO 如何优化视频标题和描述
  • 6月PMP考试紧急冲刺指南:没好好备考?这样做还能逆风翻盘
  • 头歌实践教学-NLP:基于决策树与正则表达式的词法分析实战
  • OpenClaw跨平台对比:Windows/macOS对接Qwen3-14B差异详解
  • 依赖p4est库的程序windows运行方法----支持vs2022调试
  • 独立站建站成本全解析
  • TC630 3BSE002253R1 控制器模块
  • Cuvil + HuggingFace Pipeline端到端加速实录:BERT-base推理延迟从142ms降至31ms的6个关键编译开关
  • Transformer架构详细解读(教程向)
  • Go的select语句:多路复用的channel操作
  • SEO优化和网络推广的关系是什么_如何利用知识付费平台进行网络推广
  • 2026年山东省首版次高端软件申报已经开始,中承信安助力企业快速申报
  • 音频转换与格式解密工具全解析:破解QQ音乐限制的批量处理方案
  • 从零开始学Flink:TopN 榜单
  • 从LVGL菜单组件反推:手搓一个轻量级C语言菜单框架(适合RTOS/单片机)
  • 本科毕业论文“通关秘籍”:好写作AI的神奇助力
  • 主流CRM系统盘点与选型:电商零售企业2026实战指南
  • STM32开发中的可执行文件格式解析:AXF、HEX与BIN
  • 8位单片机高效处理16位整数的4种方法
  • 我的编程之路
  • 确保在STA线程中运行