65.9K
CodeProject 正在变化。 阅读更多。
Home

Arduino 的 SerialLcd 库

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2014年1月14日

CPOL

3分钟阅读

viewsIcon

27092

downloadIcon

346

Arduino.SerialLcd 库

引言

使用 LCD 是在 Arduino 项目中输出信息的方法之一。关于 LCD 的主要缺点是它占用了 Arduino 板上太多的引脚。但也有一些串行实现,例如 这里。所以我买了一个。 Smile | <img src=

背景

如果您访问 Arduino 网站上的 LiquidCrystal 参考页面,您会看到它基于 Hitachi HD44780 (或兼容)芯片组。 LCD 需要许多引脚,例如数据、时钟、选择、对比度调节等,这会消耗您的 Arduino 资源。但是,串行 LCD 消除了对如此多引脚的需要。实际上,它使用另一个微处理器来驱动 LCD。您通过数据流从您的 Arduino 板上命令这个微处理器,它会为您处理其余的事情。

硬件设置

串行 LCD 有三根线,分别是 GND、Vcc 和 Rx。您所需要做的就是将串行 LCD 的 Rx(接收)线连接到 Arduino 板上数据流的 Tx(发送)线。这个数据流可以是 硬件串行软件串行。您可以使用哪种类型的通信方式取决于您。

如果您决定使用硬件串行,您将使用 Arduino 板的数字引脚 1 作为串行发送。引脚 0 是 Serial 的接收引脚,引脚 1 用于发送。但在这种情况下,我建议您将 Arduino 板从您的计算机上断开,因为 Serial 被用作计算机和板之间串行通信的共享资源。

如果您将使用软件串行,唯一要做的就是决定使用哪个数字引脚作为串行发送。

还有一件事;最好为您的 Arduino 板使用外部电源,因为 LCD 的耗电量比计算机的 USB 端口所能提供的还要多,否则您将面临损坏 Arduino 板的风险。

请注意,如果您决定购买像我这样的串行 LCD,您可能需要进行一些焊接。 LCD 背面还有另一个 PCB,焊接到 LCD 的引脚上。

Fritzing 设计

 

   

点击放大图片。

很抱歉,上面的图像中的 LCD 连接。我在 Fritzing 编辑器中找不到串行 LCD 部件,所以我使用了普通的 LCD。实际上,串行 LCD 的侧面存在一个 3 针连接器。

Using the Code

您可以像 这里 一样与此型号的串行 LCD 通信。正如您所看到的,命令是具有一些参数的单字节值。我在这个库中所做的是将它们转换为更有意义的函数。

假设您已将库文件放置在 Arduino IDE 的 libraries 文件夹中,您可以在草图中包含头文件。如果您将使用 SoftwareSerial 作为您的通信基础设施,您也必须包含它的头文件。您可以从 Arduino 官方网站下载 SoftwareSerial 库

#include <SoftwareSerial.h> // SoftwareSerial header
#include <SerialLcd.h>      // SerialLcd header

SoftwareSerial ss(3,4); // rx=3, tx=4
SerialLcd lcd(&ss); // serial lcd 

如果您使用硬件串行 (Serial),您只需将它的引用传递给 SerialLcd 构造函数。

#include <SerialLcd.h>

SerialLcd lcd(&Serial);

让我们继续使用软件串行。

在 setup 函数中,您使用 9600 波特率初始化数据流(在本例中为 ss)。然后使用 lcd 作为输出设备。

ss.begin(9600); 

使用方法很简单。显示一个 string

lcd.println("first line");
lcd.println("second line");

清除屏幕并将光标移动到位置 0

lcd.clr();  

将光标移动到特定位置需要一些解释。如果您的 LCD 是 16x2 类型,则将光标移动到位置 20 会将光标置于第二行的第 5 列。位置索引从 1 开始。

lcd.setCursorPos(20);
lcd.print("X");

您可以发送任何 ASCII 字符,并且有一个可打印字符的扩展列表。您可以在此 文档中找到此列表。

lcd.sendChar(0xF7); // greek pi

左右移动光标

lcd.moveCursor(SL_DIRECTION_RIGHT);
lcd.moveCursor(SL_DIRECTION_LEFT);

显示/隐藏下划线光标

lcd.showUnderlineCursor(1); // show underline cursor
lcd.showUnderlineCursor(0); // hide underline cursor 

显示/隐藏闪烁光标

lcd.showBlinkCursor(1); // show blinking cursor
lcd.showBlinkCursor(0); // hide blinking cursor 

将屏幕左右滚动 1 步

lcd.scrollScreen(SL_DIRECTION_RIGHT);
lcd.scrollScreen(SL_DIRECTION_LEFT);

打开/关闭显示器

lcd.displayOn(0); // off
lcd.displayOn(1); // on 

关注点

我的库的实现取决于特定产品,但它们中的大多数与此产品非常相似。当您购买另一个时,您可以使用此库,只需稍作或不作更改。命令在头文件中定义。您所要做的就是将这些命令与您的命令进行比较。

© . All rights reserved.