X

SECUENCIA DE LEDS CON MICROCONTROLADOR PIC16F7887

¿Qué es un microcontrolador?

 Es un  “chip” o un circuito integrado programable, en el cual permite ejecutar un conjunto de instrucciones predefinidas.

Elementos básicos de un microcontrolador.

CPU(Unidad de procesamiento Central): Se encarga de ejecutar cada instrucción y controlar que dicha ejecución sea la adecuada.

Memorias: Son aquellas que guardan las instrucciones y los diferentes datos.

tipos de memoria.

Persistentes: Son aquellas, donde el contenido se almacena de forma permanente cuando no hay alimentación.

Volátiles: Son aquellas, donde el contenido se pierde al dejar de recibir alimentación.

Las pastillas de entrada y salida: Se encarga de comunicar el microcontrolador con el exterior.

El PIC16F887: Es un microcontrolador de Microchip. Su consumo de potencia es muy bajo. Tiene cinco puertos llamados A,B,C,D y E; pueden ser utilizados como entrada digital, salida digital, salida de PWM, entrada para conversión análoga a digital, transmisión o recepción datos.

 

Características del PIC16F7887

  • Número de pines: 40 pines.
  • Voltaje de alimentación:0v a 5.5v.
  • Tres temporizadores/contadores independientes.
  • Frecuencia de operación 0-20MHZ.
  • Tiene 256 bytes de memoria EEPROM.
  • Tiene memoria ROM de 8k.
  • Tiene 368 bytes de memoria RAM.

 

 

FUNCIONES UTILIZADAS PARA LA PROGRAMACIÓN DEL PIC.

 

PORTA, PORTB, PORTC, PORTD y PORTE: Los puertos del microcontrolador, son  la manera como se comunica con el mundo exterior.

SET_TRIS_A(valor), SET_TRIS_B(valor), SET_TRIS_C(valor), SET_TRIS_D(valor), SET_TRIS_E(valor): Son registros de configuración, que indican si los pines del puerto son de entrada o salida.

Hay que tener en cuenta que  en los PIC de MICROCHIP, las entradas se configuran con unos y las salidas con ceros.

BIT_TEST(valor, bit): Prueba el estado del bit del valor. Devuelve uno.

BIT_SET(valor,bit): Pone en uno el bit especificado del valor.

#INCLUDE <16F887.h>: Es la librería del microcontrolador que se va a utilizar, en este caso se utiliza el pic16F887.

#USE DELAY(CLOCK=4000000): Configuración de la frecuencia del reloj del sistema a 4MHZ.

#FUSES XT, NOPROTECT,NOWDT: Son fusibles de configuración que se pueden habilitar o deshabilitar, de acuerdo a lo que se necesite en el programa.

#FUSES XT: Oscilador a cristal estándar.

#FUSES NOPROTECT:Protección contra lectura de la FLASH desactivada.

#FUSES NOWDT: Watch Dog Timer desactivado.

 

EJERCICIO INTRODUCTORIO: SECUENCIA DE LEDS CON DOS PULSADORES.

PROGRAMA EN PIC C COMPILER.

//Secuencia leds con pulsadores

#INCLUDE <16F887.h>
#USE DELAY (CLOCK=4000000)
#FUSES XT,NOPROTECT,NOWDT

//Definición de registros

#BYTE  PORTA=5
#BYTE  PORTB=6

//Definición de entradas

#DEFINE SW1 PORTA,0
#DEFINE SW2 PORTA,1


main(){

//Definición de salidas y etradas digitales 
SET_TRIS_B(0B00000000); //Salidas digitales
SET_TRIS_A(255); //Entradas digitales
SET_TRIS_C(255); //También puedo poner 0B11111111 Como entrada digital
PORTA=0X00;
PORTB=0X00;

   WHILE(1){
 IF((BIT_TEST(SW1)==0) && (BIT_TEST(SW2)==0))
 {  
    BIT_SET(PORTB,0);
    DELAY_MS(100);
    
    BIT_SET(PORTB,1);
    DELAY_MS(100);
    
    BIT_SET(PORTB,2);
    DELAY_MS(100);
    
    BIT_SET(PORTB,3);
    DELAY_MS(100);
    
    BIT_SET(PORTB,4);
    DELAY_MS(100);
  
    BIT_SET(PORTB,5);
    DELAY_MS(100);
 
    BIT_SET(PORTB,6);
    DELAY_MS(100);
    
    BIT_SET(PORTB,7);
    DELAY_MS(100);
    
 }
  
     IF((BIT_TEST(SW1)==0) && (BIT_TEST(SW2)==1))
   {
    PORTB=0B00011000;
    DELAY_MS(100);
    PORTB=0B00100100;
    DELAY_MS(100);
    PORTB=0B01000010;
    DELAY_MS(100);
    PORTB=0B10000001;
    DELAY_MS(100);
    }
      
      IF((BIT_TEST(SW1)==1 ) &&  (BIT_TEST(SW2)==0)) { 
          PORTB=0B01010101;
          DELAY_MS(100);
          PORTB=0B10101010;
          DELAY_MS(100);
        
      IF(BIT_TEST(SW1)==1)
      {
         PORTB=0X00;
      }
    }
     IF((BIT_TEST(SW1)==1) && (BIT_TEST(SW2)==1))
     {
         PORTB=0B11000011;
         DELAY_MS(100);
         PORTB=0B00111100;
         DELAY_MS(100);
     }
     
     PORTB=0X00;
 }
}

 

Explicación del circuito:

 Con el pic16f887 se controla el encendido y apagado de la secuencia de los leds. Con los cuatro estados lógicos para cada pulsador se genera una secuencia diferente.

 

Pulsador Uno Pulsador Dos Secuencia
Cero Cero Prenden cada led en dirección izquierda. Cuando todos los leds están prendidos, se apagan.
Cero Uno  Pares e impares
Uno Cero Se prenden cada led del nibble alto hacia la izquierda y se prenden cada led del nibble bajo hacia la derecha.
Uno Uno Se prenden de a dos  leds  del nibble alto hacia la izquierda y se prenden de a dos leds del nibble bajo hacia la derecha.

 

Materiales:

  • Dos resistencias de 10 KΩ
  • Nueve resistencias de 220Ω
  • Ocho leds rojos.
  • Un pic16F887.
  • Dos pulsadores.

VÍDEO DE LA SIMULACIÓN DEL CIRCUITO.

 

VÍDEO DE LA PRUEBA DEL CIRCUITO

CONTENIDOS MÁS RELEVANTES.

Categories: MICROCONTROLADORES
fabio figueroa: soy el administrador del sitio web. si tienes alguna duda, no dudes en contactarme

Este sitio usa cookies