液晶显示器(LiquidCrystal Display,简称LCD)可以显示数字、字母、汉字、以及图形图像等丰富的内容,应用非常广泛。液晶显示器由液晶显示部分和控制器两部分组成,控制器通过控制液晶显示区的电压,实现字符的显示。LCD可分为段型、字符型和点阵型三种。其中1602字符型液晶是应用最广泛的液晶显示器之一。
一、LCD简介
1602液晶的控制器是采用日立公司的HD44780集成电路,只需将待显字符的ASCII码放入其数据存储器,字符就会自动在液晶显示器上显示。该显示器每屏最多可显示2行,每行16个字符,共32个字符。
1602型LCD分有背光(16个引脚)和无背光(14个引脚)两种。14脚1602型LCD引脚共分成三类:
1、电源引脚: 引脚1和引脚2 分别是电源正极(VDD)和负极(VSS)。
2、数据引脚: 引脚7到引脚14共8个引脚是双向数据总线的第0位到第8位。由于P0口无上拉电阻,因此如果需要接到P0口,则必须接上拉电阻。而接到其他并口,可不接上拉电阻。
二、控制介绍
控制引脚:
引脚3(VL)是反视度调整引脚,通常接地。
引脚4(RS)是寄存器选择引脚,当RS=1时选择数据寄存器,当RS=0时,选择指令寄存器。
引脚5(R/W)是读写选择引脚,当R/W=1时读,当R/W=0时写。
引脚6(E)是模块使能信号,当E上为高电平时,可以读出数据或指令;当E上电平正跳变时,开始写入数据或指令;当E上电平负跳变时,开始执行指令。
三、LCD初始化
关于这一点,LCD1602说明手册上已经明确告诉我们了,想都不要去想,管你这些什么意思,照做即可。
延时15ms
写指令38H
延时5ms
写指令38H
写指令08H
写指令01H
写指令06H
写指令0CH
以上为初始化过程,延时部分好解决,前面讲过了。这里就看如何“写指令”了。问题来了,液晶模块怎么知道单片机给我的是命令还是数据。(叁议电子www.ppptalk.com)LCD1602看到RS为高时,就明白了,哦,你要给我传送数据了;看到RS为低时,就知道你要给我指令了。这个只是选择“命令”还是“数据”,还有一个问题,我们的目的是“写指令”,那么液晶模块怎么知道是“写”还是“读”呢?
再来看RW信号,当RW为低的时候,液晶模块就知道了,单片机要给我“写”了;当RW为高的时候,液晶模块也知道了,单片机要“读”了。很明显,我们这里要把RW设置为低。“写/读”和“指令/数据”都知道如何告诉液晶模块了,那么这个指令从怎么传过去呢?
通过D0-D7这8根线(也就是P2端口)来传输,比如我要传送的指令为x033,那么就把这个数据0x33放到P2端口,当LCD1602看到“写”和“指令”的时候,就知道把P2端口上的0x33这个指令拿过来了。这样就达到了“写”“指令”“0x33”的目的。
但是不是这样就能让LCD1602正常执行了。不是的。回到我们前面讲的那个例子,这里加个条件,屋内人听到敲门三下后,判断暗号正确了,但是没有直接开门,而是通知了他的上级,得到上级的授权后,才开门。也就是两个条件,暗号正确和上级授权。
LCD1602也一样,收到指令没有立即执行,还要等另外一个信号,就是EN使能信号。此时EN给个一定宽度的脉冲,LCD1602才开始执行。
四、驱动代码
void Lcd_Write_Cmd(unsigned char Cmd) {
delayMs(5);//注意这里需要延时5ms比较保险 代替判断忙信号
RW = 0;
P2 = Cmd; //准备好指令
RS=0; //告诉LCD1602,P0中放的是指令不是数据
EN=1;
delayUs(5); //根据时序图,脉冲要有一定宽度
EN=0; //使指令有效,开始执行
}
同样的道理,以上代码中,只需改一下RS信号为1,就是写数据的代码了
voidLcd_Write_Data(unsignedcharmData) {
RW = 0;
delayMs(5);//注意这里需要延时5ms比较保险代替判断忙信号
P2=mData;//准备好指令
RS=1;//告诉LCD1602,P0中放的是数据不是指令
EN=1;
delayUs(5);//根据时序图,脉冲要有一定宽度
EN=0;//使指令有效,开始执行
}
五、代码讲解
指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
这样你需要给LCD1602什么指令,只需要传递给void write_com(unsigned char Cmd)函数中的Cmd参数就行了。
-
lcd
+关注
关注
34文章
4426浏览量
167548 -
字符型
+关注
关注
0文章
9浏览量
6730 -
点阵型
+关注
关注
0文章
2浏览量
5167
发布评论请先 登录
相关推荐
评论