You are on page 1of 30

Materia: Microcontroladores.

Tema: Reporte de Proyecto Pic-16F877A.


Profesor: Ing. Rodrguez May German.
Alumnos: Velzquez Dzib Gustavo.
Salas Lpez Darwin Mariomanuel.
Gmez Mena Dagoberto.
Octavo Semestre

Chetumal Quintana Roo a 18 De Junio del 2015.

ndice
Pagina
Resumen Introductorio -

Introduccin -

Objetivo -

Marco Terico -

Problema

17

Procedimientos de solucin

17

Resultados

25

Circuito esquemtico -

26

Resumen -

28

Anexo Imgenes de evidencia -

28

Conclusin

30

Resumen Introductorio.

Un Microcontroladores es un circuito integrado programable, capaz de ejecutar las


rdenes grabadas en su memoria. Est compuesto de varios bloques funcionales, los
cuales cumplen una tarea especfica. Un Microcontroladores incluye en su interior las tres
principales unidades funcionales de una computadora: unidad central de
procesamiento, memoria y perifricos de entrada/salida.
Algunos Microcontroladores pueden utilizar palabras de cuatro bits y funcionan a
velocidad de reloj con frecuencias tan bajas como 4 kHz, con un consumo de baja
potencia. Por lo general, tendr la capacidad de mantenerse a la espera de un evento
como pulsar un botn o de otra interrupcin; as, Otros Microcontroladores pueden servir
para roles de rendimiento crtico, donde sea necesario actuar ms como un procesador
digital de seal (DSP), con velocidades de reloj y consumo de energa ms altos.
Cuando es fabricado el Microcontroladores, no contiene datos en la memoria ROM.
Para que pueda controlar algn proceso es necesario generar o crear y luego grabar en
la EEPROM o equivalente del Microcontroladores algn programa, el cual puede ser
escrito en lenguaje ensamblador u otro lenguaje para Microcontroladores; sin embargo,
para que el programa pueda ser grabado en la memoria del Microcontroladores, debe ser
codificado en sistema numrico hexadecimal que es finalmente el sistema que hace
trabajar al Microcontroladores cuando ste es alimentado con el voltaje adecuado y
asociado a dispositivos analgicos y discretos para su funcionamiento.

Introduccin

En este Proyecto del Microcontrolador PIC16F877, Realizaremos la programacin


del PIC en el programa MPLAB IDE v8.30 para luego simularlo en el programa de
PROTEUS 8 PROFESSIONAL para su comprobacin y su correcto funcionamiento antes
de proyectarlo en forma fsica o el alambrado fsico.

Objetivo

Conocer el funcionamiento de las unidades bsicas que componen un sistema


digital basado en Microcontroladores, su programacin y sus codificaciones, en donde la
utilizacin de los Microcontroladores y en la aplicacin, la programacin en un
Microcontrolador PIC16F877A en donde se requiera el tipo de funcionamiento.

Marco terico.

El PIC16F877 es un Microcontrolador con memoria de programa tipo FLASH, lo que


representa gran facilidad en el desarrollo de prototipos y en su aprendizaje ya que no se
requiere borrarlo con luz ultravioleta como las versiones EPROM, sino que permite
reprogramarlo nuevamente sin ser borrado con anterioridad.
El PIC16F877 es un Microcontrolador de Microchip Technology fabricado en
tecnologa CMOS, su consumo de potencia es muy bajo y adems es completamente
esttico, esto quiere decir que el reloj puede detenerse y los datos de la memoria no se
pierden. El encapsulado ms comn para este Microcontrolador es el DIP (Dual In-line
Pin) de 40 pines, propio para usarlo en experimentacin. La referencia completa es
PIC16F877-04 para el dispositivo que utiliza cristal oscilador de hasta 4 MHz, PIC16F87720 para el dispositivo que utiliza cristal oscilador de hasta 20 MHz o PIC16F877A-I para el
dispositivo tipo industrial que puede trabajar hasta a 20 MHz. Sin embargo, hay otros
tipos de encapsulado que se pueden
utilizar segn el diseo y la aplicacin
que se quiere realizar. Por ejemplo, el
encapsulado tipo surface mount
(montaje superficial) tiene un reducido
tamao y bajo costo, que lo hace propio
para producciones en serie o para
utilizarlo en lugares de espacio muy
reducido.
Los pines de entrada/salida de
este
Microcontrolador
estn
organizados en cinco puertos, el puerto
A con 6 lneas, el puerto B con 8 lneas,
el puerto C con 8 lneas, el puerto D con
8 lneas y el puerto E con 3 lneas.

Cada pin de esos puertos se puede configurar como entrada o como salida
independiente programando un par de registros diseados para tal fin. En ese registro un
bit en "0" configura el pin del puerto correspondiente como salida y un bit en "1" lo
configura como entrada. Dichos pines del Microcontrolador tambin pueden cumplir
otras funciones especiales, siempre y
cuando se configuren para ello, segn se
ver ms adelante.
Los pines del puerto A y del puerto
E pueden trabajar como entradas para el
convertidor Anlogo a Digital interno, es
decir, all se podra conectar una seal
proveniente de un sensor o de un
circuito analgico para que el
Microcontrolador la convierta en su
equivalente digital y pueda realizar algn
proceso de control o de instrumentacin
digital. El pin RB0/INT se puede
configurar por software para que
funcione como interrupcin externa,
para configurarlo se utilizan unos bits de
los registros que controlan las
interrupciones.
El pin RA4/TOCKI del puerto A puede ser configurado como un pin de
entrada/salida o como entrada del temporizador/contador. Cuando este pin se programa
como entrada digital, funciona como un disparador de Schmitt (Schmitt trigger), puede
reconocer seales un poco distorsionadas y llevarlas a niveles lgicos (cero y cinco
voltios). Cuando se usa como salida digital se comporta como colector abierto (open
collector), por lo tanto, se debe poner una resistencia de pull-up (resistencia externa
conectada a un nivel de cinco voltios). Como salida, la lgica es inversa: un "0" escrito al
pin del puerto entrega en el pin un "1" lgico. Adems, como salida no puede manejar
cargas como fuente, slo en el modo sumidero.

El puerto E puede controlar la conexin en modo microprocesador con otros


dispositivos utilizando las lneas RD (read), WR (write) y CS (chip select). En este modo el
puerto D funciona como un bus de datos de 8 bits (pines PSP). La mxima capacidad de
corriente de cada uno de los pines de los puertos en modo sumidero (sink) o en modo
fuente (source) es de 25 mA. La mxima capacidad de corriente total de los puertos es:
PUERTO A PUERTO B PUERTO C PUERTO D
Modo sumidero

150 mA

200 mA

200 mA

200 mA

Modo fuente

150 mA

200 mA

200mA

200mA

El consumo de corriente del


Microcontrolador
para
su
funcionamiento depende del voltaje
de operacin, la frecuencia y de las
cargas que tengan sus pines. Para un
oscilador de 4 MHz el consumo es de
aproximadamente 2 mA; aunque
este se puede reducir a 40
microamperios cuando se est en el
modo sleep (en este modo el micro
se detiene y disminuye el consumo
de potencia). Se sale de ese estado
cuando se produce alguna condicin
especial que veremos ms adelante.
Estos Microcontroladores responden a una serie de instrucciones o cdigos que se
deben grabar en su memoria de programa, en total son 35. A continuacin se encuentra
una tabla con la lista completa y despus una descripcin de cada una de ellas con el fin
de facilitar su aprendizaje.

El oscilador externo Todo Microcontrolador requiere un circuito externo que le


indique la velocidad a la que debe trabajar. Este circuito, que se conoce como oscilador o
reloj, es muy simple pero de vital importancia para el buen funcionamiento del sistema.
El PIC16F877 puede utilizar cuatro tipos de oscilador diferentes. Estos tipos son:
RC. Oscilador con resistencia y condensador.
XT. Cristal (por ejemplo de 1 a 4 MHz).
HS. Cristal de alta frecuencia (por ejemplo 10 a 20 MHz).
LP. Cristal para baja frecuencia y bajo consumo de potencia.
En el momento de programar o quemar el Microcontrolador se debe especificar
qu tipo de oscilador se usa. Esto se hace a travs de unos fusibles llamados fusibles de
configuracin. El tipo de oscilador que se sugiere para las prcticas es el XT con un cristal
de 4 MHz, porque garantiza precisin y es muy comercial. Internamente esta frecuencia
es dividida por cuatro, lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz en
este caso, por lo que cada instruccin se ejecuta en un microsegundo. El cristal debe ir
acompaado de dos condensadores y se conecta como se muestra

Reset En los Microcontroladores se requiere un pin de reset para reiniciar el


funcionamiento del sistema cuando sea necesario, ya sea por una falla que se presente o
porque as se haya diseado el sistema. El pin de reset en los PIC es llamado MCLR (master
clear). Existen varias formas de resetear o reiniciar el sistema:
Al encendido (Power On Reset)
Pulso en el pin MCLR durante operacin normal

Pulso en el pin MCLR durante el modo de bajo consumo (modo sleep)


El rebase del conteo del circuito de vigilancia (watchdog) durante operacin
normal
El rebase del conteo del circuito de vigilancia (watchdog) durante el modo de bajo
consumo (sleep).
El reset al encendido se consigue gracias a dos temporizadores. El primero de ellos
es el OST (Oscilador Start-Up Timer: Temporizador de encendido del oscilador), orientado
a mantener el Microcontrolador en reset hasta que el oscilador del cristal es estable. El
segundo es el PWRT (Power-Up Timer:
Temporizador de encendido), que provee un
retardo fijo de 72 ms (nominal) en el
encendido nicamente, diseado para
mantener el dispositivo en reset mientras la
fuente se estabiliza. Para utilizar estos
temporizadores, slo basta con conectar el
pin MCLR a la fuente de alimentacin,
evitndose utilizar las tradicionales redes de
resistencias externas en el pin de reset.
Memoria de programa (FLASH) Es una memoria de 8K de longitud con datos de 14 bits
en cada posicin. Como es del tipo FLASH se puede programar y borrar elctricamente,
lo que facilita el desarrollo de los programas y la experimentacin. En ella se graba o
almacena el programa o cdigos que el Microcontrolador debe ejecutar. En la figura 3.8
se muestra el mapa de la memoria de programa.
La memoria de programa est dividida en cuatro bancos o pginas de 2K cada uno. El
primero va de la posicin de memoria 0000h a la 07FFh, el segundo va de la 0800h a la
0FFFh, el tercero de la 1000h a la 17FFh y el cuarto de la 1800h a la 1FFFh.
Vector de reset. Cuando ocurre un reset al Microcontrolador, el contador de programa
se pone en ceros (0000H). Por esta razn, en la primera direccin del programa se debe
escribir todo lo relacionado con la iniciacin del mismo.

Vector de interrupcin. Cuando el Microcontrolador recibe una seal de interrupcin, el


contador de programa apunta a la direccin 04H de la memoria de programa, por eso, all
se debe escribir toda la programacin necesaria para atender dicha interrupcin.
Pila (Stack) Estos registros no forman parte de ningn banco de memoria y no permiten
el acceso por parte del usuario. Se usan para guardar el valor del contador de programa
cuando se hace un llamado a una subrutina o cuando se atiende una interrupcin; luego,
cuando el micro regresa a seguir ejecutando su tarea normal, el contador de programa
recupera su valor leyndolo nuevamente desde la pila. El PIC16F877 tiene una pila de 8
niveles, esto significa que se pueden anidar 8 llamados a subrutina sin tener problemas.
Memoria de datos (RAM) El PIC16F877 posee cuatro bancos de memoria RAM, cada
banco posee 128 bytes. De estos 128 los primeros 32 (hasta el 1Fh) son registros que
cumplen un propsito especial en el control del microcontrolador y en su configuracin.
Los 96 siguientes son registros de uso general que se pueden usar para guardar los datos
temporales de la tarea que se est ejecutando, figura 3.9. Todas las posiciones o registros
de memoria se pueden acceder directa o indirectamente (esta ltima forma a travs del
registro selector FSR). Para seleccionar que pgina o banco de memoria se trabaja en un
momento determinado se utilizan los bits RP0 y RP1 del registro STATUS.
Resumen de algunos de los registros de configuracin
BANCO 0:
- TMR0: Registro del temporizador/contador de 8 bits.
- PCL: Byte menos significativo del contador de programa (PC).
- STATUS: Contiene banderas (bits) que indican el estado del procesador despus de
una operacin aritmtica/lgica.
- FSR: Registro de direccionamiento indirecto.
- PORTA, PORTB, PORTC, PORTD, PORTE: Registro de puertos de E/S de datos.
Conectan con los pines fsicos del micro.
- PCLATH: Byte alto (ms significativo) del contador de programa (PC).
- INTCON: Registro de control de las interrupciones.
- ADRESH: Parte alta del resultado de la conversin A/D.
- ADCON0: Controla la operacin del mdulo de conversin A/D

BANCO 1:
- OPTION: Registro de control de frecuencia del TMR0.
- TRISA, TRISB, TRISC, TRISD. TRISE: Registros de configuracin de la operacin de
los pines de los puertos.
- ADRESL: Parte baja del resultado de la conversin A/D.
- ADCON1: Controla la configuracin de los pines de entrada anloga.
BANCO 2:
- TMR0: Registro del temporizador/contador de 8 bits.
- PCL: Byte menos significativo del contador de programa (PC).
- FSR: Registro de direccionamiento indirecto.
- EEDATA: Registro de datos de la memoria EEPROM.
- EEADR: Registro de direccin de la memoria EEPROM.
- PCLATH: Byte alto (ms significativo) del contador de programa (PC).
- INTCON: Registro de control de las interrupciones.
BANCO 3:
- OPTION: Registro de control de frecuencia del TMR0.
- EECON1: Control de lectura/escritura de la memoria EEPROM de datos.
- EECON2: No es un registro fsico.

Circuito integrado ULN2803A


Especifica que se trata de un alto voltaje, alta corriente Darlington matriz de
transistores. El dispositivo consta de ocho pares npn Darlington que cuentan con salidas
de alto voltaje con diodos de fijacin de ctodo comn para la conmutacin de cargas
inductivas. La calificacin colector de corriente de cada par Darlington es de 500 mA. Los
pares Darlington pueden estar conectados en paralelo para una mayor capacidad de
corriente. Las aplicaciones incluyen los conductores de relevo, los conductores de
martillo, los conductores de la lmpara, los controladores de pantalla (LED y de descarga
de gas), conductores de lnea, y tampones lgicas.

Los motores pas a paso


Son ideales para la construccin de mecanismos en donde se requieren
movimientos muy precisos. La caracterstica principal de estos motores es el hecho de
poder moverlos un paso a la vez por cada pulso que se le aplique. Este paso puede variar
desde 90 hasta pequeos movimientos de tan solo 1.8, es decir, que se necesitarn 4
pasos en el primer caso (90) y 200 para el segundo caso (1.8), para completar un giro
completo de 360.

Principio de funcionamiento
Bsicamente estos motores estn constituidos normalmente por un rotor sobre el
que van aplicados distintos imanes permanentes y por un cierto nmero de bobinas
excitadoras bobinadas en su estator. Las bobinas son parte del estator y el rotor es un
imn permanente. Toda la conmutacin (o excitacin de las bobinas) deber ser
externamente manejada por un controlador.

Bipolar: Estos tiene generalmente cuatro cables de


salida (ver figura 1). Necesitan ciertos trucos para ser
controlados, debido a que requieren del cambio de
direccin del flujo de corriente a travs de las bobinas
en la secuencia apropiada para realizar un movimiento.
En la figura 3 podemos apreciar un ejemplo de control
de estos motores mediante el uso de un puente en H (HBridge). Como se aprecia, ser necesario un H-Bridge por
cada bobina del motor, es decir que para controlar un
motor Pas a Paso de 4 cables (dos bobinas),
necesitaremos usar dos H-Bridges iguales al de la figura
3. El circuito de la figura 3 es a modo ilustrativo y no
corresponde con exactitud a un H-Bridge. En general es
recomendable el uso de H-Bridge integrados como son
los casos del L293B (ver figura 3bis).

Unipolar: Estos motores suelen tener 6 o 5 cables de salida, dependiendo de su conexin


interna (ver figura 2). Este tipo se caracteriza por ser ms simple de controlar. En la figura
4 podemos apreciar un ejemplo de conexionado para controlar un motor paso a paso
unipolar mediante el uso de un ULN2803, el cual es una arreglo de 8 transistores tipo
Darlington capaces de manejar cargas de hasta 500mA. Las entradas de activacin (Activa
A, B, C y D) pueden ser directamente activadas por un Microcontrolador.
Cuando se trabaja con motores paso a paso usados o bien nuevos, pero de los cuales no
tenemos hojas de datos. Es posible averiguar la distribucin de los cables a los bobinados
Y el cable comn en un motor de paso unipolar de 5 o 6 cables siguiendo las instrucciones
que se detallan a continuacin:

Problema 7
Se trata de desarrollar un circuito que tenga como principal funcin realizar el
control de entrada y salida de vehculos utilizando un Microcontrolador pic-16f877.
Este ejercicio se pretende manejar todo el conjunto de instrucciones, para disear
el hardware y confeccionar el software para contar con un control de vehculos en un
estacionamiento con el fin de llevar un proceso de seguridad hacia los usuarios.

Procedimientos de solucin.
Programa elaborado en lenguaje ensamblador.
;***********proyecto***********
;control de salida-entrada de un estacionamiento
;se utilizan dos motores a pasos, dos botones pulsador,
;el PIC16F887, y el integrado ULN2803, dos led de
;diferente color
;***********configuraciones**********
#include<p16F877.INC>
__CONFIG

_WDT_OFF&_CP_OFF&_XT_OSC

LIST P=16F877
;***************REGISTRO****************
DATOS1 EQU 20H
DATOS2 EQU 21H
CONT1 EQU 22H
CONT2 EQU 23H
CONT3 EQU 24H

ORG 0H
GOTO INICIO
;********INICIALIZAR PUERTOS***********
ORG 5H
INICIO
BSF STATUS,RP0

;SELECCION DEL BANCO 1

BCF STATUS,RP1
CLRF TRISB
CLRF TRISC
MOVLW B'00000011'
MOVWF TRISA
MOVLW B'00000110'
MOVWF ADCON1

BCF STATUS,RP0
CLRF PORTB
CLRF PORTC

;PUERTO B=SALIDA
;PUERTO C=SALIDA
;PUERTO A
;RA0=RA1=entrada
;DESCONECTAR CONV A/D
;PUERTO A ENTRADAS DIGITALES

;SELECCION BANCO 0
;LIMPIA EL PUERTO B
;LIMPIA EL PUERTO C

MOVLW B'00001010'
MOVWF DATOS1
MOVLw B'00000000'
MOVWF DATOS2
BSF PORTA,2
;*************sensado***************
SENSADO
BTFSS PORTA,0
GOTO SALIDA
BTFSS PORTA,1
GOTO ENTRADA
GOTO SENSADO
VACIO
BSF PORTA,2
GOTO SENSADO
LLENO
BSF PORTA,3
GOTO SENSADO
SALIDA
CLRW
IORWF DATOS2
BTFSC STATUS,Z
GOTO VACIO
GOTO RSALIDA
ENTRADA
CLRW
IORWF DATOS1
BTFSC STATUS,Z
GOTO LLENO
GOTO RENTRADA
RSALIDA
BSF PORTA,2
incf DATOS1,1
decf DATOS2,1

;CARGA EL CONTADOR DE LOS LUGARES CON A

;ENCIENDE EL LED INDICADOR DE LUGARES

GOTO MOTORC
RENTRADA
BSF PORTA,2
DECF DATOS1,1
INCF DATOS2,1
GOTO MOTORB

MOTORB
MOVLW B'00000001'
MOVWF PORTB
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTB
CALL RETARDO
MOVLW B'00000100'
MOVWF PORTB
CALL RETARDO
MOVLW B'00001000'
MOVWF PORTB
CALL RETARDO
MOVLW B'00000001'
MOVWF PORTB
CALL RETARDO2
MOVLW B'00000001'
MOVWF PORTB
CALL RETARDO
MOVLW B'00001000'
MOVWF PORTB
CALL RETARDO
MOVLW B'00000100'
MOVWF PORTB
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTB
CALL RETARDO
MOVLW B'00000001'
MOVWF PORTB
GOTO SENSADO
MOTORC
MOVLW B'00000001'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000100'
MOVWF PORTC
CALL RETARDO
MOVLW B'00001000'
MOVWF PORTC

CALL RETARDO
MOVLW B'00000001'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000100'
MOVWF PORTC
CALL RETARDO
MOVLW B'00001000'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000001'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000100'
MOVWF PORTC
CALL RETARDO
MOVLW B'00001000'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000001'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTC
CALL RETARDO2
MOVLW B'00000010'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000001'
MOVWF PORTC
CALL RETARDO
MOVLW B'00001000'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000100'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000001'
MOVWF PORTC
CALL RETARDO
MOVLW B'00001000'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000100'

MOVWF PORTC
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000001'
MOVWF PORTC
CALL RETARDO
MOVLW B'00001000'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000100'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000010'
MOVWF PORTC
CALL RETARDO
MOVLW B'00000001'
MOVWF PORTC
GOTO SENSADO
RETARDO
CLRF
CONT1
CLRF
CONT2
MOVLW 0X03
MOVWF CONT3
DECFSZ CONT1,1
GOTO $-1
DECFSZ CONT2,1
GOTO $-3
DECFSZ CONT3,1
GOTO $-5
RETURN
RETARDO2
CLRF
CONT1
CLRF
CONT2
MOVLW 0X07
MOVWF CONT3
DECFSZ CONT1,1
GOTO $-1
DECFSZ CONT2,1
GOTO $-3
DECFSZ CONT3,1
GOTO $-5
RETURN
END

Programacin en MPLAB IDE v8.30

Resultados

Circuito esquemtico
Simulacin en Proteus
Circuito sin alimentacin

Circuito con alimentacin.

Resumen
En l proceso de programacin el sistema, el resultado se debe proyectar en
terminales de salida del puerto esto se realiza en el programa de MPLAB, al simularlo en
el programa de Proteus.
Para la realizacin de esta prctica se utiliz:

1 Microcontrolador PIC16F877
1 Circuito integrado ULM2803
2 Motores paso a paso
2 Botones Pulsadores.
3 Resistencias de 10 kOhms
2 Leds
Cable para conexiones
1 capacitor tipo Cristal Oscilador
2 capacitores cermicos # 27
1 capacitores cermicos # 1uf

Anexos

Conclusin

Teniendo en cuenta la base a los ejercicios hechos en clase se pudo realizar el


proyecto final teniendo en cuanta todos los cdigos que se utilizan para las operaciones
del programa y conforme a esto se le pudo anexar este programa al simulador Proteus
para alambrarlo y saber si tenemos errores en el programa antes de grabarlo de manera
fsica en el PIC16F877 y demostrarnos el resultado en el proyecto que en este caso fue un
control de entrada y salida de vehculos, teniendo as una manera de experimentar de
forma prctica, de tal manera estos Microcontroladores nos pueden llegar a facilitarnos
la vida ya que estos se pueden proyectar en donde se requiera utilizar estos tipos de
Microcontroladores.

You might also like