Arduino LCD仅在底行显示黑框

时间:2012-02-09 19:03:25

标签: arduino lcd

免责声明:这是作业。

我正在参加Arduino课程,对于我们的项目,我们必须实现一个简单的草图。涉及的硬件是Arduino Mega ADK boardElectronic Brick Starter Kit。我已经能够用草图与Arduino成功沟通;其他东西(如按钮和LED)似乎可以工作,除了液晶显示器。我已经遵循了许多教程(包括我的第二个链接中的LCD示例程序),但我无法获得任何工作。我的液晶显示屏始终在底线显示黑框。从环顾四周看,我看到液晶显示器连接不正确时会出现黑框。但是,这是一个入门套件,其中包含可以连接到机箱的电缆,可以消除焊接单根电线所带来的痛苦。我的液晶显示器有问题吗?这是一个简单的草图,我无法开始工作:

#include <LiquidCrystal.h>

LiquidCrystal lcd(10,11,12,13,14,15,16);

void setup()
{
  Serial.begin( 9600 );
  lcd.begin(16, 2);
  lcd.clear();
}

void loop()
{
  lcd.setCursor(0,0);
  lcd.println( "hello world!    ");
  delay(1000);
}

引脚对应BUS2,我已将电缆从BUS2正确连接到LCD。

10 个答案:

答案 0 :(得分:3)

  

我的液晶显示屏始终在底线显示黑框。

我有类似的问题。使用最少数量的引脚连接LCD:LiquidCrystal(rs, enable, d4, d5, d6, d7)。我遇到的问题是我没有将lcd的R/W(读/写)引脚连接到GND。当我这样做 - 它已经开始工作了。此外,我发现从Vo(对比度调整)到GND添加一个3.3k电阻非常有用,因此可以轻松读取文本。

答案 1 :(得分:2)

请确保您已将所有标头针焊接在LCD上。

如果您在LCD的16个孔中使用不带焊接的插头引脚 移动液晶显示屏,直到找到稳定的测试位置。 很容易,并非所有人都在联系

这个基本的helloworld示例应该可行 http://www.arduino.cc/en/Tutorial/LiquidCrystal

用于测试arduino IDE中的push load以上载脚本。 arduino板中的复位按钮有时不会初始化LCD

答案 2 :(得分:1)

你应该检查你的LiquidCrystal lcd()。得到了同样的问题,我调整了这个,现在它的工作原理。

答案 3 :(得分:0)

使用预制的液晶电路板,不清楚您可以使用哪些调整。 但是如果液晶显示器上显示的是与您正在写入的内容相对应的黑盒子(就像你写了“hello world!”一样,并且每个字符和空间都有12个黑盒子,那么LCD电压可能太高了。如果你没有办法调整LCD的电压,那么也许可以使用更低电压的电源来连接arduino(如果你的LCD输入电压,而不是调整后的5V电源。

答案 4 :(得分:0)

下面的黑框通常表示LCD没有收到所需的初始化命令。原因可能是布线错误 - 命令转到必杀技但不是液晶显示屏。

所以你应该

  • 仔细检查电路板上的每个开关,屏蔽和LCD模块本身 - 它们是否处于正确的状态?

  • 仔细检查,右侧草图实际上是在Arduino上。

  • delay(1000);之前插入lcd.begin(...) - 也许LCD需要更多时间进行启动

  • 如果这是这个功课,那么你可以在配偶或老师的Arduino上测试你的液晶显示器。

你的液晶显示器可能坏了。但是,在本网站和其他论坛上经常出现错误初始化的问题,概率表明它没问题。

答案 5 :(得分:0)

你需要逐步解决问题。例如:

  1. 通过在朋友的硬件上运行你的草图来测试你的草图是否有效。如果您的草图有效,那么您知道问题出在硬件中,如果它失败则问题出在您的软件(草图)中。

  2. 如果问题是硬件:将可疑 lcd与正常工作的朋友交换。如果现在有效,那么你知道你的液晶显示器是坏的。

  3. 如果交换lcd没有帮助,那么交换主板。最后,如果您从一个可疑系统(也称为被测系统)和一个已知良好的系统(也称为“金系统”)开始,那么您应该能够分辨哪些部分被测系统正在运行,哪些不是。

  4. 其他评论

    • 找出错误的整个练习本身就是一项有价值的练习。务必仔细记录您正在尝试的内容。在困境中写下你的笔记对于其他人来说可能是一份有价值的文件。

    • 一个好的实验设置还会仔细包括一个用于诊断问题的已知良好(黄金)系统。

    • 每个可更换的单元(也称为FRU或现场可更换单元)都需要一个好的标签。该标签用于确保您没有得到好的和可疑的FRU混淆。由于它们在各方面都是相同的(除了一个工作,另一个可能或可能没有),很容易让它们混淆。

    • 交换嫌疑人FRU的已知商品时要小心:如果合适,请使用防静电预防措施。正确接地系统。确保所有连接都正确。

答案 6 :(得分:0)

我尝试了你的代码,除了LCD声明“LiquidCrystal lcd(10,11,12,13,14,15,16);” 草图有效,液晶显示屏显示信息。

我的设备是:

  1. Arduino UNO
  2. SC1602BSLB(没有背光)
  3. 计算机操作系统:Windows 7
  4. Arduino IDE:1.0.4
  5. 我怀疑你的LCD声明部分有问题。我的代码如下(来自“LiquidCrystal”中“hello world”的arduino示例:

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    

    如您所知,上述声明中的引脚连接是:

       Arduino/LCD
    
    • Digital 5/11
    • Digital 4/12
    • Digital 3/13
    • Digital 2/14

    我是Arduino世界的新手。只是想传达我对Arduino体验的惊讶。如果您仍有问题,请通知我。

答案 7 :(得分:0)

我有同样的问题。我通过电缆重新测试找到两根坏线。改变这些后我仍然有同样的问题。下一步,我将引脚条焊接到LCD上。我看过很多帖子,并且认为我知道的更好。好吧,将针脚焊接到LCD后,MAGIC!如果你仔细地按照别人的步骤,一切顺利。

答案 8 :(得分:0)

这可能是由于LCD的接线不良或对比度调节针所致,只需在对比度针上连接一个可变电阻并调节对比度,即可解决您的问题。

答案 9 :(得分:-1)

聚会很晚,但我遇到了类似的问题,我已经部分解决了这个问题。

硬件:Ardunio Uno,HD47780屏幕(来自sparkfun的8x2)

我发现了两个我尚未解决的奇怪问题,但我至少可以让文字出现。

首先:我在对比度引脚上有一个电位器,如果我上传代码/复位,这个电位器基本上是接地引脚,它将无法工作。它必须要高得多,然后一旦代码运行,我就可以继续前进。

第二:当我从主循环中调用“setCursor”时,它将再次显示条形。但是,如果我不打电话,那么它将很乐意在下一个可用位置打印字符。

代码:

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);


// NOTE: This code will work just fine but you need to have the contrast pin at a resonably high resistance value when you turn it on, and then decreade it once the 
// device has booted otherwise you just see solid bars. Not sure why this is. 
void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(8, 2);
  lcd.clear();
  // Print a message to the LCD.
  lcd.print("hello");
  lcd.setCursor(0, 1);
}

void loop() {
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
  delay(5000);

}