液晶LCD1602简介

LCD1602液晶也叫1602字符型液晶模块,LCD1602液晶是一种专门用来显示字母、数字、符号的点阵型液晶模块。LCD1602液晶是由若干个5×7点阵字符位组成,每个点阵字符位都可以显示一个字符(包括字母、数字、符号),一共可以显示16×2个字符。LCD1602液晶的每位之间都有一个点距的间隔,每行之间也都有间隔,起到字符间距和行间距的作用。LCD1602液晶只能显示字符(包括字母、数字、符号),不能显示图片。

LCD1602液晶模块具有体积小,功耗低等优点。在各种工业设备、家用电子产品、仪器仪表、嵌入式系统等场合都有非常广泛的应用。

液晶LCD1602技术参数

液晶LCD1602管脚说明

LCD1602液晶模块各管脚的功能介绍如下:

1、LCD1602液晶的管脚1:VSS接5V电源负极,即GND。

2、LCD1602液晶的管脚2:VDD接5V电源正极。

3、LCD1602液晶的管脚3:VL为液晶的显示偏压信号,用于对液晶显示对比度调整,接电源正极时对比度最弱,接地时对比度最高。对比度过高时会产生“鬼影”现象,导致液晶显示的字符不清晰。我们可以通过使用一个10kΩ的电位器来调整对比度。

4、LCD1602液晶的管脚4:RS为液晶的寄存器选择脚,该管脚为高电平时选择数据寄存器,该管脚为低电平时选择指令寄存器

5、LCD1602液晶的管脚5:R/W为读/写选择管脚,当该管脚为高电平时进行读操作,当该管脚为低电平时进行写操作。

a当RS和R/W管脚都为低电平时可以写入指令或显示地址。

b当RS管脚为低电平,R/W管脚为高电平时,可以读忙信号。

c当RS管脚为高电平,R/W管脚为低电平时,可以写入数据。

6、LCD1602液晶的管脚6:E管脚为使能端,当E管脚由高电平跳变为低电平时,液晶模块执行命令。

7、LCD1602液晶的管脚7~14:D0~D7为液晶8位双向数据线。

8、LCD1602液晶的管脚15:液晶模块背光源正极。

9、LCD1602液晶的管脚16:液晶模块背光源负极。

液晶LCD1602指令

液晶LCD1602时序

读操作时序

写操作时序

时序参数

液晶LCD1602初始化过程

1、延时15ms。

2、写指令38H(不检测忙信号)。

3、延时5ms。

4、写指令38H(不检测忙信号)。

5、延时5ms。

6、写指令38H(不检测忙信号)。

(以后每次写指令、读写数据操作之间均需检测忙信号)。

7、写指令38H:显示模式设置。

8、写指令08H:显示关闭。

9、写指令01H:显示清屏。

10、写指令06H:显示光标移动设置。

11、写指令0CH:显示开及光标设置。

液晶LCD1602例程

/****************LCD驱动基本代码*****************

*单片机型号:STC89C52RC,晶振频率:11.0592M

*开发环境:KEIL

*说明:LCD1602显示字母、数字、符号。

******************************************************/

#include

#include

#define LCD_Data P0

#define Busy 0x80

sbit LCD_RS = P1^0;

sbit LCD_RW = P1^1;

sbit LCD_E = P2^5;

unsigned char code welcome[] = {“YOU ARE WELCOME”};

unsigned char code mcu[] = {“SL-51A”};

void Delay5Ms(void);

void WriteDataLCD(unsigned char WDLCD);

void WriteCommandLCD(unsigned char WCLCD,BuysC);

unsigned char ReadDataLCD(void);

unsigned char ReadStatusLCD(void);

void LCDInit(void);

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);

void Info_display(void);

void Delay5Ms(void)

{

unsigned int TempCyc=3552;

while(TempCyc–);

}

void WriteDataLCD(unsigned char WDLCD)

{

ReadStatusLCD();

LCD_Data=WDLCD;

LCD_RS=1;

LCD_RW=0;

LCD_E=0;

LCD_E=0;

LCD_E=1;

}

void WriteCommandLCD(unsigned char WCLCD,BuysC)

{

if(BuysC)ReadStatusLCD();

LCD_Data=WCLCD;

LCD_RS=0;

LCD_RW=0;

LCD_E=0;

LCD_E=0;

LCD_E=1;

}

unsigned char ReadStatusLCD(void)

{

LCD_Data=0xFF;

LCD_RS=0;

LCD_RW=1;

LCD_E=0;

LCD_E=0;

LCD_E=1;

while(LCD_Data&Busy);

return(LCD_Data);

}

void LCDInit(void)

{

LCD_Data = 0;

WriteCommandLCD(0x38,0);Delay5Ms();

WriteCommandLCD(0x38,0);Delay5Ms();

WriteCommandLCD(0x38,0);Delay5Ms();

WriteCommandLCD(0x38,1);

WriteCommandLCD(0x08,1);

WriteCommandLCD(0x01,1);

WriteCommandLCD(0x06,1);

WriteCommandLCD(0x0C,1);

}

void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData)

{

Y&=0x1;X&=0xF;

if(Y)X|=0x40;

X|=0x80;

WriteCommandLCD(X,0);

WriteDataLCD(DData);

}

void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData)

{

unsigned char ListLength;

ListLength=0;

Y&=0x1;X&=0xF;

while(DData[ListLength]>=0x20)

{

if(X<=0xF)

{

DisplayOneChar(X,Y,DData[ListLength]);

ListLength++;

X++;

}

}

}

void main(void)

{

LCDInit();

DisplayListChar(5,0,mcu);

DisplayListChar(0,5,welcome);

while(1){;}

}

液晶LCD1602应用电路图