Hola, estoy diseñando un marcador de ping-pong para mi mesa
. Pienso usar un PIC16F886, un 7447 y 4 displays de 7 segmentos. Lo estoy haciendo en C con mplab. La entrada, con los pulsadores (uno para subir el marcador y el otro para bajar, por cada jugador), va a ser por el puerto A, voy a usar el puerto B para la habilitación de cada display y el puesto C para mostrar los números.
Para empezar, antes de embarcarme en la titánica tarea de toda la lógica de marcación, quería simplemente poder mostrar 4 números distintos. No me salió del todo bien!! ¿Me pueden dar una mano?!!
Acá les dejo mi código. Por ahora solo quería mostrar 4 números distintos en los displays, cuando me salga eso, voy a seguir con el resto del programa, pero ni eso me salió, asi que quería solucionar eso primero.
Código:
#include <pic.h>
#include <htc.h>
#define _XTAL_FREQ 4000000
unsigned int j1 = 0; //jugador 1
unsigned int j2 = 0; //jugador 2
unsigned int d1 = 0b000000011; //3
unsigned int d2 = 0b000000101; //5
unsigned int d3 = 0b000000010; //2
unsigned int d4 = 0b000000110; //6
void main()
{
TRISA = 0x01; //puerto A entrada
TRISB = 0x00; //puerto B y C salidas
TRISC = 0x00;
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
ANSEL = 0; //configuro los puertos como entrada/salida digital
while(1)
{
//cargo un 000000011 (o sea un 3) en el puerto C
PORTC = d1;
// habilito solo el primer display
PORTBbits.RB4 = 1;
PORTBbits.RB5 = 0;
PORTBbits.RB6 = 0;
PORTBbits.RB7 = 0;
//muestro el numero por un tiempo
__delay_ms(50);
//cargo un 000000101 (o sea un 5) en el puerto C
PORTC = d2;
// habilito solo el segundo display
PORTBbits.RB4 = 0;
PORTBbits.RB5 = 1;
PORTBbits.RB6 = 0;
PORTBbits.RB7 = 0;
//muestro el numero por un tiempo
__delay_ms(50);
//cargo un 0000000010 (o sea un 2) en el puerto C
PORTC = d3;
// habilito solo el tercer display
PORTBbits.RB4 = 0;
PORTBbits.RB5 = 0;
PORTBbits.RB6 = 1;
PORTBbits.RB7 = 0;
//muestro el numero por un tiempo
__delay_ms(50);
//cargo un 0000000110 (o sea un 6) en el puerto C
PORTC = d4;
// habilito solo el cuarto display
PORTBbits.RB4 = 0;
PORTBbits.RB5 = 0;
PORTBbits.RB6 = 0;
PORTBbits.RB7 = 1;
//muestro el numero por un tiempo
__delay_ms(50);
}
}
También les dejo mi diseño en proteus para que vean como conecté los displays y los pulsadores (por mas que no hagan nada todavía en el programa, quisiera saber si están bien conectados para que activen con ceros) y para que vean lo errático que se muestran los displays!
Cualquier cosa con la que puedan ayudar va a ser bien recibida!! Alguna idea de como seguir, lo que sea!!
Desde ya, muchas gracias!!