LCD1602 液晶

它是一种专门用来显示字母、数字、符号的点阵型液晶模块

它是由若干个5x7或者5x10的点阵字符位组成

引脚
引脚

时序
时序

操作步骤

初始化
写命令(RS=L)设置显示坐标
写数据(RS=H)

指令
清屏:
清屏

指令码:0x01

进入模式设置:
进入模式设置

I/D:0,写入新数据后光标左移;1,写入新数据后光标右移
S:0,写入新数据后显示屏不移动;1,写入新数据后显示屏整体右移 1 个字符

常用指令:0x06

显示开关控制:
显示开关控制

D:0,显示功能关;1,显示功能开
C:0,无光标;1,有光标
B:0,光标闪烁;1,光标不闪烁

常用指令:0x0c

功能设定:
功能设定

D:0,数据总线为 4 位;1,数据总线为 8 位
N:0,显示 1 行;1,显示 2 行
F:0,5×7 点阵/每字符;1,5×10 点阵/每字符

常用指令:0x38

DDRAM
DDRAM

写入显示地址时要求最高位 D7 恒定为高电平 1
实际地址:addr + 80H

常用指令:0x80 (设置起点)

应用电路
应用电路

举例

sbit LCD1602_E = P2 ^ 7;
sbit LCD1602_RW = P2 ^ 5;
sbit LCD1602_RS = P2 ^ 6;

void LcdWriteCom(uchar com)   //写入命令
{
    LCD1602_E = 0;     //使能
    LCD1602_RS = 0;    //选择发送命令
    LCD1602_RW = 0;    //选择写入

    LCD1602_DATAPINS = com;     //放入命令
    Lcd1602_Delay1ms(1);        //等待数据稳定

    LCD1602_E = 1;            //写入时序
    Lcd1602_Delay1ms(5);      //保持时间
    LCD1602_E = 0;
}

void LcdWriteData(uchar dat)            //写入数据
{
    LCD1602_E = 0;  //使能清零
    LCD1602_RS = 1; //选择输入数据
    LCD1602_RW = 0;

    LCD1602_DATAPINS = dat; //写入数据
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1;
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0;
}

void LcdInit()
{
    LcdWriteCom(0x38);  //开显示
    LcdWriteCom(0x0c);  //开显示不显示光标
    LcdWriteCom(0x06);  //写一个指针加1
    LcdWriteCom(0x01);  //清屏
    LcdWriteCom(0x80);  //设置数据指针起点
}
posted @   thomas_blog  阅读(180)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示