manejando un teclado matricial con un solo terminal

4
PIC Adicto 23 agosto 2009 Manejando un teclado matricial con un solo terminal Filed under: 16F , Código CCS, Simulación — 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 tensión mediante un canal del conversor A/D del PIC, esta tensión será distinta para cada tecla apretada siempre y cuando hagamos una buena elección 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 línea. El circuito es muy sencillo, sólo se necesita el teclado matricia, un display LCD y un conversor A/D. Para el ejemplo utilicé un PIC16F873A pero esta implementación es muy útil cuando disponemos de pocos terminales y, como dice el documento, es muy práctico para los PICs 12F de 8 terminales. Simulación 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/

Upload: ayax-bustamante

Post on 20-Feb-2016

2 views

Category:

Documents


0 download

DESCRIPTION

Instructivo para manejar un teclado matricial con un solo terminal, para micro controladores PIC.

TRANSCRIPT

Page 1: Manejando Un Teclado Matricial Con Un Solo Terminal

PIC Adicto

23 agosto 2009

Manejando un teclado matricial con un solo terminal

Filed under: 16F,Código CCS,Simulación — picadicto @ 14:15Tags: lcd, manejar un teclado con un solo pin, teclado

Leyendo un documento de Microchip llamado Tips ‘n tricks (algo así comoconsejos y trucos) encontré una muy buena idea para manejar un teclado matricial de 12 teclas con un únicoterminal del PIC como se ve en la imagen de la derecha. La idea es leer el valor de tensión mediante un canal del conversorA/D del PIC, esta tensión será distinta para cada tecla apretada siempre y cuando hagamos una buena elección de losvalores de las resistencias conectadas. En el ejemplo que muestro el LCD imprime la tecla pulsada, con # se borra eldisplay y con * se cambia de línea.

El circuito es muy sencillo, sólo se necesita el teclado matricia, un display LCD y un conversor A/D. Para el ejemploutilicé un PIC16F873A pero esta implementación es muy útil cuando disponemos de pocos terminales y, como dice eldocumento, es muy práctico para los PICs 12F de 8 terminales.

Simulación

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

Page 2: Manejando Un Teclado Matricial Con Un Solo Terminal

Código Fuente

Utilizando la librería del CCS para LCDs el código es muy sencillo, consiste en comparar el valor de lectura del conversorA/D con el cálculo de tensión por cada tecla según el divisor resistivo que se utilice. Los límites de comparación de cadatecla 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/

Page 3: 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); }}

Comments (2)

2 comentarios »

Muy bueno!!! Excelente idea para ahorrar patitas… Copado el blog!

Comentario por Oscar — 23 agosto 2009 @ 16:46 | Responder

1.

De nuevo… Felicitaciones!!

Comentario por Adrian — 24 agosto 2009 @ 13:48 | Responder

2.

RSS feed para los comentarios de esta entrada. TrackBack URI

Deja un comentario

Cargando...

Correo electrónico (requerido) (La dirección no se hará pública)

Nombre (requerido)

About these ads

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

Page 4: Manejando Un Teclado Matricial Con Un Solo Terminal

Notificarme los nuevos comentarios por correo electrónico. Publicar comentarioPublicar comentario

Sobre el Blog

¿Qué es?

Categorías

16F24FCódigo CCSCircuitosExplorer 16GeneralOff-TopicSimulación

Búsquedas en el blog

Buscar

Links

MicrochipRSS del blog

El tema Rubric. Crea un blog o un sitio web gratuitos con WordPress.com.

Web

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