Está en la página 1de 19

Actividades prcticas. Parte 1. Verificar el funcionamiento de los programas propuestos. Ejemplo 1.

Simulacin en proteus:

Fig1. Circuito simulado en proteus. Explique el funcionamiento del programa al oprimir cada uno de los interruptores.

Al oprimir el botn A0 se limpia la LCD mediante la instruccin lcd_putc(`\f`), se manda imprimir a la lcd mediante printf(lcd_putc, micro -electronik ), se hace una pausa de 2 segundos y se vuelve a limpiar la lcd mediante lcd_putc(`\`f`) posteriormente se imprime de nuevo Presiona un boton.

Fig2. Mensaje al oprimir el botn A0. Al oprimir el botn A1 se limpia la lcd mediante la instruccin lcd_putc(`\f``) y mediante un ciclo For se inicializa una variable en 17 que ser la posicin donde se imprimir el mensaje a visualizar en la lcd, mediante la instruccin lcd_gotoxy(i,1) se ira moviendo el mensaje hacia la izquierda.

Fig3. Mensaje recorrindose de derecha a izquierda.

Al oprimir el botn A2 se borra el lcd y nuevamente se utiliza un ciclo For para ir recorriendo el mensaje de izquierda a derecha mediante la instruccin que posiciona el cursor lcd_gotoxy(i,1) y la que manda imprimir en pantalla que es printf(lcd_putc,recorriendo a la derecha).

Fig4. Recorriendo mensaje a la derecha. Menciona cual es la manera de recorrer un texto a la derecha o izquierda.

Se puede recorrer mediante la instruccin gotoxy(i,i) que nos indica la posicin del cursor en la lcd, variando las coordenadas y las impresiones en la lcd mediante Printf(lcd_putc, ) se pued e hacer el recorrido hacia la derecha o izquierda. Ejemplo2. Simulacin en proteus:

Fig5. Simulacin en proteus teclado matricial.

Ejemplo3: Este progreama utiliza las libreras lcd.c y Kbd.c para poder utilizar la pantalla LCD y la matriz de 4X3. Mediante la instruccin kbd_getch( ); se obtiene el valor de la tecla que se selecciona, ese valor se imprime en la lcd mediante la instruccin printf(lcd_putc, tecla=%c,k); Simulacin en proteus:

Fig6. Circuito matriz-lcd.

Fig7. Despliegue de la tecla seleccionada. Ejemplo4: Este programa despliega en el lcd una leyenda diferente dependiendo el valor que tome la variable K, esta variable guarda el dato del valor de la tecla seleccionada en el teclado matricial. Simulacin proteus:

Fig8. Mensajes dependiendo la tecla.

A) Utilizando el Circuito de la figura 4.3 y el elemento actuador del circuito 4.3 (relevador), proponga un programa que inicie con el mensaje Contrasea y obtenga 3 dgitos de contrasea mediante el teclado, visualizando en un LCD uno a uno de los caracteres, al obtener los tres dgitos visualizar la contrasea y esperar un segundo para mostrar el mensaje acceso recorrindolo a la derecha y activar el relevador durante 2 segundo, el caso de ser incorrecto que a parezca denegado recorriendo el texto a la derecha durante 2 segundos, al finalizar que aparezca el texto Contrasea. Cdigo:

Para tener una contrasea fija se guardan los dgitos de esta en memoria rom como lo muestra la lnea 11 del cdigo, se utilizaron las libreras lcd.c y kbd.c que corresponden a las funciones de la pantalla LCd y al teclado matricial, el valor del teclado matricial se obtiene utilizando la instruccin kbd_getch( ); que se asigna a la variable K. Mediante la instruccin lcd_gotoxy(i,i) se imprimen los dgitos ingresados en el teclado sobre la segunda lnea del LCD. Se leen los valores de la contrasea definida en la memoria rom mediante la instruccin read_eeprom(i); y se comparan con los datos ingresados mediante el teclado, si los datos son iguales se despliega de izquierda a derecha la palabra acceso y se pone en alto el pin c4 que seria el que active el relevador, de lo contrario se despliega la palabra denegado de izquierda a derecha.

Simulacin:

Fig9. Circuito teclado-LCD.

Fig10. Mensajes de acceso.

B) Se requiere un tablero digital implementado en un LCD. El sistema deber mostrar la puntuacin de para juegos de hockey, en ambas porteras existen sensores denominado A y B que detectan cuando se anota un gol por lo que automticamente se marcara el puntaje y tiene un botn para reiniciar la cuenta. Cdigo:

Nuevamente se utilizo la funcin lcd.c para poder habilitar la pantalla LCD. Se utilizo la instruccin printf(lcd_putc, ); para desplegar informacin en la pantalla. Se pregunto por el botn que se apretaba y dependiendo este se incrementaba un contador que era el marcador y se mandaba imprimir a la pantalla LCD.

Simulacin en proteus:

Fig11. Marcador local-visitante

C) Utilizando un LCD, teclado matricial, implemente programa que realice las funcin como un horno de microondas del 0 a la 9 definidas por el usuario donde la funcin 0 debe durar un tiempo 100seg y las opciones restantes deben ser definidas por el programador. En el LCD se debe iniciar con la leyenda Selecciona, posteriormente al oprimir la tecla debe aparecer cual oprimi, luego la funcin (por ejemplo 0 es igual descongelar) y deben de visualizar el tiempo que lleva al llegar a cero debe aparecer finalizado y encender un led para posteriormente volver a seleccionar, las opciones * y # deben marcar no validas Cdigo: Para este cdigo se utilizo las librerias lcd.c y kbd.c para poder habilitar las funciones de la pantalla LCD as como el teclado matricial, para obtener el valor de la tecla seleccionada se utilizo la instruccin kbd_getch( );. Para entrara a cada funcin del teclado se utilizo un Switch y cada caso corresponda a un digito del teclado matricial. Dentro de cada caso se mando imprimir la funcin que corresponda (descongelar, pollo, etc) posteriormente un contador va decrementando el valor inicial y se desplegaba continuamente en la pantalla LCD hasta que llega a cero. Al finalizar el tiempo aparece un mensaje de finalizado y se manda a alto el pin C0. Para los botones # y * se despliega en la pantalla LCD un mensaje de no valido por un periodo de dos segundos.

Simulacin en proteus:

Fig12. Circuito teclado-LCD.

Fig13. Seleccin de dgitos.

D) Utilizando un LCD, teclado matricial, implemente programa que realice las funcin como un horno de microondas donde con el teclado numrico definir el tiempo de funcionamiento En el LCD se debe iniciar con la leyenda Selecciona tiempo , posteriormente pedir el tiempo en segundo el valor mximo debe ser 5 minutos, al iniciar deben de visualizar el tiempo que lleva al llegar a cero debe aparecer finalizado y encender un led para posteriormente volver a seleccionar tiempo, las opciones * y # deben marcar ser usar para iniciar la cuenta o para reiniciar y pedir el y tiempo de nuevo.

Cdigo:

Simulacin en proteus:

Fig14. Circuito horno de microondas.

Fig15. Ingresando valores.

Cuestionario A) Menciona los diferentes formatos para expresar un carcter en un LCD con el compilador de C. El formato es %nt, donde n es opcional y pude ser: 1-9: para especificar cuantos caracteres se deben especificar. 01-09: para indicar la cantidad de ceros a la izquierda. 1.1-9.9 para coma flotante. T puede indicar: C carcter. S cadena o carcter. U entero sin signo. d entero con signo. Lu entero largo sin signo. Ld entero largo con signo. X entero hexadecimal. Lx entero largo hexadecimal. F flotante con truncado. G flotante con redondeo. E flotante en formato exponencial. W entero sin signo con decimales insertados. B) En el caso del archivo de manejo de LCD como de teclado, Que modificaciones se tienen que realizar para utilizar un puerto diferente al B o D? Se puede trabajar con otros puertos, por ejemplo el PortC, modificando el fichero lcd.c. Modificando las siguientes sentencias se puede trabajar con otro puerto (A,C,etc).

#if defined use_portb_lcd #locate lcd = getenv(sfr: PORTB) #define set_tris_lcd(x) set_tris_b(x) #else #locate lcd = getenv(sfr: PORTD) #define set_tris_lcd(x) set_tris_d(x) #endif

C) Por qu en la instruccin #rom tiene el valor 0x2100 Porque la direccin de la memoria EEPROM comienza desde la direccin 0x2100 y termina hasta la direccin 0x21FF

D) Que modificacin se tendran que realizar para manejar el teclado en puerto B y LCD en el puerto C Para utilizar el puerto B es necesario eliminar el comentario de la siguiente lnea el archivo LCD.C. #define use_port_kbd TRUE Para poder utilizar la pantalla LCD con el puerto C necesitas modificar las sentencias en el fichero lcd.c como se indico en la pregunta del inciso b

E) Que modificacin se tendran que realizar para manejar el teclado en puerto C y LCD en el puerto D, si se desea utilizar un pic16f887 La pantalla LCD por defecto utiliza el puerto D, para poder utilizar el teclado en el puerto C debes modificar las siguientes sentencias en el fichero kbd.c #if defined use_portb_lcd #define set_tris_lcd(x) set_tris_b(x) #else #define set_tris_lcd(x) set_tris_d(x) #endif

Conclusiones: Garcia Barajas Luis Alberto. Esta prctica es de gran ayuda ya que el uso de una pantalla LCD o un teclado matricial son elementos que en un proyecto son de gran utilidad. La prctica nos lleva de la mano en el uso e implementacin tanto de una pantalla LCD como un teclado matricial, nos muestra cuales son sus principales funciones y nos ayuda a comprender como es la adquisicin de datos o el despliegue de ellos. Es evidente que el uso de estos elementos es mucho ms sencillo en lenguaje C que en lenguaje ensamblador ya que te ahorras toda la programacin de la inicializacin en el caso de la pantalla LCD como en la obtencin de los datos en el teclado marcial.

Chvez Gonzlez Gamaliel Al manipular una LCD y un teclado matricial hemos hecho un gran avance, la simplificacin al manejar estos dispositivos es bastante til, el controlar una compleja LCD por medio de ensamblador es algo tardado, pero controlarla por medio de micro C, es sencillo y el teclado matricial tambin, por lo cual podremos utilizar estos elementos con gran sencillez, el manipular esto para poder elegir el puerto que necesitamos es bastante sencillo de igual forma, solo necesitamos cambiar una lnea de la librera .C.

INSTITUTO POLITCNICO NACIONAL

UPIITA

MICRICONTROLADORES AVANZADOS

PRACTICA 4 LCD Y TECLADO MATRICIAL

ALUMNOS: GARCA BARAJAS LUIS ALBERTO. CHVEZ GONZLEZ GAMALIEL.

GRUPO: 4MV2