摘要:1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。其有成本低,操作方便的优点。
关键字:1602LCD引脚说明指令集初始化程序
1. 现状分析
现阶段,在众多的液晶显示领域,1602液晶的使用及其广泛,在用单片机控制的需要显示的模块中,1602占据主导地位。1602的显示原理简单,成本低,操作方便,适用于大多数要求字符或者数字显示的场合。其原理简单,掌握了1602液晶显示的原理,其他的液晶显示的原理也就迎刃而解。
2. 1602LCD液晶显示简介
2.11602LCD特点
1、+5V电压,对比度可调
2、内含复位电路
3、提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能
4、有80字节显示数据存储器DDRAM
5、内建有160个5X7点阵的字型的字符发生器CGROM
6、8个可由用户自定义的5X7的字符发生器CGRAM
2.2引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口。
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E为时能信号,1时读取信息,10时(下跳沿)执行指令
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
2.31602显示地址
由于1602的显示速度较慢,所以在执行指令之前一定要判断液晶的忙碌状态,只有在空闲的前提下才能对1602进行操作。在对1602写入字符或者数字时,要事先指定显示字符或者数字的地址,当要将字符显示在1602对应的具体地址时,例如一字符地址是06H,由于在写入显示地址时D7恒为1,所以最后的显示地址要加上80H,即00000110+10000000=10000110
2.4 1602的控制指令集
1602的控制指令集共有11条:
其中“1:”:高电平;“0”:低电平
指令功能说明如下:
指令1:清除显示器;光标归位(左上方);AC=0
指令2:光标归位(左上方);AC=0;保持DDRAM内容不变
指令3:每次写入1位数据后光标的移动方向,并且设定每次写入的一个字符是否移动。 I/D=0 写入新数据后光标左移1写入新数据后光标右移
S=0 写入新数据后显示屏不移动1 写入新数据后显示屏整体右移一个字
指令4:控制显示器开/关,光标开/关以及光标是否闪烁
D=0 显示开 0显示关
C=0 无光标 1有光标
B=0 光标不闪烁 1光标闪烁
指令5:使光标移位或者整个显示屏幕移位
S/CR/L
0 0光标左移一格,且AC-1
0 1光标右移一格,且AC+1
1 0显示器字符全部左移一格,但光标不移动
11显示器字符全部右移一格,但光标不移动
指令6:设定数据总线位数
DL=0 数据总线为4位1数据总线为8位
N=0显示1行1显示2行
F=05×7点阵每字符15×11点阵每字符
指令7:设定下一条要存入数据的CGRAM的地址
指令8 :设定下一条要存入数据的DDRAM地址(应为0X80+Address)
指令9 :读取忙信号或者AC的地址指令
BF=0 液晶显示器空闲,液晶显示器可以接收单片机送来的数据或指令
BF=1液晶显示器空忙,液晶显示器不能接收单片机送来的数据或指令
读取地址计数器AC的内容
指令10 :将字符码写入DDRAM,以使显示屏显示相应的字符;
将用户自己设计的***形存入CGRAM
指令11:从CGRAM或者DDRAM读取数据
3.1602LCD的一般初始化(复位)程序:
3.1 函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
bit BusyTest(void)
{
bit result;
RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态
RW=1;
E=1;//E=1,才允许读写
_nop_(); //空操作
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
result=BF;//将忙碌标志电平赋给result
E=0;
return result;
}
/*****************************************************
3.2 函数功能:指定字符显示的实际地址
入口参数:x
***************************************************/
void WriteAddress(unsigned char x)
{
Write_com(x|0x80); //显示位置的确定方法规定为"80H+地址码x"
}
/*****************************************************
3.3 函数功能:将数据(字符的标准ASCII码)写入液晶模块
入口参数:y(为字符常量)
***************************************************/
void WriteData(unsigned char y)
{
while(BusyTest()==1);
RS=1; //RS为高电平,RW为低电平时,可以写入数据
RW=0;
E=0;//E置低电平(写指令时,,
// 就是让E从0到1发生正跳变,所以应先置"0"
P0=y; //将数据送入P0口,即将数据写入液晶模块
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=1;//E置高电平
_nop_();
_nop_();
_nop_();
_nop_();//空操作四个机器周期,给硬件反应时间
E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
3.4函数功能:对LCD的显示模式进行初始化设置
***************************************************/
void LcdInt(void)
{
delay(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间
Write_com(0x38);//显示模式设置:16×2显示,5×7点阵,8位数据接口
delay(5); //延时5ms
Write_com(0x38);
delay(5);
Write_com(0x38); //3次写 设置模式
delay(5);
Write_com(0x0F);//显示模式设置:显示开,有光标,光标闪烁
delay(5);
Write_com(0x06);//显示模式设置:光标右移,字符不移
delay(5);
Write_com(0x01);//清屏幕指令,将以前的显示内容清除
delay(5);
}
4.总结
本文主要对1602LCD液晶显示的特点,引脚功能,控制指令作了比较详尽的介绍,以及给出了1602的初始化示范程序,让使用1602更加的直观、明了。通过本文介绍,相信大家对1602的使用不再是问题。
转载请注明出处学文网 » 1602LCD液晶显示