Páginas:
Por: Ariel Palazzesi
@
lunes, 28 de abril de 2008
Nota vista 10982 veces
En esta oportunidad vamos a aprender todo lo necesario para aprovechar la posibilidad que brinda el modulo central del sistema de alarma propuesto para la conexión de una pantalla LCD alfanumérica. Se trata de un agregado ideal para facilitar la interacción entre el usuario y la alarma.
Usaremos el PIC SIMULATOR IDE.
La programación del display LCD, utilizando el lenguaje BASIC incluido en el PIC SIMULATOR IDE, es bastante simple. Ya le hemos dedicado un capitulo de nuestro curso de programación de microcontroladores, así que seria conveniente que lo leas antes de encarar esta etapa del sistema de alarma.
Podemos dar dos usos al display de nuestra alarma. El primero de ellos tiene que ver con la notificación al usuario del estado en que se encuentra el sistema. Se pueden implementar, con mucha sencillez, mensajes del tipo “ALARMA ACTIVADA”, “DISPARO” o cualquiera que el lector crea conveniente. Tampoco tenemos que olvidar que el modulo principal propuesto cuenta con tres LEDs encargados de avisar los estados mas importantes de la alarma, y que veremos en las próximas entregas como sacarle partido.
El segundo uso es el más interesante, y se relaciona con la entrada de datos por medio del teclado. Si bien podemos mantener muy simple el diseño de nuestra alarma haciendo que se active y desactive simplemente pulsando una tecla, es mucho mejor que dichas tareas se ejecuten previo ingreso de una contraseña. Podemos elegir entre una palabra clave (o numero clave) que permita llevar a cabo ambas tareas (que es lo habitual) o también podemos disponer de una clave para la activación y una diferente para la desactivación. Eso es lo bueno de diseñar nuestro propio sistema de seguridad.
Dado que la programación del display esta íntimamente ligada al uso del teclado, les proponemos un ejemplo que utiliza a ambos elementos: un pequeño programa que se encarga de leer el teclado y mostrar un mensaje en la pantalla indicando que tecla se ha pulsado. Este es el listado:
'----------------------------------
'Alarma NeoTeo
'Ejemplo lectura Teclado y
'escritura en el LCD.
'----------------------------------
AllDigital 'Todos los pines del puerto A como E/S.
TRISA = %11111111 'Puerto A como entradas
TRISB = %00001111 'Puerto B: 4 entradas, 4 salidas
'Declaro las variables a utilizar
Dim tecla As Byte 'Tecla presionada
tecla = 16 '16 = no hay tecla presionada
'Declaro los parametros para el LCD
Define LCD_BITS = 4
Define LCD_DREG = portd
Define LCD_DBIT = 4
Define LCD_RSREG = portc
Define LCD_RSBIT = 6
Define LCD_EREG = portc
Define LCD_EBIT = 7
Lcdinit 0 'inicializo el lcd sin cursor.
'Bucle principal
Lcdout "ALARMA LISTA" 'Muestra el texto…
WaitMs 1000 'Espero un segundo
Lcdcmdout LcdClear 'borro el display
loop:
'Leo el teclado
Gosub leoteclado
WaitMs 10 'Espero
'Si se presiono una tecla, la muestro
If tecla <> 16 Then
Gosub muestrotecla
WaitMs 100 'espero y...
Lcdcmdout LcdClear 'Borro el contenido de la pantalla
Endif
Goto loop 'vuelvo a loop: para repetir indefinidamente.
End
leoteclado:
tecla = 16 '16 = no hay tecla presionada
'Leo la primer columna
PORTB = %10000000
If PORTB.3 = 1 Then tecla = 1 'Tecla "1"
If PORTB.2 = 1 Then tecla = 4 'Tecla "4"
If PORTB.1 = 1 Then tecla = 7 'Tecla "7"
If PORTB.0 = 1 Then tecla = 10 'Tecla "*"
'Leo la segunda columna
PORTB = %01000000
If PORTB.3 = 1 Then tecla = 2 'Tecla "2"
If PORTB.2 = 1 Then tecla = 5 'Tecla "5"
If PORTB.1 = 1 Then tecla = 8 'Tecla "8"
If PORTB.0 = 1 Then tecla = 0 'Tecla "0"
'Leo la tercer columna
PORTB = %00100000
If PORTB.3 = 1 Then tecla = 3 'Tecla "3"
If PORTB.2 = 1 Then tecla = 6 'Tecla "6"
If PORTB.1 = 1 Then tecla = 9 'Tecla "9"
If PORTB.0 = 1 Then tecla = 11 'Tecla "#"
'Leo la cuarta columna
PORTB = %00010000
If PORTB.3 = 1 Then tecla = 12 'Tecla "TEST"
If PORTB.2 = 1 Then tecla = 13 'Tecla "PANICO"
If PORTB.1 = 1 Then tecla = 14 'Tecla "F1"
If PORTB.0 = 1 Then tecla = 15 'Tecla "F2"
Return
muestrotecla:
Lcdcmdout LcdClear 'Borro el contenido de la pantalla
If tecla < 10 Then Lcdout "Tecla: ", #tecla
If tecla = 10 Then Lcdout "Tecla: *"
If tecla = 11 Then Lcdout "Tecla: #"
If tecla = 12 Then Lcdout "Tecla: TEST"
If tecla = 13 Then Lcdout "Tecla: PANICO"
If tecla = 14 Then Lcdout "Tecla: F1"
If tecla = 15 Then Lcdout "Tecla: F2"
Return
Si has leído nuestro tutorial sobre programación de microcontroladores, no deberías tener problemas para comprender el funcionamiento de este pequeño programa. Si aun no lo has hecho, esta es una buena oportunidad para darle un vistazo.
Con esto damos por terminada la tercera entrega de este tutorial. En el próximo, veremos como construir la sirena, como controlarlos LEDs indicadores y mucho más.

Conexión

Cómo desactivar servicios en Windows Vista

Giove-B, del sistema Galileo, ya está en órbita
Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.