菜鸟科技网

LCD12864命令有哪些常用指令?

LCD12864是一种常见的图形点阵液晶显示模块,其显示分辨率为128×64点,能够显示数字、字母、汉字及简单图形,要正确控制LCD12864,需要通过特定的指令集对其进行配置和操作,这些指令决定了显示模式、地址设置、数据读写等功能,以下将详细介绍LCD12864的各类命令及其使用方法。

LCD12864命令有哪些常用指令?-图1
(图片来源网络,侵删)

LCD12864的指令系统分为基本指令和扩展指令两类,通过设置指令寄存器的D3位(RE)来选择指令集,当RE=0时,为基本指令集;当RE=1时,为扩展指令集,指令的写入需要遵循LCD12864的时序要求,首先使能信号E从高电平跳变为低电平,并在E为高电平期间将指令码送到数据总线上。

基本指令集(RE=0)

基本指令集适用于大多数常规显示操作,主要包括以下指令:

  1. 清除显示(指令码:0x01)
    执行该指令后,整个屏幕将被清空,地址指针自动归零,即回到屏幕左上角(00H),该指令执行需要约1.6ms的时间,因此在程序中需要加入适当的延时以确保指令执行完成。

  2. 地址归位(指令码:0x02)
    将地址指针设置回初始位置(00H),但不清除屏幕内容,常与后续的显示数据写入指令配合使用,以确保数据从指定位置开始显示。

    LCD12864命令有哪些常用指令?-图2
    (图片来源网络,侵删)
  3. 设置进入点(指令码:0x04/0x05/0x06/0x08)
    该指令用于控制读写数据后地址指针的移动方向及光标的显示状态。

    • D1(ID):0=地址指针加1,1=地址指针减1
    • D0(SH):0=显示不移动,1=显示整体移动
      设置ID=0、SH=0时,每写入一个数据,地址指针自动加1,显示内容不移动。
  4. 显示开关控制(指令码:0x08~0x0F)
    控制显示、光标及闪烁的开关状态。

    • D3(D):0=关闭显示,1=开启显示
    • D2(C):0=隐藏光标,1=显示光标
    • D1(B):0=关闭光标闪烁,1=开启光标闪烁
    • D0(未使用):通常置0
      指令码0x0F表示开启显示、显示光标并开启光标闪烁。
  5. 功能设置(指令码:0x20~0x27)
    设置数据总线位数、显示行数及字体类型。

    • D5(DL):0=4位数据模式,1=8位数据模式
    • D4(RE):0=基本指令集,1=扩展指令集(此位在基本指令集中固定为0)
    • D3(G):0=关 graphics 显示,1=开 graphics 显示(仅带图形功能的型号)
    • D2-D0(未使用):通常置0
      常用设置为8位数据模式、2行显示(部分型号为1行),指令码为0x23。
  6. 设置地址(指令码:0x80~0x9F)
    设置DDRAM(显示数据存储器)地址,用于确定下一个显示数据的写入位置。

    LCD12864命令有哪些常用指令?-图3
    (图片来源网络,侵删)
    • 范围:0x00~0x7F(对应128×64屏幕的128列×4行,实际使用前64列×4行)
      指令码0x80表示地址指针指向第0行第0列,0x90表示第1行第0列,以此类推。
  7. 设置CGRAM地址(指令码:0x40~0x7F)
    设置CGRAM(字符生成存储器)地址,用于自定义字符,CGRAM地址范围为0x00~0x3F,每个字符由8×16点阵组成,占用16字节。

  8. 读取忙标志(BF)和地址计数器(AC)(指令码:0x00)
    通过读取数据总线的D7位获取BF状态,BF=1表示模块忙,无法接收新指令;BF=0表示模块就绪,读取的数据低5位为当前AC值。

扩展指令集(RE=1)

扩展指令集主要用于调整显示参数,如对比度、扫描频率等,具体指令如下:

  1. 设置待机模式(指令码:0x01)
    进入待机状态,降低功耗,此时显示关闭,但可接收唤醒指令。

  2. 设置地址(指令码:0x80~0xFF)
    与基本指令集类似,但扩展指令集的地址范围更大,可控制整个256字节的显示区域。

  3. 设置对比度(指令码:0x81~0xFF)
    通过调节对比度寄存器的值(通常为0x00~0x3F)来调整显示亮度,指令码0x81后跟一个对比度值(如0x1F),可设置中等对比度。

  4. 设置电源模式(指令码:0x2A~0x2F)
    控制显示电压倍率(DV)和温度补偿(TC),适用于不同工作环境。

  5. 设置复位(指令码:0x30)
    软件复位模块,恢复默认设置。

指令时序与操作流程

LCD12864的指令写入需严格遵循时序:

  1. 将RS(寄存器选择)置为0(选择指令寄存器)。
  2. 将RW(读写选择)置为0(选择写操作)。
  3. 将指令码送到数据总线(D0~D7)。
  4. 拉高E信号,保持至少450ns后拉低E信号,完成指令写入。
  5. 检测BF标志,确保模块就绪后再执行下一条指令。

常用指令组合示例

  1. 初始化设置

    • 基本指令集,8位数据模式,2行显示:0x23
    • 开启显示,关闭光标:0x0C
    • 清除显示:0x01,延时1.6ms
  2. 显示汉字“你”

    • 汉字“你”的机内码为0xC4E3,在LCD12864中通常用两个字节表示(如0x30、0x20)。
    • 设置显示地址(如第0行第0列):0x80
    • 写入第一个字节:0x30
    • 写入第二个字节:0x20
  3. 自定义字符

    • 设置CGRAM地址(如0x40):0x40
    • 写入16字节的点阵数据(8×16点阵)。
    • 设置DDRAM地址并写入字符编码(0x00~0x07)。

指令速查表

指令名称 指令码(HEX) 功能说明
清除显示 0x01 清空屏幕,地址归零
地址归位 0x02 地址指针回到00H
设置进入点 0x04~0x08 控制地址指针移动方向及显示移动
显示开关控制 0x08~0x0F 控制显示、光标、闪烁开关
功能设置 0x20~0x27 设置数据位数、显示行数、字体类型
设置DDRAM地址 0x80~0x9F 设置显示数据写入地址
设置CGRAM地址 0x40~0x7F 设置自定义字符地址
读取BF和AC 0x00 读取忙标志和地址计数器值
设置对比度 0x81~0xFF 调整显示对比度(扩展指令集)

相关问答FAQs

Q1:LCD12864显示乱码或无法显示,如何排查?
A:首先检查接线是否正确(特别是数据总线、RS、RW、E引脚),然后确认模块供电是否稳定(VDD和VSS),接着检查初始化指令是否正确,特别是功能设置指令(0x20~0x27)中的数据位数(DL位)是否与实际接线匹配,若使用串口模式,需检查波特率和串口指令格式,通过读取BF标志确认模块是否就绪,避免在忙状态下写入指令。

Q2:如何实现LCD12864的滚动显示功能?
A:滚动显示可通过设置“设置进入点”指令中的SH位实现,要实现向左滚动,可在写入数据后执行指令0x07(ID=1,SH=1),此时显示内容会整体向左移动一位,新数据从右侧写入,若要实现多行滚动,需结合DDRAM地址设置,例如先写入第0行数据,再设置地址到第1行,通过连续的滚动指令实现多行文本的动态显示,注意滚动操作需在显示开启状态下进行,且滚动速度不宜过快,以免影响显示效果。

分享:
扫描分享到社交APP
上一篇
下一篇