周平文库
当前位置:首页 » LCD1602显示技术参数资料 » 正文

LCD1602显示技术参数资料

lcd1602显示乱码lcd1602不显示
lcd1602显示乱码lcd1602不显示

0.8.2.1 1602LCD 的差不多参数及引脚功用 . 1602LCD 分为带背光和不带背光两种,基操作器大部分为 HD44780,带背光的比不带背光的厚,能否带 背光在运用中并无差异,两者尺寸差异如下图 10-54 所示:图 10-54 1602LCD 尺寸图 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 所示:编号 1 2 3 4 5 6 7符号 VSS VDD VL RS R/W E D0引脚阐明 电源地 电源正极 液晶显示偏压 数据/命令抉择 读/写抉择 使能信号 数据编号 9 10 11 12 13 14 15符号 D2 D3 D4 D5 D6 D7 BLA引脚阐明 数据 数据 数据 数据 数据 数据 背光源正极

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 脚:背光源负极。

10.8.2.3 1602LCD 的指令阐明准时序 . . . 1602 液晶模块外部的操作器共有 11 条操作指令,如表 10-14 所示: 序号 1 2 3 4 5 6 7 8 9 10 11 指令 清显示 光标前往 置输入形式 显示开/关操作 光标或字符移位 置功用 置字符发作活贮器地址 置数据存贮器地址 读忙标志或地址 写数到 CGRAM 或 DDRAM) 从 CGRAM 或 DDRAM 读数RS 0 0 0 0 0 0 0 0 0 1 1R/W 0 0 0 0 0 0 0 0 1 0 1D7 0 0 0 0 0 0 0 1D6 0 0 0 0 0 0 1D5 0 0 0 0 0 1D4 0 0 0 0 1 DLD3 0 0 0 1 S/C ND2 0 0 1 D R/L FD1 0 1 I/D C * *D0 1 * S B * *字符发作活贮器地址显示数据存贮器地址BF 计数器地址 要写的数据内容 读出的数据内容表 10-14:操作命令表

1602 液晶模块的读写操作、屏幕和光标的操作基本上经过指令编程来完成的。

(阐明:1 为高电平、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:读数据。

与 HD44780 相兼容的芯片时序表如下: 读状况 写指令 读数据 写数据 输入 输入 输入 输入 输入 输入 输入 输入RS=L,R/W=H,E=H RS=L,R/W=L,D0—D7=指令码,E=高脉冲 RS=H,R/W=H,E=H RS=H,R/W=L,D0—D7=数据,E=高脉冲D0—D7=状况字 无 D0—D7=数据 无表 10-15:差不多操作时序表 读写操作时序如图 10-55 和 10-56 所示:

图 10-55 读操作时序图 10-56 写操作时序 10.8.2.4 1602LCD 的 RAM 地址映射及尺度字库表 . . . 液晶显示模块是一个慢显示器件,因此在实行每条指令之前一定要确认模块的忙标志为低电平,显示不忙, 否则此指令失效。

要显示字符时要先输入显示字符地址, 也一定是告知模块在哪里显示字符, 10-57 是 1602 图 的外部显示地址。

图 10-57 1602LCD 外部显示地址 例如第二行第一个字符的地址是 40H, 那样能否直截了当写入 40H 就能够将光标定位在第二行第一个字符的位 置呢?如此不行,由于写入显示地址时要求最高位 D7 恒定为高电平 1 因此实践写入的数据应该是 01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示形式,在液晶模块显示字符光阴标是自动右移的,无需人工干涉。

每次输入指令前都要推断液晶模块能否处于忙的状况。

1602 液晶模块外部的字符发作贮存器(CGROM)曾经贮存了 160 个不同的点阵字符图形,如图 10-58 所 示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固 定的代码,比如大写的英文字母“A”的代码是 01000001B(41H),显示时模块把地址 41H 中的点阵字符 图形显示出来,我们就能看到字母“A”

图 10-58 字符代码与图形对应图 10.8.2.5 1602LCD 的平常初始化(复位)进程 . . . 的平常初始化(复位) 延时 15mS 写指令 38H(不检测忙信号) 延时 5mS 写指令 38H(不检测忙信号) 延时 5mS 写指令 38H(不检测忙信号) 以来每次写指令、读/写数据操作均需求检测忙信号 写指令 38H:显示形式设置 写指令 08H:显示封锁 写指令 01H:显示清屏 写指令 06H:显示光标移动设置 写指令 0CH:显示开及光标设置 10.8.3 1602LCD 的软硬件设计实例 . . 在 1602LCD 第一行显示网站名:www.hificat.com 在第二行显示联络电话:0571-********。

试验前应先 将显示切换开关心换到 LCD 任务状况。

10.8.3.1 硬件原理图 . . . 1602 液晶显示模块能够和单片机 AT89C51 直截了当接口,电路如图 10-60 所示。

图 10-60 硬件原理图 10.8.3.2 次第流程图 10.8.3.3 软件代码 #include while(ms--) #include sbit rs= P2^0; sbit rw = P2^1; sbit ep = P2^2; unsigned char code dis1[] = {"www.hificat.com"}; unsigned char code dis2[] = {"0571-********"}; void delay(unsigned char ms) { unsigned char i; { for(i = 0; i< 250; i++) { _nop_(); _nop_(); _nop_(); _nop_(); } }

} bit lcd_bz() { bit result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0 & 0x80); ep = 0; return result; } void lcd_wcmd(unsigned char cmd) { while(lcd_bz());//推断 LCD 能否闲适 rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd;_nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } void lcd_pos(unsigned char pos) { lcd_wcmd(pos | 0x80); } void lcd_wdat(unsigned char dat) { while(lcd_bz());//推断 LCD 能否闲适 rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_();

_nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } void lcd_init() { lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); }void main(void) { unsigned char i; lcd_init();// 初始化 LCD delay(10); lcd_pos(0x01);//设置显示位子 i = 0; while(dis1[i] != '\0') { lcd_wdat(dis1[i]);//显示字符 i++; } lcd_pos(0x42);// 设置显示位子 i = 0; while(dis2[i] != '\0') { lcd_wdat(dis2[i]);// 显示字符 i++; }

 
 

微信扫一扫 送福利