c++ - Arduino LCD仅显示第1行的前16个字符和第2行的41到46个字符

标签 c++ c arduino lcd

当我使用 <LiquidCrystal.h 库和 lcd-write() 时,它​​仅显示第一行中的前 16 个字符,并从第二行中的第 41 个字符开始。

我从 lcd.begin(16,2) 开始。

这里是代码示例。 此代码的结果将是: 第 1 行:0123456789112345

第 2 行:4123456789

#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
void setup() {
  // put your setup code here, to run once:
  lcd.begin(16, 2);
  Serial.begin(9600);
  lcd.print("0123456789");
  lcd.print("1123456789");
  lcd.print("2123456789");
  lcd.print("3123456789");
  lcd.print("4123456789");
}
void loop() {
}

这是预期的功能吗? 有一种方法可以让第 17 个字符显示在第二行中。

最佳答案

是的,这是预期的行为。该库允许您控制基于 HD44780 的 LCD 模块。该 LCD Controller 可驱动最多 40 个字符 x 2 行的显示屏。当您使用较小的模块时,这些行仍然存储在 DDRAM 中的相同位置:第一行从位置 0 开始,第二行从位置 40 开始。有关详细信息,请参阅数据表:

https://www.sparkfun.com/datasheets/LCD/HD44780.pdf

您可以使用整个内存并左右滚动,因为 16 字符宽显示屏是 DDRAM 的一个窗口。您可以使用scrollDisplayLeft 和scrollDisplayRight 左右移动显示。这些函数更改显示器最左侧第一个字符所使用的 DDRAM 地址。两条线同时滚动。

关于c++ - Arduino LCD仅显示第1行的前16个字符和第2行的41到46个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184608/

相关文章:

c++ - 输入二维数组的大小

c++ - 在 C++ 中设计多个使用的类时,我应该使用 API/ABC 吗?

c++ - 模板 lambda 有时无法编译

c++ - 为什么 std::fstream 返回 void 而不是 bool

c++ - 第二次运行tshark.c源文件后的 fatal error

c - 如何使用 header 将多个 c 文件链接在一起?

c - 如何在 Ruby 和 c 之间共享数据?

c++ - char* 到 number 的值

c - 从用 C 编写的程序中读取 Arduino 的串行输出的一个小的、基本的、通用的例子?

c - 为 Pro Micro 编写 Windows 驱动程序