Vous êtes sur la page 1sur 20

Universidad nacional autnoma de Mxico

Facultad de ingeniera

Laboratorio de circuitos Digitales

Prctica 8.
Vmetro secuencial con PIC.

Fecha de entrega: 24/05/2013

Alumno: Olvera Hernndez Oscar.

Objetivos

El alumno aprender a configurar rutinas de retardo para control secuencial de salidas


digitales.
EL alumno aprender como programar tres Microcontroladores PIC16FXXX y realizara las
modificaciones necesarias para que un mismo cdigo funcione en dichos microcontroladores.

Material y equipo

Computadora PC con software de simulacin Proteus, Software de simulacin MPLAB, y


software de programacin de uC, ICPROG
Programador de Microcontroladores microchip.
Microcontrolador PIC16F84A.
Microcontrolador PIC16F88.
Microcontrolador PIC16F8887
3 Cristal de cuarzo de 4 MHz
6 Capacitores cermicos de 22pF
1 Protoboard
10 Resistencias de 330 Ohm @ watt.
1 Barra grafica de LED (de 10 unidades)
Cables de colores para conexiones en la protoboard.
Fuente de poder 5 Volts DC.

Desarrollo
En esta prctica, utilizarn 3 diferentes microcontroladores, para armar con cada uno de ellos
una configuracin que funcione como un vmetro de 10 indicadores, dicho funcionamiento consistir
en realizar una secuencia de encendido de los LEDs de una barra de 10 elementos, los cuales
debern ir encendindose uno despus de otro hasta que se encuentren encendidos los 10 LEDs,
despus de esto debern comenzar a apagarse uno por uno los LEDs hasta que se hayan apagado
todos. La secuencia anteriormente descrita se realizar utilizando 2 pines del puerto A y los 8 del
puerto B y deber repetirse de forma cclica mientras el sistema no se desconecte de la energa.
Entre cada cambio en la secuencia, deber existir un segundo.
Para describir de manera grfica el funcionamiento del sistema, se generar primero un
diagrama de flujo. Dicho diagrama se muestra a continuacin.

Inicio

Configurar puertos
A y B como salidas

Apagar Bit 7 de B
Esperar 1 segundo

Borrar Puertos A y B.

Encender Bit 0 de A
Esperar 1 segundo
Encender Bit 1 de A
Esperar 1 segundo
Encender Bit 0 de B
Esperar 1 segundo
Encender Bit 1 de B
Esperar 1 segundo
Encender Bit 2 de B
Esperar 1 segundo
Encender Bit 3 de B
Esperar 1 segundo
Encender Bit 4 de B
Esperar 1 segundo
Encender Bit 5 de B
Esperar 1 segundo
Encender Bit 6 de B
Esperar 1 segundo
Encender Bit 7 de B
Esperar 1 segundo

Apagar Bit 6 de B
Esperar 1 segundo
Apagar Bit 6 de B
Esperar 1 segundo
Apagar Bit 5 de B
Esperar 1 segundo
Apagar Bit 4 de B
Esperar 1 segundo
Apagar Bit 3 de B
Esperar 1 segundo
Apagar Bit 2 de B
Esperar 1 segundo
Apagar Bit 1 de B
Esperar 1 segundo
Apagar Bit 0 de B
Esperar 1 segundo
Apagar Bit 1 de A
Esperar 1 segundo
Apagar Bit 0 de A
Esperar 1 segundo

Ya habiendo generado el diagrama de flujo correspondiente al sistema que se diseara, se


procede a capturar el cdigo correspondiente en MPLAB, para lo cual se deber configurar
previamente las opciones necesarias para trabajar con el PIC16F84A con una frecuencia de 4MHz.
Dicho cdigo se muestra a continuacin.

;***************PRACTICA 8 GENERACIN DE SECUENCIA PARA UN VUMETRO DE 10 INDICADORES ************


;***************VECTOR DE CONFIGURACION BASICA
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F84A
;PROCESADOR UTILIZADO
INCLUDE <P16F84A.INC> ;DEFINICION DE ALGUNOS OPERADORES UTILIZADOS
ORG 0; EMPIEZA EL PROGRAMA EN LA DIRECIION 0 DE RAM
INICIO
BANKSEL TRISA;
SELECCIONA EL BANCO 1 DE LA MEMORIA
CLRF TRISA;
CONFIGURA LOS BITS DEL PUERTO A COMO SALIDAS
CLRF TRISB;
CONFIGURA LOS BITS DEL PUERTO B COMO SALIDAS
BANKSEL PORTA;
SELECCIONA EL BANCO 0 DE LA MEMORIA
CLRF PORTA;
BORRA (PONE EN 0) LOS BITS DEL PUERTO A
CLRF PORTB;
BORRA (PONE EN 0) LOS BITS DEL PUERTO
PRINCIPAL
BSF PORTA,0;
PONE EL BIT 0 DEL PUERTO A EN 1 LGICO. ENCIENDO EL LED 1
CALL Retardo_1s;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTA,1 ;
PONE EL BIT 1 DEL PUERTO A EN 1 LGICO. ENCIENDO EL LED 2
CALL Retardo_1s;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTB,0 ;
PONE EL BIT 0 DEL PUERTO B EN 1 LGICO. ENCIENDO EL LED 3
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTB,1 ;
PONE EL BIT 1 DEL PUERTO B EN 1 LGICO. ENCIENDO EL LED 4
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTB,2 ;
PONE EL BIT 2 DEL PUERTO B EN 1 LGICO. ENCIENDO EL LED 5
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTB,3 ;
PONE EL BIT 3 DEL PUERTO B EN 1 LGICO. ENCIENDO EL LED 6
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTB,4 ;
PONE EL BIT 4 DEL PUERTO B EN 1 LGICO. ENCIENDO EL LED 7
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTB,5 ;
PONE EL BIT 5 DEL PUERTO B EN 1 LGICO. ENCIENDO EL LED 8
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTB,6 ;
PONE EL BIT 6 DEL PUERTO B EN 1 LGICO. ENCIENDO EL LED 9
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BSF PORTB,7 ;
PONE EL BIT 7 DEL PUERTO B EN 1 LGICO. ENCIENDO EL LED 10
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTB,7 ;
PONE EL BIT 7 DEL PUERTO B EN 0 LGICO. APAGANDO EL LED 10
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTB,6 ;
PONE EL BIT 6 DEL PUERTO B EN 0 LGICO. APAGANDO EL LED 9
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTB,5 ;
PONE EL BIT 5 DEL PUERTO B EN 0 LGICO. APAGANDO EL LED 8
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTB,4 ;
PONE EL BIT 4 DEL PUERTO B EN 0 LGICO. APAGANDO EL LED 7
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTB,3 ;
PONE EL BIT 3 DEL PUERTO B EN 0 LGICO. APAGANDO EL LED 6
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTB,2 ;
PONE EL BIT 2 DEL PUERTO B EN 0 LGICO. APAGANDO EL LED 5
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTB,1 ;
PONE EL BIT 1 DEL PUERTO B EN 0 LGICO. APAGANDO EL LED 4
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTB,0 ;
PONE EL BIT 0 DEL PUERTO B EN 0 LGICO. APAGANDO EL LED 3
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTA,1 ;
PONE EL BIT 1 DEL PUERTO A EN 0 LGICO. APAGANDO EL LED 2
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
BCF PORTA,0 ;
PONE EL BIT 0 DEL PUERTO A EN 0 LGICO. APAGANDO EL LED 1
CALL Retardo_1s ;
GENERA UN RETARDO DE 1s ANTES DE PASAR A LA SIGUIENTE INSRUCCIN
GOTO INICIO ;
NOS DIRIJE AL INICIO CREANDO ASI UN CICLO INFINITO
INCLUDE <Retardos.INC>; INCLUYE LA LIBRERA RETARDOS, PARA QUE PUEDA SER UTILIZADA EN
NUESTRO CDIGO.
END;

FIN DELPROGRAMA

Con el cdigo anterior capturado, se procede a compilarlo y corregir los errores que se
presentaron. Ya corregidos todos los errores se obtiene un archivo con extensin .HEX el cual
posteriormente se deber cargar tanto en la simulacin de Proteus como en cada uno de los
microcontroladores fsicos, realizando los cambios necesarios para cada uno de ellos, y poder
implementar de manera fsica cada uno de los tres sistemas en la protoboard.
Una vez compilado y corregido el programa, se procedi a capturar en proteus el siguiente
circuito, para el caso del PIC16F84A.

En este circuito, se puede apreciar tanto el microcontrolador (PIC16F84A) as como 1 cristal


conectado entre sus pines 15 y 16, adicionalmente se pueden observar un par de capacitores de
22[pF], cada uno de los cuales se conecto entre tierra y uno de los pines 15 y 16. De igual manera se
puede apreciar 1 barra de 10 LEDs y 10 resistencias de 330[], cada una de ellas conectada entre
uno de los 10 pines del microcontrolador que se utilizarn como las salidas del sistema y la terminal
correspondiente al nodo de uno de los LEDs de la barra. Por ltimo se puede apreciar en el circuito
que todas las terminales correspondientes a los LEDs de la barra fueron conectadas a tierra.
Con el circuito capturado como se mostro en la imagen anterior, se procedi a cargar en el
mismo, el archivo generado con extensin HEX, para poder realizar la simulacin del mismo y as
comprobar su funcionamiento. En el siguiente grupo de imgenes se muestran los resultados de
dicha simulacin.
Las imgenes que se muestran a continuacin, corresponden a la primera mitad de la
simulacin, es decir para la secuencia de ida en que encienden uno a uno los LEDs, comenzando
por el LED correspondiente al bit 0 del puerto A hasta el LED correspondiente al pin 7 del puerto B,
terminando los 10 LEDs encendidos.

A continuacin se muestran las imgenes correspondientes a la segunda mitad de la


simulacin, es decir, cuando se apagan uno a uno los10 LEDs, comenzando por el LED

correspondiente al bit 7 del puerto B hasta el LED correspondiente al bit 0 del puerto A, terminando
los 10 LEDs apagados.

Con los resultados obtenidos de la simulacin, se pudo corroborar el programa realizado en


MPLAB, por lo que se procedi a implementar el sistema en la protoboard, previo a lo cual debi
programarse el PIC con el archivo con la extensin HEX, obtenido al compilar el cdigo.
En la siguiente imagen se muestra el circuito fsico implementado en la protoboard, en l se
pueden distinguir los diferentes elementos de que se compone el sistema, entre ellos el
microcontrolador, entre cuyos pines 15 y 16 se ha conectado un cristal de cuarzo de 4MHz de
frecuencia, tambin se pueden apreciar 2 capacitores cermicos de 22[pF] conectados cada uno
entre cada uno d los pines mencionados y tierra. Otro elemento que se puede distinguir es la barra
de 10 LEDs, a cuyos nodos se han conectado los pines del PIC correspondientes a cada uno,
adems los ctodos de cada LED, se han conectado a tierra mediante una resistencia de 330[]
cada uno. Las resistencias, servirn de proteccin para los LEDs, regulando la diferencia de
potencial presente entre nodo y ctodo de cada uno de los ellos (en aproximadamente 3[V].

En el siguiente conjunto de imgenes se muestran los resultados obtenidos al comprobar el


funcionamiento del circuito fsico. Este primer grupo de imgenes corresponde a la primera mitad de
dichos resultados, ya que se muestra la secuencia en que se encienden uno a uno cada LED de la
barra, comenzando desde el LED correspondiente al bit 0 del puerto A hasta el LED correspondiente
al bit 7 del puerto B, terminando al final los 10 LEDs encendidos.

Para la segunda mitad de la secuencia total, se muestra en las siguientes imgenes, como es
que se van desactivando cada uno de los LEDs, comenzando por el LED correspondiente al bit 7 del
puerto B hasta el LED asociado al bit 0 del puerto A, quedando todos los LEDs apagados.

Habiendo corroborado el funcionamiento del programa, mediante la simulacin y el circuito


fsico para el caso del PIC16F84A, se procedi a realizar los cambios necesarios para poder trabajar
con el PIC16F88, los cuales consistieron, en el caso del programa realizado en MPLAB, en modificar
el vector de configuracin bsica, as como incluir las libreras correspondientes a dicho dispositivo y
seleccionar el mismo de entre la lista de dispositivos al configurar el software. A continuacin se
muestra, la parte del cdigo mencionada.
__CONFIG_CONFIG1,_CP_OFF&_CCP1_RB0&_DEBUG_OFF&_CPD_OFF&_LVP_OFF&_BOD
EN_OFF&_MCLR_ON&_PWRTE_OFF&_WDT_OFF&_XT_OSC
__CONFIG_CONFIG2,_IESO_OFF&_FCMEN_OFF
LIST P = 16F88
INCLUDE <P16F88.INC>
Despus de realizar en el cdigo los cambios mencionados anteriormente, se procedi a
compilar el mismo, corrigiendo los errores que se presentaron, con lo cual se genero el archivo con
extensin HEX correspondiente al PIC16F88.
Habiendo compilado correctamente el cdigo generado en MPLAB, se capturo el siguiente
circuito en Proteus, en el cual se puede apreciar que es muy similar al realizado para el PIC16F84A,
ya que cuenta con el cristal de cuarzo conectado entre sus pines 15 y 16, los dos capacitores
conectados cada uno entre uno de dichos pines y tierra, adems de la barra de LEDs y las 10
resistencias de 330[], por lo que este circuito nicamente difiere del anterior en que se sustituyo el
elemento correspondiente al microcontrolador por el del PIC16F88, que ser con el que trabajaremos
a continuacin.

Con el circuito capturado como se muestra en la imagen anterior, se procedi a realizar la


simulacin del mismo, no sin antes haber cargado en dicha simulacin el archivo el archivo con la
extensin HEX, generado en MPLAB, correspondiente al PIC16F88. De la simulacin de este circuito
se obtuvieron los resultados que se muestran a continuacin.

Para la primera mitad de la simulacin, correspondiente a la secuencia de encendido de cada


uno de los LEDs, desde el correspondiente al bit 0 del puerto A hasta el asociado al bit 7 del puerto
B, se obtuvieron las siguientes imgenes,

Para la parte de la secuencia en que se desactiva cada uno de los LEDs, se presentan las
siguientes imgenes, en las cuales se aprecia claramente como se desactivan uno a uno cada LED
comenzando por el correspondiente al bit 7 del puerto B, terminando con el correspondiente al bit 0
del puerto A.

Una vez corroborado el correcto funcionamiento de la simulacin se procedi a implementar el


circuito de manera fsica en la protoboard. Dicho circuito se muestra a continuacin y en el mismo se
pueden apreciar los diferentes elementos descritos en el circuito virtual capturado en Proteus.

Con el circuito implementado en la protoboard, se procedi a comprobar su funcionamiento,


previamente cargado el archivo con la extensin HEX con ayuda del programador. Los resultados de
la comprobacin de nuestro circuito se muestran a continuacin, en el siguiente grupo de imgenes,
se muestran los resultados correspondientes a la primera parte de la secuencia del mismo, en la cual
se encendern uno a uno los 10 LEDs comenzando desde el correspondiente al bit 0 del puerto A
hasta el correspondiente al bit 7 del puerto B.

Para la segunda mitad de la secuencia del sistema, se muestran a continuacin los


resultados, donde se muestra como se fueron desactivando cada uno de los LEDs desde el que se
encuentra asociado al bit 7 del puerto B hasta el que se asocia al bit 0 del puerto A.

Con los resultados anteriormente mostrados se pudo demostrar el funcionamiento del sistema,
utilizando elPIC16F88. Ahora se proceder a realizar el mismo sistema, pero en este caso se
utilizara el PIC16P887, para lo cual, al igual que en el caso anterior, se debieron hacer
modificaciones menores en el programa generado para el PIC16F84A,como seleccionar el
dispositivo que utilizaremos, adems de incluir las libreras necesarias para su utilizacin y colocar el
vector de configuracin correspondiente como se muestra a continuacin.
__CONFIG_CONFIG1,_CP_OFF&_DEBUG_OFF&_CPD_OFF&_LVP_OFF&_BOR_OFF&_MCLRE_
ON&_PWRTE_OFF&_WDT_OFF&_XT_OSC
__CONFIG _CONFIG2,_IESO_OFF&_FCMEN_OFF
; Vector de configuracin
LIST P = 16F887

INCLUDE <P16F887.INC>;
Posteriormente se procede a capturar el siguiente circuito en proteus, el cual solo difiere de
los dos circuitos anteriores en el hecho de que se debe modificar el elemento correspondiente al
microcontrolador que utilizaremos en este caso, al cual se le deber cargar, para su correcto
funcionamiento, el archivo con la extensin HEX generado tras compilar el cdigo y corregir los
errores que se presentaron.

Con el circuito capturado en proteus, se procedi a realizar la simulacin del mismo,


obteniendo los siguientes resultados, que al igual que en los dos casos anteriores, se dividirn en 2
partes. Para la primera mitad de la secuencia, se muestran los siguientes resultados, desde que se
activa el LED correspondiente al bit 0 del puerto A hasta el bit 7 del puerto B.

Para la segunda mitad de la secuencia se presentan los siguientes resultados, donde se


desactivan uno a uno cada LED.

Habiendo corroborado el correcto funcionamiento del programa generado, mediante la


simulacin de proteus, se procedi a implementar el sistema fsico en la protoboard, el cual se
muestra en la siguiente imagen, en la cual se pueden distingui los diferentes elementos de que se

compone, entre ellos el microcontrolador, la barra de LEDs, el par de capacitores cermicos y las
resistencias que sirven de proteccin a cada uno de los LEDs de la barra, adems de las conexiones
necesarias entre los diferentes elementos.

Conclusiones
Mediante la realizacin de esta prctica, se pudo observar que el migrar d un microcontrolador
a otro, resulta relativamente sencillo, ya que la mayora de las instrucciones utilizadas al programar
en ensamblador, son comunes para todos los microcontroladores de Microchip. Sin embargo, se
debe poner atencin especial al generar el vector de configuracin correspondiente a cada
microcontrolador, ya que al contar con ms caractersticas y recursos algunos de ellos, como es el
caso del PIC16F887 comparado con los otros dos microcontroladores usados en esta prctica, se
deben configurar y administrar correctamente dichos recursos, para que el sistema que se disea,
funcione como se espera.
En el caso del PIC16F887, no se pudo corroborar el funcionamiento del circuito fsico, pues
an despus de programar el microcontrolador y revisar en varias ocasiones cada una de las
conexiones y elementos del circuito, no se encontr alguno que pareciera estar daado fsicamente.
no se logro que este funcionara como debera podea.

Vous aimerez peut-être aussi