Está en la página 1de 27

BENEMRITA UNIVERSIDAD AUTNOMA

DE PUEBLA

FACULTAD DE CIENCIAS DE LA ELECTRNICA

Desarrollo de sistemas basados en


Microcontroladores y DSPS
Nicols Quiroz Hernndez

Prctica 2
Efectos de leds

Equipo 6
Bonilla Prez Jhonnatan
Irabien ngela Beatriz
Luna Zempoalteca Viridiana
Moncayo Ramrez Christian Ivn

Primavera 2017

Contenido
Introduccin............................................................................................................................3
Objetivos.................................................................................................................................3
Marco terico..........................................................................................................................4
Desarrollo................................................................................................................................8
Diagrama de Flujo...............................................................................................................8
Cdigo en ensamblador.......................................................................................................9
Resultados.............................................................................................................................14
Depurador y simulacin en MPLAB.................................................................................14
Simulacin en Proteus.......................................................................................................15
Implementacin en tarjeta de desarrollo...........................................................................22
Conclusiones.........................................................................................................................26
Referencias............................................................................................................................27

2
Introduccin
Cuando necesitamos que transcurra un determinado tiempo de espera antes de que ocurra un evento,
por ejemplo, el encendido de una luz, LED, activacin de una bobina de un rel o lectura de una
determinada entrada, se suele recurrir a subrutinas de retardo. Prcticamente todos los programas de
microcontroladores PIC usan en algn momento una subrutina de retardo.
Una subrutina es un conjunto de instrucciones al que se tiene acceso desde cualquier punto del
programa principal. Como una subrutina conceptualmente queda fuera del flujo secuencial del
programa principal, son necesarios ciertos mecanismos para poder llegar a ella y, una vez que se
han ejecutado las instrucciones que la componen debe ser posible regresar al punto donde se qued
la ejecucin del programa.
En esta prctica se realizar una subrutina de retardo para el encendido y apagado de un conjunto de
8 leds por medio de la tarjeta de desarrollo para el PIC18F4550, esto consiste en que el PIC se
quede ejecutando unos ciclos que van decrementando unos contadores cargados previamente con el
tiempo de retardo, cuando los contadores llegan a 0 la subrutina de retardo queda terminada y el
microcontrolador sigue ejecutando el programa principal.
Como se mencionaba, mediante la tarjeta de desarrollo del PIC18F4550 se
llevar a cabo la prctica, la cual consiste principalmente en controlar el
encendido de leds, ya sea de izquierda a derecha o viceversa.

Objetivos

Identificar las caractersticas de los microcontroladores (C) PIC de la familia PIC18 y su


tarjeta de desarrollo.
Manejar el software MPLAB para crear un proyecto y simular.
Analizar el proceso para generar retardos de tiempo en un microcontrolador.
Realizar un programa en lenguaje ensamblador para controlar el encendido de 8 leds
conectados al puerto D.
Debe encender solo un led en orden, aproximadamente cada 600 ms.
Realizar la simulacin en el software Proteus del circuito completo.
Programar el microcontrolador (Pickit2, ICD2, Master-Pro, etc.) para obtener los resultados.

3
Marco terico
El PIC18 que se utiliz en esta prctica, fue el PIC18F4450, el cual es un microcontrolador de 40
terminales. En la figura 1 se muestra una foto del PIC, as como el diagrama de sus terminales en la
figura 2.

Figura 1. PIC18F4450

Figura 2. Diagrama de terminales de un PIC18F4450.

4
Algunas de las caractersticas sobresalientes del PIC18F4450, las podemos ver en la Tabla 1:

Tabla 1. Caractersticas del PIC18F4550.

Y su tarjeta de desarrollo Sputnick, mostrada en la figura 3:

Figura 3. Tarjeta de desarrollo Sputnick

En la cual podemos ubicar los leds que prendern y apagarn de forma sucesiva, y se encuentran
ubicados en el puerto D.
Dicha tarjeta tiene ya ensamblados los componentes bsicos para trabajar con los
microprocesadores PIC de 40 pines de la compaa MICROCHIP.
La descripcin de la tarjeta Sputnick (figura 4) se mostrar en la tabla siguiente (tabla 2).

Figura 4. Pines de la Tarjeta de desarrollo Sputnick.

ID Descripcin ID Descripcin
1 Resistencia controlar la 17 Base para CI de Memoria
5
iluminacin del
EEprom
LCD, si R=0 se tiene mximo
24xxxx
brillo
Conector para Cristal de
2 Conector para LCD 16x2 18
18.472Khz
Resistencia de ajuste de
3 contraste del 19 Base para CI Fechador DS 1307
LCD.
Conector para seal se salida de
4 Conector macho del Puerto B 20
1hz
Puentes para configurar las
Conector para batera de
5 terminales 21
respaldo
SDA,SCL del puerto I2C
Puente para conectar un
capacitor
Conector ICSP para programar
6 22 de 1 uf al Pin C3, para generar
el PIC
el
voltaje VUSB de 3.3volts
Conector 1 para entrada
7 Botn de RESET 23
analgicas
Botn conectado al Bit4 del
8 24 Conector del Puerto A
Puerto B
Conector para un arreglo de 8
Botn conectado al Bit0 del
9 25 DIP
Puerto E
switch
LED conectado al Bit1 del
10 26 Cristal de 20Mhz
Puerto E
Botn conectado al Bit2 del
11 27 Conector Macho del Puerto C
Puerto E
Arreglo de 8 led conectados al
12 28 Conector para PWM1 y PWM2
Puerto D
Puente para habilitar el
funcionamiento
13 del arreglo de LEDs, conecta el 29 Conector 2x2 para USB
arreglo
de diodos a tierra
Puente para seleccionar el
Conector para dos dispositivos
14 30 voltaje
I2C
de alimentacin via USB
Conector 1 para entrada Conector Miniusb o Micro
15 31
analgicas USB
Base para circuito integrado
16 PIC de 32 Conexiones para puerto USB
40 Pines.
Tabla 2. Descripcin de la Sputnick.

6
Como ya se mencion en la introduccin, para poder crear retardos se necesita del uso de las
subrutinas, sta accin de pasar del programa principal a la subrutina se denomina llamada a la
subrutina y se realiza con la instruccin call, que debe intercalarse dentro del programa principal
como se muestra en la figura 5.

Figura 5. Uso de las subrutinas.

Y la accin de volver al programa principal despus de llevar a cabo las tareas determinadas por la
subrutina se llama retorno de la subrutina y se realiza con la instruccin return, con la que debe
finalizar siempre la subrutina.
Para poder obtener nuestro tiempo de retardo se ocupa la siguiente frmula:
4
t= ( 65536T 0 )Pree Donde
fosc

t = tiempo
fosc = frecuencia del oscilador.
Pree = Preescalador.
T0 = Valor que se le debe introducir al timer 0 del microcontrolador.

7
Desarrollo
Para el correcto procedimiento de la prctica se hizo uso de los siguientes materiales y software:
Tarjeta de desarrollo Sputnick con el PIC18F4550.
1 Dip switch de 8 posiciones.
1 Fuente de 5 V (proporcionada por el programador)
1 LCD JHD 162 A
1 Programador para software PICkit 2
1 Computadora ASUS Intel CORE i5 2.3-2.4 GHz
1 Software MPLAB v8.92, Proteus 8 y PICKit v2.61 (software del programador).

- Diagrama de Flujo
Para poder realizar adecuadamente nuestro cdigo de programacin, primero se necesita de un
algoritmo como gua, el cual es representado con el diagrama de flujo que se muestra en la figura 6
y 7.

Figura 6. Diagrama de flujo general.

8
Figura 7. Diagrama de flujo de la prctica (corrimiento de bits).

- Cdigo en ensamblador.
Ya con el diagrama de flujo establecido, se procede a realizar el cdigo en ensamblador.
Primero se copia la plantilla de configuracin de los bits iniciales dada en la prctica 1 donde se
configura el oscilador principalmente, adems de sealar que se trabajar con el PIC18F4550
(figura 8).

Figura 8. Bits de configuracin.

Una vez configurados estos bits, se configurarn los puertos de entrada y salida, as como unas
variables que sern de ayuda como contadores a la hora de la configuracin de los retrasos (figura
9).

9
Figura 9. Configuracin de bits.

Una vez realizado esto, se limpia el puerto D mandndole un clear y despus empieza la etapa de
seleccin de las subrutinas (secuencia 1, secuencia 2, secuencia 3 o secuencia 4). Esto se realiza
mediante los primeros 4 pines del puerto B siendo: 0001 secuencia 1, 0010 secuencia 2, 0100
secuencia 3 y 1000 secuencia 4 (ver figura 10).

Figura 10. Seleccin de subrutinas.

Entrando a la subrutina Secuencia 1 se procede a realizar lo dicho en su diagrama de flujo:


Al puerto D se le asigna el siguiente valor 00000001, donde el 1 ser el bit que se utilizar de
corrimiento.
Se llama a la subrutina retardo (se explicar un poco ms adelante), la cual ser la encargada de
darle el retardo de 600 ms. Despus de este tiempo, todo el byte se recorrer hacia la izquierda y se
preguntar si un botn (bit 7 del puerto B) est activo. Si est activo, se produce el retardo de 600
ms y luego todo el byte se recorrer a la izquierda. Se vuelve a preguntar de dicho botn si est
activo para ver si el corrimiento seguir en su curso o cambiar. Adems, se preguntar de la
configuracin del puerto B para ver si sigue en esa secuencia o cambia a otra (ver figura 11).

10
Figura 11. Secuencia 1

Para la Secuencia 2 se prendern y apagar todos los leds del puerto D despus de los 600 ms
dados como retardo (11111111 -> 00000000). Primero se ponen en set todos los bits de dicho
puerto, pasa el tiempo del retardo y se conmuta el valor de estos bits (figura 12).

Figura 12. Secuencia 2

Para la Secuencia 3 se prendern y apagar todos los leds, pero de manera salteada, cambiando
cada 600 ms (01010101 -> 10101010). Primero se ponen en set los bits 0, 2, 4 y 6 y en clear los bits
1, 3, 5 y 7 del puerto D, pasa el tiempo del retardo y se conmuta el valor de estos bits (figura 13).

11
Figura 13. Secuencia 3

Para la Secuencia 4 se prendern y apagarn la mitad de los leds, cambiando cada 600 ms
(11110000 -> 00001111). Primero se ponen en clear los bits 0, 1, 2 y 3 y en set los bits 4, 5, 6 y 7
del puerto D, pasa el tiempo del retardo y se conmuta el valor de estos bits (figura 14).

Figura 14. Secuencia 4

Ahora se explica la forma del retraso de los 600 ms. Para este retraso se hizo uso de la frmula
siguiente:
Retardo=mno4 us

Se hace uso de 4s debido a que la rutina base que ocuparemos para el retardo tarda 4s dado el
nop (1s), el decfsz (1s) y el bra (2s) (ver figura 15).

12
Figura 14. Retardo base

Una vez teniendo la frmula se adquirieron los siguientes valores para m, n y o: 10, 100 y 149. Se
hizo uso de realizar subrutinas dentro de las subrutinas (figura 15) debido a que una subrutina
normal de retardo nos puede dar a lo mucho 255 s debido a los 8 bits con los que se trabaja.

Figura 15. Retardo de 600 ms.

El clear del puerto D (mencionado en la figura 10) lo que hace es mandar a todo el puerto D un 0.
Esto se hizo mediante una subrutina mostrada en la figura 16.

Figura 16. Limpiar el puerto D.

Resultados
Una vez realizado el cdigo en ensamblador y ste ya se encuentre compilado, se procede a revisar
el funcionamiento de nuestro cdigo.

13
Primero se realizar la simulacin en MPLAB con el depurador y simulador que se tiene integrado,
posteriormente tendremos su simulacin en Proteus, para as finalmente programar nuestro PIC en
su tarjeta de desarrollo y visualizar su funcionamiento.
- Depurador y simulacin en MPLAB

La depuracin realizada en este programa es principalmente de ayuda para poder observar que el
retraso sea el correcto (600 ms). Para poder revisar esto, se procede a abrir el depurador MPLAB
SIM, ubicado en debugger -> Select Tool -> MPLAB SIM (figura 17)

Figura 17. MPLAB SIM.

Ya con el simulador abierto, se procede a abrir el cronmetro que tiene el mismo: Debugger ->
Stopwatch.

Ya con el cronmetro abierto se contina depurando el programa lnea por lnea hasta llegar al
llamado a la subrutina retardo. Aqu detenemos el cronmetro resetendolo a 0 para poder observar
el tiempo que dura dicha subrutina. Se da click en Step Over y se revisa en el cronmetro si el
retardo es el adecuado (600 ms) (figura 18).

14
Figura 18. Cronmetro MPLAB SIM.

Se puede observar que si es el tiempo deseado y que se tiene un error de 0.045 ms el cual realmente
es mnimo y despreciable.

- Simulacin en Proteus
Para la simulacin se coloc un dip switch en el puerto B del PIC con 8 resistencias emulando las
resistencias de PULL-UP, en el puerto D 8 leds con sus respectivas resistencias y en el pin 1 del pic
una resistencia conectada a Vcc como se muestra en la Figura 19.

Figura 19. Diagramas de conexin

Una vez realizadas las conexiones, se carga el programa para realizar la simulacin, para esto se da
clic derecho en el PIC y se selecciona Edit Properties (figura 20).

15
Figura 20. Edit Properties.

Posteriormente se agrega el archivo donde se encuentra el cdigo (Figura 21).

Figura 21. Seleccin de archivo.

Despus de agregar el archivo se puede realizar la simulacin, para esto se manejar el dip switch,
el puerto RB0 funciona como habilitador para el corrimiento de bit, si recibe 5 volts el PIC apaga
todos los leds si se enva 0 volts a este puerto inicia el corrimiento de bit hacia la derecha
permaneciendo cada led encendido por 600 milisegundos. Como se muestra en la figura 22, 23 y 24

16
Figura 22. Inicio de corrimiento a la derecha.

Figura 23. Corrimiento a la derecha.

Figura 24. Corrimiento a la derecha.

Para invertir el sentido de corrimiento se debe activar el puerto RB7, de esta forma la secuencia se
realiza hacia la izquierda, iniciando en la ltima posicin que se ejecut del corrimiento a la
derecha, debe notarse que el puerto RB0 continua con un valor de 0 volts (figura 25, 26 y 27)

17
Figura 25. Inicio de corrimiento a la izquierda.

Figura 26. Corrimiento a la izquierda.

Figura 27. Corrimiento a la izquierda.

En la figura 28 se puede observar que si el puerto RB0 tiene 5 volts no importa que el puerto RB7
este a 0 volts, los leds no se encienden.

18
Figura 28. RB0 5 volts y RB7 0 volts

Para el puerto RB1 la secuencia que se programo fue que todos los leds prendieran por 600
milisegundos y despus se apagaran por la misma cantidad de tiempo, esto pasara si en RB1 hay 0
volts (figura 29 y 30)

Figura 29. Secuencia del puerto RB1

19
Figura 30. Secuencia del puerto RB1

Para el puerto RB2 cuatro leds encendern dejando un led apagado entre los que encienden,
conmutando cada 600 milisegundos, como se muestra en la figura 31 y 32.

Figura 31. Secuencia del puerto RB2

20
Figura 32. Secuencia del puerto RB2

Cuando el puerto RB3 es mandado a 0 volts los primeros cuatro leds encienden mientras que los
dems estn apagados por 600 milisegundos, una vez pasado este tiempo, se conmuta entre estos
como se pareca en la figura 33 y 34.

Figura 33. Secuencia del puerto RB3

21
Figura 34. Secuencia del puerto RB3

- Implementacin en tarjeta de desarrollo


Ya compilado el cdigo y simulado en Proteus, se procede a quemar el PIC con la misma tarjeta
de desarrollo sputnick para su posterior desplegamiento en la misma (ver tablas 3,4,5 y 6).
Secuencia 1 (0001)
Corrimiento a la Izquierda
(bit 7 No habilitado)

Corrimiento a la Izquierda
(bit 7 No habilitado)

Corrimiento a la Izquierda
(bit 7 No habilitado)

Tabla 3a. Secuencia 1.

Secuencia 1 (0001)

22
Corrimiento a la Derecha
(bit 7 Habilitado)

Corrimiento a la Derecha
(bit 7 Habilitado)

Corrimiento a la Derecha
(bit 7 Habilitado)

Tabla 3b. Secuencia 1.

Secuencia 2 (0010)
11111111

00000000

Tabla 4. Secuencia 2.

Secuencia 3 (0100)

23
10101010

01010101

Tabla 5. Secuencia 3

Secuencia 4 (1000)
11110000

00001111

Tabla 6. Secuencia 4

24
Adems, para comprobar que el retardo si fuera de 600 ms, se procede a comprobar de manera
fsica este ltimo cronometrando una secuencia y dividiendo entre el nmero de repeticiones que se
tomaron en cuenta. Los resultados fueron los siguientes (ver tabla 7).
Intento Tiempo medido
1 601.858 ms
2 592.889 ms
3 585.275 ms
4 580.333 ms
5 605.563ms
Tabla 7. Tiempos reales del retardo

Cabe destacar que el tiempo no es realmente exacto debido al error humano a la hora de
cronometrar de manera fsica el mismo, sin embargo, no hubo desviaciones tan importantes o
grandes en el tiempo, por lo que se considera que se realiz el retardo adecuadamente.

25
Conclusiones
Se identificaron los pines del PIC18F4550 dentro de la tarjeta de desarrollo Sputnick gracias tanto a
su esquemtico como a su manual. En este caso se utilizaron los pines de los puertos B y D, pero
tambin se identificaron los pines de alimentacin, as como los pines del puerto A, C y E. En el
puerto B se conect el Dip Switch y los leds vienen incluidos en el puerto D.
El diagrama de flujo de datos es de suma importancia para dar inicio a nuestro cdigo de
programacin desarrollado en lenguaje ensamblador.
El depurador es una herramienta muy til para la bsqueda de errores, lo que permite solucionarlos
ms rpido.
Dentro del depurador, la herramienta Stopwatch es de gran ayuda a la hora de cronometrar los
tiempos que tarda cada instruccin y/o subrutina en realizar.
El software de simulacin utilizado (Proteus) permite visualizar el comportamiento de los
dispositivos de tal forma, que facilita su entendimiento y ayuda a detectar posibles fallas antes de
proceder a programar el PIC, ya que de manera virtual funcionan como deberan de funcionar al
implementarlos de manera fsica.
El lenguaje ensamblador permite optimizar el hardware utilizando solo lo necesario para ejecutar el
conjunto de instrucciones de una forma correcta reduciendo as el tiempo de ejecucin del programa
dependiendo del nmero de instrucciones que contenga el mismo.
El uso de subrutinas facilita la programacin en ensamblador, adems que es ms fcil ubicar
ciertas instrucciones con stas mismas.
Es de suma importancia activar las resistencias de Pull-Up o Pull-Down, segn sea el caso, para
tener resultados exactos, ya que, sin el uso de estas resistencias, los valores flotan y pueden afectar
el comportamiento de lo que queremos lograr.
Como se deca en los resultados, se puede concluir que tanto los resultados obtenidos en la
simulacin como los obtenidos de manera fsica coinciden sin tener ninguna desviacin importante
en los mismos.

26
Referencias
- MICROCHIP. (2012). PIC18f2455/2550/4455/4550 Data Sheet. 25/01/17, de
MICROCHIP sitio web:
http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf

- Predko Michael. (1999). Handbook of microcontrollers. Ontario, Canada:


McGraw-Hill.

- Gunter Gridling, Bettina Weiss. (2007). Introduction to Microcontrollers.


Vienna University of Technology: VUT

27

También podría gustarte