TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: mariano_pic en 11 de Febrero de 2010, 16:02:41

Título: Libreria teclado 4x4 para c18
Publicado por: mariano_pic en 11 de Febrero de 2010, 16:02:41

Cuando escribi la libreria LCD.H para c18 super facil de manejar pense que quedaria bien complementarla con la libreria para el teclado, creo que no esta incluida en c18 y si ya esta no la encuentro, bueno a mi me gusta hacer las cosas yo mismo y esa es la ventaja de c18 que te obliga a ser mas creativo.

El teclado a usar es uno extandar de 16 teclas aunque podemos usar otro de 12 aca uno de 16

(http://www.ar-tecnologias.com.ar/images/teclado.jpg)

Circuito a armar:

(http://mikropics.webcindario.com/img/keypad.PNG)

Codigo de la libreria:

Código: [Seleccionar]
unsigned char KeyScan(){
unsigned char k,j,dt=0;
         k=0b11101111;
        for(j=0;j<4;j++){
        PORTB=k;
        delay_ms(1);
        switch (PORTB){
            case  0x77: dt='0'; break;
            case  0xB7: dt='1'; break;
            case  0xD7: dt='2'; break;
            case  0xE7: dt='3'; break;
            case  0x7B: dt='4'; break;
            case  0xBB: dt='5'; break;
            case  0xDB: dt='6'; break;
            case  0xEB: dt='7'; break;
            case  0x7D: dt='8'; break;
            case  0xBD: dt='9'; break;
            case  0xDD: dt='A'; break;
            case  0xED: dt='B'; break;
            case  0x7E: dt='C'; break;
            case  0xBE: dt='D'; break;
            case  0xDE: dt='E'; break;
            case  0xEE: dt='F'; break;
        }
         if(dt!=0){break;}
         k<<=1;
        }
         return dt;
}

Como se puede intuir tambien es requete facil de usar como la libreria LCD.h (http://www.todopic.com.ar/foros/index.php?topic=29446.0) que publique en otro post.

Aca un ejemplo de uso:

Código: [Seleccionar]
void main(void){
TRISC=0;
PORTC=0;
TRISB=0x0f;
PORTB=0x0f;
Lcd_Init();
Lcd_Cmd(Lcd_Clr);
Lcd_Cmd(Off_Cur);
Lcd_OutR(1,1,"keyscan by");
Lcd_OutR(2,1,"mikrosurfer");
delay_ms(1000);
Lcd_Cmd(Lcd_Clr);

while(1){
if(KeyScan()!=0){
  Lcd_Chr_cp(KeyScan());
  while(KeyScan()!=0){delay_ms(100);}
  }


}
}

Bueno cuando saque las otras librerias que tengo planeadas las publico aca.  ;-) espero les guste.
Título: Re: Libreria teclado 4x4 para c18
Publicado por: Wolf_C en 11 de Septiembre de 2012, 20:22:54
Saludos Mariano_pic

No puedo ver la imagen de como elaboraste el montaje___  :8} __!!!!