TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: facundo_10 en 12 de Diciembre de 2007, 13:06:35
-
Hola, necesito ayuda para conectar un teclado matriz a mi pic, es un 16f628, por ahora lo unico que quisiera que haga (para empezar,,, estoy aprendiendo :P) es que cuando puse una tecla se muestre un numero (de la tecla que pulse) en una pantalla del LCD.
Como me parece que no voy a poder poner una pantalla LCD de 16x2 y un Tecado matriz de 7 contactos 3 columnas, 4 filas, voy a hacer una simulacion en proteus con un pic 16f873.
Que ahi voy a andar bien de pines.
Para controlar el LCD, ya fui aprendiendo, pero quisiera saber como se controlan estos teclados. Si alguien me puede ayudar!
-
Puedes checar este tema (http://www.todopic.com.ar/foros/index.php?topic=4025.msg28032#msg28032)
O bien checar todos los resultados que arroja el buscador (http://www.todopic.com.ar/foros/index.php?action=search2)
-
Hola, pues si esta bien, pero me preguntaba si habia alguno con alguna explicacion un poco mas extensa y en español si es posible..
Desde ya muchas graciaS!
-
Si claro en el buscador aparecen muuchos temas sobre esto y creo que son transparentes los codigos, bueno el primero no tanto
-
busca en el foro que yo en su dia se pegaron varios post con codigo para teclado, yo mismo puse uno comentado, los teclados son muy somples de usar, eso si deberas cambiar de chip ya que si piensas usar display teclado y algun pin mas el 628 te queda corto, necesitarias un 876 y mejor aun un 877.
Saludos
-
eso si deberas cambiar de chip ya que si piensas usar display teclado y algun pin mas el 628 te queda corto, necesitarias un 876 y mejor aun un 877.
Saludos
Aunque puedes usar el mismo bus del LCD o display para otras cosas siempre y cuando desactives el lcd.
-
voy a hacer una simulacion en proteus con un pic 16f873.
Que ahi voy a andar bien de pines.
Hola:
Pues los pines no serán problemas, ya que el 16F873 tiene 28, y es el que va a utilizar, lo mencionó en su primer post.
-
Hola asi como dice giovanni voy a utilizar ese.... el 16f873
Lo que pasa es que me gustaria entender un poco la rutina:
" Define program variables
Col var byte " Keypad column
Row var byte " Keypad row
Key var byte " Key value
OPTION_REG.7 = 0 " Enable PORTB pullups
Low PORTE.2 " LCD R/W line low (W)
Delayms 100 " Wait for LCD to start
Print Cls, "Press any key" " Display sign on message
loop: Gosub Getkey " Get a key from the keypad
Print $FE, 1, #Key " Display ASCII key number
Goto Loop " Do it forever
" Subroutine to get a key from keypad
getkey:
Delayms 50 " Debounce
getkeyu:
" Wait for all keys up
PORTB = 0 " All output pins low
TRISB = $f0 -----> que quiere decir esto de aca????
If (PORTB >> 4) <> $0F Then Getkeyu ---- ??? ESTO DE ACA A QUE SE REFIERE?
Delayms 50 " Debounce
getkeyp:
" Wait for keypress
For Col = 0 to 3 " 4 columns in keypad
PORTB = 0 " All output pins low
TRISB = (Dcd Col) ^ $FF "--------------> ESTO DE ACA ???'
row = PORTB >> 4 --------------------> ?????
If Row <> $0F Then Gotkey -------------->?¿???
Next Col
Goto Getkeyp " No keys down, go look again
Gotkey: " Change row and column to key number 1 - 16
Key = (Col * 4) + (Ncd (Row ^ $0F)) ------------->???? que es esto ?
Return " Subroutine over
-
Como podras ver en esa rutina usa muchos operadores logicos e instrucciones del compilador por ejemplo el NCD o el DCD que son instrucciones que puedes buscar en la ayuda del PBP. y los operadores igual.
Recuerda que cuando usas $, estas diciendo que es un numero hexadecimal, si pones % debera ser binario. Aca deberas ver que es para PROTON y para PBP deberas usar LCDOUT y PAUSE
-
Hola, necesito ayuda para conectar un teclado matriz a mi pic, es un 16f628, por ahora lo unico que quisiera que haga (para empezar,,, estoy aprendiendo :P) es que cuando puse una tecla se muestre un numero (de la tecla que pulse) en una pantalla del LCD.
Como me parece que no voy a poder poner una pantalla LCD de 16x2 y un Tecado matriz de 7 contactos 3 columnas, 4 filas, voy a hacer una simulacion en proteus con un pic 16f873.
Que ahi voy a andar bien de pines.
Para controlar el LCD, ya fui aprendiendo, pero quisiera saber como se controlan estos teclados. Si alguien me puede ayudar!
Estimado colega no te des tanto lio yo lo manejo de esta manera los teclados matricial y funciona perfecto
inicio:
call TECLADO
if TECLA=11 THEN inicio
ELSE
PRINT $FE,2, #TECLA
GOTO inicio
TECLADO:
TECLA = 11
PORTD.0 = 0 'COLUMNA 1=0
PORTD.1 = 1 'COLUMNA 2=1
PORTD.2 = 1 'COLUNMA 3=1
If PORTD.3 = 0 Then TECLA = 1 'TECLA 1
If PORTD.4 = 0 Then TECLA = 4 'TECLA 4
If PORTD.5 = 0 Then TECLA = 7 'TECLA 7
If PORTD.6 = 0 Then TECLA = 10 'TECLA *
PORTD.0 = 1 'COLUMNA 1=1
PORTD.1 = 0 'COLUMNA 2=0
PORTD.2 = 1 'COLUNMA 3=1
If PORTD.3 = 0 Then TECLA = 2 'TECLA 2
If PORTD.4 = 0 Then TECLA = 5 'TECLA 5
If PORTD.5 = 0 Then TECLA = 8 'TECLA 8
If PORTD.6 = 0 Then TECLA = 0 'TECLA 0
PORTD.0 = 1 'COLUMNA 1=1
PORTD.1 = 1 'COLUMNA 2=1
PORTD.2 = 0 'COLUNMA 3=0
If PORTD.3 = 0 Then TECLA = 3 'TECLA 3
If PORTD.4 = 0 Then TECLA = 6 'TECLA 6
If PORTD.5 = 0 Then TECLA = 9 'TECLA 9
If PORTD.6 = 0 Then TECLA = 12 'TECLA #
delayms 150
Return 'RETORNA UNA LINEA DESPUES DEL LLAMADO CALL
end
nota: estoy tienes que definir tu puerto para ser usado con el teclado en este caso el puerto D :mrgreen: