单片机交流
登录
直播中
王芳
7年用户
1394经验值
私信
关注
[问答]
有关LCD1602的基本知识都总结在这里了
开启该帖子的消息推送
LCD1602
什么是LCD1602?
字符型液晶显示原理是什么?
LCD1602有哪些引脚?分别有哪些功能?
如何去解读LCD1602的部分配置代码?
回帖
(1)
刘明
2021-7-19 14:20:29
(一)什么是LCD1602
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主威廉希尔官方网站 HD44780及其扩展驱动威廉希尔官方网站 HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能有所不同,但使用方法都是一样的。
注意:LCD1602仅能显示字母、符号或数字,无法显示汉字。
(二)字符型液晶显示原理
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成。显示屏上64×16个显示单元与显示RAM区的1024字节相对应,每一字节的内容与显示屏上相应位置的亮暗对应。例如显示屏第一行的亮暗由RAM区的000H~00FH的16字节的内容决定,当(000H)=FFH时,屏幕左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,屏幕右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H…,(00EH)=00H,(00FH)=00H时,在屏幕的顶部显示一条由8条亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。
字符型液晶显示模块是一种专门用于显示字母、数字和符号等的点阵式LCD,常用16×1,16×2,20×2和40×2等的模块。一般的LCD1602字符型液晶显示器的内部控制器大部分为HD44780,能够显示英文字母、阿拉伯数字、日文片假名和一般性符号。
(三)LCD1602引脚表
引脚功能介绍:
·引脚1:VSS为地电源。
·引脚2:VDD接5V正电源。
·引脚3:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”现象,使用时可以通过一个10kQ的电位器调整其对比度。
·引脚4:RS为寄存器选择脚,高电平时选择数据寄存器、低电平时选择指令寄存器。
·引脚5:R/W为读/写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或显示地址;当RS为低电平,R/W为高电平时,可以读忙信号;当RS为高电平,R/W为低电平时,可以写入数据。
·引脚6:E端为使能端,当E端由高电平跳变为低电平时,液晶模块执行命令。
·引脚714:D0D7为8位双向数据线。
·引脚15:背光源正极。
·引脚16:背光源负极。
(四)控制器接口时序图
1:读操作时序图
2:写操作时序图
首先要对寄存器的选择和读、写操作选择进行配置。RS是寄存器选择,RS = 1对数据进行操作;RS = 0对指令进行操作。
接着对读写操作选择进行配置,RW = 0 写操作。
打开使能端,输入使能信号 E = 1。
数据总线,对DB0~DB7赋值,进行数据的传输
【注】如果先打开使能,再进行其他配置的话,有可能传输的数据不是自己想要的。
(五)1602的原理图
此部分是谱中科技单片机的1602原理图(大多数老师教学51单片机都是这块板子,如需要原理图请直接找我就好)
(六)1602的配置代码部分解读
1:端口的定义
#define LCD1602_PORT P0 //对数据传输口进行定义***it LCD1602_RS = P2^6; //命令端口***it LCD1602_RW = P2^5; //读写端口***it LCD1602_EN = P2^7; //使能端口 特别注意:端口一定别写错了!!!写错了无法显示。
2:写指令
void LCD1602_write_com(unsigned char com){ LCD1602_RS = 0;//写入命令 LCD1602_PORT = com; LCD1602_delay_ms(1); LCD1602_EN = 1;//使能端口高电平 LCD1602_delay_ms(1); LCD1602_EN = 0;} 3:写数据
void LCD1602_write_data(unsigned char dat){ LCD1602_RS = 1; LCD1602_PORT = dat; LCD1602_delay_ms(1); LCD1602_EN = 1; LCD1602_delay_ms(1); LCD1602_EN = 0;} 4:初始化
void Init_LCD1602(){ LCD1602_EN = 0; LCD1602_RW = 0; //设置为写状态 LCD1602_write_com(0x38);//显示模式设定 LCD1602_write_com(0x0c);//开关显示,光标有无设置、光标闪烁设置 LCD1602_write_com(0x06);//写一个字符后指针加一 LCD1602_write_com(0x01);//清屏指令 LCD1602_write_com(0x80);//设置数据指针起点} (七)LCD1602代码
1:lcd1602.c
#include “LCD1602.h”//****************************************************//MS延时函数(12M晶振下测试)//****************************************************void LCD1602_delay_ms(unsigned int n){ unsigned int i,j; for(i=0;i《n;i++) for(j=0;j《110;j++);}//****************************************************//写指令//****************************************************void LCD1602_write_com(unsigned char com){ LCD1602_RS = 0; LCD1602_PORT = com; LCD1602_delay_ms(1); LCD1602_EN = 1; LCD1602_delay_ms(1); LCD1602_EN = 0;}//****************************************************//写数据//****************************************************void LCD1602_write_data(unsigned char dat){ LCD1602_RS = 1; LCD1602_PORT = dat; LCD1602_delay_ms(1); LCD1602_EN = 1; LCD1602_delay_ms(1); LCD1602_EN = 0;}//****************************************************//连续写字符//****************************************************void LCD1602_write_word(unsigned char *s){ while(*s》0) { LCD1602_write_data(*s); s++; }}void Init_LCD1602(){ LCD1602_EN = 0; LCD1602_RW = 0; LCD1602_write_com(0x38); LCD1602_write_com(0x0c); LCD1602_write_com(0x06); LCD1602_write_com(0x01); LCD1602_write_com(0x80);} 2:LCD1602.h
#ifndef __LCD1602_H__#define __LCD1602_H__#include 《reg52.h》//LCD1602 IO设置#define LCD1602_PORT P0***it LCD1602_RS = P2^6;***it LCD1602_RW = P2^5;***it LCD1602_EN = P2^7;//函数或者变量申明extern void LCD1602_delay_ms(unsigned int n);extern void LCD1602_write_com(unsigned char com);extern void LCD1602_write_data(unsigned char dat);extern void LCD1602_write_word(unsigned char *s);extern void Init_LCD1602();#endif 如有错误的地方,还请前辈们指出来!感激不尽!
(一)什么是LCD1602
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主威廉希尔官方网站 HD44780及其扩展驱动威廉希尔官方网站 HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能有所不同,但使用方法都是一样的。
注意:LCD1602仅能显示字母、符号或数字,无法显示汉字。
(二)字符型液晶显示原理
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成。显示屏上64×16个显示单元与显示RAM区的1024字节相对应,每一字节的内容与显示屏上相应位置的亮暗对应。例如显示屏第一行的亮暗由RAM区的000H~00FH的16字节的内容决定,当(000H)=FFH时,屏幕左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,屏幕右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H…,(00EH)=00H,(00FH)=00H时,在屏幕的顶部显示一条由8条亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。
字符型液晶显示模块是一种专门用于显示字母、数字和符号等的点阵式LCD,常用16×1,16×2,20×2和40×2等的模块。一般的LCD1602字符型液晶显示器的内部控制器大部分为HD44780,能够显示英文字母、阿拉伯数字、日文片假名和一般性符号。
(三)LCD1602引脚表
引脚功能介绍:
·引脚1:VSS为地电源。
·引脚2:VDD接5V正电源。
·引脚3:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”现象,使用时可以通过一个10kQ的电位器调整其对比度。
·引脚4:RS为寄存器选择脚,高电平时选择数据寄存器、低电平时选择指令寄存器。
·引脚5:R/W为读/写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或显示地址;当RS为低电平,R/W为高电平时,可以读忙信号;当RS为高电平,R/W为低电平时,可以写入数据。
·引脚6:E端为使能端,当E端由高电平跳变为低电平时,液晶模块执行命令。
·引脚714:D0D7为8位双向数据线。
·引脚15:背光源正极。
·引脚16:背光源负极。
(四)控制器接口时序图
1:读操作时序图
2:写操作时序图
首先要对寄存器的选择和读、写操作选择进行配置。RS是寄存器选择,RS = 1对数据进行操作;RS = 0对指令进行操作。
接着对读写操作选择进行配置,RW = 0 写操作。
打开使能端,输入使能信号 E = 1。
数据总线,对DB0~DB7赋值,进行数据的传输
【注】如果先打开使能,再进行其他配置的话,有可能传输的数据不是自己想要的。
(五)1602的原理图
此部分是谱中科技单片机的1602原理图(大多数老师教学51单片机都是这块板子,如需要原理图请直接找我就好)
(六)1602的配置代码部分解读
1:端口的定义
#define LCD1602_PORT P0 //对数据传输口进行定义***it LCD1602_RS = P2^6; //命令端口***it LCD1602_RW = P2^5; //读写端口***it LCD1602_EN = P2^7; //使能端口 特别注意:端口一定别写错了!!!写错了无法显示。
2:写指令
void LCD1602_write_com(unsigned char com){ LCD1602_RS = 0;//写入命令 LCD1602_PORT = com; LCD1602_delay_ms(1); LCD1602_EN = 1;//使能端口高电平 LCD1602_delay_ms(1); LCD1602_EN = 0;} 3:写数据
void LCD1602_write_data(unsigned char dat){ LCD1602_RS = 1; LCD1602_PORT = dat; LCD1602_delay_ms(1); LCD1602_EN = 1; LCD1602_delay_ms(1); LCD1602_EN = 0;} 4:初始化
void Init_LCD1602(){ LCD1602_EN = 0; LCD1602_RW = 0; //设置为写状态 LCD1602_write_com(0x38);//显示模式设定 LCD1602_write_com(0x0c);//开关显示,光标有无设置、光标闪烁设置 LCD1602_write_com(0x06);//写一个字符后指针加一 LCD1602_write_com(0x01);//清屏指令 LCD1602_write_com(0x80);//设置数据指针起点} (七)LCD1602代码
1:lcd1602.c
#include “LCD1602.h”//****************************************************//MS延时函数(12M晶振下测试)//****************************************************void LCD1602_delay_ms(unsigned int n){ unsigned int i,j; for(i=0;i《n;i++) for(j=0;j《110;j++);}//****************************************************//写指令//****************************************************void LCD1602_write_com(unsigned char com){ LCD1602_RS = 0; LCD1602_PORT = com; LCD1602_delay_ms(1); LCD1602_EN = 1; LCD1602_delay_ms(1); LCD1602_EN = 0;}//****************************************************//写数据//****************************************************void LCD1602_write_data(unsigned char dat){ LCD1602_RS = 1; LCD1602_PORT = dat; LCD1602_delay_ms(1); LCD1602_EN = 1; LCD1602_delay_ms(1); LCD1602_EN = 0;}//****************************************************//连续写字符//****************************************************void LCD1602_write_word(unsigned char *s){ while(*s》0) { LCD1602_write_data(*s); s++; }}void Init_LCD1602(){ LCD1602_EN = 0; LCD1602_RW = 0; LCD1602_write_com(0x38); LCD1602_write_com(0x0c); LCD1602_write_com(0x06); LCD1602_write_com(0x01); LCD1602_write_com(0x80);} 2:LCD1602.h
#ifndef __LCD1602_H__#define __LCD1602_H__#include 《reg52.h》//LCD1602 IO设置#define LCD1602_PORT P0***it LCD1602_RS = P2^6;***it LCD1602_RW = P2^5;***it LCD1602_EN = P2^7;//函数或者变量申明extern void LCD1602_delay_ms(unsigned int n);extern void LCD1602_write_com(unsigned char com);extern void LCD1602_write_data(unsigned char dat);extern void LCD1602_write_word(unsigned char *s);extern void Init_LCD1602();#endif 如有错误的地方,还请前辈们指出来!感激不尽!
举报
更多回帖
rotate(-90deg);
回复
相关问答
LCD1602
如何用
LCD1602
实时显示接收到的数据
2017-12-12
33208
#define
LCD1602
_4PINS 宏定义
2015-08-13
13722
lcd1602
的例程看不懂求助大神!
2014-03-31
6363
有关
C51的
LCD1602
液晶显示相关
知识
汇总
2022-01-26
2632
LCD1602
什么意思?
2021-07-21
1641
LCD1602
非常的不正常
2016-02-19
3745
大神,求助!
LCD1602
仿真能显示,硬件却不可以。
2013-07-25
19768
LCD1602
插座
2013-11-28
3288
求教:stm32驱动
LCD1602
显示
2017-12-10
13063
关于
LCD1602
只亮背光不显示的问题
2020-03-14
19974
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分