具有STM32F103C8T6 |连接I2C LCD |STM32 I2C LCD教程

在本教程中,我将向您展示如何使用STM32F103C8T6基于STM32蓝色丸板的I2C LCD接口I2C LCD。如果您记得“使用STM32F103C8T6的接口16x2 LCD”教程,我已经向您展示了将LCD与STM32连接的简单,并显示一些信息。该项目将有趣,因为我将利用I2C通信与16×2液晶显示器进行通信。

介绍

像非常流行的16×2液晶显示屏一样显示小型字母数字,是非常有用的小组件,因为您可以使用它们来显示与项目相关的一些重要信息。LCD上显示的信息可以与项目本身相关,例如从温度传感器或特殊数据等读取等调试消息或错误代码。

我使用了16×2 LCD显示模块,在相当多的项目中,具有各种微控制器,如8051,ARM7的LPC2148,Atmega8,Arduino Uno和Pic。

液晶显示模块

这一切都很好,但一个小问题16×2 LCD甚至更大的20×4 LCD显示器是它需要很多针与微控制器接口。即使在4位数据模式下,LCD需要至少6个微控制器引脚(4个数据引脚,一个寄存器选择引脚和一个使能引脚,假设操作是写,即R/W连接到GND)。

使用微控制器的六个引脚连接到角色显示屏似乎并不重要,但如果您的项目非常复杂,那么MCU的每个PIN似乎都很重要。

如何使用STM32F103C8T6接口I2C LCD?

这里有PCF8574 GPIO扩展器IC到救援。它是一种专用模块,用于连接16×2液晶显示器,其中包含所有铃铛和吹口哨,即10kΩ罐,用于LCD的对比调整,用于连接I2C通信的上拉电阻,用于连接微控制器的I2C引脚等。

PCF8574 I2C LCD板

您可以简单地将此模块安装在16×6 LCD显示屏的后面,并将I2C引脚连接到STM32蓝丸板的相应I2C引脚。这很简单。

PCF8574模块

我已经在“Arduino接口PCF8574 GPI亚博彩票下载O Expander IC”教程中讨论过PCF8574 GPIO Expander IC。所以,我就不详细讲了,只是简单概述一下。

PCF8574是一个16引脚IC,充当I2C到8位并行IO扩展器。这意味着使用来自微控制器的I2C通信,您可以通过8,有效地增加微控制器的IO引脚数8。

购买PCF8574模块时要记住的重要一点是市场上有两种类型。一个是通用IO扩展器模块,可用作IO扩展器。

PCF8574 IO扩展器模块

另一种类型的模块也基于PCF8574 IC,但它的设计是这样的方式,即它可以仅使用LCD显示器I.16×2甚至20×4液晶显示器。因此,对于此项目,您必须选择后者,因为它具有与接口16x2 LCD显示器相关的所有必要组件和连接。

PCF8574 I2C LD

需要组件

  • 基于STM32F103C8T6单片机的STM32蓝丸板
  • PCF8574 IC基于LCD连接器模块
  • 16×2液晶显示器
  • 连接电线
  • USB到UART转换器模块(如果通过UART编程)

电路图

以下图像显示了基于STM32F103C8T6 MCU的STM32蓝丸板的接口I2C电路图。

具有STM32F103C8T6电路图的连接I2C LCD

连接解释了

这个项目的连接非常简单。只需将PCF8574模块插入到16×2 LCD的背面。连接前请先检查LCD和PCF8574模块的引脚。如果连接正确,PCF8574模块上的I2C引脚将很容易在显示器的右侧找到。

I2C液晶显示器与Arduino液晶显示器连接

现在,将PCF8574模块的SDA引脚连接到STM32的PB7,并将模块的SCL引脚连接到STM32的PB6。将PCF8574模块的VCC和GND引脚连接到5V和GND。这完成了必要的连接。

标识PCF8574模块的从端地址

在对STM32进行I2C液晶显示接口编程之前,我们需要计算PCF8574模块的从站地址。由于从属地址在I2C通信中是非常重要的,你必须事先知道它。

可以参考PCF8574 IC的数据表和PCF8574 I2C液晶模块的原理图来计算从站地址。如果你认为这是一个繁琐的过程,那么不要担心。还有另一种计算从属地址的方法,即使用以下代码。这段代码将计算从地址,并显示在串行监视器上。

代码

#include

无效的设置()
{
Wire.begin();

Serial.begin (9600);
而(串行);
}

void循环()
{
字节错误,地址;
INT I2CDEVICES;

serial.println(“扫描i2c设备......”);

i2cdevices = 0;
for(地址= 1;地址<127;地址++)
{
Wire.Begintroansmission(地址);
错误= wire.endtransmission();

if(错误== 0)
{
系列。打印(" I2C设备找到地址0x ");
If (address < 16)
并同时(“0”);
serial.print(地址,十六进制);
serial.println(“!”);

i2cdevices ++;
}
否则如果(错误== 4)
{
系列。print("地址0x未知错误");
If (address < 16)
serial.print(“0”);
serial.println(地址,十六进制);
}
}
if (I2CDevices == 0)
serial.println(“找不到i2c设备\ n”);
别的
以“* * * * \ n”);

延迟(5000);
}

在我的情况下,从地址为0x3f。因此,我必须在实际程序中使用此从地址为STM32。

I2C LCD扫描地址

用于I2C LCD显示器的编程STM32

使用STM32F103C8T6 MCU接口I2C LCD后,我们现在准备写入该程序。有一个名为“LiquidCrystal_I2C”的特殊库,为此模块开发。您可以从中下载此库链接。解压缩下载的压缩文件的内容,并将它们放在本地Arduino安装的libraries文件夹中。

使用我们从前面的代码中得到的从属地址,用相同的初始化LCD模块。还要指定每行字符数和LCD的行数,即16和2。

使用库的“打印”功能,您可以在LCD上显示您想要的字符。

代码

#include
# include < LiquidCrystal_I2C.h >

//设置LCD地址为0x3F, 16字符2行显示
LiquidCrystal_I2C lcd(0x3F, 16, 2);

无效的设置()
{
lcd.begin();
lcd.backlight ();
lcd.setCursor(0,0);
lcd.print(“i2c lcd与”);
lcd.setCursor(0,1);
lcd.print(“stm32f103c8t6”);
}

void循环()
{
//什么都不做......
}

结论

基于STM32F103C8T6单片机的I2C液晶显示与蓝丸板的接口实现了一个简单的项目。

留下一个回复

您的电子邮件地址不会被公开。必需的地方已做标记*