LCD1602液晶显示模块

  • 一、初识LCD602
    • 1.1.实物图
    • 1.2.引脚图
    • 1.3.引脚功能说明
  • 二、显示位置
  • 三、显示内容
  • 四、指令集
  • 五、工作时序
    • 5.1.写操作时序
    • 5.2.读操作时序
  • 六、编程思路
    • 6.1.写数据
    • 6.2.写指令
    • 6.3.初始化
    • 6.4.读数据(读忙信号)

声明:本文仅供学习交流,部分资料来源于网络,如有侵权联系删除!

一、初识LCD602

LCD1602(Liquid Crystal Display), 每行可显示16个字符共2行。

1.1.实物图

1.2.引脚图

1.3.引脚功能说明

Vss:电源接地。
VDD:电源正极。
VL:液晶显示偏压。可以接0~5V调节屏幕的对比度,电压越高对比度越低,对比度越高显示效果越鲜艳。
RS:数据/命令选择端。RS=1时选择数据寄存器,RS=0时选择指令寄存器
RW:读写选择端。RW=1时读操作(读取LCD内数据),RW=0时写操作(向LCD写入数据)
E:使能信号。当E为下降沿(从高电平到低电平)时LCD执行写入的指令
D0~D7:8位双向数据总线。
A:背光源正极
K:背光源负极

二、显示位置

  • LCD1602内置了一个80字节的DDRAM,用来寄存需要显示的内容。CGROM存放了160个不同的字符图形,下面会有详细介绍。

  • DDRAM虽然可以存放80个显示地址,但是LCD1602每行只能显示前16个地址上的字符,一般只会用到每行的前16个地址。
  • 如果想要在第一行第二列显示字符’A’,该怎么选择这个地址呢?
    这里有一个容易出错的点,第一行第二列的地址是01H,A的代码为41H。这时我们向DDRAM的01H写入数据41H时,并不能得到想要的效果。选择显示位置时需要在01H的基础上加上80H,因为向DDRAM写入数据时,数据总线最高位DB7始终保持为1。这里可以参考指令集中的指令8

三、显示内容

  • LCD1602内置一个字符存储器CGROM,存放了192个点阵字符图形。
  • 这些字符的二进制代码与计算机中的大多一致,我们在用C语言编程时也可以直接写P0=‘A’.

四、指令集

  • LCD1602内部控制器共有11条控制指令,读/写操作、屏幕、光标操作都是通过指令编程来实现的,通过DB7~DB0的8位数据传输数据和指令。
    1、清屏指令。
    功能:清除DDRAM(清显示)和AC值(光标复位)

    2、光标复位指令。
    功能:AC值设为00H(光标复位),DDRAM内容不变。

    3、输入模式设置指令。
    功能:I/D用来控制DDRAM地址+1或-1,SH用来控制显示画面左移或右移。
    I/D=1时,光标右移且DDRAM地址+1。
    I/D=0时,光标左移且DDRAM地址-1。
    读操作时或SH=0时显示不移位。
    写操作且SH=1时,如果I/D=1,显示左移,I/D=0,显示右移

    4、显示开关控制指令。
    功能:D控制显示开关,C控制光标开关,B控制光标闪烁。
    D=1 显示开 D=0 显示关
    C=1 光标开 C=0 光标关
    B=1 光标闪烁 B=0 光标静止
    5、光标、画面位移指令。
    功能:S/C=1选择屏幕,S/C=0选择光标。
    R/L=1右移,R/L=0左移。
    二者分别为
    00:光标左移,AC值-1
    01:光标右移,AC值+1
    10:屏幕左移,光标不动
    11:屏幕右移,光标不动

    6、功能设置指令。
    功能:选择数据总线位数、显示行数以及点阵大小。
    DL控制数据线位数,N控制显示行数,F控制点阵大小。
    DL=1选择8位数据线,N=1选择2行显示,F=1选择511点阵。
    DL=0选择4位数据线,N=0选择1行显示,F=0选择5
    8点阵。

    7、CGRAM地址设置指令。
    功能:用户自定义字符。

    8、DDRAM地址设置指令。
    功能:告诉DDRAM在哪个位置显示字符。
    注意DB7始终为1,无论要显示什么字符DB7位都要保持为1。
    即起始地址 = 00H+1000 0000(80H)

    9、读忙信号及AC值。
    功能:当BF=1,不能接收数据或指令。
    BF=0,可以接收数据或指令

    10、写数据。
    功能:RS=0 RW=0 E=下降沿 DB7~DB0=指令。
    RS=1 RW=0 E=下降沿 DB7~DB0=数据。

    11、读数据。
    功能:RS=0 RW=1 E=1 读状态,RS=1 RW=1 E=1 读数据
    当RS和RW都为1时可以读忙信号。

五、工作时序

5.1.写操作时序

5.2.读操作时序

六、编程思路

6.1.写数据

 write_data(unsigned char show_data){read_busy_flag() // 判忙RS = 1;  // RS为高电平,选择数据寄存器RW = 0;  // RW为低电平,写操作E = 0;   // E使能端拉低Px = show_data; // 将数据赋给8位数据总线DB0-DB7,这里的Px为LCD上8位数据总线所连接的单片机IO端口delay(); // 延时E = 1;  // 使能端拉高delay(); // 延时E = 0;  // 使能端拉低,下降沿有效,数据写入DDRAM}

6.2.写指令

 write_cmd(unsigned char cmd){read_busy_flag(); // 判忙RS = 0; // RS为高电平,选择指令寄存器RW = 0; // RW为低电平,写操作Px = cmd; // 将指令赋给8位数据总线DB0-DB7delay(); // 延时E = 1;  // 使能端拉高delay(); // 延时E = 0;  // 使能端拉低,下降沿有效。}

6.3.初始化

 lcd_init(){write_cmd(0x06)    // 指令5,屏幕不动,地址+1write_cmd(0x38);  // 指令6,16*2,5*8点阵8位数据write_cmd(0x0c);  // 指令4,显示开光标关write_cmd(0x01);  // 指令1,清屏}

6.4.读数据(读忙信号)

 read_busy_flag(){unsigned char flag; // flag为LCD状态标志Px = 0xFF;          // 给8位数据总线赋值11111111RS = 0;             // 选择指令寄存器,读取LCD状态字RW = 1;             // 读操作do{E = 1;   // 使能端拉高flag = Px; // 读取LCD状态E = 0; // 使能端拉低} while(flag & 0x80); // 如果DB7依然为1,表示忙,直到DB7为0时跳出}

LCD1602液晶显示模块学习笔记相关推荐

  1. NOKIA5110液晶显示模块学习笔记

    现在我们的嵌入式课程设计要求做一个超声波测距的倒车雷达,总体不是很难,但是其中要求的NOKIA显示屏从来没有接触过,在CSDN上也很难找到免费的比较完整的资料,因此就想把这部分的学习过程记录下来,分享 ...

  2. Arduino模块学习笔记(一)—GPS模块的使用

    Arduino模块学习笔记(一)--GSP模块的使用 文章目录 Arduino模块学习笔记(一)--GSP模块的使用 所需组件 一.模块使用介绍 1.GPS模块(在室内时,一般获取不到位置信息) 2. ...

  3. python模块学习笔记

    python模块学习笔记 1.Python自动发送邮件smtplib 2.制作二维码图片MyQR 3.绝对值模块math 4.CSV模块 5.openpyxl 模块,操作Excel文件 ExcelMa ...

  4. cma linux 起始地址,CMA模块学习笔记

    CMA模块学习笔记 作者:linuxer 发布于:2017-6-28 18:29 分类:内存管理 前言 本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文. 学习的 ...

  5. Micro Python 入门教程-pyboard V1.1控制LCD1602液晶显示模块

    11. LCD1602液晶显示模块 11.1 初识LCD1602液晶模块 LCD1602什么意思,LCD表示Liquid Crystal Display,1602表示一行可以显示16个字符,一共有两行 ...

  6. 51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块

    (用LCD1602做个温度显示装置) https://zhuanlan.zhihu.com/p/145666965​zhuanlan.zhihu.com LCD1602液晶显示模块 原理部分 引脚说明 ...

  7. Python模块之Pandas模块学习笔记

    目录 一.模块的安装 二.数据结构 1. DataFrame的创建 2. DataFrame索引的修改 3. DataFrame数据信息查看 三.文件的读取和写入 1. 读取 2. 写入 四. 数据的 ...

  8. LCD1602液晶显示模块

    LCD1602 本工程的源代码已调试成功,共大家一起分享https://download.csdn.net/download/weixin_45633810/12393393 字符型液晶显示模块是一种 ...

  9. IPy-IPv4和IPv6地址处理模块学习笔记

    在日常网络规划中,会有很多关于IP地址的分配规划问题,如果是手动分配,在量很大的情况下,容易出错.而利用IPy这个python模块,可以很容易实现对iP地址的分配等操作. 以下是对IPy模块学习的一个 ...

最新文章

  1. 计算机窗口还原,win8系统找回计算机窗口“回收站”的还原办法
  2. java方法区内存泄露_深入理解java虚拟机-第二章:java内存区域与内存泄露异常...
  3. 人群分析综述--Crowd Scene Understanding from Video: A Survey
  4. 官宣:恭喜 ChaosBlade 项目进入 CNCF Sandbox
  5. boost::contract模块日历的测试程序
  6. 软件工程-东北师大站-第九次作业(PSP)
  7. firefox插件 Tab Utilities 个性化设置备份
  8. HBase + SpringBoot分布式文件存储实战(一)-简介
  9. 各种排序算法的实现直接插入排序
  10. jupyter运行时in[*]是什么原因_变頻器的停止按钮按下时,电机反而不受控制加速运行是什么原因?...
  11. LinkedHashMap+Iterable实现LRU算法(简单易懂)
  12. 计算机怎么安错误,电脑安装iTunes提示安装程序发生错误如何解决
  13. c语言读取三菱plc数据,c#通过网线读取三菱PLC数据
  14. 任意图像转素描:Python分分钟实现
  15. apm系统服务器,apm系统
  16. 计算机二级页眉页脚的知识,轻松解决计算机二级之页眉页脚不再是问题-页眉页脚的设置...
  17. 给自己的2T硬盘进行分区的过程。
  18. PLC|MCU|DCS|模拟信号|隔离变送器|0-5V|0-10V|4-20mA|0-1V|0-75mV|0-30mV|0-1mA|0-20mA|隔离放大器|采集隔离模块应用原理
  19. sqoop导数到各个数据库,可以套用
  20. 官方原版系统、纯净版系统和Ghost版系统的区别在哪里?

热门文章

  1. springboot自动创建Oracle,一键生成项目 SpringBoot项目代码生成器 支持Oracle 支持MySql...
  2. 小米手机不用html,小米手机不用三星AMOLED屏幕的真相
  3. CRM客户关系管理系统答辩技术介绍(简答)
  4. android 阅读pdf 文件,Android实如今线阅读PDF文件
  5. CGMH: Constrained Sentence Generation by Metropolis-Hastings Sampling
  6. 明日边缘 Edge of Tomorrow (2014)旋风下载
  7. 拒绝同质化,主题酒店大势所趋
  8. qt 设置背景图片方法
  9. ubuntu15.10下安装wifi破解软件minidwep-gtk
  10. 5月6日—5月9日三年级课程新