Вы находитесь на странице: 1из 8

UNIVERSIDAD DE SONORA

CAMPUS HERMOSILLO

INGENIERA EN TECNOLOGA ELECTRNICA


DIVISIN DE CIENCIAS EXACTAS Y NATURALES

PROFESOR: LUIS ARTURO GARCA DELGADO

ASIGNATURA: DISEO ELECTRNICO CON MICROCONTROLADORES.

PRACTICA 1.

ALUMNOS: VILA AVENDAO CARLOS HUGO. BERRELLEZ REYES DANIEL URIEL.

AGOSTO DEL 2013.

Introduccin.

En

esta

prctica

se

desarroll

un

programa

para

controlar

el

microcontrolador PIC18F4553 utilizando un lenguaje C en el software compilador PIC C Compiler. La funcin del programa diseado fue controlar 8 salidas digitales utilizando 2 Push Buttons. Las salidas digitales encendan LEDs. Al presionar PB1 los LEDs en las salidas encendan uno por uno en orden por cada pulsacin del botn. El PB2 apagaba los LEDs uno por uno ordenadamente por cada pulsacin. A continuacin se describir detalladamente el funcionamiento del programa as como el algoritmo implementado.

Aspectos Tericos. Miicrocontrolador PIC184553. El microcontrolador PIC184553 de Microchip es un microcontrolador de alto rendimiento contando las siguientes caractersticas: Bajo consumo de energa. Rango de voltaje de operacin de 2V a 5 V. Conexin USB. Tres PINS para interrupciones externas. Cuatro contadores. Comparadores dual analgicos con entrada multiplexada. Salida PWM.

Diseo Experimental.

Instrucciones. Disear un programa en el que se utilicen 2 entradas y 8 salidas digitales. Las entradas estarn controladas por Push Buttons y las salidas encendern LEDs. Al presionar el PB1, se encender un LED, si se vuelve a presionar, se encender otro LED y as sucesivamente. Al presionar el PB2, se irn apagando los LEDs, uno por uno por cada vez que se presione.

Implementacin. Para cumplir con el funcionamiento del programa planteado se cre en el siguiente programa utilizando lenguaje C.

//********************************************************************************************* #include "C:\Diseo electrnico con microcontroladores\Pract1b.h" signed int x, out; //Declaracin de variables #int_EXT void EXT_isr(void) //Rutina de interrupcin externa en el pin b0 { X++; } #int_EXT2 void EXT2_isr(void) //Rutina de interrupcin externa en el pin b2 { x--;

void main() { setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); enable_interrupts(INT_EXT2); while(true) { //Se limita el valor de la variable entre 0 y 8 if (x>8) x=8; else; if (x<0) x=0; else; // Segn sea el valor de x, la variable out tomar los valores necesarios para //encender los leds deseados switch (x) { case 0: out=0; break; case 1: out=1; break; case 2: out=3; break; case 3: out=7; break; case 4: out=15; break;

case 5: out=31; break; case 6: out=63; break; case 7: out=127; break; case 8: out=255; break; } output_d(out); //El puerto D toma el valor binario del valor de la variable out } }
//******************************************************************************

El funcionamiento programa se bas en interrupciones externas. Por ello hay que declarar el uso de interrupciones externas al comienzo del programa. El PB1 activa la interrupcin externa 0 (INT_EXT) con el cual se sumara un 1 a la variable X cada vez que se oprima el botn. La interrupcin externa 2 (INT_EXT2) disminuir en 1 a la variable X. Para controlar que las salidas digitales se encendieran o apagaran

ordenadamente con cada pulsacin de los botones se hizo uso de la funcin switch, que permite elegir diferentes situaciones o casos de acuerdo con el valor de una variable propuesta. En este caso la variable a utilizar fue X, la misma que cambia con las interrupciones externas. Se hicieron 9 casos diferentes en donde sacaban distintos nmeros binarios de 8bits: Caso 0: Salida en el puerto d: 0 Caso 1: Salida en el puerto d: 1 Caso 2: Salida en el puerto d: 3 Caso 3: Salida en el puerto d: 7 Caso 4: Salida en el puerto d: 15 Caso 5: Salida en el puerto d: 31 Caso 6: Salida en el puerto d: 63 [enciende 0 LEDs] [enciende el primer LED] [enciende los primeros 2 LEDs] [enciende los primeros 3 LEDs] [enciende los primeros 4 LEDs] [enciende los primeros 5 LEDs] [enciende los primeros 6 LEDs]

Caso 7: Salida en el puerto d: 127 Caso 8: Salida en el puerto d: 255

[enciende los primeros 7 LEDs] [enciende los 8 LEDs]

Cada caso corresponde a un numero de LEDs encendidos, y al variar la variable X, ya sea disminuyendo o aumentando 1, los casos se elegan ordenadamente y sus vez encendiendo los LEDs correspondientes. Adems usando la funcin If se limit los valores de la variable X para los cuales no hay casos establecidos de tal forma que para el caso de X fuera mayor a 8, X sera igual 8, y en el caso de que X fuese menor que 0, X sera igual a 0. Una vez que el programa fue compilado, se comprob su funcionamiento utilizando el software simulador ISIS 7 Profesional de la Familia Proteus, como se muestra a continuacin:

Finalmente, el programa se descarg en el microcontrolador y se prob utilizando un circuito similar al de la simulacin.

Вам также может понравиться