TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: sabina77 en 11 de Agosto de 2004, 01:34:00

Título: Conexión de Teclado a pic 16F877a
Publicado por: sabina77 en 11 de Agosto de 2004, 01:34:00
Buenas!

Tengo un teclado de 4 filas por 3 columnas y quiero conectarlo al pic.¿ Algun forero sabe como se conecta?. ¿Como se programa el pic para ver si hay alguna tecla apretada?

Muchas Gracias de Antemano por sus comentarios.
Saludos!
Título: RE: Conexión de Teclado a pic 16F877a
Publicado por: Leonsport en 11 de Agosto de 2004, 04:45:00
Pues unas patillas del pic las conectarias a las columnas que serian las entradas y las demás a las filas mediante una resistencia de unos 2k2 q serían las salidas.
Las resistencias es para poder compartir el puerto del pic independientemente del teclado y de paso puedes meterle un lcd si quieres.
el codigo mas o menos sería así: este es para un teclado de 4x4
                   |---|---|---|---|   
;   RB4 <--   | 1 | 2 | 3 | F|   
;      |---|---|---|---|   
;   RB5 <--   | 4 | 5 | 6 | E|   
;      |---|---|---|---|   
;   RB6 <--   | 7 | 8 | 9 | D|   
;      |---|---|---|---|   
;   RB7 <--   | A | 0 | B | C|   
;      |---|---|---|---|   
;                            
;        ^   ^   ^   ^         
;        |   |   |   |          
;       RB0 RB1 RB2 RB3

Key_Scan:   bsf   STATUS,RP0   
      movf   TRISB,W
      bcf   STATUS,RP0
      movwf   TRISB_Temp   
      bsf   STATUS,RP0
      movlw   b"11110000"
      movwf   TRISB      
      bcf   STATUS,RP0   
      movlw   4
      movwf   Key_1      
      movlw   b"11110111"
      movwf   Tecla      
Key_Scan_1:   movf    Tecla,W
      movwf   PORTB               
      nop
      movf   PORTB,W
      movwf   Key_2
      subwf   Tecla,W      
      btfss   STATUS,Z   
      goto   Key_Scan_2   
      bsf   STATUS,C   
      rrf   Tecla,F      
      decfsz   Key_1,F      
      goto   Key_Scan_1   
      movlw   0x80
      movwf   Tecla      
Key_Scan_5:   movf   TRISB_Temp,W
      bsf   STATUS,RP0   
      movwf   TRISB      
      bcf   STATUS,RP0   
      return         
            
Key_Scan_2:   movlw   .20      
      movwf   Key_Delay_1   
Key_Scan_3:   clrf   Key_Delay_2   
Key_Scan_4:   clrwdt
      decfsz   Key_Delay_2,F
      goto   Key_Scan_4
      decfsz   Key_Delay_1,F
      goto   Key_Scan_3
            
      movf   Key_2,W      
      movwf   Tecla
      call   Key_BCD      
      goto   Key_Scan_5