一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)

这篇具有很好参考价值的文章主要介绍了一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、总览

1.1 简介

LCD (Liquid Crystal Display) 液晶显示屏是一种广泛使用的一种字符型液晶显示模块。其中型号1602表示每行显示16个字符、一共2行。LCD1602相比于OLED最大的好处就是不用使用SPI或I2C等任何通信协议,而是由mbed直接将命令传给LCD从而实现控制。

1.2 LCD1602主要参数

LCD1602主要参数如下:

  • 显示字符:16×2个字符;
  • 工作电压:4.5 ~ 5V;
  • 工作电流:2.0mA;
  • 工作温度:-20°C~70°C;
  • 模块最佳工作电压:5.0V;
  • 单个字符尺寸:2.95mm×4.35mm(Width×Height);
  • 引脚:16脚;

先看看长啥样:
一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)

二、管脚介绍

一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)

LCD1602一共有16个管脚,分别是VSS, VDD, V0(VL), RS, RW(R/W), E, D0, D1, D2, D3, D4, D5, D6, D7, A(BLA), K(BLK)。

各引脚功能如下:

引脚号 引脚名称 功能 电源连接
1 VSS 电源地(接地) 0V
2 VDD 电源正极 5V
3 V0 液晶显示偏压(调节对比度),高电平时对比度最弱,低电平时对比度最高,可以通过外接电位器调整对比度 0V
4 RS 数据/命令选择(选择写入命令还是数据),高电平时选择数据寄存器、低电平时选择指令寄存器 /
5 R/W 读/写选择(选择读出还是写入) *0V
6 E 使能信号 (ENABLE),由高电平跳变为低电平时,液晶模块读入并执行命令 /
7 D0 低位双向数据传输线 /
8 D1 低位双向数据传输 /
9 D2 低位双向数据传输 /
10 D3 低位双向数据传输 /
11 D4 高位双向数据传输 /
12 D5 高位双向数据传输 /
13 D6 高位双向数据传输 /
14 D7 高位双向数据传输 /
15 A 背光源正极 5V
16 K 背光源负极 0V

*注:通常情况在简单使用中无需向LCD中写入数据,此时只需将R/W管脚一直置于0V即可。

三、时序图

3.1 写操作时序

一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)

3.2 读操作时序

一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)

3.3 时序时间参数

一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)

四、命令与数据(以使用4位数据模式为例)

4.1 前期准备

首先我们要搞清楚LCD1602的接受命令的原理:每当使能引脚(E)发生一个跳变(高电平变为低电平)时,便会接受一条命令或数据。

这里我们需要弄清楚其两种工作模式:4位数据模式与8位数据模式。4位数据模式使用D4 ~ D7,每次传输 4bits;8位数据模式使用D0 ~ D7,每次传输 8bits。一条命令或数据通常占8bits,所以在4位数据模式下,传输一条命令需要传输两次,即总共需要两次跳变。相比之下,4位数据模式,最大的好处便是可以省下4个引脚 (毕竟有些单片机引脚真的太少啦 !)

4.2 写入命令

命令(command)指通过一系列二进制数据来调整LCD相关参数及配置其基本显示模式。常见的包括清屏、设置数据模式、控制光标开关、光标闪烁、控制屏幕显示等。根据以上所说,我们知道每一条命令都是8位比特。

所有命令控制如下:

——命令表

一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)
其中(1)~(6)是主要需要设置的,其余不需要操作。在4位数据模式下
例:如果我们需要写入数据后画面不动;显示开、光标关、闪烁关;光标右移,4位数据模式、两行显示、5*7点阵;我们就需要写入如下命令(D0~D7):

(3):0000 0110(0x6)
(4):0000 1100(0x0c)
(5):0001 0100(0x14)
(6):0010 1000(0x28)

4.3 写入数据

同命令一样,每一个数据(字符)也是通过8比特告知LCD的。LCD遵循的标准为ASCII,同时也可以通过下图查阅:

——字模库

一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)
该表 行是低四位,列是高四位。想要显示哪个字符,只需查表,换算为十六进制,写入LCD1602即可。使用4位数据模式时,先向LCD写入高四位(upper 4 bits),再写入低四位(lower 4 bits)。

五、模块化编程(以使用4位数据模式为例)

5.1 基础函数

5.1.1 触发发送函数【void toggle_enable()】

不论命令还是数据,我们在向 LCD 发送时都需要使能引脚有一个高电平向低电平的跳变。

DigitalOut E(?);	// 使能信号

void toggle_enable()
{
    E = 1;	//拉到高电平
    thread_sleep_for(10);	// 保持 10ms
    E = 0;	//拉到低电平
    thread_sleep_for(10);	// 保持 10ms
}

5.1.2 检测忙函数【void LCD_Check_Busy()】

先解释一下为什么需要这个函数:单片机和 LCD1602 的工作速度存在差异,单片机速度快,所以单片机向 LCD1602 传数据时,LCD1602 可能正在处理上一次的数据,处在忙状态,为了防止数据丢失或出错,所以单片机就需要等待,待 LCD1602 处理完时在进行下一次数据的传送。

/**********************************************
LCD_Data 与 0x80 进行AND运算,判断 bit7 位状态:
若 LCD_Data 的 bit7 位是 0,则 LCD 不忙;
若 LCD_Data 的 bit7 位是 1,则 LCD 忙;
***********************************************/

DigitalOut RS(?);
DigitalOut E(?);	// 使能信号
DigitalOut RW(?);
BusOut data(?, ?, ?, ?);	// D4 ~ D7传输数据

void LCD_Check_Busy()
{
    unsigned char temp;
    data = 0xff; // 十六进制:1111 1111
    RS = 0;      // 0 指令
    RW = 1;      // 1 读

    do
    {
        E = 1;             // 拉高
        temp = data;       // 将 LCD 状态保存在 temp 中,用于判忙
        E = 0;             // 负跳变使能
    } while (temp & 0x80); // 结果为 1,LCD 忙,继续循环;结果为 0,LCD不忙,可以进行后面的操作
}

5.2 封装使用函数

5.2.1 写入命令函数【void display_to_COM(char value)】

写入命令函数主要用于发送命令 value 中的内容;

void display_to_COM(char value)
{
    RS = 0;	// 设置为低电平来写命令
    RW = 0;	// 设置为写
    data = (value) >> 4;	// 数值右移4位,发送高四位
    toggle_enable();		// 发送
	data = (value);			// 数值跟0x0F相与,发送低四位
    toggle_enable();		// 发送
}

5.2.2 写入数据函数【void display_to_LCD(char value)】

写入命令函数主要用于发送数据 value 中的内容;

void display_to_LCD(char value)
{
    RS = 1;	// 设置为高电平来写数据
    RW = 0;	// 设置为写
    E = 0;
    data = (value) >> 4;	// 数值右移4位,发送高四位
    toggle_enable();		// 发送
	data = (value);			// 数值跟0x0F相与,发送低四位
    toggle_enable();		// 发送
}

5.2.3 初始化函数【void LCD_init()】

在 LCD1602 进行显示前,需要进行输入方式设置,显示开关设置,光标、画面移位设置,功能设置等,确定 LCD1602 的工作方式。

void LCD_init()
{
    LCD_Check_Busy();
    RS = 0;
    E = 0;
    RW = 0;
    display_to_COM(0x01);	// 清屏
    display_to_COM(0x02);	// 显示模式,光标复位
    display_to_COM(0x0);
    display_to_COM(0x0c);	// 显示开、光标关、闪烁关(一般做带键盘输入的才加入光标,常用的计量显示不显示光标)
    display_to_COM(0x28);	// 4位数据模式、两行显示、5*7点阵
    display_to_COM(0x0);
    display_to_COM(0x01);	// 清屏
}

5.3 头文件 LCD.h

在main.cpp中就主要使用最后三个函数,所以在头文件 LCD.h 中只需要声明这三个函数就好啦!

#ifndef LCD_H
#define LCD_H
#include "mbed.h"

void LCD_init(void);
void display_to_LCD(char value);
void display_to_COM(char value);
#endif

六、参考资料

1、Guan_qiqi:快速掌握——LCD1602液晶显示(多组实验,附带源程序)
2、m0_46195580:STM32入坑(10)STM32驱动1602显示模块
3、Z小旋:【常用传感器】LCD1602液晶工作原理详解及例程代码文章来源地址https://www.toymoban.com/news/detail-450618.html

到了这里,关于一文读懂使用STM32驱动 LCD1602 液晶显示屏(基于Mbed Studio平台)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP32设备驱动-I2C-LCD1602显示屏驱动

    LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。 通过前面的实例我们知道,并口方式连接LCD1602将占用一定数量的GPIO口,在

    2024年02月07日
    浏览(54)
  • STM32显示外设集--液晶显示模块(LCD1602)

    一、介绍 产品图 二、 资源获取 欢迎关注微信公众号--星之援工作室 发送(LCD1602) 三、线路连接图 四、代码编写 LCD1602.h LCD1602.c main.h 五、参考 LCD1602是一种字母数字液晶显示模块,可以显示16个字符和2行文本,因此被命名为LCD1602。它通常用于各种电子项目,特别是

    2024年02月11日
    浏览(49)
  • STM32-基本知识梳理10-FSMC控制ST7789V-LCD液晶显示屏

    一、ST7789V-LCD液晶显示 1,一种计算机的I/O设备,即输入输出设备; 2,数据传递结构,光线的传递通过偏光片进行调整,最终传递到滤光片上,进而不同RGB数据点,即像素点; 3, LCD显示器的关键参数 ①像素:显示器的像素指它成像最小的点 ②分辨率:像素点的个数的乘积

    2024年02月12日
    浏览(47)
  • 使用STM32微控制器驱动LCD1602显示器

    驱动LCD1602显示器是嵌入式系统常见的任务之一,而STM32微控制器因其灵活性和丰富的外设而成为了广泛采用的解决方案。 在这篇文章中,我们将探讨如何使用STM32微控制器来驱动LCD1602显示器。我们将从STM32的GPIO配置、延时函数以及LCD1602的初始化和写入数据等方面展开讨论,

    2024年04月17日
    浏览(43)
  • Proteus仿真-LCD1602液晶屏使用方法(驱动一)

    一、硬件链接 在元件库中搜索LM016即可找到LCD1602液晶屏。 按下图方式链接单片机和屏幕。 二、软件驱动代码 三、示例程序

    2024年02月12日
    浏览(41)
  • 【STM32篇】驱动LCD显示屏

    本次使用的硬件设备为野火的霸道V2开发板,显示器控制芯片型号为ILI9341,实际型号为ST7789V。在编写代码时参考的是ILI9341数据手册,二者差别不大,都是240*320分辨率。         ILI9341是一个用于TFT液晶显示的单芯片控制驱动器,具有262144色的240RGB x 320像素显示解决方案。

    2024年02月12日
    浏览(46)
  • 液晶LCD1602使用介绍

    液晶LCD1602简介       LCD1602 液晶也叫1602字符型液晶模块,LCD1602液晶是一种专门用来显示字母、数字、符号的点阵型液晶模块。LCD1602液晶是由若干个5x7点阵字符位组成,每个点阵字符位都可以显示一个字符(包括字母、数字、符号),一共可以显示16x2个字符 。LCD1602液晶的每

    2024年01月16日
    浏览(53)
  • STM32 使用LCD12864显示屏(串行方式)

    12864LCD液晶显示模块是一款4位/8位并行、2线或3线接口方式,内部含有国际一级、二级简体中文字库的图形点阵液晶模块。显示分辨率为128 64,内置8198个16 16点汉字,和128个16*8点ASCII字符集。 CS片选信号 (如果只有一款屏,可以将CS直接接到VCC上,实现两线通讯。) SID数据传

    2024年02月05日
    浏览(53)
  • Stm32F103RC驱动ili9488 LCD TFT 3.5寸液晶屏

    芯片:stm32f103rct6 3.5寸屏幕驱动:ili9488 驱动方式:8080 接口方式:16位并口 LCD屏幕 Stm32引脚 LCD_CS PC9 LCD_RS PC8 LCD_WR PC7 LCD_RD PC6 D0-D15 PB0~15

    2024年02月15日
    浏览(45)
  • LCD—STM32液晶显示(2.使用FSMC模拟8080时序)

    目录 使用STM32的FSMC模拟8080接口时序 FSMC简介 FSMC NOR/PSRAM中的模式B时序图 用FSMC模拟8080时序 重点:HADDR内部地址与FSMC地址信号线的转换(实现地址对齐)         ILI9341的8080通讯接口时序可以由STM32使用普通I/O接口进行模拟,但这样效率太低,STM32提供了一种特别的控制方

    2024年02月17日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包