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