本文介绍液晶的工作原理以及如何编写代码显示字符。

一、液晶显示屏简介

LCD ( 的简称)液晶显示器。能够同时显示16x2,32个字符,是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路及其扩展驱动电路,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。该显示屏的优点是耗电量低、体积小、辐射低。

主要用来显示数字、字母、图形以及少量自定义字符。可以显示2行16个字符,拥有16个引脚,其中8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节V0和背光源AK。

LCD屏的命名,基本都是按照其分辨率来进行命名的 比如 就是分辨率为16×2, 就是分辨率为128×64。

二、主要参数三、显示原理

点阵图形式液晶由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等的模块。一般的字符型液晶显示器的内部控制器大部分为,能够显示英文字母、阿拉伯数字、日文片假名和一般性符号。

四、引脚功能

采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明见下表。

各引脚的功能介绍如下。

引脚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端由高电平跳变为低电平时,液晶模块执行命令。

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

引脚15:背光源正极。

引脚16:背光源负极。

五、连接方式

与单片机的连接有两种方式,一种是直接控制方式,另一种是所谓的间接控制方式。它们的区别只是所用的数据线的数量不同,其他都一样。

1.直接控制方式

的8根数据线和3根控制线E,RS和R/W与单片机相连后即可正常工作。一般应用中只须往中写入命令和数据,因此,可将的R/W读/写选择控制端直接接地,这样可节省1根数据线。VO引脚是液晶对比度调试端,通常连接一个10kΩ的电位器即可实现对比度的调整;也可采用将一个适当大小的电阻从该引脚接地的方法进行调整,不过电阻的大小应通过调试决定。

2.间接控制方式

间接控制方式也称为四线制工作方式,是利用所具有的4位数据总线的功能,将电路接口简化的一种方式。为了减少接线数量,只采用引脚DB4~DB7与单片机进行通信,先传数据或命令的高4位,再传低4位。采用四线并口通信,可以减少对微控制器I/O的需求,当设计产品过程中单片机的I/O资源紧张时lcd1602资料,可以考虑使用此方法。

六、的RAM地址映射及标准字库表

,总共显示为16行2列,对应着32个RAM地址,在使用的时候,需要在哪个位置显示,就写入对应的RAM地址,然后再写入需要的字符,对应就会显示该字符。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示LCD此时不忙,这时才能写指令和数据,否则此指令失效。要显示字符时要先输入显示字符地址(写指令),也就是告诉模块在,哪里显示字符,然后再写入需要显示的字符(写数据),才能够正常显示字符。

下图是1602的内部显示地址:

这个ROM中固化了一些我们常用的ASCII字符以及部分日文字符的点阵数据,需要写入那个字符,就直接设置对应进制码就可以,比如大写的字母A,代码是0100 0001(41H)与ASCII码一致,也就是表中的ASCII码字符的地址和实际的ASCII码字符是一样的。

七、读写操作

分为读操作和写操作

其中读操作可以分为读状态和读数据,写操作可以分为写指令和写数据。

读状态:读取LCD引脚状态,返回为状态字,D0-D6为当前LCD数据指针的地址 D7为是否允许读写操作(即检查LCD是否处于忙状态)。

lcd1602资料_资料员的工作内容和职责_资料大全

读数据:读取D0-07内的数据

写指令:写入LCD的控制指令,比如清屏,显示开关等

写数据:写入需要显示的数据,比方说要显示字符A,就写入0100 0001(41H)

以51单片机为例,D0-D7接到P0口 RW RW EN接到任意两个口

读写操作的时序图如下:

读操作时序:

写操作时序:

写指令时,RS置为低电平,RW置为低电平,EN置为低电平,然后将指令数据送到数据口D0~D7,延时tsp1,让1602准备接收数据,这时候将EN拉高,产生一个上升沿,这时候指令就开始写入LCD,延时一段时间,将EN置低电平。

写数据时,RS置为高电平,RW置为低电平,EN置为低电平,然后将指令数据送到数据口D0~D7,延时tsp1,让1602准备接收数据lcd1602资料,这时候将EN拉高,产生一个上升沿,这时候数据就开始写入LCD,延时一段时间,将EN置低电平。

以51单片机为例,D0-D7接到P0口上,RS、RW、EN任意三个引脚,则写指令和写数据代码如下:

/*--------写命令函数-------*/void LcdWriteCmd(unsigned char cmd){    LCD_RS = 0;     //输入命令    LCD_RW = 0;     //写    LCD_EN = 0;     //使能拉低    LCD_PIN=cmd;    //给端口数据    DelayMs(1);    LCD_EN = 1;     //使能拉高    DelayMs(1);    LCD_EN = 0;     //1→0,下降沿执行命令}/*--------写数据函数-------*/void LcdWriteData(unsigned char dat){    LCD_RS = 1;    //输入数据    LCD_RW = 0;    //写    LCD_EN = 0;    //使能拉低    LCD_PIN=dat;   //给端口数据    DelayMs(1);    LCD_EN = 1;    //使能拉高    DelayMs(1);    LCD_EN = 0;    //1→0,下降沿执行命令}

八、的指令操作

液晶模块的读写操作,屏幕和光标的操作都是通过指令来实现的。(1为高电平,0为低电平)分别介绍如下。

(1)指令1:清屏。指令码01H,光标复位到地址00H。

(2)指令2:光标复位。光标复位到地址00H。

(3)指令3:输入方式设置。其中,I/D表示光标的移动方向,高电平右移,低电平左移;S表示显示屏上所有文字是否左移或右移,高电平表示有效,低电平表示无效。

(4)指令4:显示开关控制。其中,D用于控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C用于控制光标的开与关,高电平表示有光标,低电平表示无光标;B用于控制光标是否闪烁,高电平闪烁,低电平不闪烁。

(5)指令5:光标或字符移位控制。其中,S/C表示在高电平时移动显示的文字,低电平时移动光标。

(6)指令6:功能设置命令。其中,DL表示在高电平时为8位总线,低电平时为4位总线;N表示在低电平时为单行显示,高电平时双行显示;F表示在低电平时显示5×7的点阵字符,高电平时显示5×10的点阵字符。

(7)指令7:字符发生器RAM地址设置。

(8)指令8:DDRAM地址设置。

(9)指令9:读忙信号和光标地址。其中,BF为忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平则表示不忙。

(10)指令10:写数据。

(11)指令11:读数据。

九、LCD初始化

LCD初始化的过程,也就是对LCD进行写指令的过程,具体的指令如下:

写指令0x38:162显示,57点阵,8位数据口 (指令6)。

写指令0x0c:开启显示屏,关光标,光标不闪烁 (指令4)。

写指令0x06:显示地址地址加1,即写一个数据后,显示位置右移一位 (指令3)。

写指令0x01:显示清屏。

/*--------LCD初始化函数-------*/void LcdInit(){    LcdWriteCmd(0x38);        // 16*2显示,5*7点阵,8位数据口    LcdWriteCmd(0x0C);        // 开显示,不显示光标    LcdWriteCmd(0x06);        // 地址加1,当写入数据后光标右移    LcdWriteCmd(0x01);        // 清屏}

十、LCD显示字符

在显示字符之前要设置光标的位置,第一行起始地址就是(1000 0000)80H,第二行起始地址是(1100 0000)C0H(40H+80H)。具体代码如下

/*--------显示字符串函数-------*/void LcdPrintStr(unsigned char x,unsigned char y,unsigned char *str){    LcdWriteCmd(0x80+0x40*(y%2)+x%16);// 设置坐标    while(*str!='')        LcdWriteData(*str++);      //发送要显示的数据}

十一、仿真代码示例

主函数代码:

/*--------主函数-------*/void main(){    LcdInit();    // LCD液晶初始化    LcdPrintStr(0,0,"  LCD1602 Test  ");    LcdPrintStr(0,1,"ABCDEFGHIJKLMNOP");    while(1);}

仿真效果:

示例资料获取方法

1、轻戳下方小卡片,进入后点击关注。

2、关注后在对话框内发送:即可获取下载链接。

lcd1602资料_资料员的工作内容和职责_资料大全

lcd1602资料_资料员的工作内容和职责_资料大全


限时特惠:
本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情

站长微信:Jiucxh

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注