第3行中的字符&;4在16x4 LCD-Raspberry Pi 4中向右移动 我试图制作一个简单的C++代码来显示4个文本内容,每个文本都有4个独立的行。我使用的是最新版本的Raspberry Pi OS(Debian Buster)、WiringPi 2.52和16x4 LCD显示屏(5v-1604A LCD屏幕)

第3行中的字符&;4在16x4 LCD-Raspberry Pi 4中向右移动 我试图制作一个简单的C++代码来显示4个文本内容,每个文本都有4个独立的行。我使用的是最新版本的Raspberry Pi OS(Debian Buster)、WiringPi 2.52和16x4 LCD显示屏(5v-1604A LCD屏幕),c++,raspberry-pi4,wiringpi,C++,Raspberry Pi4,Wiringpi,这是我的密码 #include <iostream> #include <stdio.h> #include <unistd.h> #include <cstdlib> #include <wiringPi.h> #include <lcd.h> #include <string.h> using namespace std; #define LCD_RS 30 //reset pin #define LCD

这是我的密码

#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <cstdlib>
#include <wiringPi.h>
#include <lcd.h>
#include <string.h>

using namespace std;

#define LCD_RS 30 //reset pin
#define LCD_E 10  //enable pin 
#define LCD_D4 23 //data pin 4
#define LCD_D5 22 //data pin 5
#define LCD_D6 21 //data pin 6
#define LCD_D7 14 //data pin 7

int lcd;

int main()
{
    wiringPiSetup();
    lcd = lcdInit(4, 20, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0);
    lcdPosition(lcd, 0, 0);
    lcdPuts(lcd, "Test Row 1");
    lcdPosition(lcd, 0, 1);
    lcdPuts(lcd, "Test Row 2");
    lcdPosition(lcd, 1, 2);
    lcdPuts(lcd, "Test Row 3");
    lcdPosition(lcd, 1, 3);
    lcdPuts(lcd, "Test Row 4");
    cout << "LCD Displays" << endl;
    sleep(30);
    lcdClear(lcd);
    cout << "LCD Clear" << endl;
    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
#定义LCD_RS 30//重置引脚
#定义LCD_E 10//启用引脚
#定义LCD_D4 23//数据引脚4
#定义LCD_D5 22//数据引脚5
#定义LCD_D6 21//数据引脚6
#定义LCD_D7 14//数据引脚7
液晶显示器;
int main()
{
wiringPiSetup();
lcd=lcdInit(4,20,4,lcd_-RS,lcd_-E,lcd_-D4,lcd_-D5,lcd_-D6,lcd_-D7,0,0,0);
液晶显示器位置(液晶显示器,0,0);
液晶显示器(液晶显示器,“测试行1”);
液晶显示器位置(液晶显示器,0,1);
液晶显示器(液晶显示器,“测试行2”);
液晶显示器位置(液晶显示器,1,2);
LCDPUT(lcd,“测试行3”);
液晶显示器位置(液晶显示器,1,3);
LCDPUT(lcd,“测试行4”);

cout这只是一个猜测,但是您有一个16x4的显示,但是您的lcdInit调用指定了20列

 lcd = lcdInit(4, 20, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0);
试着把它改成16

 lcd = lcdInit(4, 16, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0);
深入研究代码这看起来像是WiringPi的lcd.c中的一个bug。我在另一个库中找到了一些人,查看其中的代码,发现它们有相同的偏移量,似乎没有处理16对20的col


作为WiringPi,我将如何最好地解决这一问题留给个人开发人员。

是的,我也将其更改为16。但仍然会出现错误。我似乎记得读到4行显示有点奇怪,并且将其扩展为2行。如果没有显示数据表,我们真的无法提供更多帮助。您所说的显示数据表是什么意思?你指的是引脚布局?一个解释命令界面的数据表,这样就可以对照LCD库中的代码进行检查,以确保它做的是正确的。因为我对这件事不熟悉,所以我上传了pinout、gpio readall&compile/run的图像。1)编译&运行2)gpio readall 3)pinout