Está en la página 1de 4

PIC Adicto

23 agosto 2009
Manejando un teclado matricial con un solo terminal
Filed under: 16F,Cdigo CCS,Simulacin picadicto @ 14:15
Tags: lcd, manejar un teclado con un solo pin, teclado

Leyendo un documento de Microchip llamado Tips n tricks (algo as como


consejos y trucos) encontr una muy buena idea para manejar un teclado matricial de 12 teclas con un nico
terminal del PIC como se ve en la imagen de la derecha. La idea es leer el valor de tensin mediante un canal del conversor
A/D del PIC, esta tensin ser distinta para cada tecla apretada siempre y cuando hagamos una buena eleccin de los
valores de las resistencias conectadas. En el ejemplo que muestro el LCD imprime la tecla pulsada, con # se borra el
display y con * se cambia de lnea.
El circuito es muy sencillo, slo se necesita el teclado matricia, un display LCD y un conversor A/D. Para el ejemplo
utilic un PIC16F873A pero esta implementacin es muy til cuando disponemos de pocos terminales y, como dice el
documento, es muy prctico para los PICs 12F de 8 terminales.

Simulacin

Generated by www.PDFonFly.com at 11/16/2014 6:08:41 AM


URL: http://picadicto.wordpress.com/2009/08/23/manejando-un-teclado-matricial-con-un-solo-terminal/

Cdigo Fuente
Utilizando la librera del CCS para LCDs el cdigo es muy sencillo, consiste en comparar el valor de lectura del conversor
A/D con el clculo de tensin por cada tecla segn el divisor resistivo que se utilice. Los lmites de comparacin de cada
tecla mostrados son para los valores de resistencias del circuito y considerando una tolerancia del 1%.
#include <LCD.C>
void muestra(long valor);
void main()
{
long tecla;
set_tris_a(0xff);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(ALL_ANALOG);
set_adc_channel(0);
lcd_init();
do{
tecla=read_adc();
muestra(tecla);
}while(true);
}
void muestra (long valor){
if ((valor >746)&(valor<761)){
lcd_putc("1");
delay_ms(400);
}
if ((valor >480)&(valor<490)){
lcd_putc("2");
delay_ms(400);
}
if ((valor >364)&(valor<372)){
lcd_putc("3");
delay_ms(400);
}
if ((valor >687)&(valor<701)){
lcd_putc("4");
delay_ms(400);
}
if ((valor >456)&(valor<465)){
lcd_putc("5");
delay_ms(400);
}
if ((valor >350)&(valor<357)){
lcd_putc("6");

Generated by www.PDFonFly.com at 11/16/2014 6:08:41 AM


URL: http://picadicto.wordpress.com/2009/08/23/manejando-un-teclado-matricial-con-un-solo-terminal/

delay_ms(400);
}
if ((valor >654)&(valor<668)){
lcd_putc("7");
delay_ms(400);
}
if ((valor >439)&(valor<448)){
lcd_putc("8");
delay_ms(400);
}
if ((valor >342)&(valor<349)){
lcd_putc("9");
delay_ms(400);
}
if ((valor >614)&(valor<626)){
lcd_putc("\n");
delay_ms(400);
}
if ((valor >330)&(valor<337)){
lcd_init();
delay_ms(400);
}
if ((valor >421)&(valor<430)){
lcd_putc("0");
delay_ms(400);
}
}
Cargando...

About these ads

Comments (2)

2 comentarios
1. Muy bueno!!! Excelente idea para ahorrar patitas Copado el blog!
Comentario por Oscar 23 agosto 2009 @16:46 | Responder
2. De nuevo Felicitaciones!!
Comentario por Adrian 24 agosto 2009 @13:48 | Responder

RSS feed para los comentarios de esta entrada. TrackBack URI

Deja un comentario

Correo electrnico (requerido)

(La direccin no se har pblica)

Nombre (requerido)
Generated by www.PDFonFly.com at 11/16/2014 6:08:41 AM
URL: http://picadicto.wordpress.com/2009/08/23/manejando-un-teclado-matricial-con-un-solo-terminal/

Web

Notificarme los nuevos comentarios por correo electrnico.

Publicar comentario

Sobre el Blog
Qu es?

Categoras
16F
24F
Cdigo CCS
Circuitos
Explorer 16
General
Off-Topic
Simulacin

Bsquedas en el blog
Buscar

Links
Microchip
RSS del blog
El tema Rubric. Crea un blog o un sitio web gratuitos con WordPress.com.

Generated by www.PDFonFly.com at 11/16/2014 6:08:41 AM


URL: http://picadicto.wordpress.com/2009/08/23/manejando-un-teclado-matricial-con-un-solo-terminal/

También podría gustarte