sábado, 15 de junio de 2013

PANTALLA LCD


OBJETIVOS
  • Crear un programa en C que pida al usuario texto y lo muestre por la pantalla LCD, pantalla a pantalla, mediante la librería WiringPi.
CONSTRUCCIÓN DEL CIRCUITO
Para trabajar con el circuito, podremos optar por trabajar con 4 u 8 pines de datos, permitiendo estos últimos lograr un mayor control de la pantalla.
Debido a que no hay gran diferencia de concepto entre una forma de trabajar y otra, se ha optado por 4 pines de datos ya que así queda el circuito más limpio.
A fin de simplificar el circuito, se ha seguido el convenio de colores rojo cuando se conecta el cable a la línea de + de 5v ( VDD y LED+ ) y azul, cuando se conecta a la línea – de tierra (VSS, LED-, V0, RW). Se han empleado los cables blandos para conectar las líneas de datos con pines programables (D4 a D7) y naranja para conectar a los pines CE0 y CE1 (E y RS). Además, tal y como se muestra en la figura la entrada V0 está puenteada al potenciómetro, aunque no es necesario para que funcione y directivamente se puede conectar a tierra.

Programa lcd.c
/****************************************************************
**                                                             **
** lcd.c                                                       **
**                                                             **
** Este programa captura un texto introducido por el usuario   **
** y se muestra por pantalla, de tal manera que se ven dos     **
** lineas del mismo y el usuario debe apretar una tecla para   **
** ver las dos siguientes. Para la ejecución del mismo es      **
** necesario que sea ejecutado como root                       **
**                                                             **
** Autor: M.Alvarez (miguelwarez@gmail.com) 2013               **
** Más ejemplos en http://rpiplus.sourceforge.net              **
**                                                             **
** License GPLv3 http://www.gnu.org/licenses/gpl-3.0.html      **
**                                                             **
** Para compilar:                                              **
** gcc -o lcd -l wiringPi lcd.c                                **
**                                                             **
** Para ejecutar:                                              **
** sudo ./lcd                                                  **
**                                                             **
****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#include <string.h> main(){
      char cadena[200], letra, linea1[17],linea2[17];
      int lon, pos, i, pant=0;
      printf("Introduce la cadena para mostrar en pantalla LCD\n");
      printf("pulsa cualquier tecla para avanzar\n");
      gets(cadena);
      lon=strlen(cadena);
      pos=0;
      if (wiringPiSetup () == -1)
            exit (1) ;
     //describir la pantalla
      int fd1 = lcdInit (2, 16, 4, 11, 10, 6,5,4,1,0,0,0,0) ;
     
     //limpiar pantalla
      sleep (1) ;
      lcdClear(fd1);
      while(pos < lon){
            i=0;
            while(i<16 && pos < lon){
                  linea1[i]=cadena[pos];
                  i++;
                  pos++;
            }
            linea1[i]='\0';
            i=0;
            while(i<16 && pos < lon){
                  linea2[i]=cadena[pos];
                  i++;
                  pos++;
            }
            linea2[i]='\0';
            printf("Pantalla %d\n",++pant);
            printf("%s\n",linea1);
            printf("%s\n",linea2);
            sleep(1);
          //sacamos la salida por la pantalla LCD
            lcdPosition (fd1, 0, 0) ;
            lcdPuts (fd1, linea1) ;
            lcdPosition(fd1,0,1);
            lcdPuts(fd1,linea2);
          //esperamos a que el usuario pulse una tecla
            fflush(stdin);
            getchar();
      }
      printf("Saliendo\n");
     //limpiar pantalla
      sleep(1);
      lcdClear(fd1); }

No hay comentarios:

Publicar un comentario