当我使用 <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/