目录
LCD1602简介
特征
- 体积小、功耗低、操作简单
工作参数
- 5V工作电压,对比度可调,内含复位电路
- 显示容量16*2个字符
- 工作电流2.0mA
- 提供各种控制命令:清屏、字符闪烁等
- 80字节显示数据存储器DDRAM(data display)
- 内建 192个 5*7 点阵的字型的字符发生器 CGROM(Character Generation)
- 8个可由用户自定义的 5*7 的字符发生器 CGRAM(Character Generation)
液晶屏的分类
按字符和行数命名
- 例如:1602 意为 每行可显示16个字符 ,一共可以显示两行
按行数和列数命名
- 例如:12864 意为 128列 64行
引脚说明
编号 | 符号 | 说明 | 接法 |
1 | VSS | 电源负极 | 接 GND |
2 | VDD | 电源正极 | 接 5V |
3 | VL | 对比度调节 | 接可调电阻,调节对比度 |
4 | RS | 数据H/命令L | P11 高数据,低命令 |
5 | R/W | 读H/写L | P12 高读,低写 |
6 | E | 使能 | P13 高脉冲写入数据 |
7~14 | D0~D7 | Data I/O | P00 ~ P07 |
15 | BLA | 背光源正极 | 接VCC (亮度调节) |
16 | BLK | 背光源负极 | 接GND |
LCD1602指令集
指令总览
设置输入模式
- ID =0 光标左移
- ID =1 光标右移
- S =1 ID =1 整屏左移
- S =1 ID =0 整屏右移
- S =0 整屏不移动
显示开关
- D=1 开显示 D=0 关显示
- C=1 显示光标 C=0 不显示光标
- B=1 光标闪烁 B=0 光标不闪烁
光标或字符移动
S/C R/L 设定情况 0 0 光标左移一个格 AC=AC-1 0 1 光标右移一个格 AC=AC+1 1 0 显示器上字符全部左移一个格,AC=AC 1 1 显示器上字符全部右移一个格, AC=AC 功能设置
- DL=1 8位总线 DL=0 4位总线
- N =1 2行显示 N=0 单行显示
- F=1 5*10 点阵 F=0 5*7点阵
DDRAM地址设置
起始位置:0x80
DDRAM地址映射:
- 控制器内部带有80B的RAM 缓冲区。
- 00~0F、40~4F地址中的任一处写入显示数据时,液晶都可以立即显示出来
- 10~27、50~67地址中的任一处写入显示数据时,通过移屏指令将它们 移入可显示区域才可显示出来
读忙标志
- BF=1 液晶显示器忙
- BF=0 液晶显示器可接收数据
LCD1602时序
- RS确定写指令还是命令
- RW确定读还是写
- 将数据或命令送入数据线(准备好数据)
- 给E一个高脉冲,完成写操作
注:LCD1602大多数延迟位 ns 级别 ,而单片机的最小工作单位为 ms 级的
故可不做延迟
字符表与使用
方法一:
通过查询字码表的方式,写入数据
方法二:
可直接写入字符型变量赋值,写入数据
程序实现
/*******读忙******/
void LCD1602_Busy()
{
uchar sta;
DataPort = 0xff;
RS=0;
RW=1;
do{
E = 1;
sta = DataPort;
E=0;
}while(sta&0x80);
}
/*******写数据******/
void LCD1602_Write_DAT(uchar dat)
{
LCD1602_Busy();
RS=1;
RW=0;
DataPort =dat;
E=1;
E=0;
}
/*******写命令******/
void LCD1602_Write_CMD(uchar cm)
{
LCD1602_Busy();
RS=0;
RW=0;
DataPort =cm;
E=1;
E=0;
}
/******LCD1602初始化*****/
void LCD1602_Init(void)
{
LCD1602_Write_CMD(0X38);//功能设置
LCD1602_Write_CMD(0X0C);//显示开关配置
LCD1602_Write_CMD(0X01);//清屏
LCD1602_Write_CMD(0X06);//设置移动方向
}