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);  //设置数据指针起点
}
原文地址:https://www.cnblogs.com/zhangxuechao/p/11709617.html