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.
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