sábado, 12 de noviembre de 2016

Práctica #4 Contador descendiente y ascendiente con dos botones y un Display 7 segmentos

Display 7 segmentos contador del 0 al F ascendente y descendente con dos botones con un Microcontrolador PIC18F4550, PIC C


Material:
1 Display 7 segmentos.
7 Resistencia de 220 Ohms.
1 Resistencia de 10 KOhms.
3 Push Button
1 Microcontrolador PIC18F4550
1 Cristal de 4MHZ

Simulación en Proteus:


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Código en PIC C:
#inlude<18f4550> 
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP       
#use delay (clock=4000000)         

#use standard_io(B)

#use standard_io(D)

void main(void)

{

   signed char i=0;   //contador 

int contador[16]={0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111,0b1111111,0b1100111,0b1110111,0b1111100,0b0111001,0b1011110,0b1111001,0b1110001};  // vector con muneros del 0 1 2 3 4 5 6 7 8 9 A B C D E F

   output_b(contador[ i ]);         //inicializa display con  0
   for( ; ; ){                  //bucle...
      if(!input(PIN_D0))         //¿se ha pulsado el boton up?
         {
            delay_ms(100);      //SI -> retardo para evitar los rebotes
            i++;            //incremento contador 
            if(i>15)            //¿se ha mostrado digito 15=F?
               i=0;         //SI -> restaura valor indice(para mostrar digito 0)
         }
      if(!input(PIN_D1))         //¿se ha pulsado el boton down?
         {
            delay_ms(100);      //SI -> retardo para evitar los rebotes
            i--;            //decremento contador 
            if(i<0 0="" digito="" div="" ha="" mostrado="" nbsp="" se="">
               i=15;         //SI -> restaura valor indice(para mostrar digito 15=F)
         }
      output_b(contador[ i ]);       //muestra por el puerto b lo que tiene el display         
      }                     
}

No hay comentarios.:

Publicar un comentario