LCD1602工作原理.docx

上传人:b****5 文档编号:5772536 上传时间:2023-01-01 格式:DOCX 页数:13 大小:395.73KB
下载 相关 举报
LCD1602工作原理.docx_第1页
第1页 / 共13页
LCD1602工作原理.docx_第2页
第2页 / 共13页
LCD1602工作原理.docx_第3页
第3页 / 共13页
LCD1602工作原理.docx_第4页
第4页 / 共13页
LCD1602工作原理.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

LCD1602工作原理.docx

《LCD1602工作原理.docx》由会员分享,可在线阅读,更多相关《LCD1602工作原理.docx(13页珍藏版)》请在冰豆网上搜索。

LCD1602工作原理.docx

LCD1602工作原理

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光

的厚,是否带背光在应用中并无差别

1602LCD主要技术参数:

显示容量:

16×2个字符

芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)

模块最佳工作电压:

5.0V

字符尺寸:

2.95×4.35(W×H)mm

引脚功能说明

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13

所示:

编号符号引脚说明编号符号引脚说明

1VSS电源地9D2数据

2VDD电源正极10D3数据

3VL液晶显示偏压11D4数据

4RS数据/命令选择12D5数据

5R/W读/写选择13D6数据

6E使能信号14D7数据

7D0数据15BLA背光源正极

8D1数据16BLK背光源负极

表10-13:

引脚接口说明表

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对

比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W

共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

LCD寄存器的选择

E

R/W

RS

功能说明

1

0

0

写入命令寄存器

1

0

1

写入数据寄存器

1

1

0

读取忙碌标志及RAM地址

1

1

1

读取RAM数据

0

X

不动作

LCD指令表

指令功能

控制线

数据线

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

清除屏幕

0

0

0

0

0

0

0

0

0

1

清除屏幕,并把光标移至左上角

光标回到原点

0

0

0

0

0

0

0

0

1

x

光标移至左上角,显示内容不变

设定进入模式

0

0

0

0

0

0

0

1

I/D

S

I/D=1:

地址递增,I/D=0:

地址递减S=1:

开启显示屏,S=0:

关闭显示屏

显示器开关

0

0

0

0

0

0

1

D

C

B

D=1:

开启显示幕C=1:

开启光标B=1:

光标所在位置的字符闪烁

移位方式

0

0

0

0

0

1

S/C

R/L

x

x

S/C=0、R/L=0:

光标左移;S/C=0、R/L=1:

光标右移S/C=1、R/L=0:

字符和光标左移;S/C=1、R/L=1:

字符和光标右移

功能设定

0

0

0

0

1

DL

N

F

x

x

DL=1:

数据长度为8位,DL=0:

数据长度为4位N=1:

双列字,N=0:

单列字;F=1:

5x10字形,F=0:

5x7字形

CGRAM地址设定

0

0

0

1

CGRAM地址

将所要操作的CGRAM地址放入地址计数器

DDRAM地址设定

0

0

1

DDRAM地址

将所要操作的DDRAM地址放入地址计数器

忙碌标志位BF

0

1

BF

地址计数器内容

读取地址计数器,并查询LCM是否忙碌,BF表示LCM忙碌

写入数据

1

0

写入数据

将数据写入CGRAM或DDRAM

读取数据

1

1

读取数据

读取CGRAM或DDRAM的数据

图10-571602LCD内部显示地址

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行

第一个字符的位置呢?

这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以

实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,

无需人工干预。

每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,

如图10-58所示,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名

等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),

显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”

图表1写数据流程

图表2写命令流程

图表3判断LCD是否忙碌,忙则返回1

#include

#include

sbitrs=P3^5;//寄存器类型,1表示数据寄存器,2表示指令寄存器

sbitrw=P3^6;//读写选择,1表示读,0表示写

sbitep=P3^7;//读写使能,下降沿使能

voiddelay(unsignedcharms)//延时nms

{

unsignedchari;

while(ms--)

{

for(i=0;i<123;i++)

{

;

}

}

}

bitlcd_bz()//判断LCD是否忙碌,1忙碌

{

bitresult;

rs=0;

rw=1;

ep=1;

_nop_();

_nop_();

_nop_();

_nop_();

result=(bit)(P1&0x80);

ep=0;

returnresult;

}

voidlcd_wcmd(unsignedcharcmd)//写指令

{

while(lcd_bz());//判断LCD是否忙碌

rs=0;

rw=0;

ep=0;

_nop_();

_nop_();

P1=cmd;

_nop_();

_nop_();

_nop_();

_nop_();

ep=1;

_nop_();

_nop_();

_nop_();

_nop_();

ep=0;

}

voidlcd_pos(unsignedcharpos)//显示地址

{

lcd_wcmd(pos|0x80);

}

//写数据

voidlcd_wdat(unsignedchardat)

{

while(lcd_bz());//判断LCD是否忙碌

rs=1;

rw=0;

ep=0;

P1=dat;

_nop_();

_nop_();

_nop_();

_nop_();

ep=1;

_nop_();

_nop_();

_nop_();

_nop_();

ep=0;

}

voidlcd_wstr(constunsignedchar*s)//写字符串

{

unsignedchari=0;

while(s[i]!

='\0')

{

lcd_wdat(s[i]);//显示字符

delay(1000);

i++;

}

}

voidlcd_init()//LCD初始化

{

lcd_wcmd(0x38);//功能设定

delay

(1);

lcd_wcmd(0x0c);//显示器开关

delay

(1);

lcd_wcmd(0x06);//设定进入模式

delay

(1);

lcd_wcmd(0x01);//清除显示屏,把光标移至左上角

delay

(1);

}

voidmain(void)

{

lcd_init();//初始化LCD

delay(10);

lcd_pos(0x01);//设置显示位置

//i=0;

while

(1){

lcd_wstr("abcdefg");

lcd_pos(0x42);

lcd_wstr("abcdefg");

lcd_wcmd(0x01);

delay(3);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1