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也就是0x38DelayMS(1);Write_cmd(0x0c);   //显示开关控制,00001100 显示开,光标不显示,光标不闪烁DelayMS(1);Write_cmd(0x06);   //输入方式设置,00000110 I/D=1:写入新数据后光标右移;S=0:显示不移动。DelayMS(1);Write_cmd(0x01);   //清除LCD的显示内容DelayMS(1);
}

关于lcd1602A的使用相关推荐

  1. Arduino 超声波测距 LCD1602A

    arduino 实现超声波测距 涉及模块:四线超声波测距模块,LCD1602A LCD1602连接 实验代码: #include <LiquidCrystal.h> LiquidCryst ...

  2. Arduino 光敏传感器 LCD1602A

    arduino 实现光控灯,光控开关 涉及模块:光敏传感器,LCD1602A 接线图 实验代码: #include <LiquidCrystal.h> LiquidCrystal lcd( ...

  3. STM32F103+ADC采集实时电压+LCD1602A显示

    STM32F103+ADC采集实时电压+LCD1602A显示 前言 代码 前言 刚开始学习STM32,用的是开发板是野火的指南者,这款板子网上资源很多.在学习ADC和LCD部分时,想利用手头仅有的LC ...

  4. arduino连接LCD1602A

    接线图 [caption id="attachment_1183" align="alignnone" width="1108"] LCD1 ...

  5. 树莓派 使用 i2c 连接 LCD1602/LCD1602A 模块

    成品 准备 LCD1602/LCD1602A 模块 IIC LCD1602 拓展板 配置 raspi-config >>> Interfacing Options >>& ...

  6. Arduino DHT11温湿度模块 LCD1602A

    arduino 实现环境温湿度检测 涉及模块:DHT11模块,LCD1602A 接线图 LCD参考前面设计 实验代码 #include <dht11.h> #include <Liq ...

  7. Arduino uno 连接 LCD1602A显示18B20监测温度

    ##Arduino uno 连接 LCD1602A显示18B20测试温度 面包板接线图 代码 #include <LiquidCrystal.h> //引入依赖 #include < ...

  8. 51单片机系列--LCD1602A

    Lcd液晶屏幕带有背光显示,可选择蓝光白光黄光三种背光颜色的屏幕,它更具有美光性,在实际生活中有广泛的应用. 实物图 原理图 RS:1为数据/0为指令:RW:1为读/0为写:E1为数据有效,下降沿执行 ...

  9. Arduino基础入门之十二 LCD1602A初步显示

    一 硬件 1602液晶显示,显示容量为 16×2 个字符,如下图 一共有16个引脚,对应功能如下表: 1602液晶显示各引脚功能 引脚符号 功能描述 VSS 电源地 VDD 电源正极,本实验接5V V ...

最新文章

  1. Android Studio开发RecyclerView遇到的各种问题以及解决
  2. Django通过URL传递参数的4种方法
  3. 讲解Linux服务器被黑解决方法
  4. MySQL — 优化之explain执行计划详解(转)
  5. php join查询,thinkphp5模型join关联查询
  6. STM32 连续操作flash
  7. 开源syslog服务器_开源API网关Kong基本介绍和安装验证
  8. 嵌入式IOEServer终于开发完成,相应的问题作一个系统阐述(WINCE)
  9. linux dhcp服务器配置及小实验
  10. SQL Sever数据库的基本操作和它的建立
  11. 一周信创舆情观察(12.13~12.19)
  12. SMS 短信 API 接口调用
  13. ORACLE RAC安装问题解决记录(5)- 未设置cluster_database导致 ORA-01102 cannot mount database in EXCLUSIVE mode
  14. 这样配置win10亲测不错
  15. Windows11网速慢解决方案
  16. MemSQL、SQLFire、Oracle XE性能对比测试
  17. PHPMyWind支持ppt导入
  18. HTTP状态码常见的状态码!
  19. 2022眼视光展,护眼产品展,眼睛健康展,视力康复展
  20. 喜欢我十九年的男孩结婚了

热门文章

  1. C++文件操作之eof函数问题
  2. sts 如何支持thymeleaf. 自动提示
  3. Spring定时任务@Scheduled注解使用配置方式(cron表达式、fixedRate和fixedDelay)
  4. js交换两个变量的值
  5. html 强制不换行
  6. 深度学习计算框架综述(十三)HVX 计算优化实践—VCAP Hexagon 计算框架介绍
  7. Tak and Cards(dp)
  8. SAP License:再学会计科目
  9. input、textarea等控件设置只读时,按退格键跳转至上级界面的解决方法
  10. 把Fedora 10 的交大源 改成 163源