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

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

3天内不再提示

如何将LCD与STM32F103C8T6 STM32开发板连接并编程

科技观察员 来源:circuitdigest 作者:阿斯文斯·拉吉 2022-11-09 16:18 次阅读

对于任何微控制器项目,将显示单元与它连接将使项目更容易,并吸引用户与之交互。微控制器最常用的显示单元是 16×2 字母数字显示器。这些类型的显示器不仅可用于向用户显示重要信息,还可以在项目的初始开发阶段充当调试工具。因此,在本教程中,我们将学习如何将16×2 LCD显示器与STM32F103C8T6STM32开发板连接,并使用Arduino IDE对其进行编程

所需材料

STM32蓝丸开发板

16×2 液晶显示屏

FTDI 程序员

连接线

液晶显示器

16×2 点阵 LCD 显示屏简介

如前所述,Energia IDE提供了一个漂亮的库,使接口变得轻而易举,因此不一定要了解显示模块的任何信息。但是,展示我们正在使用的东西不是很有趣吗!!

名称 16×2 意味着显示器有 16 列和 2 行,它们一起 (16*2) 形成 32 个框。一个盒子在下图中看起来像这样

poYBAGNrYl6AEsERAAAHJD9etI0942.jpg

单个框有 40 个像素(点),矩阵顺序为 5 行 8 列,这 40 个像素共同构成一个字符。同样,可以使用所有框显示 32 个字符。现在让我们看一下引脚排列。

pYYBAGNrYl-AHTB9AAApmrSZMRU009.png

LCD共有16个引脚,如上图所示,它们可以分为四组,如下所示

源引脚(1、2 和 3):这些引脚为显示器提供功率和对比度水平

控制引脚(4、5 和 6):这些引脚设置/控制LCD接口IC中的寄存器(更多信息可在下面的链接中找到)

数据/命令引脚(7 至 14):这些引脚提供LCD上应显示哪些信息的数据。

LED 引脚(15 和 16):如果需要,这些引脚用于照亮LCD的背光(可选)。

电路图和连接

16*2点阵LCD与STM32F103C8T6 STM32蓝色药丸板接口的电路图如下所示。它是使用弗里辛软件制作的。

pYYBAGNrYmSARdUXAAC9pnttl8Y503.png

如您所见,完整的连接是通过面包板进行的。我们需要一个FTDI板来对STM32微控制器进行编程。因此,与我们之前的教程类似,我们将FTDI板连接到STM32,FDTI编程器的Vcc和接地引脚分别连接到STM32的5V引脚和接地引脚。这用于为STM32板和LCD供电,因为两者都可以接受+5V。FTDI 板的 Rx 和 Tx 引脚连接到 STM9 的 A10 和 A32 引脚,因此我们可以直接对电路板进行编程,而无需引导加载程序。

接下来,液晶屏必须连接到STM32板。我们将在4位模式下使用LCD,因此我们必须将4个数据位引脚(DB4至DB7)和两个控制引脚(RS和EN)连接到STM32板,如上面的STM32F103C8T6 LCD接口电路图所示。此外,下表将帮助您建立连接。

液晶屏引脚编号 液晶屏引脚名称 STM32 引脚名称
1 地面(锭) 地面 (G)
2 可变资本公司 5V
3 维伊 地面 (G)
4 寄存器选择 (RS) PB11
5 读/写 (RW) 地面 (G)
6 启用 (英文) PB10
7 数据位 0 (DB0) 无连接(常闭)
8 数据位 1 (DB1) 无连接(常闭)
9 数据位 2 (DB2) 无连接(常闭)
10 数据位 3 (DB3) 无连接(常闭)
11 数据位 4 (DB4) PB0
12 数据位 5 (DB5) PB1
13 数据位 6 (DB6) 电脑13
14 数据位 7 (DB7) 电脑14
15 正极指示灯 5V
16 负极指示灯 地面 (G)

连接完成后,我们可以打开Arduino IDE并开始编程。

使用 Arduino 对 LCD 的 STM32 进行编程

如本教程所述,我们将使用Arduino IDE对STM32微控制器进行编程。但是,默认情况下,Arduino IDE不会安装STM32板,因此我们必须下载一个软件包并为此准备Arduino IDE。

一旦STM32板卡安装在Arduino IDE中,我们就可以开始编程了。该程序与Arduino板非常相似,唯一会改变的是引脚名称,因为STM32和Arduino的符号不同。完整的程序在本页末尾给出,但为了解释该程序,我将其拆分为有意义的小片段,如下所示。

使用Arduino对我们的微控制器进行编程的一个显着优势是Arduino为几乎所有著名的传感器和执行器提供了现成的库。因此,在这里,我们通过包含LCD库来启动我们的程序,这使编程变得更加容易。

#include // include the LCD library

在下一行中,我们必须指定已将LCD显示控件和数据线连接到STM32的GPIO引脚。为此,我们必须检查我们的硬件,为方便起见,您还可以参考顶部给出的表格,其中列出了 LCD 与 STM32 的 GPIO 引脚的引脚名称。提到引脚后,我们可以使用液晶功能初始化LCD。我们还将我们的LCD命名为“LCD”,如下所示。

const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; //mention the pin names to with LCD is connected to

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //Initialize the LCD

接下来,我们进入设置功能。在这里,我们首先提到我们使用的LCD类型。由于它是 16*2 LCD,我们使用 lcd.begin(16,2) 行。void 设置函数中的代码只执行一次。因此,我们使用它来显示一个介绍文本,该文本在屏幕上显示 2 秒钟,然后被清除。要提及文本必须出现的位置,我们使用函数lcd.setcursor,并使用lcd.print函数打印文本。例如,lcd.setCursor(0,0) 会将光标设置在我们打印“接口 LCD”的第一行和第一列,函数 lcd.setCursor (0,1) 将光标移动到第二行第一列,我们在其中打印“CircuitDigest”行。

void setup() { lcd.begin(16, 2);//We are using a 16*2 LCD lcd.setCursor(0, 0); //At first row first column lcd.print("Interfacing LCD"); //Print this lcd.setCursor(0, 1); //At secound row first column lcd.print("-CircuitDigest"); //Print this delay(2000); //wait for two secounds lcd.clear(); //Clear the screen }

显示介绍文本后,我们通过创建延迟来保持程序 2 秒,以便用户可以阅读介绍消息。此延迟由行延迟 (2000) 创建,其中 2000 是以磨机秒为单位的延迟值。延迟后,我们使用lcd.clear()函数清除LCD,该函数通过删除LCD上的所有文本来清除LCD。

最后在空循环中,我们在第一行显示“STM32 – Blue Pill”,在第二行显示秒值。秒的值可以从 millis() 函数中获得。millis() 是一个计时器,从 MCU 通电时开始递增。该值以毫秒的形式出现,因此我们在将其显示在LCD上之前将其除以1000。

void loop() {

lcd.setCursor(0, 0); //At first row first column

lcd.print("STM32 -Blue Pill"); //Print this

lcd.setCursor(0, 1); //At secound row first column

lcd.print(millis() / 1000); //Print the value of secounds

}

将程序上传到STM32F103C8T6板

按照电路图中所示进行连接,并在Arduino IDE上使用下面给出的代码。转到工具并确保在入门教程中选择了正确的板。此外,在上传程序之前,请确保将启动 0 跳线设置为 1,如下图所示,然后按重置按钮。按下上传按钮时,应上传代码,消息将显示在LCD上,如下图所示。

pYYBAGNrYmaABe2uAADR_DQxbFA928.jpg

在工作模式下验证输出

如上一段所述,您应该能够在上传代码后立即注意到输出。但是下次上电时,该程序将不起作用,因为电路板仍处于编程模式。因此,一旦程序上传,启动 0 上的跳线应更改回 0 位置,如下所示。此外,由于程序已经上传到STM32板,我们不需要FTDI板,整个设置可以通过STM32板的micro-USB端口供电,如下所示。

pYYBAGNrYmiATrSBAADKff-HSqw059.jpg

这只是一个简单的接口项目,以帮助将LCD显示器与STM32板一起使用,但您可以进一步使用它来构建很酷的项目。希望您理解本教程并从中学到一些有用的东西。

/*

Program to test 16*2 Alaphanumeric LCD with STM32 (Blue Pill)

The circuit:

* LCD RS pin to digital pin PB11

* LCD Enable pin to digital pin PB10

* LCD D4 pin to digital pin PB0

* LCD D5 pin to digital pin PB1

* LCD D6 pin to digital pin PC13

* LCD D7 pin to digital pin PC14

* LCD R/W pin to ground

* LCD VSS pin to ground

* LCD VCC pin to 5V

*/



#include // include the LCD library


const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; //mention the pin names to with LCD is connected to

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //Initialize the LCD


void setup() {

lcd.begin(16, 2);//We are using a 16*2 LCD

lcd.setCursor(0, 0); //At first row first column

lcd.print("Interfacing LCD"); //Print this

lcd.setCursor(0, 1); //At secound row first column

lcd.print("-CircuitDigest"); //Print this



delay(2000); //wait for two secounds

lcd.clear(); //Clear the screen

}


void loop() {


lcd.setCursor(0, 0); //At first row first column

lcd.print("STM32 -Blue Pill"); //Print this


lcd.setCursor(0, 1); //At secound row first column

lcd.print(millis() / 1000); //Print the value of secounds

}


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

    关注

    34

    文章

    4278

    浏览量

    164097
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348738
  • STM32F103C8T6
    +关注

    关注

    104

    文章

    150

    浏览量

    80929
收藏 人收藏

    评论

    相关推荐

    STM32F103C8T6STM32F103C6T6

    开发板STM32F103STM32F103C8T6学习开发板
    btsostudio
    发布于 :2022年06月16日 17:58:17

    stm32f103c8t6开发板具体流程

    STM32单片机.然后,给电脑安装st-link驱动,驱动链接.提取码:5dpc.下一步,st-link和stm32f103c8t6按如下接线:接好线后按下图所示配置Arduino IDE:完成后,st-link
    发表于 08-05 07:33

    基于stm32f103c8t6的核心

    介绍:基于stm32f103c8t6 核心(淘宝上到处都是的开发板),使用 STM32CubeMX软件和Keil进行开发,实现了 GPIO
    发表于 08-09 09:07

    STM32F103C8T6连接阿里云物联网平台

    STM32F103C8T6连接阿里云物联网平台(1)—阿里云lot Studio控制Web开发分享一下自己使用stm32f103c8t6通过ESP_01模块
    发表于 08-11 09:33

    深圳高价回收STM32F103C8T6 收购STM32F103C8T6

    大量收购工厂库存ST电子芯片STM32F103C8T6 ,实力收购工厂库存ST芯片STM32F103C8T6 ,回收价格高!!财富热线 帝欧电子 赵先生 ***同步微信 )QQ:879821252
    发表于 08-30 16:10

    怎样去使用STM32F103C8T6开发板最小系统

    怎样去使用STM32F103C8T6开发板最小系统呢?STM32F103C8T6开发板的主要参数有哪些?
    发表于 10-19 08:15

    STM32F103C8T6开发板的相关资料推荐

    下面列出此课程中涉及的硬件主板及参考的购买链接。可以自行选择店铺购买,只要参数一致即可。1. STM32F103C8T6 开发板https://item.taobao.com/item.htm
    发表于 12-03 06:35

    单片机STM32F103C8T6学习过程

    STM32学习过程一、了解:(1)单片机型号STM32F103C8T6;(2)编译软件:MDK5.41(开发环境);(3)编程器:ST-LiNK;(4)流程(焊电路
    发表于 01-10 06:51

    手机APP通过WIFI连接STM32f103c8t6开发板

    stm32f103单片机socket安卓app远程控制继电器esp8266wifi物联网项目功能:手机APP 通过 WIFI (socket)连接 STM32f103c8t6开发板,控
    发表于 01-18 08:08

    基于STM32F103C8T6开发板的转数计数器设计

    基于STM32F103C8T6开发板、霍尔传感器、OLED显示屏制作的转数计数器
    发表于 02-10 06:46

    如何将STM32F103C8T6的CustomHID和MSC USB设备进行复合?

    如何将STM32F103C8T6的CustomHID和MSC USB设备进行复合?
    发表于 02-22 07:02

    如何将MAX30100模块、MAX30205mta模块、Pulsesensors模块连接STM32F103C8T6开发板

    视频中是我目前的连接状况,求指导如何将MAX30100模块、MAX30205mta模块、Pulsesensors模块连接STM32F103C8T6
    发表于 04-28 14:35

    STM32F103C8T6的资料分享

    描述STM32F103C8T6
    发表于 09-09 07:28

    可以通过USB端口对STM32F103C8T6进行编程吗?

    STM32F103C8T6 用于无人机的某些子系统。我想通过 USB 端口对我的 STM32 进行编程,但我找不到任何关于 atollic 或 cube ide 的文档。我发现只
    发表于 12-23 06:08

    可以从stm32f103c8t6迁移到stm32l412cbt6吗?

    主板 mcu 从 stm32f103c8t6 更换为 stm32l412cbt6。现在我无法开发板与 swd 端口
    发表于 01-05 07:28