首页

128×64图形LCD与Arduino的接口教程

在这个项目中,我将向您展示如何接口一个128X64图形LCD与Arduino UNO。这个特殊的LCD模块是基于ST7920 LCD控制器。所以,我们将首先看到一点关于图形LCD模块和它的LCD控制器ST7920。

然后我们将看到128×64图形LCD与Arduino UNO板的接口和显示一些位图图像的步骤。

接口- 128 x64 -图形lcd - arduino image1

简介

在之前的Arduino项目中,我使用了一个接口诺基亚5110 LCD模块与Arduino.它也是一种图形LCD,可以显示一些基本的位图图像和图形。但诺基亚5110 LCD模块的问题是它的分辨率。

在84 x 48像素,诺基亚5110 LCD可用于实现基于菜单的用户界面。由于它的尺寸小,产生的菜单将限制在每页3或4个项目。

如果我们想要一个更大的显示器和更多的空间来工作,那么明显的选择是去更大更好的128×64图形LCD模块。

作为演示,在完成所有硬件连接后,我将在图形LCD模块上显示位图图像。如果您对使用Arduino实现一个简单的16×2 Alpha-Numeric LCD感兴趣,那么请查看教程。

关于128×64图形LCD的简要说明

乍一看,128×64图形LCD模块似乎是著名的16×2 LCD或20×4 LCD模块的哥哥,它们有着相似的结构和几乎相似的引脚布局。

但这两者之间有一个显著的区别。16×2或20×4 lcd本质上是字符显示。它们只能显示字母-数字字符和一些限制在5×8矩阵中的简单自定义字符。

来到128×64图形LCD,顾名思义,它是一个由128×64组成的图形显示,即8192个独立的可控点。

通过使用不同的像素组合,我们基本上可以显示各种大小的字符。但奇迹并没有就此结束。您还可以显示图像和图形(小动画)。在一个128×64液晶模块,有64行128列。

接口- 128 x64 -图形lcd - arduino image2

ST7920液晶控制器

在市场上有几个版本的图形LCD。尽管使用、应用和实现几乎相同,但主要的区别在于用于驱动点阵显示的内部LCD控制器。

一些常用的LCD控制器有KS0108, SSD1306, ST7920, SH1106, SSD1322等。最终LCD模块的引脚可能会根据使用的LCD控制器而变化。因此,请在购买前验证液晶控制器以及引脚。

我购买的图形LCD模块由ST7920控制器组成。它是由Sitronix制造的,支持三种类型的总线接口,即8位模式,4位模式和串行接口。

如果您以前使用过16×2 LCD Display,那么您可能熟悉4位和8位并行接口。串行接口是一个新的东西,我们将在这个项目中探索这个选项。

128×64 LCD引出线

正如我已经提到的,请与制造商仔细检查图形LCD模块的针孔。下表描述的是我所拥有的128×64液晶模块的插针。

密码 销的名字 销的描述
1 接地 地面
2 VCC 电源电压
3. 签证官 对比度调整
4 RS 寄存器选择(串行中的CS)
5 RW 读写控制(串行数据输入)
6 E 启用(串行时钟)
7 - 14 D0, D7 数据
15 公安局 接口选择(0:串行,1:8位/4位并行)
16 数控 没有连接
17 RST 重置
18 输出电压 LCD电压加倍器输出
19 BLA 背光LED阳极
20. 黑色 背光LED阴极

下面的图像显示了液晶显示器的后部与它的针孔印刷。

128年x64-lcd-pinout

接口128×64图形LCD与Arduino

现在我们已经了解了图形LCD和它的控制器ST7920,现在让我们继续128×64图形LCD与Arduino的接口。我将实现一个简单的电路来演示使用很少的外部组件来连接LCD和Arduino是多么容易。

我将使用串行接口进行数据传输,并在图形LCD上显示位图图像。

线路图

下图是ST7920图形LCD与Arduino UNO接口的电路图。

128年x64-lcd-arduino-circuit-diagram

组件的要求

  • Arduino UNO
  • 128×64图形显示模块
  • 10 kΩ电位计
  • 电路试验板
  • 试验板电源
  • 连接电线

硬件连接

如前所述,有三种不同的方法可以将图形LCD与Arduino连接起来。它们是:

  • 4比特并行模式
  • 8位并行模式
  • 串行模式

在串行模式下,我们只需要三个引脚进行实际的数据传输。RS、RW和e是串行通信中的选片引脚。RW和E分别充当串行数据IN和串行CLK引脚。

128年x64-lcd-connections

因此,将LCD的RS, RW和E连接到Arduino UNO的数字IO引脚10,11和13。此外,为了选择串行接口模式,PCB引脚必须连接到GND。

其余的连接类似于传统的16×2 LCD。VCC、GND接电源5V接地。VO接10KΩ POT的雨刮器,POT的另外两个端子分别接5V和GND。

为了用背光照亮LCD,将BLA连接到5V,将BLK连接到GND。

我的液晶显示器的背光是蓝色的。但是白色和绿色也很常见。

为位图图像生成十六进制代码

我将直接以位图的形式显示图像,而不是显示不同字体的字符(是的,有一些库可以使用它们实现各种字体)。在编写代码之前,需要将位图图像转换为字节数组。

128年x64-bitmap-sample

我使用了上面的“办公室”标志。记住,128×64 LCD的分辨率是128×64像素。因此,最大的图像大小应该是128×64。所以,使用Microsoft Paint,我把上面的图像的分辨率降低到128×64像素,并将其保存为Monochrome Bitmap image。

下一步是将这个位图图像转换为字节数组。我已经尝试了几个转换工具(在线和离线),但没有一个能够生成与我的设置兼容的代码。

所以,我使用了“GIMP”软件。可以从以下网站下载GIMP链接并安装它。安装完成后,可以在GIMP软件中打开“128×64位图”,导出为“X位图图”。

GIMP-XBM-Export

将生成一个.xbm文件。它包含所选的128×64位图图像的HEX代码。用任何文本编辑器(如notepad++)打开它,并进行以下更改。数组应该是一个静态的const无符号字符,并在数组名后附加" programmem "。

静态const unsigned char myBitmap [] promem = {

0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,

0xff, 0xff, 0xff, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

.....

0xff, 0xff, 0xff, 0x7f};

代码

在编写代码之前,您需要下载一个名为“U8g2”的特殊库。在Arduino IDE中,进入Tools -> Manage Libraries…搜索“u8g2”并安装最新版本。它是一个复杂的库github页面包含所有必要的文档。

之前生成的HEX代码必须添加到我们的代码中。

结论

这里实现了一个简单的项目,将128×64图形LCD与Arduino连接起来。我没有显示纯字符,而是在LCD上显示了位图图像,以显示其功能。

在下一个项目中,我将向您展示如何使用旋转编码器在128×64图形LCD上设计一个简单的菜单显示。

4的反应

  1. 祝贺那些想开发Arduino的人,所以我想学习Arduino什么可以帮助我,但我有A2证书在数学、物理和计算机科学,因此非常感谢你,愿上帝保佑所有的成员,工作人员设计Arduino。

  2. 这一教程帮助我找到了自己所遗漏的大部分谜题。:)。很好的工作!

    然而,我有一个关于连接LCD的问题,我想知道它是否可以像你在这里做的那样接口。因为我不确定它是否已经内置了控制器(它有3个水平驱动器和4个垂直驱动器)和几个简单的ic,它的连接是一根14针FFC带状电缆!

    型号是:FH6-0635 MEDMMPU3W2F(单色显示从一个旧佳能复印机)。

    谢谢你!

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map