viernes, 26 de julio de 2013

Microcontroladores PIC en mikroC 4 - Display (Contador con Boton de 0 a 9)

El Boton hara que se incremente un contador de 0-9   y se visualizara en el Display de 7 segmentos.

A continuación se muestra el diagrama de conexiones en el simulador ISIS de PROTEUS

 Diagrama de conexiones. (clic en la imagen para ampliar)


Herramienta en mikroc en este caso se seleeciona un CERO y para un display de catodo común, se coloco en la funcion el valor de 0x3F en hexadecimal.

 Seven Segment Editor.


Código empleado en el programa.  

//------------------------------------------------------------
//Declaracnion de funciones(Mostradas al final del programa)
void inicio();
char Display(char digito);
char contador=0, estado=1;  //contadores usados

void main() {
    inicio();
    while(1){
        if(Button(&PORTB,0,1,0)) estado =0;         /*Verifica si se pulso
        el boton por el puerto RB0 con 1 ms de retardo, y se pregunta por un
        nivel bajo(0) debido a la forma en la que esta conectada el boton
        (siempre a un nivel logico 1 con la resistencia) */
       
        if(estado==0 && Button(&PORTB,0,1,1)){      /*El programa no incremen-
        tara el contador sino hasta que se suelte el pulsador(pregunta
        nuevamente por el nivel logico 1)*/
            contador++;                             // incrementa contador
            if(contador>9) contador=0;              // resetea contador
            estado =1;                              // regresa el estado
        }
        PORTD = Display(contador);                  //funcion para crear los
                                                    //numeros

    }
}

//Funcion de configuracion inicial del microcontrolador
void inicio(){
    ANSEL    = 0x00;             // puertos E/S digital
    ANSELH   = 0x00;
    C1ON_bit = 0x00;             // se apagan los comparadores
    C2ON_bit = 0x00;
    PORTB    = 0x00;             // inicialización de puertos.
    PORTD    = 0x00;
    TRISB    = 0xFF;             // puerto B como entrada
    TRISD    = 0x00;             // puerto D como salida

}

//Para un display de catodo comun... se puede apoyar de la herramienta
// en mikroc (Seven Segment Editor)  de la barra de herramientas Tools  para la
//verificacion de los valores
char Display(char digito){
    switch(digito){
        case 0: return 0x3F;
        case 1: return 0x06;
        case 2: return 0x5B;
        case 3: return 0x4F;
        case 4: return 0x66;
        case 5: return 0x6D;
        case 6: return 0x7D;
        case 7: return 0x07;
        case 8: return 0x7F;
        case 9: return 0x67;
    }
}
//------------------------------------------------------------


A continuación se adjuntan los archivos para descargar el proyecto, el archivo .hex para el microcontrolador y la simulacion en ISIS.

viernes, 19 de julio de 2013

Microcontroladores PIC en mikroC 3 - Boton (LED Prendido o Apagado)

En el siguiente programa el LED conectado en el Puerto RB0 cambiara de estado (Prendido-Apagado) si es que se presiona el pulsador en el Puerto RD1.

A continuación se muestra el diagrama de conexiones en el simulador ISIS de PROTEUS y el diagrama de flujo del programa.

Diagrama de conexiones. (clic en la imagen para ampliar)



 Diagrama de Flujo (clic en la imagen para ampliar)


Código empleado en el programa.

int estado    = 0;                      // variables a utilizar
int estadoAnt = 0;
int salida    = 0;

void main() {
    ANSEL  = 0x00;                      // puertos E/S digital
    ANSELH = 0x00;
    C1ON_bit = 0x00;                    // se apagan los comparadores
    C2ON_bit = 0x00;
   
    TRISB = 0x00;                       // puerto B como salida
    TRISD.F1 = 1;                       // puerto D1 como entrada
    PORTB = 0x00;                       // inicialización del puerto.

    while(1){
        estado = Button(&PORTD,1,1,1);  // regresa 0 ó 255 la libreria de boton
                                        // para antirrebotes de microC
                                        // parametro1: pide el puerto
                                        // parametro2: numero del puerto RD1
                                        // parametro3: tiempo en ms: 1ms
                                        // parametro4: pregunta por el estado
                                                     //pregunta por un alto :1
                                       

        /* para un mejor entendimiento del código se sugiere
           ver el diagrama de flujo adjunto */

        if((estado == 255) && (estadoAnt == 0)){
            salida = 1 - salida;
        }
        estadoAnt = estado;
        if(salida == 1){
            PORTB = 255;
        }
        else{
            PORTB = 0;
        }
    }
}



A continuación se adjuntan los archivos para descargar el proyecto, el archivo .hex para el microcontrolador y la simulacion en ISIS.

Descargar 

Microcontroladores PIC en mikroC 2 - Puertos Bit a bit

En el siguiente programa por el Puerto C se obtendra el dato del Puerto B, esto mediante un dip Swith y una barra de LEDs.

A continuación se muestra el diagrama de conexiones en el simulador ISIS de PROTEUS.


Codigo empleado en el programa.

void main(){
    ANSEL =0x00;        // los puertos se configuran como
    ANSELH = 0x00;      // E/S digital
    PORTC=0x00;         // inicialización del puerto.
    TRISC=0x00;         // puerto C como salida.
    TRISB=0xFF;         // puerto B como entrada.

    while (1){
        PORTC=PORTB;    // mueve el estado del puerto B al C
    }
}


A continuación se adjuntan los archivos para descargar el proyecto, el archivo .hex para el microcontrolador y la simulacion en ISIS.

Descargar 

Microcontroladores PIC en mikroC 1 - Blink LED (Hola Mundo)


Para prender y apagar un LED (Blink LED) en un microcontrolador PIC no es necesario crear complicadas rutinas de tiempo en  ensamblador debido a que en microC ya existen las librerias para realizar dicha acción. Para mostrar el parpadeo del LED se utilizará un Microcontrolador PIC16F887.

A continuación se muestra el diagrama de conexiones en el simulador ISIS de PROTEUS. En el diagrama puede verse un diodo LED junto a una resistencia de 330 ohm, además en el pin 1 del microcontrolador se agrego un pequeño circuito, el cual debe colocarse para que MCLR este siempre en estado de 1, al presionar el Boton habrá un reset en el microcontrolador.




void main() {
    ANSEL      = 0x00;                               // los puertos se configuran como
    ANSELH   = 0x00;                               // E/S digital

    PORTB      = 0x00;                              // se inicializa el puerto B con 0
    TRISB.F0  = 0;                                    // se usa como salida

    while(1){                                               // ciclo
        PORTB.F0 = ~PORTB.F0;              // hace parpadear el LED
        Delay_ms(500);                                // cada 500 ms.
    }
}

A continuación se adjuntan los archivos para descargar el proyecto junto con la simulacion en ISIS.