发布时间 : 星期六 文章液晶显示模块LCD1602应用更新完毕开始阅读
液晶显示模块LCD1602应用
1 LCD1602 简介
液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,因此,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。这里向大家介绍一款LCD1602液晶显示模块,它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。
1602B外观如下图所示:
图1 LCD1602芯片管脚图
接口引脚功能 引脚号 1 2 3 4 5 6 7 8 9 10 11 12 符号 Vss Vdd V0 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 状态 输入 输入 输入 三态 三态 三态 三态 三态 三态 功 能 电源地 电源+5V 液晶驱动电源 寄存器选择 读、写操作 使能信号 数据总线(LSB) 数据总线 数据总线 数据总线 数据总线 数据总线 13 14 15 16 DB6 DB7 LEDA LEDK 三态 三态 输入 输入 数据总线 数据总线(MSB) 背光+5V 背光地 主要管脚介绍:
? V0:液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比
度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 ? RS:寄存器选择,高电平时选择数据寄存器;低电平时选择指令寄存器。
? R/W:读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低
电平时可以写入指令或者显示地址;当RS为高电平R/W为低电平时可以写入数据。 ? E:使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 LCD1602 有11个控制指令:
指令 清屏 归位 输入方式设置 显示开关控制 光标、画面位移 功能设置 CGRAM地址设置 DDRAM地址设置 读BF及AC值 写数据 读数据 功能 清DDRAM和AC值 AC=0,光标、画面回HOME位 设置光标、画面移动方式 设置显示、光标及闪烁开、关 光标、画面移动,不影响DDRAM 工作方式设置(初始化指令) 设置CGRAM地址。A5~A0=0~3FH DDRAM地址设置 读忙标志BF值和地址计数器AC值 数据写入DDRAM或CGRAM内 从DDRRAM或CGRAM数据读出
这里只介绍几个编程时经常用到的几个指令:
1、 清屏 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 0 1 2、 显示开关控制 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B 功能:设置显示、光标及闪烁开、关。 其中: D表示显示开关:D=1为开,D=0为关;
C表示光标开关:C=1为开,C=0为关; B表示闪烁开关:B=1为开,B=0为关。
3、 光标、画面位移 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 S/C R/L * * 功能:光标、画面移动,不影响DDRAM。 其中: S/C=1:画面平移一个字符位;
S/C=0:光标平移一个字符位; R/L=1:右移;R/L=0:左移。
4、功能设置 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 DL N F * *
功能:工作方式设置(初始化指令)。
其中:DL=1,8位数据接口;DL=0,四位数据接口; N=1,两行显示;N=0,一行显示;
F=1,5?10点阵字符;F=0,5?7点阵字符。
2 读写控制时序
RS 0 0 1 1 R/W 0 1 0 1 E 下降沿 高电平 下降沿 高电平 功能 写指令代码 读忙标志和AC码 写数据 读数据
写命令函数:向寄存器写入控制字 参数:command- 控制字
void LCD_en_command(unsigned char command) {
LCD_delay(); //延时一段时间
LCD1602_RW=LOW; //写命令时,R/W为低电平 LCD1602_RS=LOW; //写入指令,RS为低电平 LCD1602_EN=HIGH; //置高使能线
LCDIO=command; //接收命令字并送到数据总线上 LCD1602_EN=LOW; //在使能线的下降沿写入数据 }
写数据函数:向寄存器写入数据 参数:dat- 待要显示数据
void LCD_en_dat(unsigned char dat) {
LCD_delay(); LCD1602_RW=LOW; LCD1602_RS=LOW; LCD1602_EN=HIGH; LCDIO=dat; LCD1602_EN=LOW; }
//延时一段时间
//写指令时,R/W为低电平 //写入数据,RS为高电平 //置高使能线
//接收数据并送到数据总线上 //在使能线的下降沿写入数据
3 典型电路
LCD1602的典型电路连接如图2所示。
说明: 数据线DB0~DB7 接到单片机的P0口;3条控制线分别接到P1.5、P1.6、P1.7(可以根据具体的硬件电路修改这几条控制线);电阻R1用来调节液晶显示的对比度,可以接一个5k的电位器来调节;电阻R2用来设置背光的亮度,一般情况接一个1k的电阻就可以了,当然也可以接入电位器来调节显示的亮度。
技巧: 一般在电路设计时,很少把液晶直接做到单片机的电路板上,而是通过一个接口电路来转接,比如在主板上留出来16根线的接口,这样就可以通过一组16根的排线来连接单片机和液晶显示器。
图2 LCD1602 典型电路连接
4 驱动程序
这里的驱动程序主要包括:
1 液晶初始化函数:设置液晶的工作方式 void LCD_init(void) {
LCD_en_command(DATA_MODE); //设置为8位数据传送模式 LCD_en_command(OPEN_SCREEN); //开显示
LCD_en_command(DISPLAY_ADDRESS); //设置显示地址 CLEARSCREEN; //清屏,准备 }
2 设置显示坐标:设置字符的显示位置,行、列坐标 参数: x-列坐标,y-行坐标
void LCD_set_xy( unsigned char x, unsigned char y ) {
unsigned char address;
if (y == LINE1) //判断行 address = LINE1_HEAD + x; //设置列坐标 else
address = LINE2_HEAD + x;
LCD_en_command(address); //将地址写入寄存器 }
3 写字符函数:向液晶写一个字符
参数:x-列坐标,y-行坐标,dat-将要显示的字符数据
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat) {
LCD_set_xy( x, y ); //首先设置显示坐标 LCD_en_dat(dat); //写数据 }
4 写字符串函数:向液晶写入字符串
参数:x-列坐标,y-行坐标,*s-将要显示的字符串数据
void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s) {
LCD_set_xy( x, y ); //首先设置显示坐标 while (*s) //判断是否结束 {
LCDIO=*s; //循环调用写数据函数 LCD_en_dat(*s); s ++; } }
详细的驱动程序见附件。
5 总结
本文详细介绍了字符型液晶显示器件LCD1602的结构、控制命令字格式、典型电路连接以及详细的驱动程序,本文的电路、程序均经过调试而且一直在使用当中,可以直接应用到产品开发当中。液晶显示器具有低功耗、显示信息丰富等优点,比传统的LED显示器件有很大的优势,因此,广泛的应用到实际产品当中。