Seriell aktiviertes LCD

Welche Art von LCD sollte ich für meinen Arduino verwenden?

Ich habe in der Vergangenheit HD44780-kompatible LCDs verwendet, aber gehört, dass die Serial Enabled LCDs das Leben viel einfacher machen.

Antworten (6)

Es hängt wirklich davon ab, was Sie mit dem Arduino machen möchten, außer der Anzeige von Informationen auf dem LCD. Wie Sie habe ich für mein erstes Projekt ein HD44780-kompatibles LCD verwendet, und obwohl es gut funktionierte, verbrauchte es die Hälfte meiner digitalen E / A-Pins und schränkte die Möglichkeiten meines Projekts ernsthaft ein. Wenn Sie nicht wirklich viel E/A benötigen, kann das in Ordnung sein.

Wenn Sie dagegen mehr wollen, kann eine serielle LCD-Schnittstelle sinnvoller sein. Sie kosten doppelt so viel, aber wie Sie an diesem Beispiel sehen können, können Sie mit I2C verketten.

/* Quick example to use FunGizmos serial LCD in I2C mode
*
* Connections between LCD & Arduino 
* LCD P2
*   Pin1 not connected
*   Pin2 not connected
*   Pin3 SCL -> Analog in 5 (Arduino has internal pullup resistor)
*   Pin4 SDA -> Analog in 4 (Arduino has internal pullup resistor)
*   Pin5 VSS -> gnd
*   Pin6 VDD -> +5V
*
* To enable I2C mode of LCD Pads of R1 must be jumpered on back of LCD 
* (Between R6 & R14 right below the black IC glob)
*
*/

#include <Wire.h>

int lcd_addr = 0x50; //default I2C hex address from datasheet
int blink;

void setup(){
  delay(1000); //allow lcd to wake up.

  Wire.begin(); //initialize Wire library

  // Wire library expects 7-bit value for address and shifts left appending 0 or 1 for read/write
  // Lets adjust our address to match what Wire is expecting (shift it right one bit)
  lcd_addr = lcd_addr >> 1;

  //Send lcd clear command
  Wire.beginTransmission(lcd_addr);
  Wire.send(0xFE); //Cmd char
  Wire.send(0x51); //Home and clear
  Wire.endTransmission();

  Wire.beginTransmission(lcd_addr);
  Wire.send(0xFE); //Cmd char
  Wire.send(0x70); //Display LCD firmware version
  Wire.endTransmission();

  delay(2000);

  //Send lcd clear command
  Wire.beginTransmission(lcd_addr);
  Wire.send(0xFE); //Cmd char
  Wire.send(0x51); //Home and clear
  Wire.endTransmission();

  Wire.beginTransmission(lcd_addr);
  Wire.send("Hi I'm using I2C");
  Wire.endTransmission();

  Wire.beginTransmission(lcd_addr);
  Wire.send(0xFE); //Cmd char
  Wire.send(0x45); //Set Cursor pos
  Wire.send(0x40); //Line 2
  Wire.endTransmission();

  Wire.beginTransmission(lcd_addr);
  Wire.send("FunGizmos.com");
  Wire.endTransmission();

}



void loop(){

  Wire.beginTransmission(lcd_addr);
  Wire.send(0xFE); //Cmd char
  Wire.send(0x45); //Set Cursor pos
  Wire.send(0x40+15); //Line 2 last char
  Wire.endTransmission();

  Wire.beginTransmission(lcd_addr);
  if(blink)
     Wire.send('*');
  else
     Wire.send(' ');
  Wire.endTransmission();
  blink = !blink;

  delay(500);
}

Ich verwende eine parallele LCD-Anzeigeeinheit, die ich mit dem I2C-LCD-Controller -Chip BV4208 von ByVac auf I2C umgestellt habe, oder erwäge den neuen Ersatz BV4638 .

Hier ist eine Bibliothek zur Verwendung mit diesem Gerät: http://john.crouchley.com/blog/archives/264 .

I2C verwendet nur zwei Drähte - Analog 4 und Analog 5, Sie können eine Reihe von Geräten von diesen Drähten mit jeweils eigener I2C-Adresse verbinden. Dies ist eine sehr einfache Möglichkeit, den Arduino zu erweitern.

Wenn Sie ein HD44780-kompatibles LCD haben und es verwenden möchten, ohne zu viele Ausgangspins zu verbrauchen, können Sie ein Schieberegister (z. B. 74VHC164 oder 74HC595) verwenden.
Hier ist ein Link zu einem Beispielprojekt .
Effektiv ist dies sehr ähnlich wie ein Serial Enabled LCD.

Ich verwende serielle LCDs und sie sind sehr einfach zu bedienen und hilfreich, aber wenn Sie kein Arduino Mega verwenden, haben Sie nur einen seriellen Anschluss. Dies kann durch die Verwendung von serieller Software gelöst werden, obwohl Sie bei langen Anzeigen nur schreiben müssen kein Lesestoff. Eine gute Software-Serienbibliothek finden Sie hier

Ich habe zuvor ein serielles LCD verwendet, das 20x4 schwarz auf grün von SparkFun. Die 3-Draht-Schnittstelle ist sehr einfach zu bedienen, aber seien Sie gewarnt, die Hintergrundbeleuchtung verbraucht viel Strom.

Wenn Sie es an einen PICAXE anschließen, ist die serielle 1/0 vs. High/Low in der falschen Richtung und Sie müssen einen Logikinverter inline schalten.

Sie könnten den adafruit LCD-Rucksack verwenden . Es unterstützt entweder I2C oder SPI. Im SPI-Modus wird wirklich nur ein 74HC595-Schieberegister verwendet.