En este tercer ejemplo, vamos a ver como escribir en una LCD con controlador HD44780 mediante Pinguino PIC. La comunicación emplea 4 bits de datos, dichos pines del Pinguino PIC serán el 0,1,2 y 3 pero se pueden elegir modificando estos en el código escrito. Y 2 pines , que serán el 8 y el 9, para enviar comandos al LCD y para el Enable (habilitación del mismo).
Además emplearemos la retroiluminación que traen los LCD de 16 patillas, conectando los pines 15 y 16 del LCD a VCC y GND respectivamente. Una descripción de los pines es la siguiente:
La conexión del LCD gráficamente la podemos ver aqui en el siguiente esquemático:
Una foto del funcionamiento del LCD con el programa cargado en el Pinguino PIC:
Aquí un video del funcionamiento:
Y por último os dejo el código, y como podréis observar es facilisimo empezar a trabajar con un lcd:
/* Programa realizado por Regata para tallerarduino.wordpress.com */ // Comenta esta linea si usas un pinguino con PIC18F2550 //#define PIC18F4550 void borrarlinea(uint8_t linea); //Declaracion de la función de borrado de linea //Función de configuración, donde indicaremos que usamos modo 4 bits void setup() { //Modo 8 bits //lcd(8, 9, 0, 1, 2, 3, 4, 5, 6, 7); // RS, E, D0 ~ D7 //Modo 4 bits, no se emplean los últimos 4 bits lcd(8, 9, 0, 1, 2, 3, 0, 0, 0, 0); // RS, E, D4 ~ D8 //Indicamos el formato del lcd, en este caso 20x4 lcd.begin(20,4); } //Función repetitiva void loop() { //Posicionamos el cursor del lcd en posición 0,0 del lcd lcd.setCursor(0,0); lcd.print("Bienvenidos a:"); // Escribimos la cadena que deseamos //Posicionamos el cursor del lcd en posición 3,1 del lcd lcd.setCursor(3,1); lcd.print("Taller Arduino"); // Escribimos la cadena que deseamos //Posicionamos el cursor del lcd en posición 0,2 del lcd lcd.setCursor(0,2); lcd.print(" tu blog referencia"); // Escribimos la cadena que deseamos //Posicionamos el cursor del lcd en posición 1,3 del lcd lcd.setCursor(1,3); lcd.print("Pinguino y Ardu"); // Escribimos la cadena que deseamos //Escribimos a continuación de la última posición escrita lcd.print("ino"); delay(1000); //Esta es una función que he hecho para borrar una linea en concreto, //donde el numero indicado es el número de linea del lcd borrarlinea(0); //También podemos usar lcd.clear(); para borrar todo el lcd delay(500); } //Función creada por mi para cuando necesito borrar una linea entera del lcd //y no todo el lcd void borrarlinea(uint8_t linea) { int i; //Declaramos una variable que usaremos para contar el número de caracteres lcd.setCursor(0,linea); //Posicionamos el cursor para comenzar a borrar en la posicion 0 de la linea que indicamos for (i=0;i<20;i++) //Borramos desde el caracter 0 hasta el 19 lcd.print(" "); }
Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.