Tutorial Proton Part 6

download Tutorial Proton Part 6

of 9

Transcript of Tutorial Proton Part 6

TECLADO MATRIXAL

El teclado Matrixal es un dispositivo utilizado para obtener entrada del usuario. Los detectores de pulsacin simple se puede utilizar para obtener datos del usuario, como lo hemos hecho, esto requerira 1 lnea I / O por interruptor. El uso de teclados es una metodologa ligeramente diferente. Teclados son agrupacin de interruptores dispuestos en la forma de una matriz. As que hay filas y columnas de interruptores. Las dos conexiones de un interruptor tambin estn conectadas en la matriz, de modo que la fila y la columna tiene un sentido de conexin. As, cuando se pulsa un botn una fila y una columna, se conectan internamente. Los teclados suelen estar disponibles en tipo de telfono 3 x4 teclado. Esta tiene tres columnas y 4 lneas, o un 4 x 4 con teclado de 4 filas y 4 columnas. La salida disponible desde el teclado numrico est organizada como filas y columnas.

Ahora, para detectar qu tecla se presiona es un poco difcil. Digamos 8, cuando se pulsa la tecla C4 y F2 estn conectados entre s. CONEXIN DEL TECLADO En primer lugar identificar pines del teclado como los son filas y columnas. Por lo general estn agrupados. Para conectar el teclado al microcontrolador necesita conectar a los pines de las columnas resistencias pull de 10K. Las filas pueden ser conectadas directamente o preferentemente a travs de 330 ohms, que limita el corto cuando se pulsa un interruptor.

El PORTB de microcontrolador PIC 18F4550 tiene un grupo interno de resistencias, siendo no necesario conectar resistencias externas si se utiliza este PUERTO (B). Si otro puerto que se utilizar usted tendr que utilizar resistencias. Todas las filas y columnas deben estar conectadas al mismo puerto. DETECCIN AL PULSAR LA TECLA Ahora, cuando el teclado se ha conectado, es importante para detectar la Tecla que est siendo presionado. El truco consiste en escanear todas las filas, una por uno. Dado que las columnas tienen resistencias de estos pines estn a lgica 1. El primer paso es hacer la fila 1 lnea baja, 0 lgico. A continuacin, para analizar

todas las lneas de la columna pasar un 0 lgico. Si todas las lneas de la columna no son altas en esta lnea la tecla est siendo presionada. El mismo proceso se repite para las dems filas. Cada vez que una fila se toma en 0 lgico y todas las columnas son escaneadas. El proceso es simple, pero requiere de un cdigo muy grande. Esto es especialmente as, cuando el teclado se va a utilizar en una serie de aplicaciones. PROTON BASIC ha hecho que sea sencillo para nosotros, proporcionando una orden directa que escanea el teclado. Recuerde que la rutina de exploracin nos dar un nmero de TECLA que se presiona, el nmero adquirido no coincide con la etiqueta de la TECLA. Tenemos que traducir en el software la etiqueta que corresponda al cdigo de la TECLA de acompaamiento que se detecta. En este Tutorial se conecta el teclado al PORTB del PIC 18F4550, que es ms adecuado por tener un grupo interno resistencias, tambin se conecta la pantalla LCD en PORTD para ver los resultados detectados por el teclado. Ejemplo 1

Programa: Device = 18F4550 XTAL = 20 ALL_DIGITAL=true

KEYPAD_PORT PORTB PORTB_PULLUPS true LCD_DTPIN PORTD.4 LCD_RSPIN PORTD.3 LCD_ENPIN PORTD.2 LCD_INTERFACE = 4 LCD_LINES = 2 LCD_TYPE = 0 DelayMS 150 Cls Dim x As Byte loop: x=InKey Print At 1,1,"TECLA:", DEC3 x GoTo loop PROTON BASIC proporciona el comando Inkey para escanear el teclado. Antes de utilizar el comando Inkey el compilador debe ser informado sobre el puerto en el que se ha conectado el teclado.

El comando x = Inkey explorar el teclado, y cargara un nmero en la variable x. este comando no va a esperar para saber si una TECLA ha sido presionada. Si ninguna tecla est siendo presionada cargara un valor de 016. Otros valores dependern de cmo el teclado se ha adjuntado. Si esta bien conectado los siguientes cdigos deben ser cargados.

1=0 7=008

2= 001 8=009

3=002 9=010

4=004 * = 012

5=006 0=013

6=006 # = 014

Los nmeros 003, 007 y 015 no se consignan, ya que estas son las claves para la columna 4, si se tiene un teclado 4 x 4. Si no recibe estos nmeros en este orden, invertir el conector del teclado, de modo que se conectan filas en los BITS bajos del puerto y las columnas en los Bits altos del puerto. EL MAPEO DE ETIQUETAS KEYPAD El teclado es bsicamente una matriz de interruptores, que no siempre puede ser un teclado numrico. Puede haber varios smbolos o etiquetas de algunos otros, como necesidades de un proyecto. Aunque usted como programador sabe qu tecla se ha pulsado por conocer su cdigo, sin embargo, puede hacerse ms fcil mediante la asignacin de etiquetas diferentes a los valores cargados. Esto puede realizarse mediante sentencia IF, PROTON BASIC, establece un comando muy til llamado LookUp (bsqueda). El comando lookup acepta una variable, y un conjunto de etiquetas, que son cargadas en el valor de ndice (x). Ejemplo 2:

Circuito ejemplo 2

PROGRAMA: Device = 18F4550 XTAL = 20 ALL_DIGITAL=true KEYPAD_PORT PORTB PORTB_PULLUPS true LCD_DTPIN PORTD.4 LCD_RSPIN PORTD.3 LCD_ENPIN PORTD.2 LCD_INTERFACE = 4 LCD_LINES = 2 LCD_TYPE = 0 DelayMS 150 Cls Dim x As Byte Dim a As Byte loop: x=InKey a= LookUp x, [1,2,3,255,4,5,6,255,7,8,9,255,"*",0,"#",255,255] Print At 1,1,"Tecla:", DEC3 x Print At 2,1,"Libreria:", DEC3 a GoTo loop

Circuito ejemplo 2

Este programa escanea el teclado y lee el valor de la Tecla en la variable x. la siguiente lnea usa x como un ndice para localizar un Tecla relaciona en la lista. Hemos puesto 255 en lugares en donde la Tecla no existe, y los ltimos 255, el nmero 016 aparece si no se pulsa ninguna tecla. La variable 'a' ahora contendr los nmeros que coinciden en la lista. Nota: los signos * y # han sido encerrados en comillas, para convertirlos a sus respectivos Cdigos ASCII. LECTURA DEL TECLADO PARA OBTENER UN NMERO Bueno hasta ahora hemos practicado con teclado para leer las teclas individuales. Qu pasa si queremos leer un valor, almacenarla en una variable como un entero. Supongamos que queremos hacer una contrasea protegida para abrir un bloqueo cuando la contrasea ha sido introducida correctamente. Ejemplo 3:

Circuito Ejemplo 3 La primera tarea sera la de leer las teclas del teclado (4X3) y hacer de uno a uno el nmero. Al igual que si pulsamos 6712 y luego * la variable debe contener el nmero 6712 que puede ser utilizados en cualquier clculo, comparacin o lo que nos ocurra.

La sola idea es escanear el teclado, y leer los dgitos como 0-9 ignorando el estado de inactividad. Cuando un nmero a leer se aade a la variable y es presionado el asterisco (*) acabamos la rutina. PROGRAMA: Device = 18F4550 XTAL = 20 ALL_DIGITAL=true KEYPAD_PORT PORTB PORTB_PULLUPS true LCD_DTPIN PORTD.4 LCD_RSPIN PORTD.3 LCD_ENPIN PORTD.2 Print Cls Dim x As Byte Dim numero As Word start: Print Cls numero=0 loop: x=InKey x= LookUp x, [1,2,3,255,4,5,6,255,7,8,9,255,"*",0,"#",255,255] If x="*" Then GoTo Exit_loop If x 255 Then DelayMS 500

numero=numero *10 + x Print Cls, At 1,1, Dec numero EndIf GoTo loop Exit_loop: Print Cls Print At 1,1,"A Ingresado:" Print At 2,1,Dec numero DelayMS 5000 GoTo Stara El punto clave de esta rutina es una variable numero, que es la palabra de tamao de la variable, de modo que puede contener un valor mximo de 65534. Su valor inicial es 0, cada vez que se pulsa una tecla, su valor se multiplica por 10, que se cambia al valor actual de 1 dgito a la izquierda, y las nuevas cifras se aaden en el lugar de unidades.