Beruflich Dokumente
Kultur Dokumente
Ingeniera en Mecatrnica
Victor Javier Cancino Gonzlez Darinel Cruz Vzquez Hugo Grajales Roman Giber Guzman Abad Luis Enrique Hernndez Gmez
Contenido
Adiamco! Dui bla faccumsan velis auguero! Lore dolorpe! Tuat vulluptat alit er iniamcore exeriure! Practica 1! Secuencia de Leds (Parpadeo).! Cdigo! Simulacin.! Fsico! Prctica 2.! Secuencia de Leds (Inicio-Fin).! Cdigo.! Simulacin.! Fsico.! Practica 3! Secuencia de Leds (Extremos-Centro).! Cdigo.! Simulacin.! Fsico.! Practica 4! Secuencia de Leds (hola).! Cdigo.! Simulacin.! Fsico.! Practica 5! Secuencia de Leds (mecatronica).! Cdigo.! Simulacin.! Fsico.!
M e c a t r n i c a!
3 3 3 4 4 4 5 6 7 8 8 9 11 11 12 12 13 14 14 15 15 16 17 17 18 18 19 20 22
1 Corte
Practica 6! LCD (Voltmetro).! Cdigo.! Simulacin.! Practica 7! LCD (fotodiodo).! Cdigo.! Simulacin.! Real.!
23 23 24 25 26 26 27 28 28
M e c a t r n i c a!
1 Corte
Introduccin
A travs de programas realizados en lenguaje C en el Compilador CCS y simulaciones en Proteus se realizaron siete distintas practicas con el objetivo de aprender a utilizar las distintas instrucciones bsicas que se le pueden ordenar a un microcontrolador en este caso para todas las practicas se utiliz el PIC16F877A. Para la realizacin de estas prcticas primeramente fue de suma importancia aprender a realizar la conguracin de los puertos I/O. As como tambin, como podemos declarar nuestras variables y el tipo de PIC a utilizar. Otro factor que es indispensable para realizar las practicas fue conocer las libreras que se utilizarn ya que cambian con las ya conocidas en C.
M e c a t r n i c a!
1 Corte
Practica 1
Secuencia de Leds (Parpadeo).
3 En la pestaa I/O pins: seleccionamos los pines de salida/entrada que a utilizaremos (puerto B).
Cdigo
4 Automaticamente se genera lo siguiente:
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! #include <led 12.h> void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); }
5 Para dar un estado alto a un pin en espesico se escribe: ! ! output_high(PIN_(nombre del pin)); !
! ! ! ! ! ! ! output_high(PIN_B0); output_high(PIN_B1); output_high(PIN_B2); output_high(PIN_B3); output_high(PIN_B4); output_high(PIN_B5); output_high(PIN_B6); output_high(PIN_B7);
por lo tanto:! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! !
por lo tanto:
M e c a t r n i c a!
1 Corte
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
output_high(PIN_B2); output_high(PIN_B3); output_high(PIN_B4); output_high(PIN_B5); output_high(PIN_B6); output_high(PIN_B7); delay_ms(500); output_low(PIN_B0); output_low(PIN_B1); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_low(PIN_B5); output_low(PIN_B6); output_low(PIN_B7); delay_ms(500); }
!y
un delay da un retraso de 500 mili-segundos lo cual nos dar los dos estados de !!la practica (estado alto y estado bajo).
Simulacin.
Fsico
M e c a t r n i c a!
1 Corte
Prctica 2.
Secuencia de Leds (Inicio-Fin).
2.Hacer la seleccin de los recursos a emplear. PIC16F877A 4,000,000 HZ Crystal osc (>4mhz forPCM/PCH)
Cdigo. 4. Bajo el empleo de los recursos solicitados el programa genera un cdigo previo de inicializacin que queda de la siguiente forma: !
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
#include <led 2.h> void main() {! setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); etup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); }
5. Para mantener la secuencia de los leds tenemos que para dar un estado alto a un pin en especico se escribe: ! ! output_high(PIN_(nombre del pin));
sta instruccin se har cada que queramos tener un solo PIN encendido, quedndonos el cdigo de la siguiente manera ingresndolo en un ciclo for(;;) que lo ejecutar innitamente hasta ser suspendida la alimentacin. !
!
!
! !! !! !! !! !! !! !! !! !!
!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
for(;;)! {
! !
! ! !! !! !! !! !! !! !!
output_low(PIN_B0);!!
M e c a t r n i c a!
! !
! ! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
output_low(PIN_B1); output_high(PIN_B2);! output_low(PIN_B3); output_low(PIN_B4); output_low(PIN_B5); output_low(PIN_B6); output_low(PIN_B7); delay_ms(100);! output_low(PIN_B1); output_low(PIN_B2); output_high(PIN_B3);! output_low(PIN_B4); output_low(PIN_B5); output_low(PIN_B6); output_low(PIN_B7); delay_ms(100);! output_low(PIN_B1); output_low(PIN_B2); output_low(PIN_B3); output_high(PIN_B4);! output_low(PIN_B5); output_low(PIN_B6); output_low(PIN_B7); delay_ms(100);! output_low(PIN_B1); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_high(PIN_B5);! output_low(PIN_B6); output_low(PIN_B7); delay_ms(100);! output_low(PIN_B1); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_low(PIN_B5); output_high(PIN_B6);! output_low(PIN_B7); delay_ms(100);! output_low(PIN_B1); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_low(PIN_B5); output_low(PIN_B6);
1 Corte
output_low(PIN_B0);!!
output_low(PIN_B0);!!
output_low(PIN_B0);!!
output_low(PIN_B0);!!
output_low(PIN_B0);!!
! !! !! !! !!
M e c a t r n i c a!
!! !! ! !
! ! !
! ! !
output_high(PIN_B7);! delay_ms(100);! }! ! ! ! !
Por cada secuencia de encendido y apagado de los leds, se usa un delay (retardo) de 100 mili-segundos con el cual podremos ver la secuencia de leds (inicio-n).
Simulacin.
Fsico.
Practica 3
Secuencia de Leds (Extremos-Centro).
2.Hacer la seleccin de los recursos a emplear. PIC16F877A 4,000,000 HZ Crystal osc (>4mhz forPCM/PCH)
M e c a t r n i c a!
1 Corte
Cdigo. 4. Bajo el empleo de los recursos solicitados el programa genera un cdigo previo de inicializacin que queda de la siguiente forma: !
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
#include <led 32.h> void main() {! setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); etup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); }
5. Para mantener la secuencia de los leds tenemos que para dar un estado alto a un pin en especico se escribe: ! ! output_high(PIN_(nombre del pin));
sta instruccin se har cada que queramos tener un solo PIN encendido, quedndonos el cdigo de la siguiente manera ingresndolo en un ciclo for(;;) que lo ejecutar innitamente hasta ser suspendida la alimentacin.
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
M e c a t r n i c a!
!!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
for(;;)! ! ! { output_high(PIN_B0);! output_low(PIN_B1);!! output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_low(PIN_B5); output_low(PIN_B6); output_high(PIN_B7); delay_ms(200);! ! output_low(PIN_B0); output_high(PIN_B1); output_high(PIN_B6); output_low(PIN_B7); delay_ms(200); output_low(PIN_B1); output_high(PIN_B2);! output_high(PIN_B5); output_low(PIN_B6);!! delay_ms(200); output_high(PIN_B3); output_low(PIN_B2); output_low(PIN_B5); output_high(PIN_B4); delay_ms(200); output_high(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_high(PIN_B5); delay_ms(200);
1 Corte
! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! !
output_high(PIN_B1);! output_low(PIN_B2); output_high(PIN_B6); output_low(PIN_B5); delay_ms(200); output_high(PIN_B0); output_low(PIN_B1);!! output_high(PIN_B7); output_low(PIN_B6); delay_ms(200); }! ! ! !
Simulacin.
Fsico.
Practica 4
Secuencia de Leds (hola).
2.Hacer la seleccin de los recursos a emplear. PIC16F877A 4,000,000 HZ Crystal osc (>4mhz forPCM/PCH)
M e c a t r n i c a!
1 Corte
Cdigo. 4. Bajo el empleo de los recursos solicitados el programa genera un cdigo previo de inicializacin que queda de la siguiente forma: !
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
#include <hola.h> void main() {! setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); etup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); }
5. Para mantener la secuencia de los leds tenemos que para dar un estado alto a un pin en especico se escribe: ! ! output_high(PIN_(nombre del pin));
sta instruccin se har cada que queramos tener un solo PIN encendido, quedndonos el cdigo de la siguiente manera ingresndolo en un ciclo for(;;) que lo ejecutar innitamente hasta ser suspendida la alimentacin. !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
for(;;)! ! ! { output_high(PIN_B0);! output_high(PIN_B1);! output_low(PIN_B2); output_high(PIN_B3); output_low(PIN_B4); output_low(PIN_B5); output_low(PIN_B6); delay_ms(1000);! output_high(PIN_B0); output_high(PIN_B1); output_low(PIN_B2); output_high(PIN_B3); output_high(PIN_B4); output_high(PIN_B5); output_high(PIN_B6); delay_ms(1000); output_high(PIN_B0); output_high(PIN_B1);! output_low(PIN_B2); output_high(PIN_B3); output_high(PIN_B4); output_low(PIN_B5);!! output_low(PIN_B6); delay_ms(1000); output_high(PIN_B0); output_high(PIN_B1); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4);
M e c a t r n i c a!
1 Corte
! ! ! ! !
! ! ! !
! ! ! !
! ! ! !
Simulacin.
Fsico.
Practica 5
Secuencia de Leds (mecatronica).
2.Hacer la seleccin de los recursos a emplear. PIC16F877A 4,000,000 HZ Crystal osc (>4mhz forPCM/PCH)
Cdigo. 4. Bajo el empleo de los recursos solicitados el programa genera un cdigo previo de inicializacin que queda de la siguiente forma: !
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! !
#include <mecatronica.h> void main() {! setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); etup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); }
5. Para mantener la secuencia de los leds tenemos que para dar un estado alto a un pin en especico se escribe: ! ! output_high(PIN_(nombre del pin));
sta instruccin se har cada que queramos tener un solo PIN encendido, quedndonos el cdigo de la siguiente manera ingresndolo en un ciclo for(;;) que lo ejecutar innitamente hasta ser suspendida la alimentacin.
!! ! ! !
for(;;)! ! ! { output_high(PIN_B0);! output_high(PIN_B1); output_low(PIN_B2);!! output_high(PIN_B3); output_high(PIN_B4); output_low(PIN_B5); output_high(PIN_B6); delay_ms(1000);! output_low(PIN_B2); output_low(PIN_B3); output_high(PIN_B4); output_low(PIN_B5); output_high(PIN_B6); delay_ms(1000); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_high(PIN_B5); output_high(PIN_B6); ! delay_ms(1000); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_low(PIN_B5); output_high(PIN_B6); delay_ms(1000); output_high(PIN_B2);! output_low(PIN_B3); //For infinito //Led en Estado Alto //Led en Estado Bajo
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
M e c a t r n i c a!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
output_high(PIN_B4); output_low(PIN_B5); output_low(PIN_B6); delay_ms(1000); output_high(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_high(PIN_B5); output_low(PIN_B6); delay_ms(1000); output_low(PIN_B2); output_high(PIN_B3); output_high(PIN_B4); output_high(PIN_B5); output_high(PIN_B6); delay_ms(1000); output_low(PIN_B2);!! output_high(PIN_B3); output_high(PIN_B4);! output_high(PIN_B5); output_low(PIN_B6); delay_ms(1000); output_low(PIN_B2); output_high(PIN_B3); output_low(PIN_B4); output_low(PIN_B5); output_high(PIN_B6); ! delay_ms(1000); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4); output_high(PIN_B5); output_high(PIN_B6); delay_ms(1000); output_low(PIN_B2); output_low(PIN_B3); output_low(PIN_B4);!! output_low(PIN_B5); output_high(PIN_B6); delay_ms(1000); }! ! ! !
//Finaliza For
Simulacin.
M e c a t r n i c a!
1 Corte
Fsico.
M e c a t r n i c a!
1 Corte
Practica 6
LCD (Voltmetro).
2.Hacer la seleccin de los recursos a emplear. PIC16F877A 4,000,000 HZ Crystal osc (>4mhz forPCM/PCH)
M e c a t r n i c a!
1 Corte
Cdigo. 6.Bajo el empleo de los recursos solicitados el programa genera un cdigo previo de inicializacin que queda de la siguiente forma: !
! ! ! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! ! ! !
#include <voltaje.h> #include <LCD.C>! ! #include <string.h>!! void main() { setup_adc_ports(AN0);! setup_psp(PSP_DISABLED);
! !
! !
//Pines analogcos
M e c a t r n i c a!
7. Para poder sensar el voltaje tendremos que hacer una conversin analgico-digital que sera el valor mximo analgico entre bytes de resolucin:
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! float voltaje;!! ! ! ! //Declarar variable voltaje setup_adc(adc_clock_internal);! ! //Activar reloj interno set_adc_channel(0);! ! ! ! //Definir Pin Analgico delay_us(10);! ! ! ! ! //Retreso de 10 microsegundos for(;;)!! ! ! ! ! //For Infinito { voltaje= (.019607)*read_adc();! ! //La variable voltaje tomara el valor del ! ! ! ! ! ! ! producto de factor de conversin analgi! ! ! ! ! ! ! co-digital(5/255) por la lectura del pin ! ! ! ! ! ! ! definido anteriormente lcd_gotoxy(1,1);! ! ! ! //Coordenadas donde iniciara el texto en ! ! ! ! ! ! ! el LCD printf(LCD_PUTC,"VOLTAJE= %.2f", voltaje);//El LCD imprimir VOLTAJE y el valor de ! ! ! ! ! ! ! la variable voltaje delay_ms(1000);! ! ! ! //Retraso de 1000 milisegundos }! ! ! ! ! ! //Finaliza For
Simulacin.
Real.
Practica 7
LCD (fotodiodo).
2.Hacer la seleccin de los recursos a emplear. PIC16F877A 4,000,000 HZ Crystal osc (>4mhz forPCM/PCH)
Cdigo. 5.Bajo el empleo de los recursos solicitados el programa genera un cdigo previo de inicializacin que queda de la siguiente forma: !
! ! ! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! ! ! !
! !
! !
setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); lcd_init();! ! } ! ! ! //Inicializacin del LCD
6. Para poder sensar el voltaje tendremos que hacer una conversin analgico-digital que ser el valor mximo analgico entre bytes de resolucin: !
! ! ! ! ! ! ! ! ! ! ! ! ! !
!
! ! ! ! ! ! ! ! ! ! ! ! ! !
while(true)! ! {
//Inicializacin un while infinito //Condicin //Si el PIN A0 esta en estado alto ! se imprime BIENBENIDO:)
//Si el PIN A2 no esta en estado ! alto se imprime ADELANTE--> //Retraso de 100 milisegundos
M e c a t r n i c a!
1 Corte
Simulacin.
Real.
M e c a t r n i c a!
1 Corte
Conclusin
El principal y mayor problema que nos topamos al realizar las practicas fue que el compilador nos comenz a presentar algunas fallas. Como por ejemplo nos marcaba errores inexistentes o nos dejaba compilar pero no nos generaba ningn cambio.
M e c a t r n i c a!
1 Corte