JUEGO DE TIRO A CANASTA CON
INDICADOR DE PUNTOS
FASE 1: Programación de una pantalla LCD
FASE 1: Programación de una pantalla LCD
1. COMPETENCIA ESPECIFICA DE LA SESION
- Conocer el Display LCD y su funcionamiento
- Programar eficientemente el LCD
- Programar HMI para proyecto actual.
2. MARCO TEÓRICO
- Pantallas LCD de 16x2
Descripción y funcionamiento de una pantalla LCD.
Un Display de cristal líquido o también conocido por sus siglas como LCD (Liquid Crystal Display), es un elemento que remplaza fácilmente a los Displays de segmentos que existen en el mercado, estas pequeñas pantallas no se ven limitadas por la falta de espacio ya que actualmente se pueden conseguir de un tamaño suficiente para cubrir cualquier necesidad, ademas el aumento en el tamaño del dispositivo no significa un aumento en las conexiones eléctricas del mismo (esto es un punto a su favor).
¿Cómo funciona un Display LCD?
El LCD modifica la luz que lo incide. Dependiendo de la polarización que se esté aplicando, el LCD reflejará o absorberá más o menos luz. Cuando un segmento recibe la tensión de polarización adecuada no reflejará la luz y aparecerá en la pantalla del dispositivo como un segmento oscuro. Seguro que más de un lector habrá visto este fenómeno en calculadoras, relojes, etc.
El líquido de un display LCD está entre dos placas de vidrio paralelas con una separación de unos micrones. Estas placas de vidrio tienen unos electrodos especiales que definen, con su forma, los símbolos, caracteres, etc. que se visualizarán.
La superficie del vidrio que hace contacto con el líquido es tratada de manera que induzca la alineación de los cristales en dirección paralela a las placas. Esta alineación permite el paso de la luz incidente sin ninguna alteración.
Cuando se aplica la polarización adecuada entre los electrodos, aparece un campo eléctrico entre estos electrodos (campo que es perpendicular a las placas) y esto causa que las moléculas del liquido se agrupen en sentido paralelo a éste (el campo eléctrico) y cause que aparezca una zona oscura sobre un fondo claro (contraste positivo). De esta manera aparece la información que se desea mostrar.
3. EVIDENCIAS DENTRO DEL LABORATORIO:
1. Simule y pruebe en el entrenador el programa del LCD de acuerdo al circuito y código siguiente. Asegúrese que el PIN RW esté conectado a GND (jumper sin conectar) y que el LCD esté conectado al PUERTO D mediante interruptores rojos debajo del mismo:
Código de programación en el entrenador:
#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
printf (lcd_putc, " CONTADOR") ; // Mandamos mensaje por única vez
dato = 44; // Damos valor inicial para empezar la cuenta
WHILE (true)
{
IF (!input(PIN_D0)) // Rutina para INCREMENTAR dato
{
dato = dato + 7;
lcd_gotoxy(1,2);
printf (lcd_putc, "Valor: %lu", dato) ;
while (!input(PIN_D0)) // Rutina ANTIRREBOTE por software
{}
}
IF (!input(PIN_D1))
{
dato = dato - 5;
lcd_gotoxy(1,2);
printf (lcd_putc, "Valor: %lu", dato) ;
while (!input(PIN_D1)) // Rutina ANTIRREBOTE por software
{}
}
}
2. Investigue y responda lo siguiente:
¿Cómo hacer para mostrar números negativos?
En la linea de codigo donde tenemos estos: printf (lcd_putc, "Valor: %lu", dato) ;
cambiamos lu (variable tipo entero largo sin signo) por ld (varable tipo entero con signo), es decir tendriamos: printf (lcd_putc, "Valor: %ld", dato) ;
¿cómo hacer para mostrar números con decimales?
En la linea de codigo donde tenemos estos: printf (lcd_putc, "Valor: %lu", dato) ;
cambiamos lu (variable tipo entero largo sin signo) por f (varable tipo numero real o flotante), es decir tendriamos: printf (lcd_putc, "Valor: %f", dato) ;
3. En base al programa anterior, realice un PROGRAMA con los siguientes REQUERIMIENTOS:
Código de programación:
#include <16f877a.h> // Incluimos archivo con PIC a utilizar
#use delay (clock=20M) // Indicamos al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT // Configuración básica de los fusibles
#define LCD_ENABLE_PIN PIN_D3 //Definimos los pines a ser utilizados por la
#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
printf (lcd_putc, " CONTADOR") ; // Mandamos mensaje por única vez
dato = 0; // Damos valor inicial para empezar la cuenta
WHILE (true)
{
IF (!input(PIN_D0)) // Rutina para INCREMENTAR dato
{
dato = dato + 150;
lcd_gotoxy(1,2);
printf (lcd_putc, "Valor: %lu", dato) ;
while (!input(PIN_D0)) // Rutina ANTIRREBOTE por software
{}
IF (dato>1000)
{ dato=1000;
lcd_gotoxy(1,1);
printf (lcd_putc, " FULL ") ;
}
}
IF (!input(PIN_D1))
{
lcd_gotoxy(1,1);
printf (lcd_putc, " CONTADOR ") ;
dato = dato - 150;
lcd_gotoxy(1,2);
printf (lcd_putc, "Valor: %lu", dato) ;
while (!input(PIN_D1)) // Rutina ANTIRREBOTE por software
{}
IF(dato==0)
{ dato=0;
lcd_gotoxy(1,1);
printf (lcd_putc, " VALOR MINIMO ") ;
}
}
}
}
#use delay (clock=20M) // Indicamos al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT // Configuración básica de los fusibles
#define LCD_ENABLE_PIN PIN_D3 //Definimos los pines a ser utilizados por la
#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
printf (lcd_putc, " CONTADOR") ; // Mandamos mensaje por única vez
dato = 0; // Damos valor inicial para empezar la cuenta
WHILE (true)
{
IF (!input(PIN_D0)) // Rutina para INCREMENTAR dato
{
dato = dato + 150;
lcd_gotoxy(1,2);
printf (lcd_putc, "Valor: %lu", dato) ;
while (!input(PIN_D0)) // Rutina ANTIRREBOTE por software
{}
IF (dato>1000)
{ dato=1000;
lcd_gotoxy(1,1);
printf (lcd_putc, " FULL ") ;
}
}
IF (!input(PIN_D1))
{
lcd_gotoxy(1,1);
printf (lcd_putc, " CONTADOR ") ;
dato = dato - 150;
lcd_gotoxy(1,2);
printf (lcd_putc, "Valor: %lu", dato) ;
while (!input(PIN_D1)) // Rutina ANTIRREBOTE por software
{}
IF(dato==0)
{ dato=0;
lcd_gotoxy(1,1);
printf (lcd_putc, " VALOR MINIMO ") ;
}
}
}
}
4. Video mostrando las tareas realizadas en laboratorio Y SIMULACION del programa solicitado.
4. OBSERVACIONES
- Se observó que en el proyecto a desarrollar compilaremos y ejecutaremos programas en el entrenador de PIC
- Se vio que utilizaremos los micro controladores en aplicaciones de control electrónico.
- Se observó que el laboratorio en si será simulado y no se armara por lo cual se requiere una PC con software de simulación.
- Se vio que en el laboratorio se debe revisar la conexión de los equipos electrónicos antes de programar o simular el sistema para que no ocurran fallas
- Se observó en el desarrollo del laboratorio que es necesario gestionar los recursos y usar los componentes así como escoger la programación adecuada a realizar.
5. CONCLUSIONES
- Un micro controlador posee todos los componentes integrados en su estructura por lo cual no necesita de otros componentes especializados para su utilización o aplicación.
- Se demostró que para la configuración de una pantalla LCD debemos tener las herramientas necesarias para realizar la adaptación del programa correctamente.
- Debemos reconocer y saber cómo utilizar adecuadamente la programación e insertarla en la tarjeta para obtener la función deseada en el LCD.
- Al insertar una programación en un display de cristal líquido Lcd es muy fácil controlar su comportamiento dependiendo de los requerimientos y la tarea específica asignada.
- Se demostró que la programación HMI es importante en el control del proceso , ya que es la parte que visualiza la información y muestra datos de acuerda a la programación especificada.
INTENGRANTES:
- GABRIELA BENITO MENDOZA
-PERCY VALDIVIA APAZA
