lcd1602使用手册_lcd液晶屏工作原理

lcd1602使用手册_lcd液晶屏工作原理1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。lcd1602引脚状态字的说明:RAM映射地址:控制接口的时序:1.读的时序2.写的时序3.时序的相关参数读状态:RS=L,R/W=H,EN=H读数据:RS=H,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

lcd1602引脚
在这里插入图片描述
状态字的说明:
在这里插入图片描述

RAM映射地址:

在这里插入图片描述

控制接口的时序:

1.读的时序

在这里插入图片描述

2.写的时序

在这里插入图片描述

3.时序的相关参数

在这里插入图片描述

读状态:RS = L,R/W = H,EN = H

读数据:RS = H,R/W = H,EN = H

写指令:RS = L,R/W = L,D0~D7 = 指令码,EN = 高脉冲

写数据:RS = H,R/W = L,D0~D7 = 数据,EN = 高脉冲

LCD1602指令(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

(X表示1or0都行,一般是0)

1.工作方式设置指令:

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 1 DL N F X X

DL:设置数据接口位数。

DL=1:8位数据接口(D7—D0);DL=0:4位数据接口(D7—D4)。

N=0:一行显示;N=1:两行显示。

F=0:5×8点阵字符;F=1:5×10点阵字符。

例如:8位数据接口,两行显示,5×8点阵,即0b00111000也就是0x38。

2.显示开关控制指令:0 0 0 0 0 0 1 D C B

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

D=1:显示开,D=0:显示关。

C=1:光标显示,C=0:光标不显示。

B=1:光标闪烁,B=0:光标不闪烁。

3.进入模式设置指令:0 0 0 0 0 0 0 1 I/D S

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

I/D=1:写入新数据后光标右移;I/D=0:写入新数据后光标左移。

S=1:显示移动;S=0:显示不移动。

4.光标或显示移动指令:0 0 0 0 0 1 S/C R/L X X

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

在需要进行整屏移动时,这个指令非常有用,可以实现屏幕的滚动显示效果。初始化时不使用这个指令。

5.清屏指令:0 0 0 0 0 0 0 0 0 1

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

清除屏幕显示内容。光标返回屏幕左上角。执行这个指令时需要一定时间。

6.光标归位指令:0 0 0 0 0 0 0 0 1 X

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

光标返回屏幕左上角,它不改变屏幕显示内容。

7.设置CGRAM地址指令:0 0 0 1 a a a a a a

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

8.设置DDRAM地址指令:0 0 1 a a a a a a a

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

这个指令用于设置DDRAM地址。在对DDRAM进行读写之前,首先要设置DDRAM地址,然后才能进行读写。前面我们说过,DDRAM就是LCD1602的显示存储器。我们要在它上面进行显示,就要把要显示的字符写入DDRAM。同样,我们想知道DDRAM某个地址上有什么字符,也要先设置DDRAM地址,然后将它读出到单片机。

9.读忙信号和地址计数器AC:0 1 BF a a a a a a a

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

对于单片机来说,LCD1602属于慢速设备。当单片机向其发送一个指令后,它将去执行这个指令。这时如果单片机再次发送下一条指令,由于LCD1602速度较慢,前一条指令还未执行完毕,它将不接受这新的指令,导致新的指令丢失。当BF=1,表示LCD1602正忙,不能接受单片机的指令;当BF=0,表示LCD1602空闲,可以接收单片机的指令。RS=0,表示是指令;RW=1,表示是读取。LCD1602维护了一个地址计数器AC,用来记录下一次读写CGRAM或DDRAM的位置。

10.写数据到CGRAM或DDRAM指令:1 0 d d d d d d d d

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

RS=1,数据;RW=0,写。指令执行时,要在DB7—DB0上先设置好要写入的数据,然后执行写命令。

11.从CGRAM或DDRAM读数据指令:1 1 d d d d d d d d

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)

RS=1,数据;RW=1,读。先设置好CGRAM或DDRAM的地址,然后执行读取命令。数据就被读入后DB7—DB0。

#include<reg52.h>  //52头文件,
#define uint8 unsigned char //常用的两个宏定义
#define uint16  unsigned int
sbit RS = P2^0;    //1602的控制引脚定义
sbit RW = P2^1;
sbit EN = P2^2;
uint8 Data1[7]="welcom!";   //显示的数据
uint8 Data2[11]="  2 3 2 1  ";
void DelayMS(uint16 dly);  //函数的声明
bit BUSY(void);        //液晶模块的声明
void Write_cmd(uint8 cmd);
void Write_dat(uint8 dat);
void LCD_Init(void);
void main(void)
{
 uint8 i;
 LCD_Init();   //LCD初始化
 while(1)
 {
  Write_cmd(0x85);   //第一行     80H+地址码
  for(i=0;i<7;i++)
   Write_dat(Data1[i]);
  Write_cmd(0xc2);   //第二行      80+42,第二行第三个位置开始
  for(i=0;i<11;i++)
   Write_dat(Data2[i]);
        
 } 
}
void DelayMS(uint16 dly)    //12Mhz晶振延时MS
{
 uint16 x,y;
 for(x=dly;x>0;x--)
  for(y=124;y>0;y--);
}
bit BUSY(void)      //检测LCD1602是否处于忙状态;返回1,则BUSY;返回0,则OK
{
 bit Bit;
 RS = 0;
 RW = 1;
 EN = 1;
 DelayMS(1);
 Bit = (bit)(P0 & 0x80); //最高位为忙信号位 
 EN = 0;
 return Bit;    
}

void Write_cmd(uint8 cmd) //写命令    控制命令
{
 while(BUSY());   //测忙
 RS = 0;
 RW = 0;
 EN = 0; 
 P0 = cmd;
 EN = 1;
 DelayMS(1);
 EN = 0;   
}
void Write_dat(uint8 dat)    //写数据  dat   传入要显示的数据
{
 while(BUSY());   //测忙
 RS = 1;
 RW = 0;
 EN = 0; 
 P0 = dat;
 EN = 1;
 DelayMS(1);
 EN = 0;   
}
void LCD_Init(void)    //液晶的初始化
{
 Write_cmd(0x38);   //功能设置,8位数据接口,两行显示,5×8点阵,即0b00111000也就是0x38
 DelayMS(1);
 Write_cmd(0x0c);   //显示开关控制,00001100 显示开,光标不显示,光标不闪烁
 DelayMS(1);
 Write_cmd(0x06);   //输入方式设置,00000110 I/D=1:写入新数据后光标右移;S=0:显示不移动。
 DelayMS(1);
 Write_cmd(0x01);   //清除LCD的显示内容
 DelayMS(1);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190490.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java json decode 中文_关于json_decode乱码及NULL的解决方法「建议收藏」

    java json decode 中文_关于json_decode乱码及NULL的解决方法「建议收藏」写接口的同学应该会经常遇到数据格式的转换,这时候必不可少的两个函数就是json_encode()和json_decode()。这两个函数使用的时候有很多的主要事项,在这里我来说一下json_decode()。json_decode():对JSON格式的字符串进行解码,接受一个JSON格式的字符串并且把它转换为PHP变量。(1)将数据转换成数组之后,打印会显示NUll:原因之一json_dec…

    2022年7月17日
    18
  • SpringBoot常用注解集合「建议收藏」

    SpringBoot常用注解集合「建议收藏」前言这里我们不会将springboot全部的注解都一个一个分析一遍,因为现在普遍都是前后端分离开发,所以之前用在很多的模板视图解析上的注解现在已经不怎么用到了这里就没再提。有需要的同学可以去看我的其他关于框架的专栏。Part.1:SpringMVC工作原理因为springboot其实就是spring和SpringMVC的合体版本,所以分析它的注解其实就是分析spring和SpringMVC的注解,所以我们可以先看一下SpringMVC的工作原理(具体的解析可以看我的关于SpringMVC框架的专栏),

    2022年8月20日
    5
  • 更改nginx默认端口_更改端口号

    更改nginx默认端口_更改端口号一、查看当前Nginx配置信息打开nginx根目录下conf文件夹,点击编辑nginx.conf文件。Tips:Windows系统用记事本打开会使utf-8文件头部加上BOM头,这会导致配置文件不能正常读取,Nginx启动失败。因此推荐使用SublimeText3之类的编辑器打开。 server{listen80;#默认端口号…

    2025年10月2日
    37
  • inputstreamreader和inputstream_FileInputStream

    inputstreamreader和inputstream_FileInputStreamInputStreamReader类:java.io.InputStreamReaderextendsReaderInputStreamReader:是字节流通向字符流的桥梁:他使用指定的charset读取字节并将其解码为字符。(解码:把看不懂的变为能看懂的)继承自父类的共性成员方法:intread()读取单个字符并返回intread(char[]cbuf)一次读取多个字符,经字符读入数组中voidclose()关闭该流并释放与之关联的所有资源构造方

    2022年9月26日
    2
  • Cholesky分解法可以将矩阵分解为,其中L为_半正定矩阵cholesky分解

    Cholesky分解法可以将矩阵分解为,其中L为_半正定矩阵cholesky分解头文件:/**Copyright(c)2008-2011ZhangMing(M.Zhang),zmjerry@163.com**Thisprogramisfreesoftware;youcanredistributeitand/ormodifyit*underthetermsoftheGNUGeneralPublicLicenseasp…

    2025年7月9日
    2
  • android listview 滑动卡顿问题解决

    android listview 滑动卡顿问题解决之前在使用listview进行每次通知一来,根据判断是否有这个标志,就更新listview所绑定的数据源,通知更新priceAd.notifyDataSetChanged();,也用了网上的建议使用viewHolder进行listview的item复用机制,但还是会出现卡顿的现象,经过分析,原来是listview的item布局嵌套太多,导致刷新的时候,重绘过多,造成卡顿的现象,以下是另一片博客的分

    2022年7月22日
    11

发表回复

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

关注全栈程序员社区公众号