标志性的“诺基亚5110 ”本身应该已经买下了功能强大的诺基亚手机,它在90年代非常流行。 5110型配备了图形显示器,该显示器足以用作当时手机的显示屏。此屏幕能够显示从字母数字字符到小型图形的所有内容,而这是手机所需的一切。随着地球的发展,出现了带有闪亮触摸屏的新技术,该显示器不再使用。但是希望它们可以用于必须显示小图形的电子应用中,并避免在大的LCD屏幕上花钱。因此,在本教程中,我们将学习如何将诺基亚5110图形LCD与Arduino相连并使其工作。
这些LCD具有大小为84×48的黑白像素。它们看起来很单调,但仍可用于为您的项目显示漂亮的图形,并可轻松地与Arduino等微控制器一起使用。因此,让我们开始吧…!
所需材料:
- Arduino开发板(任何版本)
- 诺基亚5110显示屏
- 连接线
诺基亚5110图形显示模块:
市场上有两种类型的这些图形LCD。一个在显示器的上方和下方都带有焊盘,另一个在显示器的底部都带有焊盘。我们使用的是属于类型2的,其中仅在显示屏下方有打击垫。两个模块工作相同,因此两者的连接相同。因此,无论是哪个模块,都可以按照本教程进行操作。
如前所述,诺基亚5110图形LCD的水平像素为84像素,垂直像素为48像素。总显示尺寸为1.72'x 1.72'。该模块具有6个输入引脚,通过这些输入引脚我们可以通过SPI通信将其连接到任何微控制器。在显示器和Arduino之间进行通信的接口IC是Philips PCD8544显示控制器IC,其数据表可以在这里找到。但是,如果您正在使用Arduino与该IC通讯,那么我们无需担心数据手册,因为有可供下载和使用的库。我们在这里使用的模块如下所示。
电路原理图:
下面给出了将Nokia5110图形LCD与Arduino连接的完整电路图。
显示模块有8个引脚,用于与Arduino建立SPI通信。该模块由Arduino板的3.3V引脚供电。请注意,这些模块在3.3V逻辑上工作,因此不向显示器的Vcc引脚提供5V。即使LCD在3.3V逻辑上工作并且Arduino在5V逻辑上工作,我也直接将显示器的引脚连接到Arduino,因为只有那时我才发现LCD可以正常工作。如果需要,可以使用分压器将5V转换为3.3V,但对我而言,它仅在不进行逻辑转换的情况下有效。连接非常简单直接。一旦完成连接,您的设置将如下所示。
Arduino程序和工作方式:
请按照以下步骤为诺基亚5110 Display编程Arduino。这些步骤假定您已经安装了Arduino IDE并熟悉使用它。
步骤1:将Arduino连接到计算机后,打开计算机上的Arduino IDE,并在工具菜单下选择适当的板。
步骤2:单击此处从GitHub存储库下载Adafruit库的Nokia 5110 Display Library。
步骤3:下载Zip文件后,选择 “草图”->“包含库”->“添加.ZIP库”, 然后浏览至ZIP的下载位置。
注意:您还必须下载Adafruit GFX Graphics核心,该核心可以处理所有的圆,文本,矩形等。您可以从https://github.com/adafruit/Adafruit-GFX-Library获取并以相同方式安装。
步骤4:现在,通过选择 文件->示例-> Adafruit PCD Nokia 5110 LCD Library-> pcdtest 打开示例程序,然后单击上载按钮
步骤5:上传程序后,按Arduino上的reset按钮,您将看到示例程序显示了所有动画,如本教程末尾的视频所示。
您可以通读示例程序,以了解可用于在LCD上执行各种图形设计的各种内置功能。但是,让我们更进一步,尝试在LCD屏幕上显示CircuitDigest徽标。
现在,在“ 画图 ”中打开所需的图像并调整其大小。可以用于显示的最大图像尺寸为84×48。
调整图像大小后,使用“画图”中的“ 另存为” 选项将图像另存为位图(黑白)。为了将图像作为位图显示在我们的LCD屏幕上,我们需要可以将位图图像转换为代码的软件。您可以通过单击此处下载软件。下载完成后,解压缩文件,然后单击 “ BitmapEncoder” 以启动应用程序。打开我们刚刚使用该软件保存的位图图像,以获取编码值的数组。您可以直接复制这些值并将其粘贴到Arduino阵列中。下面显示了软件为我们的徽标显示的值
如您所见,数组以值 48、48 开头 , 这是图像的大小。我们不应该在数组中添加它。因此,删除前两个值,并将其余值用作程序中的数组值。该数组如下所示。该完整的程序是在本页面的结尾给出供大家参考。
静态const unsigned char PROGMEM徽标= {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,B00000000,B00000000,B00000000,B00000011,B00000011 B11111111,B11000000,B00000000,B00000000,B00001110,B00111110,B00111111,B11110000,B00000000,B00000000,B00111110,B00111110,B10000000,B01111100,B00000000,B00000000,B01111100,B01111100,B11000000,B11111110,B0000001,B00000000,B00 B00001111,B00000000,B00000001,B11111000,B11111111,B00111111,B10000111,B10000000,B00000011,B11111000,B11111111,B11111111,B11000011,B11000000,B00000111,B11110001,B11111111,B11111111,B11100000,B11100000,B0000011,11111,11 B01100000,B00000000,B00000011,B11100000,B00001001,B11111100,B00000000,B00000000,B00000111,B11100000,B00011001,B11111110,B00000000,B00000000,B00000111,B11000000,B00000001,B11111111,B10000000,B00011111,B11111111,B11000111,B11100011,B11111111,B11111000,B00111111,B11111111,B10001111,B11111111,B11111111,11111,11111 B11111111,B11111111,B11111100,B00111111,B11111111,B00011111,B11111111,B11111111,B11111100,B00111111,B11111110,B00111111,B00111111,B11111111,B11111110,B01111111,B11111110,B00111110,B00000000,B11,10011,B1110011 B00000000,B00000000,B01111111,B11111100,B01111110,B10000000,B00000000,B00000000,B00000000,B00000000,B11111110,B00111111,B11111111,B11111110,B00000000,B00000001,B11111111,B11111111,B11111111,B11111111,B11111111、111111111, B11111110,B01111111,B11111111,B11111111,B11111111,B11111111,B11111110,B01111111,B11111111,B11000111,B11111111,B11111111,B11111110,B00111111,B11111111,B10000011,B11111110,B00000000,B00000000,B00111111,B11111111,B10110011,B11111000,B00000000,B00000000,B00111111,B11111111,B10000001,B11100000,B0011,B00000011 B10000001,B11111111,B11111100,B00000000,B00011111,B11111000,B00000111,B11111111,B11111000,B00000000,B00000111,B11111110,B00011111,B11111111,B11111000,B00000000,B00000001,B11111111,B01111111,B1111111111,B1111111,B1111111,B1111111,B1111111 B11111111,B11110000,B00000111,B11111000,B00001111,B11111111,B11000000,B00000000,B00000011,B11111100,B00100111,B11111111,B00000000,B00000000,B00000011,B11111111,B00110111,B11111100,B00000000,B00000000,B00000001,B11111,1000 B10000000,B00000000,B11111111,B11001111,B10000000,B11111111,B00000000,B00000000,B01111111,B11111111,B10110001,B11111110,B00000000,B00000000,B00011111,B11111111,B10110111,B11111100,B00000000,B00000000,B00001111,B11111111,B10000111,B11110000,B00000000,B00000000,B00000011,B11111111,B11111111B,B1100000000,B1100000000, B11111111,B00000000,B00000000,B00000000,B00000000,B00001111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000};
现在要显示此位图,我们必须使用以下代码行。屏幕上先前的数据被删除并写入新的位图图像的位置。
display.clearDisplay(); display.drawBitmap(20,0,Logo,48,48,1); display.display();
行 display.drawBitmap(20,0,Logo,48,48,1); 显示位图图像的位置,大小和颜色。语法可以指定为。
display.drawBitmap(X_Position,Y_Position,数组名称,图像长度,图像宽度);
如前所述,可以分别从数组的前两个元素获得图像的长度和宽度。运行此代码后,我们将在LCD屏幕上显示位图,如下所示。
您还可以显示如下所示的简单文本:
希望您理解了该教程,并使诺基亚5110 LCD与Arduino相连。通过袖珍的图形显示,您可以创建许多需要少量图形细节的项目。可以在下面的视频中找到完整的工作。如果您在使用此工具时遇到任何问题,可以使用论坛来发布您的问题或下面的评论部分。