51单片机——LCD12864液晶显示(一)

目录

[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 驱动芯片不同,没有 不带字库的通用。

相关推荐
某林21213 小时前
基于SLAM Toolbox的移动机器人激光建图算法原理与工程实现
stm32·嵌入式硬件·算法·slam
DTI070113 小时前
xilinx的vivado工具综合一直转圈圈,卡死后如何解决?
嵌入式硬件·fpga开发
点灯小铭15 小时前
基于单片机的去皮计价与超重报警电子秤设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
章鱼哥嵌入式开发17 小时前
【 STM32 ADC电压采集与串口显示系统】
stm32·单片机·课程设计·嵌入式学习·实验室测量
HappyShengxiang19 小时前
TI发布全新Cortex-M33的MCU产品MSPM33C321A
单片机·嵌入式硬件·mcu·电赛
✧˖‹gσσ∂ иιghт›✧19 小时前
stm32 cube max+keil5的环境怎么printf重定向
stm32·单片机·嵌入式硬件
芋头莎莎20 小时前
keil 4 51单片机的安装教程
单片机·嵌入式硬件·51单片机
xingzhemengyou121 小时前
STM32 时钟树
stm32·单片机
无聊到发博客的菜鸟21 小时前
STM32 手册寄存器属性
stm32·单片机·嵌入式·rtos·寄存器