InicioCiencia EducacionTeclado Matricial, Display 7 segmentos y Pic 16f877A

Teclado Matricial, Display 7 segmentos y Pic 16f877A

Ciencia Educacion2/24/2012
Hola amigos Taringueros...aqui dejo una practica que realice el año pasado en mi universidad..

Se trata de un teclado matricial, hecho de botones controlado con pic, en este caso el 16F877A..y los numeros se muestran en un Display 7 segmetos, anodo comun,.

Materiales:
BCD 7 segment decoder (74ls47)
display 7 seg, anodo comun
pic 16f877a, crystal quartz 4Mhz, 2 cap ceramicos 22nf
resistencias de 220 omh + una de 10k para el pic
12 Botones tipo Push, el teclado cuanta con los numeros del 0 al 9 mas * mas # y 4 letras A,B,C y D.

la practica esta simulada en Proteus 7.8 sp2,
el pic esta progamado en C, con el compilador MikroC Pro for Pic.

el teclado matricial tiene 4 filas y 4 columnas es decir, es de 4x4, este programa funciona con uno de 3x3 o de 4x3 tambien..

aqui el codigo:

void teclado(){ //* funcion que sirve para reconocer que boton se ha pulsado
PORTB=0b00000001;
if(Button(&PORTB, 4, 20, 1)){PORTD=1;}
else if(Button (&PORTB, 5, 20, 1)){PORTD=2;}
else if(Button (&PORTB, 6, 20, 1)){PORTD=3;}
else if(Button (&PORTB, 7, 20, 1)){PORTD=13;}
else
delay_ms(80);
PORTB=0b00000010;
if(Button (&PORTB, 4, 50, 1)){PORTD=4;}
else if(Button (&PORTB, 5, 20, 1)){PORTD=5;}
else if(Button (&PORTB, 6, 20, 1)){PORTD=6;}
else if(Button (&PORTB, 7, 20, 1)){PORTD=14;}
else
delay_ms(80);
PORTB=0b00000100;
if(Button (&PORTB, 4, 20, 1)){PORTD=7;}
else if(Button (&PORTB, 5, 20, 1)){PORTD=8;}
else if(Button (&PORTB, 6, 20, 1)){PORTD=9;}
else if(Button (&PORTB, 7, 20, 1)){PORTD=15;}
delay_ms(80);
PORTB=0b00001000;
if(Button (&PORTB, 4, 20, 1)){ PORTD=10; }
else if(Button (&PORTB, 5, 20, 1)){PORTD=0;}
else if(Button (&PORTB, 6, 20, 1)){PORTD=12;}
else if(Button (&PORTB, 7, 20, 1)){PORTD=11;}
delay_ms(80);
}
//* el bloque anterior se puede entender como sigue:
// primero se pone en 1 el primer pin del portb y se recorre la fila 1, segun el boton presionado
// obtendremos la activacion del portd con la combinacion correspondiente a la fila- columna
//por ejemplo: si se pulsa el segundo boton de izq. a der. de la primer fila, entonces nuestra cordenada es (1,2)
//fila 1 columna 2, y por tanto el pin 6 (RB5) del portb que esta configurado como entrada, recibe un 1 logico
// y activa el portd, segun lo programamos en el codigo, y el numero es visualizado en el display ;
// si no se pulsa ningun boton de la primera fila, entonces se activa el siguiente pin del puerto b y
// la segunda fila es recorrida, lo mismo para las filas restantes,

void initmain (){ // subfuncion principal;
ADCON1=0x06;
TRISD=0;
PORTD=0; //* configuracion de puertos;
TRISB=0b11110000;
PORTB=0;
}

void main() {
initmain(); //* aqui madamos a llamar las funciones anteriores...
while(1){
teclado();
} }

no olviden conectar las resistencias de 220 a tierra y a cada una de las columnas del teclado...
subo los archivos, tanto el esquematico en proteus como el hex, les recomiendo que intenten compilar el progrma por si mismos, esta sencillo,....
Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

v
Usuario
Puntos0
Posts4
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.