6 votos

Serie activa LCD

¿Qué tipo de LCD debo debe que ser usando para ir con mi Arduino?

Yo he utilizado el LCD HD44780 compatible en el pasado, pero oyó que los LCD serie permitido hacer la vida mucho más fácil.

89voto

He utilizado una LCD serial antes, el 20 x 4 negro en verde uno de SparkFun. La interfaz de 3 hilos es muy fácil trabajar con, pero cuidado, la luz de fondo atrae a gran cantidad de energía.

También, si se conectan a un PICAXE el seriales 1/0 vs alta/baja es alrededor de la manera incorrecta y usted tendrá que poner un inversor de lógica en línea.

38voto

mreichelt Puntos 223

Si tiene LCD HD44780 compatible y desea utilizarlo sin consumir demasiados alfileres de salida, puede utilizar un registro de desplazamiento (como 74VHC164 o 74HC595).
Aquí hay un enlace a un proyecto de ejemplo.
Efectivamente esto es muy parecido a una LCD Serial habilitado.

24voto

Kevin Dente Puntos 7732

Yo uso un paralelo de la pantalla LCD de la unidad de la que me he convertido a I2C mediante el BV4208 I2C Controlador de LCD chip de ByVac o considere la posibilidad de su nuevo reemplazo de la BV4638.

Aquí está una biblioteca para el uso con esta unidad: http://john.crouchley.com/blog/archives/264.

I2C sólo utiliza dos cables Analógica de 4 y Analógico 5, se puede conectar un número de dispositivos de estos cables, cada uno con su propia dirección I2C. Esta es una manera muy fácil de extender el Arduino.

6voto

MattH Puntos 746

Uso de la pantalla lcd serial y son muy fácil de usar, pero si tu no utilizando un Arduino Mega sólo tienes un puerto serial. Esto se puede solucionar mediante el uso de software serie aunque como muchos anuncios sólo tienes que hacer una escritura no una lectura. Un buen software serial biblioteca puede encontrarse aquí

2voto

Robert Höglund Puntos 5572

Realmente depende de lo que quieras hacer con el Arduino, además de mostrar información en la pantalla LCD. Como tú, he utilizado un HD44780 compatible con pantalla LCD para mi primer proyecto, y aunque funcionaba bien, consume la mitad de mi pines digitales e/S, y muy limitada de lo que podría hacer con mi proyecto. Si usted realmente no necesita una gran cantidad de I/O, que puede estar bien.

Por otro lado, si usted quiere hacer más que eso, una serie LCD interfaz puede tener más sentido. Que cuestan el doble, pero como se puede ver en este ejemplo, puede conectar en cadena con I2C.

/* 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);
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X