目录
[1. 概述](#1. 概述)
[2. 介绍](#2. 介绍)
[2.1 带字库](#2.1 带字库)
[2.1.1 常用指令](#2.1.1 常用指令)
[2.2 不带字库](#2.2 不带字库)
1. 概述
lcd1602 是字符型显示器,不能显示汉字、图形等
现在,介绍一种可以显示字符、汉字、图形等的液晶屏------LCD12864
LCD12864 是128×64 点阵式液晶显示器(128 列像素、64 行像素),"12864" 正是由分辨率得名
它之所以能显示字符、汉字、图形的核心原因是:可以通过驱动电路精准控制每一个像素点的亮 / 灭,从而组合出不同的显示内容
LCD12864 分为带字库、不带字库两种,开发板上集成了一个 LCD12864 液晶显示器接口
| 类型 | 核心特点 | 开发难度 | 适用场景 |
|---|---|---|---|
| 带字库型 | 内置 ASCII 字符库(数字、字母、符号)和 GB2312 汉字库,显示时只需发送字符 / 汉字的编码(如 ASCII 码、汉字内码),硬件自动解析并显示 | 低 | 快速显示标准字符 / 汉字的场景 |
| 不带字库型 | 无内置字库,显示任何内容都需要手动定义像素点阵数据(比如显示 "中" 字,需先给出 "中" 字的 64/128 个像素点的亮灭数据) | 高 | 显示自定义图形、特殊字体的场景 |
可兼容带字库、不带字库两种屏,将 LCD12864 液晶对应插入即可
硬件层面:两种屏幕的引脚定义(如数据线、控制线)完全匹配开发板接口,无需修改接线
软件层面:只需调整驱动代码逻辑 ------ 带字库屏调用 "字符显示指令",不带字库屏调用 "点阵写入指令" 即可适配
2. 介绍
12864 是 64 行 128 列,当然也有可能会设计成 64 列 128 行
这里的行列不像 1602 那样,1602 是以一行16个字符,两列字符命名
而 12864 是以 128 列像素,64 行像素,也就是有 128*64 个像素点组成,需要一行一列的显示像素点
核心差异:1602 是字符屏(按字符位置控制),12864 是点阵屏(按像素位置控制)
| 特性 | LCD1602(字符屏) | LCD12864(点阵屏) |
|---|---|---|
| 命名逻辑 | "16"= 每行显示 16 个字符 "2"= 共 2 行字符 | "12864"= 像素分辨率(核心是 128×64 像素总数),"行列" 指像素的排列(64 行 128 列 / 64 列 128 行仅为驱动方向不同) |
| "行列" 的本质 | 字符的排列单位(1 行 = 1 行字符,1 列 = 1 个字符) | 像素的排列单位(1 行 = 1 行像素,1 列 = 1 列像素) |
| 显示原理 | 内置字符库,按 "字符位置" 显示(比如指定第 1 行第 5 列显示字符 'A') | 按 "像素位置" 显示(比如指定第 20 行第 30 列像素点亮),可自由组合字符 / 图形 |
通常一个汉字需要 16*16个像素点,12864 一行最多显示 8 个汉字,最多显示 4 行
通常一个字符需要 8*8个像素点,12864 一行最多显示 16 个汉字,最多显示 8 行
2.1 带字库
左侧为带字库 12864 显示字符和汉字,右侧为图形模式显示

带字库 12864 的屏幕背后,会有存放字库的芯片

12864 带字库屏共有 20 个引脚,管脚功能如下:

2.1.1 常用指令
LCD12864 的指令操作基于指令寄存器(IR) 和数据寄存器(DR)
发送指令时,需将 RS 引脚拉低(RS=0);
发送显示数据时,需将 RS 引脚拉高(RS=1);
① 功能设定指令
核心作用:配置 LCD12864 的基础工作模式,是上电后第一个要执行的指令,决定接口位数、指令集类型(基本 / 扩充)等。
- 指令码(8 位接口,最常用):
- 基本指令集(默认,用于字符显示 ):
0x30(8 位接口、1 行显示、基本指令集启用) - 扩充指令集(用于图形显示 ):
0x34(启用扩充指令集,支持点阵图形绘制)。
- 基本指令集(默认,用于字符显示 ):
- 使用说明:
- 上电后需先发送
0x30,稳定硬件工作模式; - 如果需要显示图形(如自定义图案),需先发送
0x34切换到扩充指令集。
- 上电后需先发送
② 清屏指令
核心作用:清空 LCD12864 的全部显示内容,光标自动回到初始位置(第一行第一列)
指令码(基本指令集):0x01;
使用说明:
- 清屏操作有约 1.6ms 的延迟 ,执行后必须等待延迟结束再进行后续操作,否则指令会失效;
- 常用于初始化屏幕、界面刷新(比如切换显示内容前清空旧内容)。
③ 进入设定点
"进入设定点" 实际包含两个关联指令,是定位显示内容的核心:
(1)进入模式设置指令(光标移动规则)
核心作用:设置光标移动方向、是否自动整屏移位;
指令码(最常用):0x06(光标右移、无整屏移位);
其他可选值:
0x04:光标左移、无整屏移位;0x05:光标右移、整屏左移(极少用,易导致显示偏移)
(2)地址设定指令(显示位置定位)
核心作用:指定字符 / 图形的显示起始位置(对应屏幕的行列);
带字库屏字符地址映射(关键!):
| 屏幕行 | 起始地址 | 示例(第 n 列) |
|---|---|---|
| 第一行 | 0x80 | 第 5 列 = 0x80+4 |
| 第二行 | 0x90 | 第 3 列 = 0x90+2 |
| 第三行 | 0x88 | 第 1 列 = 0x88+0 |
| 第四行 | 0x98 | 第 8 列 = 0x98+7 |
④ 显示状态开关设置
核心作用:控制屏幕显示、光标显示、光标闪烁三个状态的开关(上电默认全部关闭)
指令码格式:0x08 | 控制位(控制位为 D2-D0):
- D2:显示开关(1 = 开,0 = 关);
- D1:光标开关(1 = 开,0 = 关);
- D0:光标闪烁(1 = 开,0 = 关)。
常用组合:
0x0C:显示开、光标关、闪烁关(最常用,只显示内容,无光标);0x0E:显示开、光标开、闪烁关(调试时用,可见光标位置);0x0F:显示开、光标开、闪烁开(极少用,易干扰视觉)。
初始化顺序:功能设定 → 显示开关 → 进入模式 → 清屏(标准流程,不可乱序)
2.2 不带字库
不带字库的 lcd12864 背面没有芯片,一般为转接板
不带字库的 lcd12864 体积比 带字库的 lcd12864 要小很多,故也常被称为 MiniLCD12864

MiniLCD12864 要想显示汉字或其它字符需通过取模方式实现
其内部驱动芯片一般用的是 ST7565P
ST7565P 是矽创(Sitronix) 推出的一款单片式点阵 LCD 驱动控制芯片,是 LCD12864 点阵屏的主流驱动芯片之一(区别于带字库的 ST7920),专门为 128×64 分辨率的单色液晶显示器设计,广泛应用于嵌入式设备的小屏显示场景(如仪器仪表、智能家居、手持终端等)
核心特性:
| 特性分类 | 具体说明 |
|---|---|
| 驱动能力 | 原生支持128 列 ×64 行点阵驱动,完美适配 LCD12864 屏(无行 / 列方向限制) |
| 字库支持 | 无内置字符 / 汉字库(核心区别于 ST7920),所有显示内容需通过像素点阵数据控制 |
| 接口类型 | 支持多接口模式,灵活性高:✅ 并行 8 位 / 4 位接口(速度快)✅ 串行 SPI 接口(接线少,入门推荐)✅ 部分版本支持 I2C 接口 |
| 电源特性 | 低功耗设计,工作电压 2.4~3.3V(兼容 5V 电平),支持休眠模式(功耗<1μA) |
| 显示控制 | 支持对比度调节、显示开 / 关、像素反显、屏幕旋转(COM 扫描方向)等功能 |
| 显存结构 | 内置 128×64 位显示 RAM(DDRAM),按 "页(Page)+ 列(Column)" 组织:64 行分为 8 页(Page0~Page7),每页包含 8 行像素;128 列对应列地址 0~127 |
不同品牌的 MiniLCD12864 驱动芯片不同,没有 不带字库的通用。