martes, 4 de agosto de 2015

Practica 2: Encender Leds en secuencia

Muy bien ahora esta semana aprenderemos a encender y apagar Leds en secuencia, para lo cual continuaremos usando el PIC16F84A.

Materiales

Software Proteus 7 o superior
Software PIC C Compiler
Software WinPic800_V3_64 o Superior 
Grabador para PIC

--------------------------------------------
PIC16F84A de Microchips
2 resistencias de 10 Kohm
2 condensadores ceramicos de 27 pF
1 Cristal XT de 4.000 MHz
1 boton Pulsador
--------------------------------------------
1 Diodos led blancos o amarillos o del color q prefieran
las resistencias son de 1/2
1 resistencias de 220 Ohm o 1 resistencias de 180 Ohm

--------------------------------------------
Fuente de Poder DC de 0 a 20 V


debemos hacer es el algoritmo o pseudocodigo de nuestro ejemplo

Esto indicaría que en un lenguaje común sepamos que queremos que haga el PIC:

  1. Llamar al PIC16F84A
  2. Para el pin B0 encender LED
  3. esperar 200 ms
  4. Para el pin B1 encender LED
  5. esperar 200 ms
  6. Para el pin B2 encender LED
  7. esperar 200 ms
  8. Para el pin B3 encender LED
  9. esperar 200 ms
  10. Para el pin B4 encender LED
  11. esperar 200 ms
  12. Para el pin B0 apagar el LED
  13. esperar 200 ms
  14. Para el pin B1 apagar el LED
  15. esperar 200 ms
  16. Para el pin B2 apagar el LED
  17. esperar 200 ms
  18. Para el pin B3 apagar el LED
  19. esperar 200 ms
  20. Para el pin B4 apagar el LED
  21. esperar 200 ms
  22. Repetir todo desde la orden 2.


Ahora lo llevamos a Lenguaje C. para lo cual lo haremos de forma simple, aunque existen ordenes que simplificarían el programa, las cuales veremos mas adelante.


1: #include < 16F84A . h >
2: #use delay ( clock = 4000000 )
3: #fuses XT , NOWDT
4: #use standard_io ( B )
5:
6: void main ( void )
7:
8:
9: {
10: Do {
11:
12: OUTPUT_HIGH ( PIN_B0 );
13: delay_ms ( 200 );
14:
15: OUTPUT_HIGH ( PIN_B1 );
16: delay_ms ( 200 );
17:
18: OUTPUT_HIGH ( PIN_B2 );
19: delay_ms ( 200 );
20:
21: OUTPUT_HIGH ( PIN_B3 );
22: delay_ms ( 200 );
23:
24: OUTPUT_HIGH ( PIN_B4 );
25: delay_ms ( 200 );
26:
27: OUTPUT_LOW ( PIN_B0 );
28: delay_ms ( 200 );
29:
30: OUTPUT_LOW ( PIN_B1 );
31: delay_ms ( 200 );
32:
33: OUTPUT_LOW ( PIN_B2 );
34: delay_ms ( 200 );
35:
36: OUTPUT_LOW ( PIN_B3 );
37: delay_ms ( 200 );
38:
39: OUTPUT_LOW ( PIN_B4 );
40: delay_ms ( 200 );
41:
42: }
43:
44: WHILE ( TRUE );
45:
46: }

Ahora esta listo para ser probado


Compilamos el programa y verificamos que no haya errores




Ahora cargamos el programa en proteus y listo


ahora armamos el circuito en un protoboard y probamos si funciona


En el vídeo uso el PIC16F877A y en el programa solo se hace el cambio en la linea 1 por 1: #include < 16F877A . h > con un retraso de 2 s osea delay_ms(2000) encendiendo y apagando cada led en orden asi:

12: OUTPUT_HIGH ( PIN_B0 );
13: delay_ms ( 2000 );
14: OUTPUT_LOW ( PIN_B0 );
15: delay_ms ( 2000 );
16: OUTPUT_HIGH ( PIN_B1 );
17: delay_ms ( 2000 );
18: OUTPUT_LOW ( PIN_B1 );
19: delay_ms ( 2000 );

Espero le haya servido este ejemplo, la próxima semana continuamos con encender leds usando pulsadores.


No hay comentarios:

Publicar un comentario