目录
LCD1602主要技术参数:
显示容量 | 16 X 2 个字符 |
芯片工作电压 | 4.5 ~ 5.5V |
工作电流 | 2.0 mA(5.0V) |
模块最佳工作电压 | 5.0V |
字符尺寸 | 2.95 X 4.35(WXH)mm |
引脚说明:
编号 | 符号 | 引脚说明 | 编号 | 符号 | 引脚说明 |
1 | VSS | 电源地 | 9 | D2 | Data I/O |
2 | VDD | 电源正极 | 10 | D3 | Data I/O |
3 | VL | 液晶显示偏压信号 | 11 | D4 | Data I/O |
4 | RS | 数据/命令选择端(H/L) | 12 | D5 | Data I/O |
5 | R/W | 读/写选择端(H/L) | 13 | D6 | Data I/O |
6 | E | 使能信号 | 14 | D7 | Data I/O |
7 | D0 | Data I/O | 15 | BLA | 背光源正极 |
8 | D1 | Data I/O | 16 | BLK | 背光源负极 |
接线说明:
基本操作时序:
输入 | 输出 | |
读状态 | RS=L,RW=H,E=H | D0 ~ D7 =状态字 |
写指令 | RS=L,RW=L,D0 ~ D7 =,E=高脉冲 | 无 |
读数据 | RS=H,RW=H,E=H | D0 ~ D7 =数据 |
写数据 | RS=H,RW=L,D0 ~ D7 =,E=高脉冲 | 无 |
RAM地址映射图:
指令说明:
初始化设置
显示模式设置
显示开/关及光标设置
数据控制
控制器内部设有一个数据地址指针,用户可以通过它们来访问内部的全部80字节RAM。
数据指针设置
其他设置
初始化过程(复位过程)
写指令 38H :显示模式设置
写指令 08H :显示关闭
写指令 01H :显示清屏
写指令 06H :显示光标移动位置
写指令 0CH :显示开及光标设置
参考程序:
/*
接线说明:
RS=P3^5;RW=P3^6;EN=P3^7;
D0~D7=P2^0~P2^7;
BLA=+5V;BLK=GND;
VSS=GND;VDD=+5V;
VL引脚外接1K电阻然后接入GND;
*/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
uint i,j;
sbit LCD1602_RS=P3^5;
sbit LCD1602_RW=P3^6;
sbit LCD1602_EN=P3^7;
uchar code table1[]="MCU:STC89C52RC";
uchar code table2[]=" 2020-12-28";
void Delay500ms();//作为逐个字符之间的显示时间
void Delay5ms();//时序图中Tpw
void init();//液晶初始化
void LCD1602_RWite_com(uchar com);//写命令函数
void LCD1602_RWite_data(uchar dat);//写数据函数
void main()
{
P2=0;
init();
LCD1602_RWite_com(0x80);
for(num=0;num<14 ;num++)//14为table1的字符的长度
{
LCD1602_RWite_data(table1[num]);
Delay500ms();
}
LCD1602_RWite_com(0x80+0x40);
for(num=0;num<15 ;num++)//15为table2的字符的长度
{
LCD1602_RWite_data(table2[num]);
Delay500ms();
}
while(1);
}
void Delay500ms() //@11.0592MHz
{
uchar i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay5ms() //@11.0592MHz
{
uchar i, j;
i = 9;
j = 244;
do
{
while (--j);
} while (--i);
}
void LCD1602_RWite_com(uchar com) //写命令
{
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_EN=0;
P2=com;
LCD1602_EN=1;
Delay5ms();
LCD1602_EN=0;
}
void LCD1602_RWite_data(uchar dat) //写数据
{
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_EN=0;
P2=dat;
LCD1602_EN=1;
Delay5ms();
LCD1602_EN=0;
}
void init() //初始化
{
LCD1602_RWite_com(0x38);//显示模式设置
LCD1602_RWite_com(0x08);//显示关闭
LCD1602_RWite_com(0x01);//显示清屏
LCD1602_RWite_com(0x06);//显示光标移动设置
LCD1602_RWite_com(0x0f);//显示开及光标设置
}