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

2024-03-09 10204阅读

1.LCD显示器相关背景

1.LCD简介

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

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

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

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

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

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

2.电子显示器的原理

1.像素(分辨率)

显示单元【液晶分子】

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

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

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

2.显存

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

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

3.字模

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

4.字库

字模形成的库。

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

LCD显示器中的2个器件

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

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

6.软件+硬件实现功能

2.LCD1602

1.简介

1.为什么叫1602

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

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

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

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

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

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

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

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

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

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

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

2.原理图和接线引脚

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

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

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.接线确认

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

3.数据手册

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

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

1.LCM和LCD

LCM:就是lcd module(LCD模组)

2.主要技术参数解析

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

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

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

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.控制器接口

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

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

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

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

状态字的解析方法

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

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

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

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

//基本操作时序:读状态:输入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.写指令时序分析

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

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.读数据时序分析

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

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

但是实际上我们不需要

6.写数据的时序分析

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

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会自动查找该位

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

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

4.指令说明

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

1.显示模式设置

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

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

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个,但是实际上一行有40
		addr=0x40+x;
	}
	
    lcd1602_write_cmd(addr|0x80);
}

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

关闭显示:0000 1000   0x08

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

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

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

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

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

3.数据控制

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

1.数据指针设置

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

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

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

2.读数据

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

3.写数据

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

4.其他设置

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

0x01  显示清屏

0x02  显示回车

5.初始化过程

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

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

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]