1er cote micro

30
Ingeniería en Mecatrónica M.C. Sirgei Garcia Ballinas Practicas 1er Corte. Victor Javier Cancino González Darinel Cruz Vázquez Hugo Grajales Roman Giber Guzman Abad Luis Enrique Hernández Gómez 24 de Abril del 2012 M I C R O C O N T R O L A D O R E S Universidad Politécnica de Chiapas

Upload: darinel-cruz

Post on 10-Oct-2014

35 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1er Cote Micro

I n g e n i e r í a e n M e c a t r ó n i c a

M.C. Sirgei Garcia Ballinas

Practicas 1er Corte.

Victor Javier Cancino González

Darinel Cruz Vázquez

Hugo Grajales Roman

Giber Guzman Abad

Luis Enrique Hernández Gómez

24 de Abril del 2012

M I C R O C O N T R O L A D O R E S

Universidad Pol i técnica de Chiapas

Page 2: 1er Cote Micro

Contenido

Adiamco! 3Dui bla faccumsan velis auguero! 3Lore dolorpe! 3Tuat vulluptat alit er iniamcore exeriure! 4

Practica 1! 4Secuencia de Leds (Parpadeo).! 4Código! 5Simulación.! 6Físico! 7

Práctica 2.! 8Secuencia de Leds (Inicio-Fin).! 8Código.! 9Simulación.! 11Físico.! 11

Practica 3! 12Secuencia de Leds (Extremos-Centro).! 12Código.! 13Simulación.! 14Físico.! 14

Practica 4! 15Secuencia de Leds (hola).! 15Código.! 16Simulación.! 17Físico.! 17

Practica 5! 18Secuencia de Leds (mecatronica).! 18Código.! 19Simulación.! 20Físico.! 22

M e c a t r ó n i c a! 1 º C o r t e

Page 3: 1er Cote Micro

Practica 6! 23LCD (Voltímetro).! 23Código.! 24Simulación.! 25

Practica 7! 26LCD (fotodiodo).! 26Código.! 27Simulación.! 28Real.! 28

M e c a t r ó n i c a! 1 º C o r t e

Page 4: 1er Cote Micro

Introducción

A través de programas realizados en lenguaje C en el Compilador CCS y simulaciones en Pro-teus se realizaron siete distintas practicas con el objetivo de aprender a utilizar las distintas instrucciones básicas que se le pueden ordenar a un microcontrolador en este caso para todas las practicas se utilizó el PIC16F877A.

Para la realización de estas prácticas primeramente fue de suma importancia aprender arealizar la configuración de los puertos I/O. Así como también, como podemos declarar nues-tras variables y el tipo de PIC a utilizar. Otro factor que es indispensable para realizar las practicas fue conocer las librerías que se utilizarán ya que cambian con las ya conocidas en C.

M e c a t r ó n i c a! 1 º C o r t e

Page 5: 1er Cote Micro

Practica 1Secuencia de Leds (Parpadeo).

Utilizamos el compilador CCS para la siguiente práctica.

1º Crear un nuevo proyecto:

2º En la pestaña General seleccionamos:

• PIC16F877A• 4,000,000 HZ• Crystal osc (>4mhz forPCM/PCH)

3º En la pestaña I/O pins:

seleccionamos los pines de salida/en-trada que a utilizaremos (puerto B).

M e c a t r ó n i c a! 1 º C o r t e

Fig.1.1 Barra de Menú

Fig.1.3 Pestaña I/O pins

Page 6: 1er Cote Micro

Código4º 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 espesifico se escribe:

! ! output_high(PIN_(nombre del pin));

por lo tanto:!! ! ! ! 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);

6º Para dar un estado bajo a un pin en espesifico se escribe:

! ! output_low(PIN_(nombre del pin));

por lo tanto:! ! ! ! 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);

7º Agregamos un ciclo “for(;;)” el cual repetirá las instrucciones infinitamente.! .

! ! ! ! for(;;)! ! ! ! { ! ! ! ! output_high(PIN_B0); ! ! ! ! output_high(PIN_B1);M e c a t r ó n i c a! 1 º C o r t e

Page 7: 1er Cote Micro

! ! ! ! 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).

Simulación.

M e c a t r ó n i c a! 1 º C o r t e

Fig.1.4 Todo el puerto B en estado alto

Fig.1.5 Todo el puerto B en estado bajo

Page 8: 1er Cote Micro

Físico

M e c a t r ó n i c a! 1 º C o r t e

Fig.1.7 Todo el puerto B en estado bajo

Fig.1.6 Todo el puerto B en estado alto

Page 9: 1er Cote Micro

Fig.2.1 Barra de Menú

Práctica 2.Secuencia de Leds (Inicio-Fin).

1. Crear un nuevo proyecto con el software compilador CCS.

2.Hacer la selección de los recursos a emplear.

• PIC16F877A• 4,000,000 HZ• Crystal osc (>4mhz forPCM/PCH)

3. Seleccionar los pines de salida (Port B)

M e c a t r ó n i c a! 1 º C o r t eFig.2.3 Pestaña I/O pins

Fig.2.2 Pestaña Genral

Page 10: 1er Cote Micro

Código.

4. Bajo el empleo de los recursos solicitados el programa genera un código previo de ini-cialización 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 especifico se escribe:

! ! “output_high(PIN_(nombre del pin));”

ésta instrucción se hará cada que queramos tener un solo PIN encendido, quedándonos el código de la siguiente manera ingresándolo en un ciclo “for(;;) ” que lo ejecutará infinita-mente hasta ser suspendida la alimentación.

! ! ! ! for(;;)! ! ! //Inicialización del For ! ! ! ! { ! ! ! ! output_high(PIN_B0);! //Led en Estado Alto !! ! ! output_low(PIN_B1); ! //Led en Estado Bajo !! ! ! 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(100);! ! // delay de 100 mili-segundo! ! ! ! output_low(PIN_B0);!! //Led en Estado Bajo! ! ! ! output_high(PIN_B1);! //Led en Estado Alto !! ! ! 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(100);! ! // delay de 100 mili-segundos! ! ! ! output_low(PIN_B0);!! //Led en Estado Bajo

M e c a t r ó n i c a! 1 º C o r t e

Page 11: 1er Cote Micro

! ! ! ! output_low(PIN_B1); ! ! ! ! output_high(PIN_B2);! //Led en Estado Alto !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); !! ! ! delay_ms(100);! ! //delay de 100 mili-segundos !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1); !! ! ! output_low(PIN_B2); !! ! ! output_high(PIN_B3);! //Led en Estado Alto !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); ! ! ! ! delay_ms(100);! ! // delay de 100 mili-segundos !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1); !! ! ! output_low(PIN_B2); ! ! ! ! output_low(PIN_B3); !! ! ! output_high(PIN_B4);! //Led en Estado Alto !! ! ! output_low(PIN_B5); ! ! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); !! ! ! delay_ms(100);! ! ! // delay de 100 mili-segundo !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1); !! ! ! output_low(PIN_B2); !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_high(PIN_B5);! //Led en Estado Alto !! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); ! ! ! ! delay_ms(100);! ! // delay de 100 mili-segundos !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1); !! ! ! output_low(PIN_B2); !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_high(PIN_B6);! //Led en Estado Alto !! ! ! output_low(PIN_B7); !! ! ! delay_ms(100);! ! // delay de 100 mili-segundos !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1);! ! ! ! output_low(PIN_B2); !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_low(PIN_B6);

M e c a t r ó n i c a! 1 º C o r t e

Page 12: 1er Cote Micro

!! ! ! output_high(PIN_B7);! //Led en Estado Alto !! ! ! delay_ms(100);! ! // delay de 100 mili-segundos! ! ! ! }! ! ! ! //Finaliza For

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-fin).

Simulación.

Físico.

M e c a t r ó n i c a! 1 º C o r t e

Fig.2.4 PIN B5 en estado alto Fig.2.5 PIN B3 en estado bajo

Fig.2.6 PIN B7 en estado alto Fig.2.7 PIN B6 en estado alto

Fig.2.8 PIN B2 en estado alto

Page 13: 1er Cote Micro

Fig.3.1 Barra de Menú

Practica 3Secuencia de Leds (Extremos-Centro).

1ºCrear un nuevo proyecto con el software compilador CCS.

2.Hacer la selección de los recursos a emplear.

• PIC16F877A• 4,000,000 HZ• Crystal osc (>4mhz forPCM/PCH)

3. Seleccionar los pines de salida (Port B)

M e c a t r ó n i c a! 1 º C o r t e

Fig.3.2 Pestaña Genral

Fig.3.3 Pestaña I/O pins

Page 14: 1er Cote Micro

Código.

4. Bajo el empleo de los recursos solicitados el programa genera un código previo de ini-cialización 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 especifico se escribe:

! ! “output_high(PIN_(nombre del pin));”ésta instrucción se hará cada que queramos tener un solo PIN encendido, quedándonos el código de la siguiente manera ingresándolo en un ciclo “for(;;) ” que lo ejecutará infinita-mente hasta ser suspendida la alimentación. !! ! ! ! for(;;)! ! ! //For infinito ! ! ! ! ! { ! ! ! ! output_high(PIN_B0);! //Led en Estado Alto ! ! ! ! output_low(PIN_B1);!! //Led en Estado Bajo ! ! ! ! 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);! ! //Retraso de 200 milisegundos ! ! ! ! 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);! //Led en Estado Alto ! ! ! ! output_high(PIN_B5); ! ! ! ! output_low(PIN_B6);!! //Led en Estado Bajo ! ! ! ! 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);

M e c a t r ó n i c a! 1 º C o r t e

Page 15: 1er Cote Micro

Fig.3.4 PIN B0 y B7 en estado alto

Fig.3.6 PIN B2 y B5 en estado alto

Fig.3.5 PIN B1 y B6 en estado bajo

Fig.3.7 PIN B3 yB4 en estado alto

Fig.3.8 PIN B0 y B7 en estado alto Fig.3.9 PIN B2 yB5 en estado alto

! ! ! ! output_high(PIN_B1);! //Led en Estado Alto ! ! ! ! output_low(PIN_B2); ! ! ! ! output_high(PIN_B6); ! ! ! ! output_low(PIN_B5); ! ! ! ! delay_ms(200); ! ! ! ! output_high(PIN_B0); ! ! ! ! output_low(PIN_B1);!! //Led en Estado Bajo ! ! ! ! output_high(PIN_B7); ! ! ! ! output_low(PIN_B6); ! ! ! ! delay_ms(200); ! ! ! ! ! }! ! ! ! //Se cierra el For

Simulación.

Físico.

M e c a t r ó n i c a! 1 º C o r t e

Page 16: 1er Cote Micro

Practica 4Secuencia de Leds (hola).

1ºCrear un nuevo proyecto con el software compilador CCS.

2.Hacer la selección de los recursos a emplear.

• PIC16F877A• 4,000,000 HZ• Crystal osc (>4mhz forPCM/PCH)

3. Seleccionar los pines de salida (Port B)

M e c a t r ó n i c a! 1 º C o r t e

Fig.4.2 Pestaña Genral

Fig.4.3 Pestaña I/O pins

Fig.4.1 Barra de Menú

Page 17: 1er Cote Micro

Código.

4. Bajo el empleo de los recursos solicitados el programa genera un código previo de ini-cialización 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 especifico se escribe:

! ! “output_high(PIN_(nombre del pin));”ésta instrucción se hará cada que queramos tener un solo PIN encendido, quedándonos el código de la siguiente manera ingresándolo en un ciclo “for(;;) ” que lo ejecutará infinita-mente hasta ser suspendida la alimentación.! ! ! ! ! for(;;)! ! ! //For infinito ! ! ! ! ! { ! ! ! ! output_high(PIN_B0);! //Led en Estado Alto ! ! ! ! output_high(PIN_B1);! //Led en Estado Bajo ! ! ! ! output_low(PIN_B2); ! ! ! ! output_high(PIN_B3); ! ! ! ! output_low(PIN_B4); ! ! ! ! output_low(PIN_B5); ! ! ! ! output_low(PIN_B6); ! ! ! ! delay_ms(1000);! //Retraso de 1000 milisegundos ! ! ! ! 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);! //Led en Estado Alto ! ! ! ! output_low(PIN_B2); ! ! ! ! output_high(PIN_B3); ! ! ! ! output_high(PIN_B4); ! ! ! ! output_low(PIN_B5);!! //Led en Estado Bajo ! ! ! ! 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 º C o r t e

Page 18: 1er Cote Micro

Fig.4.4 1101000 (binario)=h (ASCII)

Fig.4.8 1101100 (binario)=h (ASCII) Fig.4.9 1101111 (binario)=o (ASCII)

Fig.4.6 1101100 (binario)=l (ASCII)

! ! ! ! output_low(PIN_B5); ! ! ! ! output_high(PIN_B6); ! ! ! ! delay_ms(1000); ! ! ! ! ! }! ! ! ! //Se cierra el For

Simulación.

Físico.

M e c a t r ó n i c a! 1 º C o r t e

Fig.4.5 1101111 (binario)=o (ASCII)

Fig. 4.7 1100001 (binario)=a (ASCII)

Fig.4.10 1101100 (binario)=h (ASCII) Fig.4.11 1100001 (binario)=a (ASCII)

Page 19: 1er Cote Micro

Practica 5Secuencia de Leds (mecatronica).

1ºCrear un nuevo proyecto con el software compilador CCS.

2.Hacer la selección de los recursos a emplear.

• PIC16F877A• 4,000,000 HZ• Crystal osc (>4mhz forPCM/PCH)

3. Seleccionar los pines de salida (Port B)

M e c a t r ó n i c a! 1 º C o r t e

Fig.5.1 Barra de Menú

Fig.5.2 Pestaña Genral

Fig.5.3 Pestaña I/O pins

Page 20: 1er Cote Micro

Código.

4. Bajo el empleo de los recursos solicitados el programa genera un código previo de ini-cialización 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 especifico se escribe:

! ! “output_high(PIN_(nombre del pin));”ésta instrucción se hará cada que queramos tener un solo PIN encendido, quedándonos el código de la siguiente manera ingresándolo en un ciclo “for(;;) ” que lo ejecutará infinita-mente hasta ser suspendida la alimentación.

!! ! ! ! for(;;)! ! ! //For infinito ! ! ! ! ! { ! ! ! ! ! output_high(PIN_B0);! //Led en Estado Alto ! ! ! ! output_high(PIN_B1); ! ! ! ! output_low(PIN_B2);!! //Led en Estado Bajo ! ! ! ! output_high(PIN_B3); ! ! ! ! output_high(PIN_B4); ! ! ! ! output_low(PIN_B5); ! ! ! ! output_high(PIN_B6); ! ! ! ! delay_ms(1000);! //Retraso de 1000 milisegundos ! ! ! ! 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); ! //Led en Estado Alto ! ! ! ! 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);! //Led en Estado Alto ! ! ! ! output_low(PIN_B3);

M e c a t r ó n i c a! 1 º C o r t e

Page 21: 1er Cote Micro

Fig.5.4 1101101 (binario)=m (ASCII)

! ! ! ! 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);!! //Led en Estado Bajo ! ! ! ! output_high(PIN_B3); ! ! ! ! output_high(PIN_B4);! //Led en Estado Alto ! ! ! ! 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); ! //Led en Estado Alto ! ! ! ! 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);!! //Led en Estado Bajo ! ! ! ! output_low(PIN_B5); ! ! ! ! output_high(PIN_B6); ! ! ! ! delay_ms(1000); ! ! ! ! ! }! ! ! ! //Finaliza For

Simulación.

M e c a t r ó n i c a! 1 º C o r t e

Fig.5.5 1100101 (binario)=e (ASCII)

Page 22: 1er Cote Micro

M e c a t r ó n i c a! 1 º C o r t e

Fig.5.6 1100011 (binario)=c (ASCII) Fig. 5.7 1100001 (binario)=a (ASCII)

Fig. 5.8 1110100 (binario)=t (ASCII) Fig. 5.9 1110010 (binario)=r (ASCII)

Fig. 5.10 1101111 (binario)=o (ASCII) Fig.5.11 1101110 (binario)=n (ASCII)

Fig.5.12 1101001 (binario)=i (ASCII)

Page 23: 1er Cote Micro

Físico.

M e c a t r ó n i c a! 1 º C o r t e

Fig.5.13 1101101 (binario)=m (ASCII) Fig.5.14 1100101 (binario)=e (ASCII)

Fig.5.15 1100011 (binario)=c (ASCII) Fig.5.16 1100001 (binario)=a (ASCII)

Fig.5.17 1110100 (binario)=t (ASCII) Fig.5.18 1110010 (binario)=r (ASCII)

Fig.5.19 1101111 (binario)=o (ASCII) Fig.5.20 1101110 (binario)=n (ASCII)

Fig.5.21 1101001 (binario)=i (ASCII)

Page 24: 1er Cote Micro

Practica 6LCD (Voltímetro).

1ºCrear un nuevo proyecto con el software compilador CCS.

2.Hacer la selección de los recursos a emplear.

• PIC16F877A• 4,000,000 HZ• Crystal osc (>4mhz forPCM/PCH)

3. Seleccionar los pines Analógicos (Port A)

M e c a t r ó n i c a! 1 º C o r t e

Fig.6.1 Barra de Menú

Fig.6.2 Pestaña Genral

Fig.6.3 Pestaña Analog

Page 25: 1er Cote Micro

4.Seleccionar los Archivos de Cabecera

5.Verificar los pines analógicos ya se-leccionados

Código.6.Bajo el empleo de los recursos solicitados el programa genera un código previo de inicia-lización que queda de la siguiente forma:

! ! ! #include <voltaje.h>! ! ! #include <LCD.C>! ! ! ! //Librería del LCD! ! ! #include <string.h>!! ! ! //Librería String! ! ! void main()! ! ! {! ! ! setup_adc_ports(AN0);! ! ! //Pines analogícos! ! ! 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();! ! ! ! ! //Inicialización del LCD! ! ! }M e c a t r ó n i c a! 1 º C o r t e

Fig.6.4 Pestaña Header Files

Fig.6.5 Pestaña Header Files

Page 26: 1er Cote Micro

7. Para poder sensar el voltaje tendremos que hacer una conversión analógico-digital que sera el valor máximo analógico entre bytes de resolución:! float voltaje;!! ! ! ! //Declarar variable voltaje! setup_adc(adc_clock_internal);! ! //Activar reloj interno! set_adc_channel(0);! ! ! ! //Definir Pin Analógico! 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 conversión analógi!! ! ! ! ! ! ! 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

Simulación.

Real.

M e c a t r ó n i c a! 1 º C o r t e

Fig.6.6 Lectura Media Fig.6.7 Lectura Máxima

Fig.6.8 Lectura Media

Fig.6.9 Lectura Máxima

Page 27: 1er Cote Micro

Practica 7LCD (fotodiodo).

1ºCrear un nuevo proyecto con el software compilador CCS.

2.Hacer la selección de los recursos a emplear.

• PIC16F877A• 4,000,000 HZ• Crystal osc (>4mhz forPCM/PCH)

3. Seleccionar los Archivos de Cabecera

M e c a t r ó n i c a! 1 º C o r t e

Fig.7.1 Barra de Menú

Fig.7.2 Pestaña Genral

Fig.7.3 Pestaña Header Files

Page 28: 1er Cote Micro

4. Seleccionar el pin de entrada (Port A).

Código.5.Bajo el empleo de los recursos solicitados el programa genera un código previo de inicia-lización que queda de la siguiente forma:

! ! ! #include <fotodiod.h>! ! ! #include <LCD.C>! ! ! ! //Librería del LCD! ! ! #include <string.h>!! ! ! //Librería String! ! ! 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_comparator(NC_NC_NC_NC);! ! ! lcd_init();! ! ! ! ! //Inicialización del LCD! ! ! }

6. Para poder sensar el voltaje tendremos que hacer una conversión analógico-digital que será el valor máximo analógico entre bytes de resolución:

! ! while(true)! ! ! ! ! //Inicialización un while infinito! ! {! !! ! if (input(PIN_A0))! ! ! ! //Condición ! ! ! ! ! ! ! ! //Si el PIN A0 esta en estado alto !! ! {! ! ! ! ! ! se imprime “BIENBENIDO:)”! ! printf(LCD_PUTC," BIENVENIDO :)");! ! }

! ! else! ! ! ! ! ! ! ! //Si el PIN A2 no esta en estado !! ! {! ! ! ! ! ! alto se imprime “ADELANTE-->”! ! printf(LCD_PUTC," ADELANTE-->");! ! }! ! delay_ms(100);! ! ! ! //Retraso de 100 milisegundos! ! }

M e c a t r ó n i c a! 1 º C o r t e

Fig.7.4 Pestaña I/O Pins

Page 29: 1er Cote Micro

Simulación.

Real.

M e c a t r ó n i c a! 1 º C o r t e

Fig.7.5 PIN A0 en estado bajo Fig.7.6 PIN A0 en estado alto

Fig.7.7 PINA0 en estado alto Fig.7.6 PIN A0 en estado bajo

Page 30: 1er Cote Micro

Conclusión

El principal y mayor problema que nos topamos al realizar las practicas fue que el com-

pilador nos comenzó a presentar algunas fallas. Como por ejemplo nos marcaba errores inexistentes o nos dejaba compilar pero no nos generaba ningún cambio.

M e c a t r ó n i c a! 1 º C o r t e