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

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

引脚

LCD1602 液晶_数据

时序

LCD1602 液晶_指令码_02

操作步骤


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


指令

​清屏:​

LCD1602 液晶_数据总线_03


指令码:0x01


​进入模式设置:​

LCD1602 液晶_常用指令_04


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

常用指令:0x06


​显示开关控制:​

LCD1602 液晶_指令码_05


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

常用指令:0x0c


​功能设定:​

LCD1602 液晶_指令码_06


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

常用指令:0x38


DDRAM

LCD1602 液晶_指令码_07


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

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


应用电路

LCD1602 液晶_常用指令_08

举例

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); //设置数据指针起点
}