ESCUELA DE INGENIERA ELECTRNICA EN CONTROL Y REDES INDUSTRIALES MICROCONTROLADORES PRCTICA 1 INTEGRANTES: Gabriela Estrada (668) Anglica Len (201) Luis Allauca (359) Bladimir Rocha (295) William Caar (591) CURSO: Sexto Semestre A FECHA DE ENTREGA: 19/ 05/ 2014
1
1. JUSTIFICACIN
Actualmente muchos sistemas de equipos requieren de servicios para compartir recursos, aplicaciones, enlaces de comunicaciones mediante componentes inteligentes de la red, que se puede conseguir a partir los microcontroladores PIC, permitiendo la interconexin entre mltiples computadores o dispositivos de la misma.
Este documento ser una fuente de informacin valiosa para aquellas personas que necesiten ampliar sus conocimientos acerca de los distintos tipos de microcontroladores que utilizamos diariamente en nuestra computadora. Puesto, que se conseguir comprender el funcionamiento, las distintas caractersticas y facilidades que nos brindan, para desarrollarnos en nuestro entorno estudiantil, universitario, postgrado, laboral y personal.
2. OBJETIVOS: General: Elaborar e implementar un programa con el PIC16F877A que simula una el barrido de luces efecto ruleta con diodos led los cuales se van encendiendo a diferentes velocidades controlado con un switch. Especficos: Definir los tipos de puertos para la implementacin del PIC. Identificar los diferentes medios que usa el PIC16F877A. Lograr una implementacin correcta del proyecto.
3. INTRODUCCIN
Los principiantes en electrnica creen que un microcontrolador es igual a un microprocesador. Esto no es cierto. Difieren uno del otro en muchos sentidos. La primera y la ms importante diferencia es su funcionalidad. Para utilizar al microprocesador en una aplicacin real, se debe de conectar con otros componentes, en primer lugar con la memoria. Aunque el microprocesador se considera una mquina de computacin poderosa, no est preparado para la comunicacin con los dispositivos perifricos que se le conectan. Para que el microprocesador se comunique con algn perifrico, se deben utilizar los circuitos especiales. As era en el principio y esta prctica sigue vigente en la actualidad. Por otro lado, al microcontrolador se le disea de tal manera que tenga todas las componentes integradas en el mismo chip. No necesita de otros componentes especializados para su aplicacin, porque todos los circuitos necesarios, que de otra manera correspondan a los perifricos, ya se encuentran incorporados. As se ahorra tiempo y espacio necesario para construir un dispositivo. Cuando el dispositivo finalmente empiece a funcionar 2
perfectamente y todo el mundo est satisfecho, y le paguen por el trabajo que ha hecho, muchas compaas de desarrollo estarn interesadas en su trabajo.
4. MARCO TERICO: MICROCONTROLADORES Un microcontrolador es un circuito integrado programable que contiene todos los componentes de un computador, aunque de limitadas prestaciones. Se emplea para controlar el funcionamiento de una tarea determinada y, debido a su reducido tamao, suele ir incorporado en el propio dispositivo al que gobierna. Esta ltima caracterstica es la que le confiere la denominacin de controlador incrustado. Podemos encontrar microcontroladores en lavadoras, teclados, telfonos mviles, ratones etc. Hay multitud de microcontroladores con ms memoria, entradas y salidas, frecuencia de trabajo, coste, subsistemas integrados, etc., dependiendo de cada tipo de microcontrolador. El nombre actual no es un acrnimo. En realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como Peripheral Interface Controller (controlador de interfaz perifrico). Los microcontroladores ofrecen una amplia gama de aplicaciones y slo algunas se exploran normalmente.
3
Caractersticas y aplicaciones
Con las Gamas de PIC se dispone de gran diversidad de modelos y encapsulados, pudiendo seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y capacidad de las memorias, el nmero de lneas de entrada y salida (E/S) y las funciones auxiliares precisas. Sin embargo, todas las versiones estn construidas alrededor de una arquitectura comn.
Gama Baja: Repertorio de 33 instrucciones de 12 bits y dos niveles de pila. Gama Media: Repertorio de 35 instrucciones de 14 bits, 8 niveles de pila y un vector de interrupcin. Gama Alta: Repertorio de 58 instrucciones de 16 bits, 16 niveles de pila y cuatro vectores de interrupcin. Gama Mejorada: Repertorio de 77 instrucciones de 16 bits, 32 niveles de pila y cuatro vectores de interrupcin.
La nica limitacin que tienen las aplicaciones de los microcontroladores actuales est en la imaginacin de los desarrolladores, los campos ms destacados de los microcontroladores son: Automatizacin industrial Medidas y control de procesos Enseanza e investigacin Perifricos para computadores Electrodomsticos Aparatos porttiles o de bolsillo Juguetes Instrumentacin Electro medicina Robtica Domtica Sistemas de seguridad y alarmas
Programacin del PIC:
La mayora de PICs que Microchip distribuye hoy en da incorporan ICSP (In Circuit Serial Programming, programacin serie incorporada) o LVP (Low Voltage Programming, programacin a bajo voltaje), lo que permite programar el PIC directamente en el circuito destino. Para la ICSP se usan los pines RB6 y RB7 (En algunos modelos pueden usarse otros pines como el GP0 y GP1 o el RA0 y RA1) como reloj y datos y el MCLR para activar el modo programacin aplicando un voltaje de 13 voltios.
Existen muchos programadores de PICs, desde los ms simples que dejan al software los detalles de comunicaciones, a los ms complejos, que pueden verificar el dispositivo a diversas tensiones de alimentacin e implementan en 4
hardware casi todas las funcionalidades. Muchos de estos programadores complejos incluyen ellos mismos PICs pre programado como interfaz para enviar las rdenes al PIC que se desea programar.
MICROCONTROLADOR PIC16F877A
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 PIC16F877A 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.
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.
En estos PICs se requiere de un oscilador externo para las prcticas 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 en la figura.
Cdigo: ;RULETA CON DIFERENTES DURACIONES DE PULSOS ;Realizamos en un editor el siguiente listado de programa que llamaremos ;RULETA.ASM ; -------------------------------------------------------
; -------------------------------------------------------- ; LIST P=16F877A; Modelo de PIC ; list directive to define processor #include <p16F877A.inc> ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
reg1 EQU 0X20 reg2 EQU 0X21 reg3 EQU 0X22
ORG 0 ;org coloca el programa en el origen, 0x000 para el 16F877A, Por aqu es por donde empieza el programa a ejecutarse
; ------------------------------------------------------- ; CONFIGURACION DE RECUROS ; --------------------------------------------------------
bsf STATUS,RP0 ;Selecciono el Bank 1 para poder acceder a TRISA movlw 0X07 movwf ADCON1 ;Deshabilito los comparadores movlw b'00001111' ;Configuro 4 bits menos significativos del PortA para que sean de entrada movwf TRISA bcf STATUS,RP0 ;Selecciono de nuevo el Bank 0
bsf STATUS,RP0 ;Selecciono el Bank 1 para poder acceder a TRISB movlw 0x00 ;Configuro todo el PortB para que sea de salida movwf TRISB bcf STATUS,RP0 ;Selecciono de nuevo el Bank 0
bsf STATUS,RP0 ;Selecciono el Bank 1 para poder acceder a TRISC movlw 0x00 ;Configuro todo el PortC para que sea de salida movwf TRISC bcf STATUS,RP0 ;Selecciono de nuevo el Bank 0
clrf PORTB ;Pongo 0 en todos los bits de PORTB clrf PORTC ;Pongo 0 en todos los bits de PORTC
; ------------------------------------------------------- ; INICIO DE CICLO REPETITIVO ; --------------------------------------------------------
LECTURA movlw b'00000000' xorwf PORTA,0 ; verificacin de OPCION respecto a W btfsc STATUS,Z ; verificando la bandera Z goto LIMPIAR 7
movlw b'00000001' xorwf PORTA,0 ; verificacin de OPCION respecto a W btfsc STATUS,Z ; verificando la bandera Z goto ACCION1
movlw b'00000010' xorwf PORTA,0 ; verificacin de OPCION respecto a W btfsc STATUS,Z ; verificando la bandera Z goto ACCION2
movlw b'00000100' xorwf PORTA,0 ; verificacin de OPCION respecto a W btfsc STATUS,Z ; verificando la bandera Z goto ACCION3
movlw b'00001000' xorwf PORTA,0 ; verificacin de OPCION respecto a W btfsc STATUS,Z ; verificando la bandera Z goto ACCION4
goto LECTURA
LIMPIAR clrf PORTB ;Pongo 0 en todos los bits de PORTB clrf PORTC ;Pongo 0 en todos los bits de PORTC goto LECTURA
ACCION1 ; Inicio del programa call COMPRUEBA1 ; Comprueba que esta todavia en la ACCION1 call Delay1 ; Demora de 0.5 s bcf PORTC,7 ; Apaga RC7 bsf PORTB,0 ; Prende RB0 bcf STATUS,0 ; Limpia el carry de STATUS goto REPETIR1
REPETIR1 MOVPUERTOB1 call COMPRUEBA1 ; Comprueba que esta todavia en la ACCION1 call Delay1 ; Demora de 0.5 s rlf PORTB,1 ; Rota el contenido de PORTB a la izquierda btfss PORTB,7 ; Hasta que prenda RB7, luego se salta goto MOVPUERTOB1 ; una linea
call COMPRUEBA1 ; Comprueba que esta todavia en la ACCION1 call Delay1 ; Demora de 0.5 s bcf PORTB,7 ; Apaga RB7 bsf PORTC,0 ; Prende RC0 bcf STATUS,0 ; Limpia el carry de STATUS
MOVPUERTOC1 call COMPRUEBA1 ; Comprueba que esta todavia en la ACCION1 call Delay1 ; Demora de 0.5 s 8
rlf PORTC,1 ; Rota el contenido de PORTC a la izquierda btfss PORTC,7 ; Hasta que prenda RC7, luego salta goto MOVPUERTOC1 ; una linea goto LECTURA ; va a inicio
COMPRUEBA1 btfss PORTA,0 goto LECTURA return
ACCION2 ; Inicio del programa call COMPRUEBA2 ; Comprueba que esta todavia en la ACCION2 call Delay2 ; Demora de 100 ms bcf PORTC,7 ; Apaga RC7 bsf PORTB,0 ; Prende RB0 bcf STATUS,0 ; Limpia el carry de STATUS goto REPETIR2
REPETIR2 MOVPUERTOB2 call COMPRUEBA2 ; Comprueba que esta todavia en la ACCION2 call Delay2 ; Demora de 1 s rlf PORTB,1 ; Rota el contenido de PORTB a la izquierda calL COMPRUEBA2 btfss PORTB,7 ; Hasta que prenda RB7, luego se salta goto MOVPUERTOB2 ; una linea
call COMPRUEBA2 ; Comprueba que esta todavia en la ACCION2 call Delay2 ; Demora de 1 s bcf PORTB,7 ; Apaga RB7 bsf PORTC,0 ; Prende RC0 bcf STATUS,0 ; Limpia el carry de STATUS
MOVPUERTOC2 call COMPRUEBA2 ; Comprueba que esta todavia en la ACCION2 call Delay2 ; Demora de 1 s rlf PORTC,1 ; Rota el contenido de PORTC a la izquierda btfss PORTC,7 ; Hasta que prenda RC7, luego salta goto MOVPUERTOC2 ; una linea goto LECTURA ; va a inicio
COMPRUEBA2 btfss PORTA,1 goto LECTURA return
ACCION3 ; Inicio del programa call COMPRUEBA3 ; Comprueba que esta todavia en la ACCION3 call Delay3 ; Demora de 3 s bcf PORTC,7 ; Apaga RC7 bsf PORTB,0 ; Prende RB0 bcf STATUS,0 ; Limpia el carry de STATUS goto REPETIR3 9
REPETIR3 MOVPUERTOB3 call COMPRUEBA3 ; Comprueba que esta todava en la ACCION3 call Delay3 ; Demora de 3 s rlf PORTB,1 ; Rota el contenido de PORTB a la izquierda btfss PORTB,7 ; Hasta que prenda RB7, luego se salta goto MOVPUERTOB3 ; una lnea
call COMPRUEBA3 ; Comprueba que esta todava en la ACCION3 call Delay3 ; Demora de 3 s bcf PORTB,7 ; Apaga RB7 bsf PORTC,0 ; Prende RC0 bcf STATUS,0 ; Limpia el carry de STATUS
MOVPUERTOC3 call COMPRUEBA3 ; Comprueba que esta todava en la ACCION3 call Delay3 ; Demora de 3 s rlf PORTC,1 ; Rota el contenido de PORTC a la izquierda btfss PORTC,7 ; Hasta que prenda RC7, luego salta goto MOVPUERTOC3 ; una linea goto LECTURA ; va a inicio
COMPRUEBA3 btfss PORTA,2 goto LECTURA return
ACCION4 ; Inicio del programa call COMPRUEBA4 ; Comprueba que esta todavia en la ACCION4 call Delay4 ; Demora de 5 s bcf PORTC,7 ; Apaga RC7 bsf PORTB,0 ; Prende RB0 bcf STATUS,0 ; Limpia el carry de STATUS goto REPETIR4
REPETIR4 MOVPUERTOB4 call COMPRUEBA4 ; Comprueba que esta todavia en la ACCION4 call Delay4 ; Demora de 5 s rlf PORTB,1 ; Rota el contenido de PORTB a la izquierda btfss PORTB,7 ; Hasta que prenda RB7, luego se salta goto MOVPUERTOB4 ; una linea
call COMPRUEBA4 ; Comprueba que esta todavia en la ACCION4 call Delay4 ; Demora de 5 s bcf PORTB,7 ; Apaga RB7 bsf PORTC,0 ; Prende RC0 bcf STATUS,0 ; Limpia el carry de STATUS
MOVPUERTOC4 call COMPRUEBA4 ; Comprueba que esta todavia en la ACCION4 call Delay4 ; Demora de 5 s 10
rlf PORTC,1 ; Rota el contenido de PORTC a la izquierda call COMPRUEBA4 btfss PORTC,7 ; Hasta que prenda RC7, luego salta goto MOVPUERTOC4 ; una linea goto LECTURA ; va a inicio
COMPRUEBA4 btfss PORTA,3 goto LECTURA return
; ------------------------------------------------------- ;SUBRUTINA DELAY DE LAS SECUENCIAS ; --------------------------------------------------------
El programa MPLAB es una herramienta muy importante para la realizacin de los programas. La programacin es un factor importante para la correcta funcin del circuito. El PIC16F877A posee 5 puertos (A, B, C, D y E) tiles al momento de la realizacin del proyecto ya que pueden ser usados como entradas o salidas. Los retardos programados en la ejecucin del programa dependen directamente del nmero de ciclo de mquina que efectu la subrutina delay. La palabra de configuracin al momento de quemar el PIC es muy importante ya que de esto depende su correcto funcionamiento.
7. RECOMENDACIN:
Se debe tener cuidado al manipulas el PIC ya que este se puede daar por ser de tecnologa CMOS. Al momento de la alimentacin debemos estar seguros de proporcionar al circuito el voltaje adecuado 5 voltios para su funcionamiento. 12
Verificar que el MCLR no este activado para as poder evitar que el PIC se resetee a cada momento; esto se evita conectndolo a Vdd.