sábado, 6 de abril de 2019

LABORATORIO NRO 5

laboratorio 5

PROGRAMACIÓN EN UNA PANTALLA LCD.

  • conocer el display LCD y su funcionamiento.
  • programar eficientemente el LCD
  • programar HMI para proyecto actual.
materiales y equipos .
  • CCS compiler 
  • entrenador de pics
  • pantalla LCD
  • PIC 16F877A
  • PC  de sotfware de simulacion 
marco teorico.

¿Que es un  display LCD ?

es un display alafa numerico de matrix de puntos formado por una pantalla de cristal liquido ,sobre la cual se pueden mostrar mensajes formado por distintos caracteres.

conexiones  LCD.



fácilmente con una placa Arduino o un PIC en este caso con el PIC 16F877A y con muy pocas líneas de código. Para ello veamos sus pines para saber como se conectan:
-Pin 1 - Vss: GND o tierra.

-Pin 2 - Vdd: Alimentación Vcc o + 5V.
(Algunos pueden alimentarse a 3 Vcc)

-Pin 3 - V0: Control del contraste del display, conectamos este pin al terminal variable de un potenciómetro conectado a Vcc y Masa en sus terminales extremos.

-Pin 4 - RS: Selección de Registro.
0 lógico: Registro de comandos (escritura),
1 lógico: Registro de datos (escritura, lectura)

-Pin 5 - R / W:
0 lógico: Escritura del LCD.
1 Lógico: Lectura del LCD.

-Pin 6 - Habilitar: El famoso Habilitar de casi todos los componentes de la electrónica digital. Un 1 lógico señala el inicio de la escritura o lectura del LCD, un 0 lógico, desactiva todas las funciones.

-Pin 7-10 - D0 / D3: Pines correspondientes al bus de datos.
D0 corresponde al bit menos significativo.
Estos pines no se utilizan para realizar operaciones sobre el LCD de 4 bits.

-Pin 11-14 - D4 / D7: Pines correspondientes al bus de datos.
D7 corresponde al bit más significativo y se puede utilizar como “Busy Flag”,
Si lees sobre este pin, un archivo lógico nos indica que el LCD está ocupado, no está permitido realizar ninguna operación hasta que se deshabilita.

En la tabla no aparecen, ya que no todas las pantallas disponen de los pinos 15 y 16, se ha modificado la imagen para añadirlos, y son simplemente:

-Pin 15 - Ánodo de la retroiluminación: R + 5V.

-Pin 16 - Cátodo de la retroiluminación: GND.

En el código es necesario incluir la librería del LCD para una correcta programación

Evidencia de la tarea en el laboratorio .

problema planteado por el profesor .

Se dispone de una pantalla LCD. Elaborar un programa que INCREMENTE un número en 150 unidades cada vez que se presione un pulsador y DECREMENTE dicho número en 25 unidades cada vez que se presione otro pulsador.
Si el valor del número supera 1000 unidades, mostrar en la pantalla LCD en la primera línea: “FULL”. Si el valor llega a ser menor o igual a 10, mostrar “VALOR MINIMO”. En ambos casos el valor del número no debe incrementarse ni decrementarse.

el nuevo código realizado 



#include <16f877a.h>
#use delay (clock=20M)
#fuses HS, NOPROTECT, NOWDT
#define LCD_ENABLE_PIN PIN_D3 //Definimos los pines a ser
#define LCD_RS_PIN PIN_D2 //pantalla LCD
#define LCD_RW_PIN PIN_A0
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c> // Incluimos librería para manejar Pantalla LCD

int16 dato;

void main ()
{
   lcd_init (); // Inicializamos pantalla LCD
   dato = 60; // Damos valor inicial para empezar la cuenta
   printf (lcd_putc, "    CONTADOR    ") ; // Mandamos mensaje por única vez
   lcd_gotoxy (1, 2) ;
   printf (lcd_putc, "Valor: %4lu", dato) ;

   WHILE (true)
   {
      IF (!input (PIN_D0)) // Rutina para INCREMENTAR dato
      {
     
         dato = dato + 150;
         lcd_gotoxy (1, 1) ;
         printf (lcd_putc, "    CONTADOR    ") ;
         lcd_gotoxy (1, 2) ;
         printf (lcd_putc, "Valor: %4lu", dato) ;
     
         IF (dato>=1000) {
         lcd_gotoxy (1, 1) ;
         printf (lcd_putc, "     FULL     ") ;
         lcd_gotoxy (1, 2) ;
         printf (lcd_putc, "Valor: %4lu", dato) ;
     
         WHILE (true)
         {
         IF (!input (PIN_D1))
         {
         dato=dato - 25;
         lcd_gotoxy (1, 1) ;
         printf (lcd_putc, "    CONTADOR    ") ;
         lcd_gotoxy (1, 2) ;
         printf (lcd_putc, "Valor: %4lu", dato) ;
         WHILE (!input (PIN_D1)) // Rutina ANTIRREBOTE por software
         {}
         }
         if (dato<1000)
         {
         break;
         }
         }
     
         }

         WHILE (!input (PIN_D0)) // Rutina ANTIRREBOTE por software
         {}
      }

      IF (!input (PIN_D1))
      {
     
         dato = dato - 25;
         lcd_gotoxy (1, 1) ;
         printf (lcd_putc, "    CONTADOR    ") ;
         lcd_gotoxy (1, 2) ;
         printf (lcd_putc, "Valor: %4lu", dato) ;
     
         IF (dato<=10) {
         lcd_gotoxy (1, 1) ;
         printf (lcd_putc, "     VALOR MINIMO      ") ;
         lcd_gotoxy (1, 2) ;
         printf (lcd_putc, "Valor: %4lu", dato) ;
     
         WHILE (true)
         {dato = 0;
         IF (!input (PIN_D0))
         {
         dato = 0;
         break;
         }
         }
         }

         WHILE (!input (PIN_D1)) // Rutina ANTIRREBOTE por software
         {}
      }
   }

   }

el codigo en ccs c compoler.










Guardado del archivo programado (comf) para su ejecucion en proteus 



explicacion de su funcionamiento en proteus 

 nuestro contador  empieza con el valor de 60.



al presionar presionar una vez  D0 nuestro contador debe aumentar en 150.



al presionar nuevamente D0 nuestro contador debe aumenta en 150.




cuando nuestro contador supere los 1000 debe paracer FULL en la pantalla LCD




cuando presionamos D1 nuestro contador debe disminuir en 25.iniciamos con el contador en 60


cuando es igual o menor que 10 en nuestra pantalla LCD de aparecer valor minimo



FUNCIONAMIENTO.











OBSERVACIONES .
  • observamos que para el correcto funcionamiento de la programador teníamos que incluir la librería del LCD para poder evitar errores en el programa.
  • se observo que en el LCD podemos visulizar y mostrar numero ,textos ,etc .Pero estos son limitados por el caracteres del LCD (16 caracteres horizontales y 2 lineal verticales ).
  • observamos que la funcion PRITF nos permite ver o visualizar los caracteres del LCD como por ejemplo numeros ,textos ,etc.
  • observamos para que hayga un orden en el LDC usamos  lo siguente "lcd_gotoxy(1,1) nos numero que se encuentran dentro no sirve para seleccionar la posocion.


CONCLUSIONES .
  • se concluyo que para hacer las programaciones nosotros tenemos que saber el funcionamiento de cada uno de los funciones como ejemplo IF, ELSE,WHILE.
  • concluimos que en el presente trabajo realizado usamos bastante las condiciones y bucles dentro de una misma condicion.
  •  concluimos que para programar teníamos que sacar una nueva la carpeta del LCD, y asi programar  en nuestro lcd. y así lograr los objetivos planteado en el laboratorio.

Foto


  

 Bibliografia y paginas web recomendada
  • Marin, Francisco (2007) Diseño basado en microcontroladores . Malaga : Universidad de          Malaga(004.16/M26D)
  •  Pereira; Fabio (2007) Microcontroladores PIC.Sao Paulo:s.n.(005.13/P43)







1 comentario: