0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将I2C LCD与STM32F103C8T6连接?

单片机 ? 来源:单片机 ? 2020-05-14 11:01 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在本教程中,我将向您展示如何将I2C LCD与基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口。如果您还记得“将16X2 LCD与STM32F103C8T6接口”的教程,我已经向您展示了将LCD与STM32连接并显示一些信息有多么简单。该项目将非常有趣,因为我将利用I2C通讯与16×2 LCD进行通讯。

介绍

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

我在很多项目中都使用了16×2 LCD显示模块,其中包括8051,基于ARM7的LPC2148,ATmega8,Arduino UNO和PIC等各种微控制器

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

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

如何将I2C LCD与STM32F103C8T6连接?

PCF8574 GPIO扩展器IC来了。它是一个专用模块,用于将16×2 LCD显示屏与所有铃声连接起来,例如,用于LCD对比度调整的10KΩPOT,用于I2C通信的上拉电阻,用于与微控制器连接的I2C引脚等。

您可以简单地将此模块连接到16×6 LCD显示器的背面,然后将I2C引脚连接到STM32 Blue Pill Board的相应I2C引脚。就这么简单。

PCF8574模块

在本“将PCF8574与Arduino接口”教程中,我已经讨论过PCF8574 GPIO扩展器IC。因此,我将不作详细介绍,而只是简要概述。

PCF8574是一个16引脚IC,用作I2C至8位并行IO扩展器。这意味着使用微控制器的I2C通信,可以有效地将微控制器的IO引脚数增加8。

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

另一种类型的模块也基于PCF8574 IC,但其设计方式使其只能与LCD显示器(即16×2甚至20×4 LCD)一起使用。因此,对于该项目,您必须选择后者,因为它具有与连接16X2 LCD显示器有关的所有必要组件和连接。

所需组件

基于STM32F103C8T6 MCU的STM32蓝色药丸板

基于PCF8574 IC的LCD连接器模块

16×2液晶显示器

连接线

USBUART转换器模块(如果通过UART编程

电路图

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

连接说明

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

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

识别PCF8574模块的从站地址

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

您可以参考PCF8574 IC的数据手册以及PCF8574 I2C LCD模块的示意图来计算从机地址。如果您认为这是一个乏味的过程,那么不用担心。还有另一种使用以下代码来计算从站地址的方法。该代码将计算从机地址并将其显示在串行监视器上。

代码

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

为I2C LCD显示编程STM32

在将I2C LCD与STM32F103C8T6 MCU接口之后,我们现在可以编写程序了。为此模块开发了一个名为“ LiquidCrystal_I2C”的特殊库。您可以从以下网站下载该库这个:https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library链接。提取下载的zip文件的内容,并将其放在本地Arduino安装的library文件夹中。

使用从先前代码获得的从站地址,并使用相同的地址初始化LCD模块。还要指定LCD的每行字符数和LCD的行数,即16和2。

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

代码

结论

此处实现了一个简单的项目,用于演示如何将I2C LCD与基于STM32F103C8T6 MCU的Blue Pill Board接口。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9087

    浏览量

    154326
  • STM32
    +关注

    关注

    2296

    文章

    11040

    浏览量

    366812
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1541

    浏览量

    128421

原文标题:如何将I2C LCD与STM32F103C8T6连接 - 【STM32教程】

文章出处:【微信号:aidanpianji,微信公众号:单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32F103c8上做DLQR最优控制算法的C编程资料

    这是我近期做的一个项目--基于STM32F103c8的DLQR控制算法的C编程,涉及DLQR最优控制算法、嵌入式STM32F103编程、CMSIS-DSP库使用。? ??附有完整的程序。
    发表于 07-23 15:30 ?0次下载

    STM32F103C6T6 DCAC逆变器原理图

    STM32F103C6T6 DCAC逆变器原理图
    发表于 05-19 17:48 ?1次下载

    stm32f103c8t6主控芯片无人机原理图

    stm32f103c8t6主控芯片无人机原理图
    发表于 04-29 17:02 ?1次下载

    STM32F103C8T6无法选择外部晶振怎么解决?

    我从网上购入了STM32F103C8T6的核心板,板上有外部晶振。但我使用STM32CubeMX生成项目时,却无法选择外部晶振(如下图)。请问要在哪里设置才能选择外部晶振呀?
    发表于 04-28 07:03

    基于STM32F103C8T6控制多路VL53L0X激光测距传感器

    使用STM32F103C8T6的一条IIC总线控制4个激光测距传感器,我使用的激光测距传感器是亚博智能的 地址相同改不了,我要怎么控制多路,求指点
    发表于 04-23 18:23

    STM32F103C8T6开发板最小系统原理图

    电子发烧友网站提供《STM32F103C8T6开发板最小系统原理图》资料免费下载
    发表于 03-24 09:09 ?67次下载

    stm32f103c8t6没有对flash进行任何操作,flash的内容发生变化了,是哪些原因?

    stm32f103c8t6:没有对flash进行任何操作,flash的内容发生变化了。具体是哪些原因?如何调试排查原因。
    发表于 03-14 07:14

    stm32f103c8t6编码器模式在keil的debug调试时遇到的问题求解

    stm32f103c8t6编码器模式在keil的debug调试时,手动把编码器的计数器置为一个数500(比如计数器溢出值是4000),然后在在让编码器继续开始输出,此时计数器的计数变为原来正常的两倍了,直到计数器溢出一次就变正常了
    发表于 03-14 06:06

    STM32F103C8T6使用CubeIDE烧录运行报硬件错误,相同代码MDK烧录却可以正常运行,为什么?

    自制PCB使用STM32F103C8T6,通过STM32CubeMX生成了CubeIDE项目和MDK项目,编译下载相同的代码CubeIDE不能正常执行,经过调试发现进入了硬件错误循环。而使用MDK烧录却没有任何问题,完美执行代码,请问这是为什么?
    发表于 03-12 06:18

    STM32F103C8T6 PA2无PWM输出怎么解决?

    STM32F103C8T6最小系统PA0/PA1/PA2/PA3为PWM输出控制舵机,配置相同,PA2始终无输出,PA0/PA1/PA3输出正常;用试验软件对STM32F103C8T6
    发表于 02-27 08:13

    基于STM32F103C8T6 ADXL345 加速度传感器的计步器设计指南和代码

    基于 STM32F103C8T6 微控制器和 ADXL345 加速度传感器的计步器设计相关内容,包括 ADXL345 传感器的工作原理、初始化与数据读写操作,以及基于该传感器的计步器算法实现
    的头像 发表于 01-17 17:38 ?2148次阅读

    ADS11与主芯片STM32F030R8T6通信失败的原因?

    ADS11与主芯片STM32F030R8T6通信,通信失败,MCU的IO口模拟I2C(PC10和PC11))通过串联电阻(2个100欧))与ADS11连接,上拉电阻4.7k,电压4.
    发表于 12-10 07:41

    为什么hx711模块在stm32F103C8T6能读取拉力传感器数据,在stm32F407IGHX使用时数据紊乱?

    hx711拉力传感器stm32F103C8T6,该函数能正常运行,读取数据,但是用stm32F407IGHX时,val的值一直在不规则跳变,而且按压拉力传感器也没有改变,接线和配置
    发表于 11-03 22:23

    基于STM32的E01和E01C驱动移植

    实验简介基于STM32F103C8T6的E01系列(nRF24L01P)和E01C系列(SI24R1)的EBYTE官网例程移植。EBYTE官网例程是基于STM8L151编写,本次实验的目的是将该例程
    的头像 发表于 08-30 12:35 ?1092次阅读
    基于<b class='flag-5'>STM32</b>的E01和E01<b class='flag-5'>C</b>驱动移植

    使用C2000 I2C模块连接EEPROM

    电子发烧友网站提供《使用C2000 I2C模块连接EEPROM.pdf》资料免费下载
    发表于 08-27 09:53 ?1次下载
    使用<b class='flag-5'>C</b>2000 <b class='flag-5'>I2C</b>模块<b class='flag-5'>连接</b>EEPROM