小工具知识网

当前位置: 首页 > 行业知识 > 【单片机】16-LCD1602和12864和LCD9648显示器

行业知识

【单片机】16-LCD1602和12864和LCD9648显示器

2026-11-12 23:38:43 来源:互联网转载

1.LCD显示器相关背景

1.LCD简介

(1)���示器,常见显示器:电视,电脑

(2)LCD(Liquid Crystal Display),液晶显示器,原理介绍

(3)LCD应用领域:手机,电脑

(4)将来取代LCD:LED,OLED【全面屏---软性】

2.电子显示器的原理

1.像素(分辨率)

显示单元【液晶分子】

但是实际上:像素!=分辨率

比如:出厂时电脑的像素已经确定,就是最大的显示【比如是1920*1080】,所以最大的分辨率是1920*1080,但是不能超过1920*1080,却可以小于1920*1080

2.显存

用来做显示的内存【电子显示效果跟内存有关】

找一块空间来存储像素和内存的对应关系。【将要显示的内容丢到显存中---存储的是要显示的内容与液晶分子的一一对应关系】

3.字模

字的模型。表示将这个字如何对应到显示器中。【将“A“放入相同的分辨率的显示器上,会产生不同的字模】

4.字库

字模形成的库。

5.控制器(关键)和驱动器

LCD显示器中的2个器件

控制器:方向盘,挂挡---跟CPU对接---靠近软件

驱动器:马达,发动器---将要显示的东西打到液晶显示器上---靠近硬件

6.软件+硬件实现功能

2.LCD1602

1.简介

1.为什么叫1602

16*2--》显示器可以显示的字符【显示器可以显示2排,每排16个】

能显示的字符数是32,但是像素数不是32,因为一个字符是由多个像素组成的。有可能一个字符是由5*7=35个像素组成的,也有可能是由6*8=48给像素组成的。但是我们不用去管,因为LCD1602内置了字库了。

2.带ASCII码字库,不能显示中文

当我们想要让LCD1602显示某一个ASCII码字符时候,只需要将这个字符对应的ASCII码发给LCD1602内部的控制器,控制器就会去查字库就得到字模,如何将字模发给内部的驱动器去驱动LCD做显示。

2.原理图和接线引脚

1.引脚分为:数据接口+控制接口

16根线:2根VCC,2根GND,1根VO(调节屏幕亮度),RS+RW+E(控制信号线),DB0-DB7(数据线)

2.并行接口

串行:就是数据线只有1根(I2C中的SDA),同时只能传输1个bit位,如果要传送多个bit位必须分时传输。

并行:就是数据线有很多根,每一根可以传输1个bit位,所以同时可以传输多个bit位。

如LCD1602有8根数据线,所以一次同时传输8bit位

3.背光调节

1根VO(调节屏幕亮度)

4.接线确认

3.数据手册

LCD1602数据手册速览 - 电子组培训文档

https://www.dfrobot.com.cn/image/data/DFR0063/CN/HD44780.pdf

1.LCM和LCD

LCM:就是lcd module(LCD模组)

2.主要技术参数解析

3.引脚定义(结合原理图来对照分析)

4.控制器接口说明(主要控制器型号)

RS=1时候,D0-D7上传输的是数据

RS=0时候,D0-D7上传输的是命令

RW=1时候,表示我们要读

RW=0时候,表示我们要写

E=1时候,表示使能        enable

E=0时候,表示禁止(禁能) disable

3.LCD1602控制器的底层时序

1.关键点

(1)时序走控制接口引脚

(2)指令码,状态字,数据,这三个走数据接口

(3)注意是并行的

2.控制器接口

3.读状态时序分析(判断是否在忙)

判断当前LCD是否有在显示数据

对控制器每一次进行读写操作之前,都必须进行读写检测,确保bit7==0

状态字的解析方法

读状态:RS=0;RW=1;RE=1;

读取状态字的bit7位,如果此时bit7=1--》表示此时还在显示东西,此时不可以进入

                                                bit7=0---》表示此时没有显示东西,可以开始显示

//基本操作时序:读状态:输入RS=0,RW=1,EN=1   输出:bit0-bit7--》状态 void Read_Busy{     //忙检测函数,判断bit7是0:允许执行;1禁止    unsigned char sta;         LCD1602_DB=0xff;    LCD1602_RS=0;    LCD1602_RW=1;    do{        LCD1602_EN=1;//使能        sta=LCD1602_DB;//读取8个bit位的状态        LCD1602_EN=0;    //如果sta&0x80==1,表示sta的bit7为1,则表示禁止状态,还要继续循环    }while(sta & 0x80);}

4.写指令时序分析

void Lcd1602_Write_Cmd(unsigned char cmd){    Read_Busy();    LCD1602_RS=0;    LCD1602_RW=0;    LCD1602_DB=cmd; //写入bit0-bit7    LCD1602_EN=1;    LCD1602_EN=0;}

5.读数据时序分析

读数据实际上是读”显存“

但是实际上我们不需要

6.写数据的时序分析

void Lcd1602_Write_Data(unsigned char dat){ //写数据    Read_Busy();    LCD1602_RS=0;    LCD1602_RW=0;    LCD1602_DB=dat; //将数据写入    LCD1602_EN=1;    LCD1602_EN=0;}

注意点:

写指令-->RS=0

写数据-->RS=1

7.RAM地址映射图

芯片范围是0-39每行,但是实际只用了0-15每行

将”A“给00这个空间,这个00会自动查找该位

4.指令说明

1.显示模式设置

lcd1602_write_cmd(0x38);//设置16*2显示,数据总线8位,5*7点阵/字符

2.显示开/关及光标设置

// 本函数用来设置当前光标位置,其实就是设置当前正在编辑的位置,// 其实就是内部的数据地址指针,其实就是RAM显存的偏移量// x范围是0-15,y=0表示上面一行,y=1表示下面一行void lcd1602_set_cursor(unsigned char x,unsigned char y){//显示坐标位置unsigned char addr;//鼠标所在位置if(y==0){//第一行addr=0x00+x;}else{//第二行//LCD1602是一行只能显示16个,但是实际上一行有40addr=0x40+x;}    lcd1602_write_cmd(addr|0x80);}

关闭显示:0000 1000   0x08

打开显示不显示光比 : 0000 1100   0x0c

打开显示并且显示光标且光标闪烁: 0000 1111   0x0f

地址指针自动+1,整体屏幕不移动 :0000 0110   0x06

3.数据控制

控制器内部设有一个数据地址指针,用户可以通过它们来访问内部的全部80字节RAM

1.数据指针设置

0x80+(0x00-0x0f)   第一行设置地址指针指令

0x80+(0x40-0x4f)   第二行设置地址指针指令

2.读数据

3.写数据

4.其他设置

0x01  显示清屏

0x02  显示回车

5.初始化过程

void lcd1602_init(void){lcd1602_write_cmd(0x28);//数据总线4位,显示2行,5*7点阵/字符lcd1602_write_cmd(0x08);//显示关闭【可以省略】lcd1602_write_cmd(0x01);//显示清屏【可以省略】lcd1602_write_cmd(0x0c);//显示功能开,无光标,光标闪烁lcd1602_write_cmd(0x06);//写入新数据后光标右移,显示屏不移动lcd1602_write_cmd(0x01);//清屏}

4.显示字符

可以进行换行的

/******************************************************************************** 函 数 名       : lcd1602_show_string* 函数功能 : LCD1602显示字符* 输    入       : x,y:显示坐标,x=0~15,y=0~1;   str:显示字符串* 输    出     : 无*******************************************************************************/void lcd1602_show_string(u8 x,u8 y,u8 *str){u8 i=0;if(y>1||x>15)return;//行列参数不对则强制退出if(y

上一篇:轻松下载Aefill操作指南!

下一篇:VGN V98 Pro键盘使用说明