Autor Tema: CONFIGURAR TECLADO 4X4 CON KBD2.C  (Leído 18631 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: CONFIGURAR TECLADO 4X4 CON KBD2.C
« Respuesta #15 en: 28 de Junio de 2009, 16:29:52 »
hola estaba pensado,..... como ago para formar un valor de dos o mas digitos con la keypad, o por ejemplo con decimal, me refiero a que como ago por ejemplo el numero 10.5 con la keypad y que aparesca en la lcd ese numero, si solo yo pulso el 1 el 0 el . y el 5 como uno todo eso para formar un numero nomas ???????.
salu2s

Desconectado Rodricity

  • PIC10
  • *
  • Mensajes: 43
Re: CONFIGURAR TECLADO 4X4 CON KBD2.C
« Respuesta #16 en: 01 de Julio de 2009, 17:02:01 »
 unsigned long varibale;

 variable = (variable * 10) + leer_teclado();

 Sorry si no te sirve algo tan tonto pero elemental, es que yo no trabajo en CCS; yo trabajo en hitech PICC; y como no tiene librerias, hice una funcion yo mismo que me retorna el valor de la tecla pulsada.

 te adjunto la "libreria" que hice por si te sirve de algo.

Código: [Seleccionar]
char leer_teclado(void)
{
while(1)
{
PORTB = 0b0001<<4;
if(columna1){ while(columna1); return '1';}
if(columna2){ while(columna2); return '2';}
if(columna3){ while(columna3); return '3';}
if(columna4){ while(columna4); return 'A';}
PORTB = 0b0010<<4;
if(columna1){ while(columna1); return '4';}
if(columna2){ while(columna2); return '5';}
if(columna3){ while(columna3); return '6';}
if(columna4){ while(columna4); return 'B';}
PORTB = 0b0100<<4;
if(columna1){ while(columna1); return '7';}
if(columna2){ while(columna2); return '8';}
if(columna3){ while(columna3); return '9';}
if(columna4){ while(columna4); return 'C';}
PORTB = 0b1000<<4;
if(columna1){ while(columna1); return '*';}
if(columna2){ while(columna2); return '0';}
if(columna3){ while(columna3); return '#';}
if(columna4){ while(columna4); return 'D';}
}
return 0;
}

 PD: El PORTB<<4 es por que los bits que energizan las filas del teclado están en el nibble mas alto de PORTB.

 En todo caso, yo te sugeriría leer el teclado por ADC, y el LCD controlarlo con un registro de desplazamiento, como el 4094, asi controlas el LCD por 3 pines, y el teclado por uno, en vez de 19231823 pines.

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: CONFIGURAR TECLADO 4X4 CON KBD2.C
« Respuesta #17 en: 01 de Julio de 2009, 22:26:30 »
hola rodricity bueno gracias por la respuesta pero te comento que ya tengo solucionado el problema. pero de todas formas gracias
lo que hice fue ocupar la libreria keypad y sacarla mediante interrupciones esta misma, y luego hice una pequeñisima funcion matematica para detectar que numero era el presionado el cual es la siguiete
int a;
a=key-48; y listo dondeel 48 equivale al 0 en acsii
hay tengo el valor de la tecla pulsada y sin nesesidad de andar cambiando de char a float y esas cosas.
saludo.

key= es el valor que toma al presionar una tecla,

Desconectado Rodricity

  • PIC10
  • *
  • Mensajes: 43
Re: CONFIGURAR TECLADO 4X4 CON KBD2.C
« Respuesta #18 en: 02 de Julio de 2009, 11:06:28 »
 pero si eso es elemental hombre XD

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: CONFIGURAR TECLADO 4X4 CON KBD2.C
« Respuesta #19 en: 04 de Julio de 2009, 20:20:16 »
hola otra vez, bueno ahora tengo un drama, no se como incrementar una variable en 1 cuando se pulse un boton en la keypad, e probado con una bariable a++ puesta en ia interrupcion int_RB, pero esta me incrementa en dos y yo solo nesesito que incremete en una y solo cuando pulse un tecla es codigo se los dejo aqui, espero que me puedan ayudar..............

Código: [Seleccionar]
#include <16F877a.h>
#device adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20000000) //Fosc=20Mhz
#define use_portd_lcd TRUE //definir salida del puerto D para la lcd
#include<lcd420.c> //libreria manejo lcd
#include <keypad.c>   //Libreria de teclado 4x4
#include <stdlib.h>

unsigned char key;   //Variable global tecla
char variable;
int i;
// Interrupcion RB4 - RB7 /////////////////////////////////////////////////////
#INT_RB
void interrupt_keypad()               
{
   key=read_keypad();         //Asigna la tecla pulsada
   clear_interrupt(INT_RB);   //Limpia bandera RBIF

}
// Programa Principal /////////////////////////////////////////////////////////
void main()
{   
lcd_init();
while(true)
   {
   init_keypad();
   variable=key;
   if(variable>=48){
   i=variable-48;}
   printf(lcd_putc,"Escriba:%i",i);
   lcd_gotoxy(1,1);
}}

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: CONFIGURAR TECLADO 4X4 CON KBD2.C
« Respuesta #20 en: 04 de Julio de 2009, 22:14:36 »
hola bueno despues de un par de horas esperimentado la solucion la tenia adelante de mis ojos y no la veia jajaajaj pero bueno que se le va hacer  es if(key==read_keypad()){a++;}.
saludos que esten bien

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: CONFIGURAR TECLADO 4X4 CON KBD2.C
« Respuesta #21 en: 05 de Julio de 2009, 01:23:23 »
............
« Última modificación: 05 de Julio de 2009, 04:21:10 por japifer_22 »