目录
一、芯片介绍
**LCD1602(Liquid Crystal Display)**液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符
显示容量:16×2个字符(两行,每行16个字符),每个字符为5*7点阵
二、芯片引脚定义
LCD1602电路图如下:
引脚 | 功能 |
---|---|
VSS | 地 |
VDD | 电源正极(4.5V~5.5V) |
VO | 对比度调节电压 |
RS | 数据/指令选择,1为数据,0为指令 |
RW | 读/写选择,1为读,0为写 |
E | 使能,1为数据有效,下降沿执行命令 |
D0~D7 | 数据输入/输出 |
A | 背光灯电源正极 |
K | 背光灯电源负极 |
三、内部结构图
内部结构图如下:
DDRAM(数据显示区):
举例:
若要将光标设置在第一行第一列,则发送0x80(1000 0000)指令;其中最高位1代表设置光标位置,剩下的七个0代表实际地址;若要将光标设置在第一行第二列,则发送0x81(1000 0001)指令;若要将光标设置在第二行第一列,则发送0xC0(1100 0000)指令;
CGRAM+CGROM(字模库):【与ASCII码类似,但也存在不同,如0x5c】
四、时序图、指令读写和数据读写
写数据(DB0-DB7)/指令:
写指令步骤:
Step1:将RS置0;
Step2:将RW置0;
Step3:将指令写入LCD_DataPort
Step4:将EN置1;
Step5:延时1ms;
Step6:将EN置0;
Step7:延时1ms;
代码示例:
//LCD1602写指令,Command 要写入的指令(LCD_RS,LCD_EN,LCD_DataPort为相应接口)
void LCD_WriteCommand(unsigned char Command)
{
LCD_RS=0;
// LCD_RW=0;
LCD_DataPort=Command;
LCD_EN=1;
LCD_Delay();
LCD_EN=0;
LCD_Delay();
}
//LCD1602延时函数,12MHz调用可延时1ms
void LCD_Delay()
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
写数据步骤:
Step1:将RS置0;
Step2:将RW置0;
Step3:将数据写入LCD_DataPort
Step4:将EN置1;
Step5:延时1ms;
Step6:将EN置0;
Step7:延时1ms;
//LCD_1602写数据,Command 要写入的数据(LCD_RS,LCD_EN,LCD_DataPort为相应接口)
void LCD_WriteData(unsigned char Data)
{
LCD_RS=1;
//LCD_RW=0;
LCD_DataPort=Data;
LCD_EN=1;
LCD_Delay();
LCD_EN=0;
LCD_Delay();
}
指令集:
- 清零:0x01;
- 复位:0x02;
- 数据加一:0x06;
- 画面左移,实现移屏操作:0x18;
四、LCD1602操作流程
初始化:
• 发送指令0x38 //八位数据接口,两行显示,5*7点阵
• 发送指令0x0C //显示开,光标关,闪烁关
• 发送指令0x06 //数据读写操作后,光标自动加一,画面不动
• 发送指令0x01 //清屏
代码如下:
//LCD初始化函数
void LCD_Init(