PCtoLCD2002 常用取模参数配置表 + 彩屏 LCD 显示全攻略
目录一、PCtoLCD2002 常用取模参数配置表1. 通用参数速查2. 不同场景配置推荐✅ 单色 LCD/OLED如 SSD1306✅ 彩屏 LCD如 ST7789、ILI9341✅ 8×8/16×16 小字库二、彩屏 LCD 显示汉字全攻略1. 字模生成步骤2. 代码集成以 STM32 ILI9341 为例3. 关键优化技巧三、彩屏 LCD 显示图片全攻略1. 图片取模步骤2. 代码集成以 RGB565 为例3. 关键优化技巧四、常见问题排查五、实战建议一、PCtoLCD2002 常用取模参数配置表1. 通用参数速查配置项推荐选项说明点阵格式阴码 / 阳码阴码亮为 0灭为 1阳码亮为 1灭为 0彩屏常用阳码取模走向顺向高位在前数据字节高位对应点阵左侧符合多数 LCD 驱动习惯取模方式逐行式 / 行列式逐行式从左到右、从上到下逐行取模行列式按 8 行一组取模适合 8 位并口屏输出数制十六进制数嵌入式代码中最易使用每行显示数据占距16 / 牵引1632×32 点阵时每行 16 字节代码更整齐自定义格式C51前缀:0x后缀:,行前缀:/*, 行后缀:,*/生成带注释的 C 数组方便阅读输出选项勾选「输出索引文件」「输出紧凑格式」自动生成字库索引表节省 Flash 空间2. 不同场景配置推荐✅ 单色 LCD/OLED如 SSD1306点阵格式阴码取模走向顺向高位在前取模方式逐行式输出数制十六进制自定义格式前缀0x后缀,行前缀/*行后缀*/✅ 彩屏 LCD如 ST7789、ILI9341点阵格式阳码取模走向顺向高位在前取模方式逐行式输出数制十六进制自定义格式前缀0x后缀,行前缀{行后缀},适配 RGB565 数组✅ 8×8/16×16 小字库取模方式逐列式占距8 / 牵引8适合菜单、状态栏等小字号显示二、彩屏 LCD 显示汉字全攻略1. 字模生成步骤打开 PCtoLCD2002设置点阵大小如 16×16、24×24、32×32选择字体宋体 / 黑体等和字号确保点阵清晰在输入框中输入要取模的汉字如 “左边支退伸”打开「字模选项」按上述场景配置参数点击「生成字模」复制生成的 C 数组代码保存字库文件.h或.c包含字模数据和索引表按(0) 键(1) 新(2) 老(3){0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x0C,0x00,0x80,0x07,0x38,0x00,0x80,0x03,0x70,0x00,0x80,0x03,0x70,0x00,0x80,0xC3,0x70,0x30,0x80,0xC3,0xFF,0x7F,0x80,0xCF,0x00,0x38,0xFC,0xFF,0x00,0x18,0x80,0xF3,0x3C,0x0C,0x80,0x03,0x1C,0x00,0x80,0x03,0x1C,0x00,0x80,0x1B,0x0E,0x00,0x80,0x0F,0x0E,0x38,0x80,0xFF,0xFF,0x7F,0xC0,0x03,0x07,0x07,0xF0,0x03,0x03,0x07,0xFC,0x83,0x83,0x03,0xBC,0x83,0x81,0x03,0x98,0xC3,0x81,0x03,0x80,0xC3,0xC1,0x01,0x80,0x03,0xCF,0x01,0x80,0x03,0xF8,0x00,0x80,0x03,0xE0,0x01,0x80,0x03,0xF0,0x07,0x80,0x03,0x3C,0x1F,0x80,0x03,0x0E,0x3C,0xF8,0x83,0x07,0x38,0xE0,0xF1,0x00,0x30,0xC0,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,/*按,0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0xE0,0x01,0xC0,0x01,0xE0,0x00,0xC0,0x00,0xE0,0x80,0xC1,0x00,0x60,0xFE,0xFF,0x1F,0xF0,0xCF,0xC1,0x1C,0x30,0xC0,0xC1,0x1C,0x30,0xC0,0xFF,0x7F,0x18,0xE0,0xC0,0x1C,0x18,0xE3,0xC0,0x1C,0xFC,0x67,0xC0,0x1C,0xEC,0x70,0xFF,0x1F,0xE6,0xF8,0xC7,0x0C,0xE0,0x30,0xC3,0x00,0xE0,0x00,0xC3,0x18,0xE0,0x06,0xFF,0x3F,0xFE,0x9F,0xC3,0x00,0xE0,0x98,0xC3,0x00,0xE0,0xB0,0xC3,0x00,0xE0,0xB0,0xC1,0x30,0xE0,0xB0,0xFF,0x7F,0xE0,0xE0,0xC1,0x00,0xE0,0xEC,0xC0,0x00,0xE0,0xE7,0xC0,0x00,0xE0,0xF3,0xC3,0x00,0xE0,0x39,0x0F,0x00,0xC0,0x1C,0xFE,0x7F,0x00,0x06,0xE0,0x3F,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,/*键,1*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x07,0x00,0x1C,0x00,0x0E,0x00,0x3F,0x00,0xCE,0xF9,0x03,0xF8,0xFF,0x3B,0x00,0x60,0x30,0x38,0x00,0xE0,0xF0,0x38,0x00,0xC0,0x71,0x38,0x00,0xC0,0x31,0x38,0x00,0x80,0x19,0x38,0x00,0x80,0x99,0x3B,0x38,0xFC,0xFF,0xFF,0x7F,0x00,0x0E,0x38,0x07,0x00,0x0E,0x38,0x07,0x00,0x0E,0x38,0x07,0x00,0xCE,0x19,0x07,0xF8,0xFF,0x1B,0x07,0x00,0x0E,0x18,0x07,0x00,0x0E,0x18,0x07,0xE0,0x3E,0x1C,0x07,0xE0,0xEE,0x1C,0x07,0x70,0xCE,0x0D,0x07,0x70,0xCE,0x0F,0x07,0x30,0x8E,0x0F,0x07,0x18,0x0E,0x07,0x07,0x6C,0x0E,0x03,0x07,0xC6,0x8F,0x01,0x07,0x00,0xC7,0x00,0x07,0x00,0x63,0x00,0x03,0x00,0x00,0x00,0x00,/*新,2*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x07,0x00,0xC0,0x01,0x1F,0x00,0xC0,0xF1,0x07,0xE0,0xFF,0xFF,0x03,0xC0,0xC0,0xC1,0x01,0x00,0xC0,0xE1,0x01,0x00,0xC0,0xE1,0x00,0x00,0xC0,0x71,0x00,0x00,0xC0,0x39,0x38,0xFC,0xFF,0xFF,0x7F,0x00,0x00,0x1E,0x00,0x00,0x00,0x0F,0x00,0x00,0x80,0x07,0x00,0x00,0xC0,0x01,0x00,0x00,0xF8,0xC0,0x01,0x00,0x78,0xF0,0x03,0x00,0x3E,0xF8,0x00,0x00,0x3F,0x1E,0x00,0xC0,0xB9,0x07,0x00,0x78,0xF8,0x00,0x0C,0x0C,0x38,0x00,0x0C,0x00,0x38,0x00,0x0C,0x00,0x38,0x00,0x0E,0x00,0x38,0x00,0x0E,0x00,0xF8,0xFF,0x1F,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*老,3*/};2. 代码集成以 STM32 ILI9341 为例// 字库头文件 font.h #ifndef __FONT_H #define __FONT_H #include stdint.h // 32×32汉字字模数组示例左 extern const uint8_t Font32x32_Zuo[128]; // 字库索引表 typedef struct { char index[2]; // 汉字GBK编码 const uint8_t *addr; // 字模地址 uint8_t width; // 字宽 uint8_t height; // 字高 } Font_Info_t; extern const Font_Info_t Font32x32_Index[]; #endif// 显示单个汉字函数 void LCD_DrawChinese(uint16_t x, uint16_t y, const char *ch, uint16_t color, uint16_t bgcolor) { uint8_t i, j; const uint8_t *p Font_GetAddr(ch); // 根据汉字查找字模地址 if (p NULL) return; for (i 0; i 32; i) { // 32行 for (j 0; j 32; j) { // 32列 if ((p[i * 4 j / 8] (j % 8)) 0x80) { // 阳码取模 LCD_DrawPoint(x j, y i, color); } else { LCD_DrawPoint(x j, y i, bgcolor); } } } }3. 关键优化技巧字库压缩使用紧凑格式避免冗余数据节省 Flash缓存机制将常用字模缓存到 RAM提升显示速度抗锯齿处理选择清晰字体避免点阵模糊颜色映射彩屏可直接将字模映射为 RGB565 颜色实现彩色文字三、彩屏 LCD 显示图片全攻略1. 图片取模步骤用图片编辑工具如 PS、画图将图片转换为BMP 格式分辨率与 LCD 分辨率一致打开 PCtoLCD2002切换到「图片取模」模式导入 BMP 图片设置颜色格式RGB565/RGB888配置取模参数逐行取模、顺向高位在前生成图片字模复制 C 数组代码2. 代码集成以 RGB565 为例// 图片字模数组示例240×240图片 const uint16_t Image_240x240[240*240] { 0xFFFF, 0xF800, ... // RGB565颜色数据 }; // 显示图片函数 void LCD_DrawImage(uint16_t x, uint16_t y, uint16_t w, uint16_t h, const uint16_t *img) { uint32_t i 0; LCD_SetWindow(x, y, x w - 1, y h - 1); // 设置显示窗口 for (i 0; i w * h; i) { LCD_WriteData16(img[i]); // 写入16位颜色数据 } }3. 关键优化技巧格式转换优先使用 RGB565比 RGB888 节省 50% 存储空间图片压缩使用 LZW 或 RLE 压缩减少数据量分块显示大图片分块传输避免内存溢出调色板模式256 色以下图片可使用调色板进一步压缩数据四、常见问题排查文字显示反向 / 颠倒检查「取模走向」是否为顺向或 LCD 驱动是否需要翻转扫描方向文字模糊 / 缺笔画调整字体字号确保点阵完整避免等比缩放失真图片显示颜色错误确认颜色格式RGB565/RGB888与驱动一致检查字节序显示速度慢优化取模方式使用 DMA 传输减少逐点绘制五、实战建议先从16×16 小字库入手验证显示逻辑再扩展到 32×32 大字图片显示优先测试小分辨率图标再尝试全屏图片字库和图片数据统一存放在 Flash 的const段避免占用 RAM编写通用显示函数支持不同字号和图片格式提高代码复用性