1er cote micro
TRANSCRIPT
![Page 1: 1er Cote Micro](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/7.jpg)
! ! ! ! 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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/11.jpg)
! ! ! ! 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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/12.jpg)
!! ! ! 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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5439cfccafaf9fb62e8b5412/html5/thumbnails/30.jpg)
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