Ejemplo de manejo de un display LCD con Netduino


Si desea mostrar una mejor  presentación  superior a hacer  parpadear  LED’s, un módulo LCD es una buena opción dado que es muy fácil  de   programar, y por lo general, también  muy  asequible.

Los LCD’s vienen en diferentes tamaños siendo los mas normales son de 2 filas numéricos ( es decir sólo dígitos) , pero también son frecuentes  recientemente los módulos de  40×4  de matriz de puntos alfanuméricas.  También existen LCD gráficos, que van desde módulos con resoluciones pequeñas (por ejemplo, 122×32 o 240×128 píxeles) a más profesionales pantallas LCD (por ejemplo, 5 “o 7”)

En este post vamos  a usar simplemente LCD alfanuméricos , los  cuales en su mayoría  se construyen alrededor del  famoso  chip de Hitachi  ,  HD44780 o controlador compatible, dado    que lo habitual es que   todos ellos utilizan la misma interfaz.

LCD alfanuméricos se controlan mediante un puerto paralelo de 8 bits, y algunos hilos mas para control (que controlan la transferencia de datos a través del puerto paralelo), pines para controlar el contraste y luz de fondo (si  le quedan puertos disponibles), y  por supuesto ,  los dos hilos para alimentación y tierra.

En la siguinte tabla podemos ver un ejemplo de configuracion para controlar un display  LCD,  con los bit de  salida completos:

 

LCD Pin Number Symbol Netduino Pin Description
1 VSS GND Ground
2 VDD 5V Logic voltage
3 V0 10K Pot Leg 2 op voltage for LCD. Controls color/contrast
4 RS D12 Register selector
5 R/W GND Low means write, so you can just ground it
6 E D11 Chip enable
7 DB0 D9 Data Bit 0
8 DB1 D8 Data Bit 1
9 DB2 D7 Data Bit 2
10 DB3 D6 Data Bit 3
11 DB4 D5 Data Bit 4
12 DB5 D4 Data Bit 5
13 DB6 D3 Data Bit 6
14 DB7 D2 Data Bit 7
15 LED(+) Resistor to 5V Backlight LED Anode
16 LED(-) Ground Backlight LED Cathode

 

El puerto paralelo también se puede utilizar en el modo de 4 bits, el envío de los datos de 8 bits en dos acciones de escritura,lo cualo ahorra puertos I / O, pero toma más tiempo para actualizar la pantalla LCD.

Hay una excelente biblioteca disponible en CodePlex (con una buena introducción en el blog del autor) para controlar los módulos LCD.

Esta biblioteca hace que muestrar el texto en una pantalla sea  tan fácil como llamar a un método de escritura con la cadena deseada.  Se utiliza un proveedor de patrón para permitir diferentes escenarios de conexión, como conexion directa en los pines GPIO, utilizando un registro de desplazamiento o el uso de un expansor I2C. Además  si usted quiere usar otro escenario, puede añadir su propio proveedor.

lcd

En la imagen se ver un módulo LCD 20×2  conectado directamente a los pines GPIO de un Netduino+ utilizando el puerto paralelo en modo de 4 bits.

Las conexiones se realizan en un circuito, ya que esto hace que sea un poco más fácil de poner todos los cables juntos.

El código de ejemplo proporcionado con la biblioteca contiene un enlace a un esquema muy útil en el sitio web de Arduino.

 

Recuerde conectar la alimentación del módulo LCD al 5V del Netduino pues  la alimentación de 3.3V no es suficiente y  deja en blanco el LCD.

 

La biblioteca contiene un ejemplo sencillo de cómo utilizar la biblioteca.  Se inicializa el LCD, muestra la obligatoria “Hola mundo” y luego entra en un bucle que muestra los milisegundos desde el restablecimiento.Usa los pines GPIO directamente, por lo que hay que cambiar de proveedor como se ve en el ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Program
{
    public static void Main()
    {
        // create the transfer provider, use direct GPIO provider
        // Initialize the library with the numbers of the interface pins
        // Use wiring shown here http://arduino.cc/en/uploads/Tutorial/lcd_schem.png
        var lcdProvider = new GpioLcdTransferProvider(Pins.GPIO_PIN_D12,    // RS
                                                        Pins.GPIO_PIN_D11,    // ENABLE
                                                        Pins.GPIO_PIN_D5,     // D4
                                                        Pins.GPIO_PIN_D4,     // D5
                                                        Pins.GPIO_PIN_D3,     // D6
                                                        Pins.GPIO_PIN_D2);    // D7
 
        // create the LCD interface
        var lcd = new Lcd(lcdProvider);
 
        // set up the LCD's number of columns and rows: 
        lcd.Begin(20, 2);
 
        // print a message to the LCD.
        lcd.Write("Hello world!");
 
        while (true)
        {
            // set the cursor to the first column on the second line
            lcd.SetCursorPosition(0, 1);
 
            // print the number of milliseconds since reset:
            lcd.Write((Utility.GetMachineTime().Ticks / 10000).ToString());
 
            Thread.Sleep(100);
        }
    }
}

Fuente   aqui

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s