2026.03 VSCODE + ESP-IDF ST7789V液晶屏 显示 取模小知识
环境开发环境VSCODE ESP-IDF开发板信盈达ESP32-S3-N16*R8开发板使用的是D200C2407V0液晶屏液晶屏的IC是ST7789V屏幕是如何显示的屏幕是由一个个像素组成的一个像素一般由三原色组成红绿蓝RGB要显示一张图片实际上就是通过控制每个像素点中红、绿、蓝三个子像素的亮度混合出不同的颜色。成千上万个像素点各自显示指定的颜色拼在一起就形成了我们看到的完整图像。不过我们并不需要去分别把每一个RGB的亮度都定义好来决定颜色显示IC已经帮我们完成了这件事所以我们只需要输入色彩信息色彩的位数1位2色非黑即白像老式电报4位16色早期游戏机色彩很复古8位256色调色板模式从256个油漆桶里选颜色填充16位6.5万色高彩日常看图基本够用24位1677万色真彩色RGB各8位人眼几乎分不出差别32位1677万色透明真彩色 Alpha通道多8位透明度为了节省存储量最大化的利用位数的颜色还诞生出了RGB233 即8位中 (B: 2 bits; G: 3 bits; R: 3 bits)。RGB565 即16 位中B: 5 bits, G: 6 bits, R: 5 bits)ST7789V显示IC使用的就是RGB556进行显示取个色把R 1781011 0010 取5G 1210111 1001 取6B 2401111 0000 取5从高位开始取相当于去掉小数点一样低位的数字舍弃对颜色的影响相对较小得到 1011 0011 1101 11100xB3DE 但这个邪门的屏幕需要颜色反转所以使用0xDEB3从RGB颜色到RGB565根据上面颜色就可以正确映射了。uint16_t RGB_Convert(uint8_t R, uint8_t G, uint8_t B) { uint16_t r5 (R 3) 0x1F; // Keep 5 bits uint16_t g6 (G 2) 0x3F; // Keep 6 bits uint16_t b5 (B 3) 0x1F; // Keep 5 bits uint16_t rgb565 (r5 11) | (g6 5) | b5; uint16_t swapped ((rgb565 0xFF00) 8) | ((rgb565 0x00FF) 8); return swapped; }设置全屏颜色代码void lcd_set_color(uint16_t color) { // 分配内存 这里分配了液晶屏一行数据需要的大小 uint16_t *buffer (uint16_t *)heap_caps_malloc(BSP_LCD_H_RES * sizeof(uint16_t), MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); if (NULL buffer){ ESP_LOGE(TAG, Memory for bitmap is not enough); }else{ for (size_t i 0; i BSP_LCD_H_RES; i){ // 给缓存中放入颜色数据 buffer[i] color; } for (int y 0; y BSP_LCD_V_RES; y){ // 显示整屏颜色 esp_lcd_panel_draw_bitmap(panel_handle, 0, y, BSP_LCD_H_RES, y1, buffer); } free(buffer); // 释放内存 } }字库其实我更愿意把这些都称之为点阵图每个字/字母都用一个固定大小的像素网格表示不过为了方便存储一般取8的倍数通过16进制存储会很方便如果你的字号是12或者19等的非8倍数取模软件一般就会向上取整字号12会用16bit存储剩下4bit就空出来了字号20会用24bit存储。使用的是PctoLCD2002这个小软件需要设置一下1那里是字号3那里的点阵会影响数据的分行可以修改看看导出的效果。生成字模待用创建一个数组。注意这里的48位计算方法是按照24高 12宽24*16/8 4812按照8的倍数取16这里以24x12的字体为例。void lcd_draw_char24(int x_start, int y_start, uint8_t Ch, uint16_t fc, uint16_t bc) { // 分配内存 分配了需要的字节大小 且指定在外部SPIRAM中分配 size_t pixels_byte_size 24 * 16 * 2; uint16_t *pixels (uint16_t *)heap_caps_malloc(pixels_byte_size, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); if (NULL pixels){ ESP_LOGE(TAG, Memory for char is not enough); return; } unsigned char Temp; Ch Ch - 0; for (int i0;i48;i){ Temp ascii_2412[Ch][i]; for(int j0;j8;j){ if(Temp(0x01j)) pixels[i*8j] fc; else pixels[i*8j] bc; } } esp_lcd_panel_draw_bitmap(panel_handle, x_start, y_start, x_start16, y_start24, (uint16_t *)pixels); // 显示一个字符数据 heap_caps_free(pixels); // 释放内存 }如果用其他规格需要改的地方挺多的图中标出汉字也一样取模方法类似如果太长可能会出现分行的情况改点阵输入999就可以了就不会分行了。结束然后最后差不多就有这样效果啦~

相关新闻

跨境电商日报 | 2026年3月12日:外贸法新增数字贸易条款·深圳卖家增长超预期·行业步入合规化深水区

跨境电商日报 | 2026年3月12日:外贸法新增数字贸易条款·深圳卖家增长超预期·行业步入合规化深水区

【今日热点】 ① 新《对外贸易法》正式施行,数字贸易纳入法律框架 3月1日起,新修订的《中华人民共和国对外贸易法》正式生效,条文由69条扩充至83条。新法首次将数字贸易、跨境电商等新业态以法律形式固定下来,并明确“国家支持对外…

2026/7/3 19:23:08 阅读更多 →
救命神器! 千笔·专业降AI率智能体,本科生论文降重首选

救命神器! 千笔·专业降AI率智能体,本科生论文降重首选

在AI技术日益渗透学术写作的当下,越来越多的本科生开始借助AI工具提升论文写作效率。然而,随着各大查重系统对AI生成内容的识别能力不断提升,如何有效降低AI率和重复率成为困扰许多学生的难题。面对市场上琳琅满目的降AI工具,学生…

2026/7/3 22:42:22 阅读更多 →
ssm+java2026年毕设社区流浪猫狗救助网站【源码+论文】

ssm+java2026年毕设社区流浪猫狗救助网站【源码+论文】

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于宠物领养与救助问题的研究,现有研究主要以流浪动物收容管理、宠物医疗健康管理为主,专门针对基于信…

2026/7/3 10:51:17 阅读更多 →

最新新闻

RestFB版本升级指南:从旧版本迁移到最新API的最佳实践

RestFB版本升级指南:从旧版本迁移到最新API的最佳实践

RestFB版本升级指南:从旧版本迁移到最新API的最佳实践 【免费下载链接】restfb RestFB is a simple and flexible Facebook Graph API client written in Java. 项目地址: https://gitcode.com/gh_mirrors/re/restfb RestFB是Java开发者连接Facebook Graph A…

2026/7/4 5:18:28 阅读更多 →
人大金仓数据库Linux安装超详细指南

人大金仓数据库Linux安装超详细指南

🔥关注墨瑾轩,带你探索编程的奥秘!🚀 🔥超萌技术攻略,轻松晋级编程高手🚀 🔥技术宝库已备好,就等你来挖掘🚀 🔥订阅墨瑾轩,智趣学习不…

2026/7/4 5:18:28 阅读更多 →
PMSM伺服控制三环架构设计与实现详解

PMSM伺服控制三环架构设计与实现详解

1. PMSM伺服控制系统仿真全解析永磁同步电机(PMSM)作为工业自动化领域的核心执行元件,其高性能伺服控制一直是工程师们面临的挑战。今天我将分享一个完整的三环控制架构实现方案,从理论框架到代码实现,再到参数整定技巧…

2026/7/4 5:18:28 阅读更多 →
如何用Auto-PPT免费生成专业PPT?3分钟快速上手教程

如何用Auto-PPT免费生成专业PPT?3分钟快速上手教程

如何用Auto-PPT免费生成专业PPT?3分钟快速上手教程 【免费下载链接】Auto-PPT Auto generate pptx using gpt-3.5, Free to use online / 通过gpt-3.5生成PPT,免费在线使用 项目地址: https://gitcode.com/gh_mirrors/au/Auto-PPT 你是否厌倦了花费数小时制作…

2026/7/4 5:16:27 阅读更多 →
揭秘E-Viewer架构设计:UWP应用如何高效处理e-hentai数据请求

揭秘E-Viewer架构设计:UWP应用如何高效处理e-hentai数据请求

揭秘E-Viewer架构设计:UWP应用如何高效处理e-hentai数据请求 E-Viewer作为一款专为e-hentai.org打造的UWP客户端,其架构设计充分考虑了数据请求效率与用户体验优化。本文将深入剖析其模块化架构、数据处理流程及性能优化策略,揭示这款应用如…

2026/7/4 5:16:27 阅读更多 →
《大模型实战指南》—— 面向软件开发者的系统性入门2

《大模型实战指南》—— 面向软件开发者的系统性入门2

第二章 大模型如何工作:从 Token 到 Transformer“Transformer 不是魔法,而是一套精心设计的信息路由系统。”—— 本书作者 _abab2.1 整体流程概览:一条文本的旅程当你向大模型输入一句 “你好,今天天气怎么样?”&…

2026/7/4 5:14:27 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻