Arduino 的 SerialLcd 库





5.00/5 (1投票)
Arduino.SerialLcd 库
引言
使用 LCD 是在 Arduino 项目中输出信息的方法之一。关于 LCD 的主要缺点是它占用了 Arduino 板上太多的引脚。但也有一些串行实现,例如 这里。所以我买了一个。
背景
如果您访问 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
关注点
我的库的实现取决于特定产品,但它们中的大多数与此产品非常相似。当您购买另一个时,您可以使用此库,只需稍作或不作更改。命令在头文件中定义。您所要做的就是将这些命令与您的命令进行比较。