LCD1602液晶完整中文资料

合集下载

LCD1602中文资料

LCD1602中文资料

液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。

1602采用标准的16脚接口,其中:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

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

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

第7~14脚:D0~D7为8位双向数据线。

第15~16脚:空脚1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”1602液晶模块内部的控制器共有11条控制指令,如表2所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。

lcd1602中文资料

lcd1602中文资料

LCD1602中文资料1. 简介LCD1602是一种常见的液晶显示模块,它具有两行,每行可以显示16个中文字符或32个英文字母字符。

它广泛应用于数字仪表、电子产品、家电控制、智能家居等领域。

2. 主要特点•显示容量:LCD1602可以同时显示两行,每行可以显示16个中文字符或32个英文字母字符。

•分辨率:每个字符由5 x 8个像素点组成。

•背光控制:可通过控制背光开关来控制显示背光。

•低功耗:LCD1602使用低功耗驱动电路,非常适合电池供电的应用。

•接口简单:LCD1602使用标准的I2C接口进行通信,方便与各种微控制器连接。

3. 硬件连接LCD1602的硬件连接非常简单,只需要将其的VCC引脚连接到3.3V或5V电源,GND引脚连接到地,SDA引脚连接到I2C总线的数据线,SCL引脚连接到I2C总线的时钟线。

以下是连接示意图:SDA ———————————> I2C总线数据线SCL ———————————> I2C总线时钟线VCC ———————————> 3.3V或5V电源GND ———————————> 地4. 软件驱动使用LCD1602显示中文需要相应的软件驱动。

以下是使用Python编写的一个简单的LCD1602驱动代码示例:import smbus2import time# LCD1602的I2C地址ADDRESS =0x27# LCD1602的控制命令LCD_COMMAND =0x80LCD_DATA =0x40def lcd_init():# 初始化LCD1602bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, 0x38) # 设置显示模式为2行,5 x 8个像素点bus.write_byte(ADDRESS, 0x0c) # 打开显示,关闭光标bus.write_byte(ADDRESS, 0x06) # 设置光标移动方向为从左到右bus.write_byte(ADDRESS, 0x01) # 清屏def lcd_write(ch):# 向LCD1602写入字符bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, LCD_DATA)bus.write_byte(ADDRESS, ord(ch))def lcd_display(text):# 在LCD1602上显示文本bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, LCD_COMMAND) for ch in text:bus.write_byte(ADDRESS, ord(ch))# 使用示例lcd_init() # 初始化LCD1602lcd_display('Hello, World!') # 在LCD1602上显示文本5. 示例应用使用LCD1602显示中文可以应用于各种场景,以下是一个使用LCD1602显示温湿度的示例应用:import smbus2import Adafruit_DHT# LCD1602的I2C地址ADDRESS =0x27# LCD1602的控制命令LCD_COMMAND =0x80LCD_DATA =0x40def lcd_init():# 初始化LCD1602bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, 0x38) # 设置显示模式为2行,5 x 8个像素点bus.write_byte(ADDRESS, 0x0c) # 打开显示,关闭光标bus.write_byte(ADDRESS, 0x06) # 设置光标移动方向为从左到右bus.write_byte(ADDRESS, 0x01) # 清屏def lcd_write(ch):# 向LCD1602写入字符bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, LCD_DATA)bus.write_byte(ADDRESS, ord(ch))def lcd_display(text):# 在LCD1602上显示文本bus = smbus2.SMBus(1)bus.write_byte(ADDRESS, LCD_COMMAND)for ch in text:bus.write_byte(ADDRESS, ord(ch))# 使用示例lcd_init() # 初始化LCD1602while True:# 读取温湿度数据humidity, temperature = Adafruit_DHT.read_ret ry(Adafruit_DHT.DHT11, 4)# 在LCD1602上显示温湿度数据lcd_display(f'温度:{temperature}℃湿度:{hu midity}%')time.sleep(2)6. 总结LCD1602是一种常见的液晶显示模块,可以显示中文和英文字符。

LCD1602的中文资料

LCD1602的中文资料

(1)1602LCD主要技术参数显示容量为16×2个字符;芯片工作电压为4.5~5.5V;工作电流为2.0mA(5.0V);模块最佳工作电压为5.0V;字符尺寸为2.95×4.35(W×H)mm。

(2)接口,信号说明1602LCD采用标准的14引脚(无背光)或16引脚(带背光)接口,各引脚接口说明见表1602液晶接口引脚定义编号符号引脚说明编号符号引脚说明1VSS电源地9D2Date I/O2VDD电源正极10D3Date I/O3VL液晶显示偏压信号11D4Date I/O4RS数据/命令选择端(V/L)12D5Date I/O5R/W读/写选择端(H/L)13D6Date I/O6E使能信号14D7Date I/O7D0Date I/O15BLA背光源正极8D1Date I/O16BLK背光源负极1、2组电源一组是模块的电源一组是背光板的电源均为5V供电。

2、VL是调节对比度的引脚调节此脚上的电压可以改变黑白对比度3、RS是很多液晶上都有的引脚是命令/数据选择引脚该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。

4、RW也是很多液晶上都有的引脚是读写选择端该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。

5、E同样很多液晶模块有此引脚通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化。

6、D0—D7 8位双向并行总线,用来传送命令和数据。

7、BLA是背光源正极,BLK是背光源负极。

与单片机的连接方式,如图9所示图7 1602与单片机的连接方式图(3)控制器接口说明基本操作时序见表基本操作时序读状态输入RS=L,R/W=H,E=H输出D0~D7=状态字输出无写指令输入RS=L,R/W=L,D0~D7=指令码,E=高脉冲读数据输入RS=H,R/W=H,E=H输出D0~D7=数据写数据输入RS=H,R/W=L,D0~D7=数据,E=输出无高脉冲对此液晶操作主要有以下几种方法。

LCD1602资料说明

LCD1602资料说明

LCD1602液晶显示1602LCD的基本参数及引脚功能图10-53 1602字符型液晶显示器实物图1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:图10-54 1602LCD尺寸图LCD1602主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表所示:图10-55 读操作时序图10-56 写操作时序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 字符代码与图形对应图1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置LCD1602的示例调用程序:(1)LCD1602.H文件#ifndef __LCD1602_H__#define __LCD1602_H__#include <reg51.H>#define LCD_DATA P2 //LCD的数据口sbit LCD_BUSY = LCD_DATA ^ 7; //LCD忙信号位sbit LCD_RS = P0 ^ 7; //LCD寄存器选择sbit LCD_RW = P0 ^ 6; //LCD读写控制sbit LCD_EN = P0 ^ 5; //LCD使能信号#define LCD_GO_HOME 0x02 //AC=0,光标、画面回HOME位//输入方式设置#define LCD_AC_AUTO_INCREMENT 0x06 //数据读、写操作后,AC自动增一#define LCD_AC_AUTO_DECREASE 0x04 //数据读、写操作后,AC自动减一#define LCD_MOVE_ENABLE 0x05 //数据读、写操作,画面平移#define LCD_MOVE_DISENABLE 0x04 //数据读、写操作,画面不动//设置显示、光标及闪烁开、关#define LCD_DISPLAY_ON 0x0C //显示开#define LCD_DISPLAY_OFF 0x08 //显示关#define LCD_CURSOR_ON 0x0A //光标显示#define LCD_CURSOR_OFF 0x08 //光标不显示#define LCD_CURSOR_BLINK_ON 0x09 //光标闪烁#define LCD_CURSOR_BLINK_OFF 0x08 //光标不闪烁//光标、画面移动,不影响DDRAM#define LCD_LEFT_MOVE 0x18 //LCD显示左移一位#define LCD_RIGHT_MOVE 0x1C //LCD显示右移一位#define LCD_CURSOR_LEFT_MOVE 0x10 //光标左移一位#define LCD_CURSOR_RIGHT_MOVE 0x14 //光标右移一位//工作方式设置#define LCD_DISPLAY_DOUBLE_LINE 0x38 //两行显示#define LCD_DISPLAY_SINGLE_LINE 0x30 //单行显示void LCD_cls(void);void LCD_write_data(unsigned char);void LCD_initial(void);void LCD_set_position(unsigned char);void LCD_prints(unsigned char *);void LCD_printc(unsigned char);void LCD_write_instruction(unsigned char LCD_instruction);#endif(2)LCD1602.C文件#include "LCD1602.H"void LCD_check_busy(void) //检测LCD状态,看它是不是还在忙呢{while(1){LCD_EN = 0;LCD_RS = 0;LCD_RW = 1;LCD_DATA = 0xff;LCD_EN = 1;if(!LCD_BUSY)break;}LCD_EN = 0;}void LCD_cls(void) //LCD清屏{LCD_check_busy();LCD_RS = 0;LCD_RW = 0;LCD_DATA = 1;LCD_EN = 1;LCD_EN = 0;}void LCD_write_instruction(unsigned char LCD_instruction) //写指令到LCD {LCD_check_busy();LCD_RS = 0;LCD_RW = 0;LCD_DATA = LCD_instruction;LCD_EN = 1;LCD_EN = 0;}void LCD_write_data(unsigned char LCD_data) //输出一个字节数据到LCD {LCD_check_busy();LCD_RS = 1;LCD_RW = 0;LCD_DATA = LCD_data;LCD_EN = 1;LCD_EN = 0;}void LCD_set_position(unsigned char x) //LCD光标定位到x处{LCD_write_instruction(0x80 + x);}/*void LCD_go_home(void) //LCD光标归位{LCD_write_instruction(LCD_GO_HOME);}*/void LCD_printc(unsigned char lcd_data) //输出一个字符到LCD{LCD_write_data(lcd_data);}void LCD_prints(unsigned char *lcd_string) //输出一个字符串到LCD{unsigned char i = 0;while(lcd_string[i] != 0x00){LCD_write_data(lcd_string[i]);i++;}}void LCD_initial(void) //初始化LCD{LCD_write_instruction(LCD_AC_AUTO_INCREMENT | LCD_MOVE_DISENABLE);LCD_write_instruction(LCD_DISPLAY_ON | LCD_CURSOR_OFF);LCD_write_instruction(LCD_DISPLAY_DOUBLE_LINE);LCD_cls();}。

LCD1602最详细资料

LCD1602最详细资料

1602字符液晶所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。

目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

1602液晶的正面(绿色背光,黑色字体)1602液晶背面(绿色背光,黑色字体)另一种1602液晶模块,显示屏是蓝色背光白色字体字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示:HD44780内置了DDRAM、CGROM和CGRAM。

DDRAM就是显示数据RAM,用来寄存待显示的字符代码。

共80个字节,其地址和屏幕的对应关系如下表:也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM 的00H地址写入“A”字的代码就行了。

但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。

那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。

第二行也一样用前16个地址。

对应如下:DDRAM地址与显示位置的对应关系(事实上我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码)并不能显示1出来。

这是一个令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。

依次类推。

大家看一下控制指令的的8条:DDRAM地址的设定,即可以明白是怎么样的一回事了)1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”上表中的字符代码与我们PC中的字符代码是基本一致的。

LCD1602液晶完整中文资料

LCD1602液晶完整中文资料

液晶L C D1602(中文资料)目录1.………………………………………………指令介绍2.………………………………………………显示字符3.………………………………………显示自定义字符4.……………………………………使用4线数据传输1.指令介绍LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示:字符型LCD的引脚定义HD44780内置了DDRAM、CGROM和CGRAM。

这里的RAM与ROM不懂得话,可以看看我整理的另一篇/ball648500361/blog/item/4332fdf8bf505fd2b48f3 150.htmlDDRAM就是显示数据RAM,用来寄存待显示的字符代码。

共80个字节,其地址和屏幕的对应关系如下表:也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM 的00H地址写入“A”字的代码就行了。

但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。

那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。

第二行也一样用前16个地址。

对应如下:DDRAM地址与显示位置的对应关系我们知道文本文件中每一个字符都是用一个字节的代码记录的。

一个汉字是用两个字节的代码记录。

在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。

什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。

例如“A”字的字模:01110 ○■■■○10001 ■○○○■10001 ■○○○■10001 ■○○○■11111 ■■■■■10001 ■○○○■10001 ■○○○■上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。

LCD1602中文资料(使用说明)

LCD1602中文资料(使用说明)
控制器主要由指令寄存器 IR、数据寄存器 DR、忙标志 BF、地址计数器 AC、DDRAM、CGROM、 CGRAM 以及时序发生电路组成:
z 指令寄存器(IR)和数据寄存器(DR) 本模块内部具有两个 8 位寄存器:指令寄存器(IR)和地址寄存器(DR)。用户可以通过 RS 和 R/W
输入信号的组合选择指定的寄存器,进行相应的操作。下表中列出了组合选择方式。
VIL1
tH
VIH1 VIL1
Valid data
tcycE
VIH1 VIL1
项目 E 周期 E 脉宽(高电平) E 上升/下降时间 地址设置时间(RS,R/WtoE) 地址保持时间 数据设置时间 数据保持时间
符号 tcycE PWEN tEr,tEf tAS tAH tDSW tH
条件
Vdd=5V±5% Vss=0V Ta=25℃
写操作时下降沿有效数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道数据输入输出口mpu与模块之间的数据传送通道背光的正端5v背光的负端0v4rs5rw6e7db08db19db210db311db412db513db614db74位方式通讯时不使用db0db315a16k四操作时序图1写操作时序通用1602液晶显示模块使用手册email
-6-
z 本模块采用低功耗 CMOS 设计
通用 1602 液晶显示模块使用手册
☆☆☆☆ Email: support@
1 软硬件注解 1-1 模块组件内部结构

LCD1602液晶显示完全资料

LCD1602液晶显示完全资料

LCD1602液晶显示完全资料0x18 光标和显示一起向左移动4.显示地址:LCD1602内部RAM显示缓冲区地址的映射图,00~0F、40~4F分别对应LCD1602的上下两行的每一个字符,只要往对应的RAM地址写入要显示字符的ASCII代码,就可以显示出来。

5.读写时序:时序图1602手册中有,这里不引用了。

时序图很重要,编程就是根据时序图设置寄存器,让LCD工作。

二、LCD1602程序编写流程:LCD1602在了解完以上信息后便可以编写,这里我们把程序分为以下几步:1.定义LCD1602管脚,包括RS,R/W,E。

这里定义是指这些管脚分别接在单片机哪些I/O口上。

现举例如下:sbit EN=P3^4;sbit RS=P3^5;sbit RW=P3^6;2.显示初始化,在这一步进行初始化及设置显示模式等操作,包括以下步骤:设置显示方式延时清理显示缓存设置显示模式通常推荐的初始化过程如下:延时15ms写指令38H延时5ms写指令38H延时5ms写指令38H延时5ms注:以上写38H指令可以看情况省略1~2步(以上都不检测忙信号)(以下都要检测忙信号)写指令38H写指令08H 关闭显示写指令01H 显示清屏写指令06H 光标移动设置写指令0cH 显示开及光标设置3.设置显示地址(写显示字符的位置)。

4.写显示字符的数据。

三、LCD1602各子程序模块及主程序编写:现在按照上面编写程序的流程,给出各子程序模块及主程序的例子。

1.头文件,宏定义,定义管脚等:#include<reg52.h>#include <string.h>#define uchar unsigned char#define uint unsigned intsbit EN=P3^4;sbit RS=P3^5;sbit RW=P3^6;uchar code table0[]={"QQ:545699636"}; //此条语句为显示字符串时定义的字符串数组2.LCD1602基本初始化子程序:void LCD1602(){EN=0;RS=1;RW=1;P0=0xff; //这里P0为与LCD D0~D7相连的I/O口}3.读忙子程序:void read_busy(){P0=0xff;RS=0;RW=1;EN=1;while(P0&0x80); //P0和10000000相与,D7位若不为0,停在此处EN=0; //若为0跳出进入下一步;这条语句的作用就是检测D7位} //若忙在此等待,不忙跳出读忙子程序执行读写指令4.写指令写数据子程序:void write(uchar i,bit j){read_busy();P0=i; //其中i=0,写指令;i=1,写数据;RS=j;RW=0;EN=1;EN=0;}5.延时子程序:void delay(uint c) //功能为提供初始化等其他子程序中的延时1xc MS{uint a,b;for(a=0;a<c;a++)for(b=0;b<120;b++);}6.LCD1602初始化子程序:void init() //完全按照要求初始化流程来,中间省略了一步写指令38H{delay(15);write(0x38,0);delay(5);write(0x38,0);write(0x08,0);write(0x01,0);write(0x06,0);write(0x0c,0);}7.显示单个字符子程序:void display_lcd_byte(uchar y,uchar x,uchar z) //Y=0,1(起始行)X=0~15(起始列)Z=想写字符的ASCII码{if(y) //是否显示在第二行(若在第一行Y=0,不进入IF语句,若在第二行,进入IF语句{x+=0x40; //第二行起始地址加上列数为字符显示地址}x+=0x80; //设置数据指针位置write(x,0);write(z,1); //写入数据}8.显示字符串子程序:void display_lcd_text(uchar y,uchar x,uchartable[]) //Y,X同上字符显示,table[]字符串数组{uchar z=0;uchar t;t=strlen(table)+x; // 求得字符串长度加上起始列位置 while(x<t) //功能为LCD显示到字符串最后一个字符,防止字符串{ //没有16个字符,从而不够位产生乱码; display_lcd_byte(y,x,table[z]); //逐位显示数组内字符x++;z++;}}9.主程序:主程序里除了放入初始化程序外就是加入自己编写的显示子程序,根据你所要的不用功能可以编写各种类型的显示子程序,这里不做详细介绍,以下举例为显示一个字符和显示字符串的显示子程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

名等,每一个字符都有一个固定的代码,比如大写的英文字母
“A的”代码是 01000001B
(41H ),显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母
“A”
图 10-58 字符代码与图形对应图 10 . 8.2 . 5 1602LCD 的一般初始化(复位)过程 延时 15mS 写指令 38H (不检测忙信号) 延时 5mS 写指令 38H (不检测忙信号) 延时 5mS 写指令 38H (不检测忙信号) 以后每次写指令、读 /写数据操作均需要检测忙信号 写指令 38H :显示模式设置 写指令 08H :显示关闭 写指令 01H :显示清屏 写指令 06H :显示光标移动设置 写指令 0CH :显示开及光标设置
S: 屏幕上所有
指令 4 :显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显
示 C :控制光标的开与关,高电平表示有光标,低电平表示无光标
B:控制光标是否闪烁,
高电平闪烁,低电平不闪烁。
指令 5 :光标或显示移位 S/C :高电平时移动显示的文字,低电平时移动光标。
指令 6 :功能设置命令 DL :高电平时为 4 位总线,低电平时为 8 位总线 N :低电平时为单 行显示,高电平时双行显示 F: 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵 字符。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的, 无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。
1602 液晶模块内部的字符发生存储器 ( CGROM )已经存储了 160 个不同的点阵字符图形,
如图 10-58 所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假
10 . 8.3 1602LCD 的软硬件设计实例
在 1602LCD 第一行显示网站名:在第二行显示联系电话: 切换到 LCD 工作状态。
8。实验前应先将显示切换开关
图 10-59 1602LCD 实验演示图 10 . 8.3 . 1 硬件原理图 1602 液晶显示模块可以和单片机 AT89C51 直接接口,电路如图 10-60 所示。
10 . 8.2 1602 字符型 LCD 简介
字符型液晶显示模块是一种专门用于显示字母、 数字、 符号等点阵式 LCD ,目前常用 16*1 ,
16*2 ,20*2 和 40*2 行等的模块。下面以长沙太阳人电子有限公司的
1602 字符型液晶显示
器为例,介绍其用法。一般 1602 字符型液晶显示器实物如图 10-53 :
0
00
0
1 DL N F
*
*
0
00
1 字符发生存贮器地址
8 置数据存贮器地址 9 读忙标志或地址
0
0 1 显示数据存贮器地址
0
1 BF 计数器地址
10 写数到 CGRAM 或 DDRAM ) 1
0 要写的数据内容
11 从 CGRAM 或 DDRAM 读数 1
1 读出的数据内容
表 10-14 :控制命令表
1602 液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:
1为
高电平、 0 为低电平)
指令 1 :清显示,指令码 01H, 光标复位到地址 00H 位置。
指令 2 :光标复位,光标返回到地址 00H 。
指令 3 :光标和显示模式设置 I/D :光标移动方向,高电平右移,低电平左移 文字是否左移或者右移。高电平表示有效,低电平则无效。
第 6 脚: E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。
第 7~ 14 脚: D0 ~ D7 为 8 位双向数据线。
第 15 脚:背光源正极。
第 16 脚:背光源负极。
10 . 8.2 . 3 1602LCD 的指令说明及时序
1602 液晶模块内部的控制器共有 11 条控制指令,如表 10-14 所示:
10 . 8.3 . 2 程序流程图
图 10-60 硬件原理图
10 . 8.3 . 3 软件代码 #include <reg51.h> #include <intrins.h> sbit rs= P2^0; sbit rw = P2^1; sbit ep = P2^2; unsigned char code dis1[] = {""};
=00H ,( 00FH ) =00H 时,则在屏幕的顶部显示一条由 8 段亮线和 8 条暗线组成的虚线。
这就是 LCD 显示的基本原理。
字符的显示
用 LCD 显示一个字符时比较复杂, 因为一个字符由 6×8 或 8×8 点阵组成, 既要找到和显示
屏幕上某几个位置对应的显示 RAM 区的 8 字节,还要使每字节的不同位为 “1,”其它的为 “0,”
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,
这样即可以显示出图形。 液晶显示器具有厚度薄、 适用于大规模集成电路直接驱动、 易于实
现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、
PDA 移动通信工
具等众多领域。
②液晶显示器的分类
液晶显示的分类方法有很多种, 通常可按其显示方式分为段式、字符式、点阵式等。除了黑 白显示外, 液晶显示器还有多灰度有彩色显示等。 如果根据驱动方式来分, 可以分为静态驱 动( Static )、单纯矩阵驱动( Simple Matrix )和主动矩阵驱动( Active Matrix )三种。
液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的, 面积的传统显示器要轻得多。
在重量上比相同显示
功耗低
相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动 示器要少得多。
IC 上,因而耗电量比其它显
10 . 8.1 液晶显示简介 ①液晶显示原理
图 10-57 1602LCD 内部显示地址
例如第二行第一个字符的地址是 40H ,那么是否直接写入 40H 就可以将光标定位在第二行 第一个字符的位置呢?这样不行, 因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以 实际写入的数据应该是 01000000B ( 40H ) +10000000B(80H)=11000000B(C0H) 。
图 10-53 1602 字符型液晶显示器实物图
10 . 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 引脚功能说明
为“1的”点亮,为 “0的”不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来
说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在
LCD 上开始显示的行
列号及每行的列数找出显示 RAM 对应的地址, 设立光标, 在此送上该字符对应的代码即可。
汉字的显示
汉字的显示一般采用图形的方式, 事先从微机中提取要显示的汉字的点阵码 (一般用字模提
图 10-55 读操作时序
图 10-56 写操作时序
10 . 8.2 . 4 1602LCD 的 RAM 地址映射及标准字库表
液晶显示模块是一个慢显示器件, 所以在执行每条指令之前一定要确认模块的忙标志为低电 平,表示不忙, 否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在 哪里显示字符,图 10-57 是 1602 的内部显示地址。
1602LCD 采用标准的 14 脚(无背光) 或 16 脚(带背光) 接口, 各引脚接口说明如表 10-13 所示 :
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
Hale Waihona Puke D3数据3VL
液晶显示偏压
11
D4
数据
4
RS
数据 /命令选择
12
D5
数据
5
R/W
读 /写选择
13
D6
数据
③液晶显示器各种图形的显示原理 :
线段的显示
点阵图形式液晶由 M×N 个显示单元组成,假设 LCD 显示屏有 64 行,每行有 128 列,每 8 列对应 1 字节的 8 位,即每行由 16 字节, 共 16×8=128 个点组成, 屏上 64×16 个显示单元
与显示 RAM 区 1024 字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如
序号 指令
RS R/W D7 D6 D5 D4 D3 D2 D1 D0
1 清显示
0
00
0
0
0
0
0
0
1
2 光标返回 3 置输入模式 4 显示开 / 关控制
0
00
0
0
0
0
0
1
*
0
00
0
0
0
0
1 I/D S
0
00
0
0
0
1
D
C
B
5 光标或字符移位
0
00
0
0 1 S/C R/L *
相关文档
最新文档