PRACTICA 01 PIC Automatizacion I-Camargo

17
Material preparado por: MSc. Ing. Carlos Camargo C-4222/1 DEPARTAMENTO: PNF Electricidad ESPECIALIDAD: Electricidad UNIDAD CURRICULAR: Automatización I TRIMESTRE: X CODIGO: UNID/CREDITO: 03 PRACTICA Nº 1 PROGRAMACIÓN PIC-LENGUAJE C OBJETIVOS:  Programar entradas y salidas de microcontroladores usando lenguaje C  Compilar y depurar los programas  Simular y comprobar el funcionamiento. MARCO TEORICO: A continuación se explicará brevemente sobre los microcontroladores, algunas características principales del PIC 16F84A, directivas de programación en lenguaje C, para así llegar al desarrollo de pequeños proyectos y su simulación. Microcontroladores : Un microcontrolador es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completa en un solo circuito integrado. Figura 1. Microcontroladores MINISTERIO DE EDUCACION SUPERIOR INSTITUTO UNIVERSITARIO DE TECNOLOGIA AGRO INDUSTRIAL PROGRAMA DE FORMACION EN ELECTRICIDAD SAN CRISTOBAL ESTADO TACHIRA

Transcript of PRACTICA 01 PIC Automatizacion I-Camargo

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 1/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/1

DEPARTAMENTO: PNF Electricidad ESPECIALIDAD: Electricidad 

UNIDAD CURRICULAR:

Automatización I

TRIMESTRE:

X

CODIGO: UNID/CREDITO:

03

PRACTICA Nº 1

PROGRAMACIÓN PIC-LENGUAJE C

OBJETIVOS:

• Programar entradas y salidas de microcontroladores usando lenguaje C

• Compilar y depurar los programas

• Simular y comprobar el funcionamiento.

MARCO TEORICO:

A continuación se explicará brevemente sobre los microcontroladores, algunas características principales delPIC 16F84A, directivas de programación en lenguaje C, para así llegar al desarrollo de pequeños proyectos y

su simulación.

Microcontroladores:

Un microcontrolador es un circuito integrado o chip que incluye en su interior las tres unidades funcionales

de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completa en un

solo circuito integrado.

Figura 1. Microcontroladores

MINISTERIO DE EDUCACION SUPERIOR

INSTITUTO UNIVERSITARIO DE TECNOLOGIA

AGRO INDUSTRIAL

PROGRAMA DE FORMACION EN ELECTRICIDAD

SAN CRISTOBAL ESTADO TACHIRA

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 2/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/2

Un microcontrolador difiere de un microprocesador normal, debido a que es más fácil convertirla en una

computadora en funcionamiento, con un mínimo de chips externos de apoyo. La idea es que el chip se coloque

en el dispositivo, enganchado a la fuente de energía y de información que necesite, y eso es todo. Unmicroprocesador tradicional no le permitirá hacer esto, ya que espera que todas estas tareas sean manejadas

por otros chips. Hay que agregarle los módulos de entrada/salida (puertos) y la memoria para almacenamiento

de información.

Por ejemplo, un microcontrolador (Figura 2) típico tendrá un generador de reloj integrado y una pequeña

cantidad de memoria RAM y ROM/EPROM/EEPROM/FLASH, significando que para hacerlo funcionar, todo lo

que se necesita son unos pocos programas de control y un cristal de sincronización. Los microcontroladores

disponen generalmente también de una gran variedad de dispositivos de entrada/salida, como convertidores de

analógico a digital, temporizadores, UARTs y buses de interfaz serie especializados, como I2C y CAN.Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores

especializados. Los modernos microcontroladores frecuentemente incluyen un lenguaje de programación

integrado, como el Lenguaje C y BASIC que se utiliza bastante con este propósito.

Figura 2. Estructura General de un Microcontrolador 

Familia de Microcontroladores:

Entre los PIC mas utilizados tenemos:

• PIC16F84 (Considerado obsoleto, pero imposible de descartar y muy popular)• PIC16F84A (Buena actualización del anterior, algunas versiones funcionan a 20 MHz, compatible 1:1)• La familia PIC16F87X y PIC16F87XA (los hermanos mayores del PIC16F84, con cantidad de mejoras

incluidas en hardware. Bastante común en proyectos de aficionados)• Otros.

En la Figura 3 se representa el diagrama de bloques del PIC 16C84 del que podemos resaltar las siguientescaracterísticas:

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 3/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/3

• Memoria de programa EEPROM de 1Kx14 bits• Memoria de datos dividida en 2 áreas:

o Área RAM formada por 22 registros de propósito específico (SFR) y 36 de propósito general

(GPR).o Área EEPROM formada por 64 bytes.

• Recursos conectados al bus de datos: Puerto A de 5 bits <RA0:RA4>, Puerto B de 8 bits <RB0:RB7>,Temporizador con Preescaler (divisor) TMR0, etc.

Figura 3. PIC16F84 

- PINES Y FUNCIONES 

Los PUERTOS son el puente entre el microcontrolador y el mundo exterior. Son líneas digitales que trabajan

entre cero y cinco voltios y se pueden configurar como entradas o como salidas.

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 4/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/4

El PIC 16F84 tiene dos puertos. El puerto A con 5 líneas y el puerto B con 8 líneas. Cada pin se puede

configurar como entrada o como salida independiente programado por un par de registros diseñados para tal fin.

En ese registro un "0" configura el pin del puerto correspondiente como salida y un "1" lo configura comoentrada.

- PUERTO A

RA0 = Pin de Entrada/Salida (TTL).

RA1 = Pin de Entrada/Salida (TTL).

RA2 = Pin de Entrada/Salida (TTL).

RA3 = Pin de Entrada/Salida (TTL).

RA4/TOCKI = Pin de Entrada/Salida o entrada de Reloj Externo para el TMR0, cuando este pin se configura

como salida es de tipo Open Drain (ST), cuando funciona como salida se debe conectar a Vcc (+5V) a través de

una resistencia( pruebe con PULL-UP).

- PUERTO B

RB0/INT = Pin de Entrada/Salida o entrada de interrupción externa. (TTL/ST).

RB1 = Pin de Entrada/Salida (TTL).

RB2 = Pin de Entrada/Salida (TTL).

RB3 = Pin de Entrada/Salida (TTL).

RB4 = Pin de Entrada/Salida con Interrupción por cambio de Flanco (TTL).

RB5 = Pin de Entrada/Salida con Interrupción por cambio de Flanco (TTL).

RB6 = Pin de Entrada/Salida con Interrupción por cambio de Flanco (TTL/ST).

RB7 = Pin de Entrada/Salida con Interrupción por cambio de Flanco (TTL/ST).

- PINES ADICIONALES

MCLR = Pin de Reset del Microcontrolador (Master Clear). Se activa (el pic se resetea) cuando tiene un "0"

lógico en su entrada.

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 5/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/5

Vss = Ground o Tierra

VDD = Fuente Positiva (+5V)

OSC2/CLKOUT = Entrada del Oscilador del Cristal. Se conecta al Cristal o Resonador en modo XT (Oscilador

de Cristal). En modo RC (Resistencia-Condensador), este pin actúa como salida el cual tiene 1/4 de la

frecuencia que entra por el pin OCS1/CLKIN.

OSC1/CLKIN = Entrada del Oscilador del Cristal / Entrada de reloj de una Fuente Externa.

El Puerto B tiene Internamente unas resistencias de pull-up conectadas a sus pines (sirven para fijar el pin a un

nivel de cinco voltios), su uso puede ser habilitado o deshabilitado bajo control del programa. Todas las

resistencias de pull-up conectan o desconectan a la vez. La resistencia de pull-up es desconectada

automáticamente en un pin si este se programa como salida. El pin RB0/INT se puede configurar por software

para que funcione como interrupción externa.

El pin RA4/TOCKI del puerto A puede ser configurado como un pin de entrada/salida como se mencionaba

anteriormente o como entrada del temporizador/contador. Cuando este pin se programa como entrada digital,

funciona como un disparador de Schmitt (Schmitt trigger, ST), esto quiere decir que puede reconocer señales un

poco distorsionadas y llevarlas a niveles lógicos (cero y cinco voltios). Cuando se usa como salida digital se

comporta como colector abierto, por lo tanto se debe poner una resistencia de pull-up (resistencia externa

conectada a un nivel lógico de cinco voltios). Como salida, la lógica es inversa: un "0" escrito al pin del puerto

entrega en el pin un "1" lógico.

FUSIBLES DE CONFIGURACION 

El PIC 16F84 posee cinco fusibles, cada uno de los cuales es un bit. Estos fusibles se pueden programas para

seleccionar varias configuraciones del dispositivo: tipo de oscilador, protección de código, habilitación del

circuito de vigilancia y el temporizador al encendido. Cuando se programa la protección del código, el contenido

de cada posición de la memoria no se puede leer completamente, de tal manera que el código del programa no

se puede reconstruir. Adicionalmente, todas las posiciones de memoria del programa se protegen contra la

reprogramación. Una vez protegido el código, el fusible de protección solo puede ser borrado (puesto a 1) si se

borra toda la memoria del programa y la de datos.

Programación de Microcontroladores (PIC)

Si queremos realizar la programación de los microcontroladores PIC en un lenguaje como el C, es preciso

utilizar un compilador de C . Dicho compilador nos genera archivos en formato Intel-hexadedimal (codigo

maquina), que es el necesario para programar (utilizando un programador de PIC) un microcontrolador de 6, 8,

18 ó 40 patillas.

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 6/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/6

El compilador de C que vamos a utilizar es el PCW de la casa CCS Inc. A su vez, el compilador lo

integraremos en un entorno de desarrollo integrado (IDE) que nos va a permitir desarrollar todas y cada una de

las fases que se compone un proyecto, desde la edición hasta la compilación pasando por la depuración deerrores. La última fase, a excepción de la depuración y retoques hardware finales, será la simulación con

Proteus.

Al igual que el compilador de Turbo C, éste "traduce " el código C del archivo fuente (.C) a lenguaje máquina

para los microcontroladores PIC, generando así un archivo en formato hexadecimal (.HEX). Además de éste,

también genera otros seis ficheros.

Es importante resaltar que el alumno maneja las instrucciones de lenguaje C vistas en la unidad curricular

Computación I, por lo tanto aquí explicaremos solo las instrucciones, las librerías y directivas propias de los

microcontroladores.

DIRECTIVAS DEL PREPROCESADOR 

#BYTE Identificador = X 

El identificador referenciará un objeto en la posición de memoria x(un byte), donde x

puede ser una constante u otro identificador.

Ejemplos:

#byte status = 3 

#byte puerto_b = 6#byte puerto_a = 5

Puede usar instrucciones como:

puerto_b=0; Pone a cero todo el puerto B

puerto_b++; Incrementa el contenido del puerto B--puerto_a; Decrementa en una unidad el puerto A.

DIRECTIVAS DEL C STANDAR 

                                        #DEFINE Identificador CADENA

Se utiliza simplemente para reemplazar el Identificador (ID) con CADENA

Ejemplo:

#define BITS 8 

#define rotar(x) (x<<4)

a=a+BITS; // Es lo mismo que a=a+8; 

a=rotar(a); // Es lo mismo que a=(a<<4); 

#INCLUDE "Nombre_Fichero"

Esta directiva hace que el compilador incluya en el ARCHIVO fuente el texto que contiene el archivo

especificado en <Nombre_Fichero>.Si el nombre del fichero se incluye entre los símbolos '< >' el compilador

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 7/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/7

busca el fichero en el directorio INCLUDE.

Si se pone entre comillas dobles " " el compilador busca primero en el directorio actual o directorio de trabajo y si

no lo encuentra, entonces lo busca en los directorios INCLUDE del compilador.Ejemplo:

#include <16F84a.H> 

ESPECIFICACIÓN DE DISPOSITIVOS 

#DEVICE CHIP 

Esta directiva define al compilador la arquitectura hardware utilizada. Esto determina la memoria RAM y ROM

así como el juego de instrucciones. Para los chips (uC's, memorias, etc) con más de 256 bytes de RAM se

puede seleccionar entre punteros de

8 o 16 bits. Para usar punteros de 16 bits hay que añadir *=16 después del nombre del chip (uC, memoria, ...) o

en una nueva línea después de la declaración del chip. Se puede obtener información sobre un dispositivo con

el programa PICCHIPS.

Ejemplos:

#device PIC16C67 *=16 

#device PIC16f84 

#FUSES opciones 

Esta directiva define qué fusibles deben activarse en el dispositivo cuando se programe. Esta directiva no afecta

a la compilación; sin embargo, esta información se pone en el archivo de salida. Si los fusibles necesitan estar

en formato Parallax, hay que agregar PAR en opciones. Utilizar la utilidad PICCHIPS para determinar qué

opciones son válidas para cada dispositivo. La opción SWAP tiene la función especial de intercambiar, los bytes

alto y bajo de los datos que no son parte del programa, en el archivo Hex. Esta información es necesaria para

algunos programadores de dispositivos. Algunas de las opciones más usadas son:

• LP, XT, HS, RC (Oscilador externo utilizado)

• WDT, NOWDT (active o desactiva el temporizador perro guardián), si esta activado hay que Resetearlo

con restart_wdt(); en puntos clave del programa, para impedir el Reset de PIC cuando este se

desborda.

PROTECT, NOPROTECT (Activa o desactiva la protección del código: protegido. El programa no sepuede leer, evitando copias, tampoco se puede sobre escribir. Además evita que pueda ser accedida la

EPROM de datos. Si se trata de modificar este parámetro una vez grabado el PIC se borra la EPROM.)

• PUT, NOPUT (Activa el temporizador Power Up Timer el cual retrasa 72ms la puesta en marcha Reset

que se produce al conectar la alimentación al PIC para garantizar la estabilidad de la tensión aplicada.

Ejemplo:

#fuses INTRC,NOWDT (Indica que el Pic usará el reloj interno, además desactiva el perro guardián)

Nota: Es importante resaltar que estos fusibles deben ser declarados a la hora de grabar definitivamente el PIC.

En la simulación que abordaremos en esta práctica por comodidad generalmente no los definimos, ya que

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 8/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/8

algunos no afectan la simulación o los configuramos en el simulador.

LIBRERÍAS INCORPORADAS#USE DELAY (CLOCK=frecuencia) 

Esta directiva indica al compilador la frecuencia del procesador, en ciclos por segundo, a la vez que habilita el

uso de las funciones DELAY_MS() y DELAY_US(). Opcionalmente podemos usar la función restart_WDT() para

que el compilador reinicie el WDT durante el retardo.

Ejemplos:

#use delay (clock=20000000)

#use delay (clock=32000, RESTART_WDT)

                  #USE FAST_IO (puerto) 

Esta directiva afecta al código que el compilador generará para las instrucciones de entrada y salida. Este

método rápido de hacer I/O ocasiona que el compilador realice I/O sin programar el registro de dirección. El

puerto puede ser A-G.

Ejemplo:

#use fast_io(A)

FUNCIONES DE I/O DISCRETA

set_tris_a(value)set_tris_b(value) 

Estas funciones permiten escribir directamente los registros tri-estado para la configuración de los puertos. Estodebe usarse con FAST_IO() y cuando se accede a los puertos de I/O como si fueran memoria, igual que cuandose utiliza una directiva #BYTE. Cada bit de value representa una patilla. Un '1' indica que la patilla es de entraday un '0' que es de salida.Ejemplo:set_tris_a( 0x00 ); // pone todas la Ao-A4, como salidas de datos. set_tris_b( 0x0f ); // pone B0, B1, B2 y B3 como entradas; B4, B5, B6 y B7, como salidas, en un PIC 16c84set_tris_b(0b00001111); // pone B0, B1, B2 y B3 como entradas; B4, B5, B6 y B7, como salidas.

Se pueden usar instrucciones para salida de datos y entrada de datos como (standard_io(puerto):

#use estandard_io(puerto); puerto A o B ó #use fixed_io(b_outputs=PIN_B0,PIN_B1….PIN_Bn)

output_bit(PIN_B4,1); //Pone a 1 RB4

input((PIN_B0); //Lee el pin RB0output_a(x); muestra por el Puerto A el valor de la variable x.

output_high(PIN_B0); //Pone PIN_B0 a 1

output_low(PIN_B1); //Pone PIN_B1 a 0

FUNCIONES DE RETARDOS 

DELAY_MS(time) 

Esta función realiza retardos del valor especificado en time. Dicho valor de tiempo es en milisegundos y el rango

es 0-65535. Para obtener retardos más largos así como retardos 'variables' es preciso hacer llamadas a una

función separada; véase el ejemplo siguiente.

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 9/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/9

Es preciso utilizar la directiva #use delay(clock=frecuencia) antes de la llamada a esta función, para que el

compilador sepa la frecuencia de reloj.

Ejemplos:#use delay (clock=4000000) // reloj de 4MHz 

delay_ms( 2 ); // retardo de 2ms 

void retardo_segundos(int n) { // retardo de 'n' segundos; 0 <= n => 255 

for (; n!=0; n--)

delay_ms( 1000 ); // 1 segundo 

 }

                                   DELAY_US(time) 

Esta función realiza retardos del valor especificado en time. Dicho valor es en microsegundos y el rango va

desde 0 a 65535. Es necesario utilizar la directiva #use delay antes de la llamada a esta función para que el

compilador sepa la frecuencia de reloj.

Ejemplos:

#use delay(clock=20000000)

delay_us(50); 

int espera = 10; 

delay_us(espera); 

Otras directivas las pueden consultar en el  MANUAL DE USUARIO DELCOMPILADOR PCW 

 DE CCS. 

PRE-LABORATORIO:1.-Revisar el marco teórico.2.-Revisar las instrucciones del Lenguaje C).

(IF, Do…While(), While(), x++, --x,arreglos, entre otras).3.- Investigar sobre la estructura interna del PIC16F84.4.- Analizar los programas del laboratorio.

LABORATORIO:-

PARTE EXPERIMENTAL

EJERCICIO Nro.1

Lo primero es crear un proyecto en Lenguaje C y luego simular con Proteus, como se indica acontinuación:

1.- Editar y compilar el proyecto:1.1.- Arranque del programa. En INICIO-Programas, seleccionar PIC-C- PIC-C COMPILER1.2.- En la barra de menú, seleccionar FILE-NEW – Source - File

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 10/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/10

1.3.- En la siguiente ventana, dar un nombre y guardar. (se recomienda crear una carpeta nueva)1.4.- Editar el programa siguiente:

 /* Programa que hace titilar el Led RB7 cada 1ms*/ 

#include <16f84a.h> /* tipo de PIC utilizado*/ 

#use delay(clock=4000000) /*Reloj 4Mhz*/ 

#byte puerto_b=06 /*Dirección Puerto B, trabaja con puerto_b=x*/ 

main()

{

set_tris_b(0x00); /*Configurar Puerto B como Salida*/ 

puerto_b=0; /*Todas las salidas del puerto B a cero*/ 

do{

delay_us(1000); /*Retarde 1ms*/ 

bit_set(puerto_b,7); /*Pone a 1 la salida RB7*/ 

delay_us(1000); /*Espera 1ms*/ 

bit_clear(puerto_b,7); /*Pone a 0 la salida RB7*/ 

}while(true); /*Repetir Siempre*/ 

} /*Fin del Programa*/ 

1.5.- Para compilar. Seleccionar en la barra de menú la opción: Compile o F9.1.6.- Corregir hasta obtener cero errores.1.7.- Guardar.

2.- Simular con PROTEUS.

Proteus es una herramienta que nos facilita la simulación de nuestros proyectos enmicrocontroladores. A continuación se indica el procedimiento para simular el proyecto anterior: 

2.1.- Procedimiento de Arranque del programa:

- Inicio -> Programas -> Proteus 6 Professional -> ISIS 6 Professional.

- La forma corta es dar doble click en el icono del programa ubicado en el escritorio.

Para simular un circuito, elegimos todos los componentes, luego los pegamos en el área de trabajo,configuramos los valores y conectamos todos los dispositivos, por ultimo simulamos, como se indica acontinuación.

2.2.- Dar un click en el botón Pick Devices localizado en la parte izquierda de la pantalla debajo dela pantalla de exploración del diagrama para abrir la forma del mismo nombre.

2.3- En la ventana Libraries (Parte superior izquierda) buscar la Category Microprocessor ICs, y darun click sobre ella.

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 11/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/11

2.3.- En la ventana Derecha (Results) elegir el componente PIC16F84a dando doble click sobre elnombre.

Se puede observar que en la ventana DEVICES aparece el nombre del componente elegido. Si es elúnico componente que se va a elegir se puede cerrar la forma Pick Devices, pero si es necesario másde uno, se puede continuar eligiendo los componentes necesarios para nuestro diseño.

2.4.- En la Category Optoelectronics y Sub-Category LEDs, dar doble click sobre el componenteLED-RED.

2.5.- Cerrar la Forma Pick Devices en el botón estándar. (La cruz en la esquina superior derecha)

2.6.- Dar un click en la palabra PIC16F84a de la ventana DEVICES y observar que aparece elcomponente en la pantalla de exploración del circuito.

2.7.- Explorar las funciones de orientación del componente, parte inferior izquierda de la pantalla.

2.8.- Comenzando por la izquierda presionar cada uno de los botones de orientación.

2.9.- En el cuadro de texto se puede introducir un ángulo pero sólo acepta valores de (0º, +/-90º, +/-180º, +/-270º), por lo que es mejor manejar la orientación por medio de los botones. Este mismo

cuadro de texto muestra el ángulo actual obtenido al presionar los botones.

Aquí seleccione los

componentes

Aquí seleccione la tierra

y Puesta a VCC

Dar click para

simular

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 12/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/12

2.10.- Dejar el componente en la posición inicial.

2.11.- Con el componente seleccionado dar un click en el área de trabajo, con lo que se logra colocarel componente en el área de trabajo.

2.12.- Repetir el procedimiento anterior con el componente LED.

2.13.- Configurar los componentes de la siguiente manera.

a.- Dar un click con el botón derecho sobre el componente PIC16F84. Notar que su contorno cambiaa rojo.

b.- Dar un click ahora con el botón izquierdo para abrir la forma Edit Component.

c.- Modificar el campo archivo del programa compilado .HEX, indicándole el programa que ustedcompilo en la carpeta que fue guardado, Modificar el valor del campo frecuencia a 4MHz.

d.- Presionar el botón OK.

2.14.- Realizar la conexión de los componentes de la siguiente forma:

a.- Colocar el puntero del mouse en el extremo superior del pin RB7 de PIC. Aparece una cruz en elextremo de la flecha.

b.- Dar un click para habilitar la conexión por medio de cable.

c.- Desplazar el mouse (desaparece la cruz) hasta el extremo superior del componente LED y lograrque vuelva a aparecer la cruz en el extremo de la flecha.

d.- Dar otro click para realizar la conexión.

2.15.- Conectar el símbolo de Tierra, dar un clic a la herramienta Terminal (Ubicado en la Barra deherramientasl), seleccionar GROUND.

2.16.- Probar el funcionamiento del circuito presionando el botón play que se encuentra en la parteinferior de la pantalla.

2.17.- Guardar el circuito.

a.- Seleccionar la herramienta Save current design.

b.- Dar un click en el botón crear una nueva carpeta y darle un nombre.

c.- En el campo Nombre de archivo nombrar al archivo como Ejercicio 1.

dar un click en el botón guardar o presionar la tecla ENTER.

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 13/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/13

EJERCICIO Nro. 2

1.- Compilar el siguiente Programa.

Contador del 0 al 9 cada 0,5s y vuelta a empezar. La cuenta se mostrará en Led a través del puert B.

#include <16f84a.h> //pic a utilizar

#use delay (clock=4000000) // Clock=4Mhz

#use standard_io(B) //Puerto B (trabaja con la función output_b)

main()

{

int c=0; // declaro contador como entero( 1 byte) e inicializado en ceroset_tris_b(0x00); //portb como salida

 //disable_interrupts(GLOBAL); //todas las interrupciones desactivadas

do{ //Repetir...

output_b(c); //muestra por puerto b digitos 0-9

delay_ms(500);

c++; //incremento contador para visualizar siguiente digito

if(c>9) //¿ya se ha mostrado el digito 9?

{c=0; //SI -> vuelve a empezar(digito 0)

}

}while(TRUE); //...infinito

2. Simular con PROTEUS 

   O   S   C   1   /   C   L   K   I   N

   1   6

   R   B   0   /   I   N   T

   6

   R   B   1

   7

   R   B   2

   8

   R   B   3

   9

   R   B   4

   1   0

   R   B   5

   1   1

   R   B   6

   1   2

   R   B   7

   1   3

   R   A   0

   1   7

   R   A   1

   1   8

   R   A   2

   1

   R   A   3

   2

   R   A   4   /   T   0   C   K   I

   3

   O   S   C   2   /   C   L   K   O   U   T

   1   5

   M   C   L   R

   4

U1PIC16F84A

R1

300

R2

300

R3

300

R4

300

R5

300

R6

300

R7

300

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 14/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/14

3.- Modifique el programa para contar hasta 64.

4.- Analizar las instrucciones utilizadas, comparar output_b(x) con puerto_b=x.EJERCICIO 3

1.- Compilar el siguiente Programa.

Contador ascendente/descendente en binario. Sobre los 8 leds de salida conectados a la puerta B

del PIC16F84A se visualizará, en binario el número de pulsos aplicados por la entrada RA1. RA0

determina si la cuenta es ascendente (a "1") o descendente. Además se contempla la eliminación del

efecto –rebote- que produce la apertura y cierre del contacto del interruptor que genera los pulsos.

Eliminando dicho efecto mediante temporización por software.

#include <16f84a.h>

#use delay(clock=4000000,RESTART_WDT)

#byte puerto_a = 5

#byte Puerto_b = 6

void main()

{

SET_TRIS_A(0x1F);

SET_TRIS_B(0x00);

Puerto_b = 0;

while(1)

{

do {

restart_wdt(); // resetear WDT

} while(input(PIN_A1)); // Esperar flanco ascendente

delay_ms(20);

do {

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 15/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/15

     O

     S     C     1     /     C     L     K     I     N

     1     6

     R     B     0     /     I     N     T

     6

     R     B     1

     7

     R     B     2

     8

     R     B     3

     9

     R     B     4

     1     0

     R     B     5

     1     1

     R     B     6

     1     2

     R     B     7

     1     3

     R     A     0

     1     7

     R     A     1

     1     8

     R     A     2

     1

     R     A     3

     2

     R     A     4     /     T     0     C     K     I

     3

     O     S     C

     2     /     C     L     K     O     U     T

     1     5

     M     C     L     R

     4

U?PIC16F84A

R7300

R6300

R5300

R4300

R?300

R3300

R2300

0

R1 R8

restart_wdt();

} while(!input(PIN_A1)); // Esperar flanco descendentedelay_ms(20);

if(input(PIN_A0))

Puerto_b++;

else

Puerto_b--;

} // Cierre de while(1)

} // Cierre de void main()

2. Simular con PROTEUS

Bienvenido al maravilloso mundo de la microelectrónica programable. Suerte……

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 16/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/16

 POST LABORATORIO

A continuación se presentan una serie de proyectos, los cuales serán asignados por elprofesor. Cada proyecto debe llevar su respectivo: diagrama de flujo, esquema eléctrico y

programación en lenguaje c.

1. Elabore un proyecto que permita titilar dos (2) LED (RA3,RA4), cada 2ms.

2. Elabore un proyecto que permita leer 4 entradas digitales BCD por el puertoA y luego mostrarlas por el puerto B en un Display BCD 7segmentos. Si la

cuenta es mayor a 6 debe titilar el un LED en RA4.

3. Elabore un proyecto que permita leer 4 entradas digitales BCD por el puertoB y luego mostrarlas por el puerto A en un Display Hex. Si la cuenta esmayor a 9 debe titilar el un LED en RA4.

4. Elabore un proyecto que permita leer 4 entradas digitales por el puerto B yluego mostrarlas por el puerto A en LED. Si la cuenta es mayor a 5 debetitilar el un LED en RA4.

5. Elabore un proyecto que permita leer 4 entradas digitales por el puerto A siel valor es superior a 9 emitir un sonido de 1khz, por el PIN_A4, durante unseg.

6. Elabore un proyecto que permita leer 4 entradas digitales BCD por el puertoB y luego mostrarlas por el puerto A en un Display Hex. Si la cuenta esmayor a 9 emitir un sonido de alarma de 3Khs en RA4, durante 500 ms.

7. Contador Anillo. Sobre los 5 leds de salida conectados al puerto A se

visualizará, en binario, el contador anillo de 5 etapas:10000-01000-00100-00010-00001-10000-01000-00100-00010-00001(USAR OPERADOR >>)

8. Realizar el programa para controlar un semáforo, utilizar el elemento que seencuentra en Proteus librería miscellaneus componenteTRAFFICS LIGHTS. Usar los puertos: RB0,RB1,RB2-RA2,RA3,RA4.

9. Realizar un proyecto que genere en un LED conectado en la línea desalida A4, del PIC, una onda cuadrada simétrica de un Khz.

10 Realizar un proyecto que genere en un LED conectado en la línea de

salida A4, del PIC, una onda cuadrada asimétrica, que durante 0.5seg

5/7/2018 PRACTICA 01 PIC Automatizacion I-Camargo - slidepdf.com

http://slidepdf.com/reader/full/practica-01-pic-automatizacion-i-camargo 17/17

 

Material preparado por: MSc. Ing. Carlos Camargo C-4222/17

saque nivel alto y durante 1.30 seg. nivel bajo.

11. Realizar un programa que genere en un LED conectado en la línea desalida A4, del PIC, una onda cuadrada simétrica de 1Khz, si una entradadigital en el pin A0, esta en bajo ó 10Khz, si esta en alto.

12. Diseñar un dado electrónico. Alimentar un contador programado en el PIC1-6 ascendente y descendente 6-1, con un generador de pulsos a travésde un pulsador en RA0, desplegando en un Display 7Seg. El valor aleatorio1-6 cada vez que se active y desactive el pulsador.

13 Diseñar un dado electrónico. Diseñar un contador programado en el PIC 1-

6 ascendente y descendente 6-1, cada vez que se active y desactive unpulsador en RA0, se debe desplegar en un Display 7Seg. el valor aleatorio1-6 que tenga en ese momento el contador.

BIBLIOGRAFÍA

•  MANUAL DE USUARIO DELCOMPILADOR PCW DE CCS .www.cursos.ucv.cl/eie48700/referencias/ CCS  _C_Manual.pdf  

• http://html.rincondelvago.com/microcontrolador-pic-16f84.html

•  M. José M Angulo U. (2007). Microcontroladores <<PIC>> Diseño práctico de aplicaciones . Mc Graw Hil

ELABORADO POR:

MSc. Ing. Carlos Camargo

VIGENCIA:

Octubre 2010