LCD1602工作原理及其与51单片机地接口电路.docx
- 文档编号:7049657
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:13
- 大小:395.87KB
LCD1602工作原理及其与51单片机地接口电路.docx
《LCD1602工作原理及其与51单片机地接口电路.docx》由会员分享,可在线阅读,更多相关《LCD1602工作原理及其与51单片机地接口电路.docx(13页珍藏版)》请在冰豆网上搜索。
LCD1602工作原理及其与51单片机地接口电路
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);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD1602 工作 原理 及其 51 单片机 接口 电路