Teclado Matricial 4×4
June 13, 2007 at 7:02 pm | Posted in Ensamblador, HowTo, Rutinas | 51 CommentsUn teclado matricial es un simple arreglo de botones conectados en filas y colúmnas, de modo que se pueden leer varios botones con el mínimo número de pines requeridos. Un teclado matricial 4×4 solamente ocupa 4 lineas de un puerto para las filas y otras 4 lineas para las colúmnas, de este modo se pueden leer 16 teclas utilizando solamente 8 líneas de un microcontrolador. Si asumimos que todas las columnas y filas inicialmente están en alto (1 lógico), la pulsación de un botón se puede detectar al poner cada fila a en bajo (0 lógico) y checar cada columna en busca de un cero, si ninguna columna está en bajo entonces el 0 de las filas se recorre hacia la siguiente y así secuencialmente.
Un modo simple de detectar la tecla presionada es incrementar una variable con la cuenta de las teclas revisadas, de este modo al detectaruna pulsación el valor de la cuenta será el valor de la tecla presionada. Si al final no se presionó ninguna tecla la variable se pone a cero y la cuenta vuelve a comenzar. El puerto B del microcontrolador 16f628 (así como en el 16f877) viene preparado especialmente para el control de un teclado matricial 4×4. Para tener siempre un valor de 1 lógico en las colúmnas del teclado (parte alta del puerto B del pic) es necesario conectar resistencias de pull-up, sin embargo el puerto B cuenta con resistencias de pull-up integradas, de ese modo es posible trabajar con un teclado matricial sin necesidad de ningún componente externo.
Lea el artículo completo en el blog Circuitos electronicos.
51 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a reply to micropic Cancel reply
Blog at WordPress.com.
Entries and comments feeds.
interensantes temas
Comment by john— June 25, 2007 #
Gracias por el comentario, si te interesa algún tema en especial y dilo y trataré de hacer un tutorial al respecto.
Comment by micropic— June 25, 2007 #
Hola, muy bueno el tutorial que se viene desarrollando, me gustaría que siga con otros temas. porque veo que en algunos meses no hubo aportes y ahora lo último es junio
Tengo en mente construir un reloj, me gustaría saber la lógica del organigrama por ej.:
declarar pic
etiquetas,
salto del vector reset,
cambiar de banco al 0
cambiar de banco al 1
programa
al encender que me muestre todo cero(hh,mm)
decirle que cuente 1 segundo
decirle que cuente 60 segundos vaya sumando
decirle que me muestre el nº 1 en minutos y siga sumando
decirle que cuente 10 veces 60 segundos y vaya sumando los minutos
que me muestre el nº en decenas de minutos
que cuente 10 veces 60 segundos y lo multiplique por 6 y sume las unidades de hora
que me muestre el número de las unidades de hora
que cuente 10 veces 60 que lo multiplique por 60 y multiplique por 24 para las decenas de hora
que me muestre las decenas de hora.
bueno si esto es mas o menos así y si me podrían ayudar gracias y siga adelante muy bueno su aporte
Comment by Marcelo— August 8, 2007 #
Muy bueno el ejemplo. Resulta que quice implementarlo en un 876A, para un teclado de 3×4,
escribiendo en un display de lcd. Pero tengo un problema, siempre me devuelve “0”.
Saludos
Comment by Mamu— August 30, 2007 #
Modificarlo para que funcione en un teclado 3×4 no debe ser muy complicado. Por ahora estoy algo ocupado (se nota porque no he actualizado la página) pero este fin de semana puedo ayudarte.
Comment by micropic— August 30, 2007 #
[…] matricial 4×3 con un pic 16F628A. Esta rutina es una adaptación de la rutina original del Teclado Matricial 4×4 hecha por petición popular (ok, un solo comentario, pero alguien lo pidió). La lógica del manejo […]
Pingback by Teclado Matricial 4×3 « MicroPIC— September 11, 2007 #
Mamu ya he puesto una rutina para el manejo de un teclado matricial 4×3, igual que esta está hecha para un pic 16f628a pero adaptarla para un 16f876a no tiene mayor complicación. Checala
Comment by micropic— September 12, 2007 #
podria a asesorarme como configuarar el lcd a 4 bit, conectado con el teclado matricial de 4 x 4 y que el lcd haga un recorrido de ventana
Comment by luis— October 18, 2007 #
homobre como se encuetra, espero que bien.
la presente es para pedirle un coloboracion con el teclado matrisial de 4×4, de alguna manera, le agradeceria si tubiese algun tutorial, o el codigo completo en relidad es que el codigo que se encuentra el pag no lo emos podido hacer funcionar entonsses para ver si no colabora gracias .
Comment by nestor— October 22, 2007 #
nestor, cual es el problema del código? ¿por qué no han podido hacerlo funcionar? ese código es el que yo siempre he utilizado, tal vez el problema este en la conexión del display de 7 segmentos ya que la conexión del display de la figura simplemente es de simulación, revisa la conexión (que será distinta si es de ánodo común o de cátodo común) pero te aseguro que este código funciona.
Comment by micropic— October 22, 2007 #
Chingón, mai. Me salvates la vida.
Comment by mayitzin— December 9, 2007 #
hola esta muy bueno tu blog yo apenas me ando iniciando en esto de los pics pues lo quiero hacer desde linux ( uso ubuntu desde hace unos meses) y ando viendo como instalar todos los programas requeridos en ubuntu (gnome), todavia no encuentro bien como hacerlo pero por lo pronto tengo una duda.
Sobre el teclado matricial como hacer para que lo reconozca linux ? (algo asi como si fuera un teclado numerico externo de esos que vende en las tiendas de computacion) muchas gracias por tu blog. Saludos.
Comment by dalker— December 10, 2007 #
Hola!! no saben como puedo construir una calculadora digital con un teclado matricial de 4×4, PIC 16f84, y un Lcd, que tipo de Lcd es compatible?
Comment by Mara Flores— March 13, 2008 #
excelente rutina, ahora me podrias decir como poder realizar la conexion del teclado y el pic a una computadora por medio del puerto serial, solo quiero que por la hyperterminal se observe el digito pulsado en el teclado, gracias.
Comment by ALEJANDRO— March 23, 2008 #
ALEJANDRO para lograr eso se debe utilizar el módulo USART del pic y alguna interfaz RS232 para conectarlo a la PC, tal vez después haga un tutorial sobre eso.
Comment by micropic— March 24, 2008 #
hola si quiero mostrar el dato no es un solo display, sino en 4 displays y que el dato permanesca y que dato nuevo (tecla pulsada) reemplase dato anterior (dato en primer display). COmo lo hago ? estuve leyendo sobre multiplexacion de teclado y display pero no entiendo muy bn. Yo hice mi propio codigo de exploracion de teclado , EL teclado lo tengo al puerto B (RB0-RB3=in=columnas ) y RB4-RB7=out=filas
Escaneo el teclado poniendo un 0 en las filas (nibble alto del puerto B) y la tecla presionada me devuelve el cero en la respectiva columna.
en el display muestro del 0 al F usando en el codigo una tabla que maneja los segmentos del display. PEro ahora quiero visualizar 4 numeros en 4 Display (0000 – ffff) . Me podrian ayudar de como hago la multiplexacion o que otros metodos hay?
Comment by CINDY— May 1, 2008 #
Hola, para realizar la multiplexación puedes basarte en este ejemplo
Comment by micropic— May 1, 2008 #
Hola a todos
Si alguien me puede ayudar
Necesito programa hex para una tarea de mi hijo y es la siguiente,
Se necesita controlar un teclado de 4*3, que la primera tecla pulsada se visualice en el primer 7 segmentos, la segunda en el segundo 7 segmentos sin borrar la informacion del primer 7 segmentos y asi sucesivamente hasta llegar a seis teclas oprimidas. La idea es hacerlo en un 16f628 si se puede. La verdad soy novato en este tema y no se como ayudar a mi hijo con este tema excepto por este medio de ayuda.
Les agradeceria la ayuda que me puedan dar
Oscar
Comment by oscar— July 22, 2008 #
exelente rutina..
me pregunto si tienes una rutina identica para el manejo de teclado 4×3 pero que el lenguaje de programacion sea “C” estoy usando un pic18f4520. gracias..
Comment by ALEX— August 20, 2008 #
Oye tengo un problemas para implementar en un microcontrolador MC9S08QG8 un teclado de 4X4 en el compilador funciona a la perfeccion pero a la hora de probarlo fisicamente es como si no le introdujera ningun dato al micro te dejo el codigo para que lo veas
mainLoop:
; Insert your code here
LDA #$0F
STA PTBDD
STA PTBD
ET1 STA SRS
LDA PTBD
AND #$F0
CMP #$00
BEQ ET1
STA $0070
LDA #$F0
STA PTBDD
STA PTBD
LDA PTBD
AND #$0F
ADD $0070
STA $0070 ;Guardar cordenada
LDA #$00 ;ciclo antirebote
STA $0082
CIC5 LDA #$00
STA $0081
CIC4 INC $0081
STA SRS ; feed the watchdog
LDA $0081
CMP #$F1
BLO CIC4
INC $0082
LDA $0082
CMP #$F3
BLO CIC5
ZZZ LDA PTBD
CMP #$F0
BNE ZZZ
LDA #$00 ;ciclo antirrebote
STA $0082
CIC7 LDA #$00
STA $0081
CIC6 INC $0081
STA SRS ; feed the watchdog
LDA $0081
CMP #$F1
BLO CIC6
INC $0082
LDA $0082
CMP #$F3
BLO CIC7 ;No hacer nada hasta que suelte tecla
feed_watchdog
BRA mainLoop
Comment by JuanCuellar— October 20, 2008 #
hola viejo nesecito ayuda alo referente teclado y pantalla lcd necito toda la inf que puedas enviarme “tengo una expo” y ademas tengo que montar este cto para q asi la expo sea completa
mil gracias
Comment by andres— October 28, 2008 #
hermano me falto comentarte q un teclado de 4×4
la progamacion
Comment by andres— October 28, 2008 #
hola, como andas?
bueno leimos tu tutorial y la verdad nos sirve, pero no tenemos mucha idea, necesitamos hacer una calculadora con un microcontrolador at89s51 con un teclado matricial de 4 x 4 y mostrar los resultados en un lcd de 16 digitos x una linea, programa en assembler, si sabs algo me interesaria, sea lo q sea, muchas gracias
Comment by juanchiiiii— December 3, 2008 #
Hola, te felicito por tu programa. Realmente está bien sintetizado y muchas gracias por haberlo subido al foro.
Al realizar su carta ASM me surgieron un par de preguntas:
En las lineas del código
bsf STATUS ,C
rlf PORTB ,f
Que es lo que estás haciendo? De antemano muchas gracias
Miguel
Comment by Miguel— January 3, 2009 #
hola,tengo un problema el teclado matricail de 4×4 no puedo simularlo en proteus en conjunto con el pic 16f877a y la pantalla lcd….. necesito ayuda
Comment by sergio— March 14, 2009 #
hola a todos probè el progama del teclado matricial y me funcinò, estuvo bueno el tutorial, tengo q hacer un proyecto con teclado matricial, y con lcd con el pic 16f877a, y me falta la parte de la lcd, sòlo tengo un archivo de lcd en pdf, pero no tengo programas con lcd ni ejemplos, les agradecerìa si pueden subir un programa se lo agradezco
Comment by Chrisitan Torres— March 22, 2009 #
a ver si me explico –
Bsf status,c esta seteando “1” , el bit CARRY del registro ESTADO
RLF PORTB,F DESPLAZA HACIA LA IZQUIERDA Y INTRODUCE EL BIT CARRY
ANTERIORMENTE PUESTO EN SET, LO GUARDA EN EL MISMO
REGISTRO
Comment by EDER— April 10, 2009 #
necessito saber como puedo acceder a una casa por medio de una clave de acceso con un teclado….ayudame.-
graciass-
Comment by Eliceida— May 16, 2009 #
hola buenas, tengo que entregar con urgencia un proyecto, y necesitaba ayuda.
PIC 18F4520 EN C
USAMOS EL PUERTO B PARA EL LCD Y NECESITAMS USAR EL TECLADO MATRICIAL Y POR LO QUE E LEIDO TB TIENE COMO PREDETERMINADO EL PUERTO B, HABER SI ME PUEDE ECHAR ALGUIEN UNA MANO CON EL CODIGO O ALGUN ENLACE DE INTERES, QUE RECOMENDAIS CAMBIO EL LCD A OTRO PUERTO??? GRACIASSSSS
Comment by alex— May 26, 2009 #
Hola Disculpa, yo apenas voy empezando con esto de los sistemas digitales, estoy trabajando con el PIC16F84A (Caballito de batalla), deseo hacer una tarjeta basica con el PIC16F877…
Queria saber si de igual forma el programa que redactas en este foro me sirve para utilizar un teclado matricial con el PIC a utilizar, y tambien queria saber como es que codificas las teclas para ke te salgan en el Display de siete segmentos.. SALUDOS gracias espero y em puedas ayudar..
Comment by Oslo— September 23, 2009 #
hola, yo necesito hacer una especie de teclado matricial, que se conecte a un pic, y luego pueda visualizar lo que corresponde cuando se presiona una tecla, enviar estos valores atraves de un emisor infrarojo, para que luego, unos 20 o 30 metros mas adelante un receptor coja la señal y poderle dar una aplicacion, como prender un bombillo o una lampara. se algo de electronica, muy poco de microcontroladores (esttudio mecatronica pero apenas estoy empezando)si me puedes ayudar te lo agradeceria enormemente, o si me puedes remitir a un enlace donde esto todo bien esplicadito, un tutorial o algo por el estilo donde pueda comenzar a aprender.
Comment by zurdo— November 17, 2009 #
muy bueno, estoy por hacerme un teclado para mis practicas y esto me ayudo mucho, gracias!!
y para zurdo… usar infrarrojo para tal distancia, para empezar no se si sea posible tal vez si, pero con equipo de muy buena calidad (mas que nada el receptor) el problema con los receptores es que algunos tambien detectan luz visible, y al estar tan lejos no detecta el infrarrojo; mejor busca por via radiofrecuencia, esta si alcanza facilmente 30 metros, sobre informacion no tengo, pero ya vez que en el internet se encuentra de todo hoy en dia =P
busca palabras como:
“transmisor receptor FM”
“circuito FM”
“comunicacion radiofrecuencia”
Comment by Eduardo— February 13, 2010 #
Le modifique algunas cosas pero me funciono quiesiera me podiras enviar algun tutorial a mi correo para entender PIC`S mas facil t agradeceria mucho.
Comment by JONATHAN— March 31, 2010 #
hola me gustaria si tendrias un ejemplo de un contador mediante con un pulsador q lea hasta 15 pero con el programa = como la ejemplo q hicistes espero su ayuda
Comment by frank— April 25, 2010 #
hola me podrias colaborar con la configuracion del teclado para el pic 16f887
el progama que tengo funciona con el 877 pero con este no me funcina
gracias por tu colaboracion
Comment by andres— June 18, 2010 #
buenas noches!
cheque la explicacion del tema teclado 4×4 y te Felicito! me quedo bien claro de como funciona, dime como me puedo comunicar contigo para ver si me puedes ayudar con un proyecto que tengo en mente; muchas gracias!
Comment by Moctezuma— June 22, 2010 #
Hola a todos. Me llamo Jorge, y soy totalmente nuevo en esto de los PICs y controladores. Tengo una bronquilla. Resulta que quiero hacer un organo de varios teclados en un mueble. Para ello se pueden enchufar varios teclados con MIDI a una computadora, pero la bronca es que hay que comprar un chorro de triques y software, además de que obvio el asunto jamas dejara de parecer un mueble con dos teclados de plastico atornillados. Lo que yo quiero es hacer un mueble donde yo ponga unos teclados hechos con telcas de madera asi bien y todo y que las teclas controlen contactos que despues pueda yo ponen a un conversor MIDI. En general lo unico que quiero es un aparato que cuando yo toque envie por MIDI la señal del numero de nota que esta encendido, y para ello necesito un teclado matricial (obviamente no va a lucir como un teclado matricial, pero internamente asi estaría conectado) que sea posible presionar hasta 10 teclas a la vez y que el PIC mande una señal a una computadora de cuales teclas estan encendidas. En general la idea esta muy en pañales, el problema es que no tengo idea de donde empezar a buscar informacion pues no puedo buscar en interntet si no se siquiera como se llama a un teclado donde se pueden presionar varias teclas juntas. ¿Alguien podria darme un empujoncito? Se agradece lo que sea que ayude.
Comment by Jorge Martinez— July 14, 2010 #
Hola igualmente soy nueva en esto y me cuesta entenderlo, sobretodo combinarlo con la programacion, debo hacer un proyecto que emule un juguete o una actividad educativa la cual se basa en un teclado matricial, unos botones,una pantalla lcd y un microcontrolador (pic 16f876a el cual es el que tengo) y me permita seleccionar un pais el cual una vez de presionarlo, desplegando informacion referente a ese pais como: idioma, moneda…, el teclado podria omitirse y en su lugar usar otra cosa que sea mas sencilla de emplear. Se que debo programar tanto el micro como la pantalla lcd pero como transfiero el codigo al pic? y alguien tendra el codigo en alto nivel o bajo nivel de lo que necesito? escucho sugerencias y agradezco enormemente su ayuda!!!
Comment by margot— July 16, 2010 #
Hola igualmente soy nueva en esto y me cuesta entenderlo, sobretodo combinarlo con la programacion, debo hacer un proyecto que emule un juguete o una actividad educativa la cual se basa en un teclado matricial, unos botones,una pantalla lcd y un microcontrolador (pic 16f876a el cual es el que tengo) y me permita seleccionar un pais el cual una vez de presionarlo, despliegue una informacion referente a ese pais como: idioma, moneda…, el teclado podria omitirse y en su lugar usar otra cosa que sea mas sencilla de emplear. Se que debo programar tanto el micro como la pantalla lcd pero como transfiero el codigo al pic? y alguien tendra el codigo en alto nivel o bajo nivel de lo que necesito? escucho sugerencias y agradezco enormemente su ayuda!!!
disculpen lo reevio porque no redacte bien una parte, je je!
es algo libre y yo escogi esto de hecho la asignacion es una actividad educativa y se me ocurrio esto que parece ser sencillo en su aplicacion pero no en llegar al mismo, si alguien me puede guiae, explicar o cree que tiene algo que me sirva y es mucho mas sencillo y facil de implementar, lo agradezco. Soy nueva en el foro, no se si debo dejar mi correo? es margotgarrido123456@gmail.com
Comment by margot— July 16, 2010 #
me gusto la explicacion sobre teclado matricial que tienen en esta pagina, los felicito, lo detallan con facilidad
Comment by margot— July 16, 2010 #
Hola de nuevo, acabo de revisar y el microcontrolador que tengo es el 19f877a no el q señale anteriormente
Comment by margot— July 16, 2010 #
Hola de nuevo, acabo de revisar y el microcontrolador que tengo es el 16f877a no el q señale anteriormente
Comment by margot— July 16, 2010 #
Hola,
solo una pregunta cambia mucho el codigo para un pic16f873A?
saludos y muchisimas gracias por este tan valioso aporte.
Comment by edgar gonzalez— September 30, 2010 #
Hola tu tuto esta muy bueno
una pregunta esta instruccion btfss esta disponible para un DSPIC30f4013
gracias
Comment by jairo— March 18, 2011 #
hola me gustaria que me explicaras el funcionamiento del teclado matricial en el pic16f628a no logro comprender por que en las salida del RB0 al RB3 se manda un 0 y como es que en las entradas hay puros 1 porfavor aver sime pueden explicar se los agradesco… gracias…
este es mi correo gilram_90@hotmail.com
Comment by beto— April 2, 2011 #
Ctrl+C Ctrl+V
😀
Comment by pacomemoochoa— October 23, 2011 #
hola. Porfa ayudenme tengo problemas con el teclado ya modifique la libreria que viene en C css para un teclado de 4×4 y no funciona, y tambien lo modifique para usar el PORTB el teclado asi como viene de 4×3 pero aun asi no funciona noce porque. la simulacion de proteus no funciona probe con el pic16f876 y si funciona pero el que uso es el PIC18F4550.
Comment by Ianeile— April 29, 2012 #
quien me puede ayudar con el programa para el pic 16f628a para el teclado matricial para q muestre los valores en un display
Comment by eliot— November 26, 2012 #
UNA CONSULTA URGENTE, ME HAN DEJADO UN TRABAJO EN LA UNIVERSIDAD PARA PROGRAMAR EL SIGUIENTE SISTEMA EN C18 MPLAB , CON UN PIC 18F4550. QUISIERA UNA IDEA DE CÓMO PROGRAMAR DICHO SISTEMA, POR FAVOR, MUCHAS GRACIAS
El sistema en general es una representación de un sistema de domótica de
control de luces (de una casa, un edificio, etc.) en el cual existen usuarios predeterminados
(ustedes, los alumnos) identificados con un usuario y una contraseña de acceso. Estos usuarios
podrán encender las luces y revisar el estado de las mismas (estado: encendido o apagado).
Esta información de usuario debe ser mostrada en una pantalla LCD, así como la información
del estado de las luces también. Esta pantalla debe estar configurada por defecto para estar
bloqueada, permitiendo el acceso a ella luego de mantener pulsado el botón “*” durante un
segundo. Una vez efectuada toda operación, la pantalla debe bloquearse nuevamente.
Adicionalmente, ante el intento de acceso de un usuario no registrado, el sistema mostrar un
mensaje de “ACCESO DENEGEADO” y volver a bloquearse.
Comment by ISABEL TORRES— June 25, 2014 #
[…] Anteriormente vimos los arreglos como una lista simple. Pero también podemos tener arreglos de dos dimensiones. Veamos este ejemplo que especifica un arreglo que representa un teclado matricial: […]
Pingback by Introducción a los arreglos en C - Parzibyte's blog— September 18, 2018 #
Comment by Apia— December 11, 2020 #