与STM32F103C8T6接口I2C LCD |STM32 I2C LCD教程

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

介绍

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

我使用了16×2液晶显示器模块,在相当多的项目中,具有各种各样的微控制器8051.,基于ARM7的LPC2148,ATMEGA8,Arduino UNO和PIC。

LCD模块

这一切都很好,很好,但是对于16×2液晶或甚至较大的20×4液晶显示器甚至是较大的20×4液晶显示器是很好的,用于与微控制器连接很多引脚。即使在4位数据模式下,LCD也需要至少6个微控制器引脚(用于数据引脚的四个引脚,一个用于寄存器选择引脚,一个用于使能引脚,假设操作是写入的,即R / W连接到GND)。

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

如何使用STM32F103C8T6接口I2C LCD?

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

PCF8574 I2C LCD板

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

PCF8574模块

我已经讨论了关于PCF8574 GPIO扩展器IC的“接口PCF8574与Arduino”教程。所以,我不会进入细节,但只是简要概述。

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

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

PCF8574 IO扩展器模块

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

PCF8574 I2C LD.

所需的组件

  • STM32F103C8T6基于MCU的STM32蓝丸板
  • PCF8574 IC基于LCD连接器模块
  • 16×2 LCD显示屏
  • 连接电线
  • USB到UART Converter模块(如果通过UART编程的)

电路原理图

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

具有STM32F103C8T6电路图的连接I2C LCD

连接解释了

这个项目的连接非常简单。只需将PCF8574模块插入到16×2 LCD的背面。在连接之前检查LCD和PCF8574模块的引脚。如果正确连接,PCF8574模块上的I2C引脚将在显示屏的右侧轻松访问。

I2C LCD与Arduino LCD连接

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

识别PCF8574模块的从地址

在编程STM32之前用于接口I2C LCD显示屏,我们需要计算PCF8574模块的从站地址。由于I2C通信中的从站地址非常重要,因此您必须事先了解它。

您可以通过参考PCF8574 IC的数据表以及PCF8574 I2C LCD模块的示意图来计算从地址。如果你认为这是一个繁琐的过程,那么不要担心。还有另一种方法可以使用以下代码计算从地址。此代码将计算从地址并在串行监视器上显示它。

代码

#include

void setup()
{
Wire.Begin();

Serial.Begin(9600);
而(!序列);
}

void循环()
{
字节错误,地址;
int i2cdevices;

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

i2cdevices = 0;
for(地址= 1;地址<127;地址++)
{
Wire.Begintroansmission(地址);
ERROR = WIE.endTransmission();

如果(错误== 0)
{
serial.print(“在地址0x处找到的i2c设备”);
如果(地址<16)
serial.print(“0”);
serial.print(地址,十六进制);
serial.println(“!”);

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

延迟(5000);
}

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

I2C LCD扫描地址

用于I2C LCD显示器的编程STM32

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

使用从上一个代码中获取的从地址并使用相同的LCD模块初始化。还指定每行的字符数和LCD的行数,即第16和2行。

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

代码

#include
#include

//将LCD地址设置为0x3f,为16个字符和2行显示
Liquidcrystal_I2C LCD(0x3F,16,2);

void setup()
{
lcd.begin();
lcd.Backlight();
lcd.setCursor(0,0);
lcd.print(“i2c lcd与”);
lcd.setCursor(0,1);
lcd.print(“stm32f103c8t6”);
}

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

结论

这里实施了一个简单的项目,用于演示如何使用STM32F103C8T6基于STM32F103C8T6 MCU的蓝色丸板接口I2C LCD。

一个反应

发表评论

您的电子邮件地址不会被公开。

电子机器Favicon.
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map