Unidad 3. Microcontroladores
Ingeniería en Telemática
Programa de la asignatura:
Arquitectura de computadoras II
Unidad 3. Microcontroladores
Clave:
210930830
Índice
Unidad 3. Microcontroladores
Presentación de la unidad
El objetivo principal de esta unidad es facilitar el camino para aprender a usar los
microcontroladores, por tal motivo se proporcionan algunos ejemplos básicos que te
permitirán confeccionar y simular algunos proyectos reales.
Para poder lograr este objetivo se seleccionó un modelo concreto que es el PIC16F84 de
la familia de los microcontroladores Microchip Technology Inc. La razón por la cual se
escogió este microcontrolador es porque es sencillo, moderno, rápido, barato y en él se
pueden escribir los programas y borrarlos montones de veces, existe mucha
documentación, y las herramientas de desarrollo son accesibles para todos los bolsillos.
En el mundo se pueden encontrar millones de aplicaciones realizadas con el PIC16F84,
como por ejemplo, llevar el control de un taxímetro el cual indica el total a pagar de
acuerdo a una distancia o tiempo, también el sensor de temperatura de algún aire
acondicionado o calefactor, el cual si llega a una temperatura deseada se apaga
automáticamente y si cambia esa temperatura se vuelve a encender, entre otras
aplicaciones.
En esta unidad se pretende estudiar teórica y prácticamente al PIC16F84 por tal motivo se
intenta ofrecer la información necesaria dentro de cada tema.
En el tema 3.1. se describen las características de generales del hardware que envuelven
a los microcontroladores en general para que posteriormente te adentres en la familia de
los PIC y toda la gama de microcontroladores existentes, llegando así a los PIC16F84.
En el tema 3.2. se presenta todo el material necesario y preciso para conocer, manejar y
programar el PIC16F84, así como una pequeña introducción del lenguaje que se utiliza
para la programación de los PIC, dicha información se hace considerando desde un nivel
básico hasta un nivel intermedio de Electrónica, por tal motivo se muestra un camino
sencillo y apropiado.
Microcontroladores
Propósitos
En esta unidad:
Competencia específica
Para lograr esto surge una pregunta muy importante que se tiene que definir para que se
entienda mucho mejor esta unidad, la pregunta es ¿qué es un microcontrolador?, muchos
de nosotros conocemos una PC por lo menos en apariencia, usualmente tiene un teclado,
monitor, CPU (Unidad de Procesamiento Central), impresora y mouse entre otros
dispositivos. Este tipo de computadoras o PC son diseñadas principalmente para
comunicarse con los humanos y para que el humano haga uso de ellas.
edificios utilizan estos chips. También son empleados para optimizar el rendimiento de
ascensores, calefacción, aire acondicionado, alarmas de incendio, robo, etc.
Usos de un Microcontrolador
Ahora bien, ¿cuál es la diferencia entre ambos? En las siguientes imágenes se muestra
esta diferencia:
Se puede definir un sistema cerrado como aquel que solo utiliza sus propios recursos. Por
ejemplo una olla a presión que no permita el escape de gases. Y un sistema abierto es
aquel que recibe energía desde el exterior y por ende consta de un flujo continuo que le
permite generar trabajo en forma permanente. Por ejemplo el motor de un auto (necesita
gasolina), la tierra (necesita de la luz y el calor del Sol), una vela quemándose (Alegsa,
2013).
Las aplicaciones en las cuales puedes encontrar el uso de los microcontroladores es en:
*Electrodomésticos
*Aparatos portátiles y de bolsillo (tarjetas, monederos, teléfonos, etc.)
*Máquinas expendedoras y juguetería
*Industria de automoción
*Control industrial y robótica
*Electromedicina
*Sistema de navegación espacial
*Domótica en general
Una de las diferencias que existe y quizás la más importante entre estos dos dispositivos
es la funcionalidad. Y ¿Por qué la funcionalidad? Porque para que un microprocesador
sea funcional requiere conectarse a una memoria y a dispositivos de entrada y salida
(E/S), como se vio en la Unidad 1 de esta materia. Por ejemplo si piensas en tu
computadora personal o de escritorio, requiere de una tarjeta principal que conoces como
tarjeta madre (motherboard), además de un buen microprocesador, así como una
memoria RAM. Recordando que en la motherboard se tiene un súper circuito integrado
llamado chipset que se encarga principalmente de administrar las funciones de entrada y
salida de los diferentes puertos o ranuras de tu equipo como lo son puerto serial, paralelo,
puerto USB, Ethernet, ranuras ISA, PCI, AGP, etc.
conoce también como una microcomputador, debido a que todo está dentro del mismo
chip.
Una diferencia también muy significativa y muy marcada es la arquitectura entre dichos
dispositivos, en un microprocesador se usar la arquitectura tradicional de Von Neumann, y
en un microcontrolador es la de Harvard que se explicará en la siguiente sección.
Para dar inicio a esta sección recuerda que en la unidad 1, se definió la palabra
arquitectura como la estructura o partes, las cuales forman y/o diseñan cada uno de estos
componentes.
Ahora bien, una vez aclarado el uso de dicha palabra pues se hablará principalmente de
cómo se compone internamente un microcontrolador, que como ya se mencionó, está
basado en la arquitectura Harvard.
Arquitectura Von
Neumann
Arquitectura
Harvard
En la Arquitectura Harvard una de las memorias contiene solamente las instrucciones del
programa y la otra, solo almacena los datos.
Cada bus es completamente independiente lo que permite que la CPU pueda acceder de
forma independiente y simultánea a la memoria de datos y a la de instrucciones. Esta
situación optimiza el uso de la memoria de manera muy general.
Relación del Procesador con la memoria en la Arquitectura Harvard. Consultada en (Angulo, 2003)
También puede darse el caso de que tenga una memoria no volátil de lectura y escritura,
esta memoria logra que si se da un corte en el suministro de la alimentación no ocasiona
la pérdida de la información, que está disponible al reiniciarse el programa.
También se mostró y explico muy brevemente las partes que forman los
microcontroladores, más adelante estudiarás su funcionamiento con algunos ejemplos
que se implementarían.
Antes de conocer esta gran familia de microcontroladores, es muy importante que sepas
que no son los únicos tipos de microcontroladores que existen en el mercado, pero sí los
más usados en el área académica debido a su bajo costo y gran rendimiento comparados
con otros. Dentro de la gran variedad de microcontroladores existen los que procesan
datos de 4, 6, 8 y 32 bits, sin embargo, el más representativo y popular son los que
procesan 8 bits, a estos pertenecen los PIC.
En este caso se hablará de los PIC (Programable Integrated Circuit o Circuito Integrado
Programable) ya que son los han tenido mayor aceptación en la comunidad de técnicos y
aficionados que trabajan con microcontroladores. Pero, ¿Cuál es la razón de esta gran
aceptación?
Según Angulo, (2003), esta aceptación se debe a que cuenta con algunos detalles que a
los profesionistas o especialistas los vuelve locos, y son los siguientes:
Sencillez de manejo
Buena información
Precio
Buen promedio de parámetros: velocidad, consumo, tamaño, alimentación, código
compacto, etc.
Herramientas de desarrollo fáciles y baratas
Diseño rápido
Disponibilidad inmediata
Compatibilidad del software en todos los modelos de la misma gama
La gran variedad de modelos de PIC permite que los usuarios puedan elegir libremente el
que se adapte mejor a sus necesidades o a los requerimientos de la aplicación.
2. Gama media
Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde
18 patitas hasta 68, cubriendo varias opciones que integran abundantes periféricos.
Dentro de esta gama se encuentra el PIC16F84, que es el modelo con el que trabajarás al
final de la unidad. Esta gama a su vez se puede separar en diferentes subfamilias. El
repertorio de instrucciones es de 35 a 14 bits cada instrucción.
3. Gama alta
En esta gama los modelos alcanzan las 58 instrucciones de 16 bits en el repertorio y
dichos modelos disponen de un sistema de gestión de interrupciones vectorizadas muy
potente, incluye también diferentes controladores de periféricos, puertas de comunicación
serie y paralelo, cuenta con una arquitectura abierta que consiste en la posibilidad de
ampliación del microcontrolador con elementos externos.
RAM bit
PIC17 2Kx16 232 48 4+WDT 2 2 11 3 8x8 40/44
C42A 3
PIC17 4Kx16 454 48 4+WDT 2 2 11 3 8x8 40/44
C43 3
PIC17 8Kx16 454 48 4+WDT 2 2 11 3 8x8 40/44
C44 3
PIC17 8Kx16 454 76 4+WDT 4 3 1 18 5 8x8 64/68
C752 0
2
PIC17 16Kx16 902 76 4+WDT 4 3 1 18 5 8x8 64/68
C756 0
2
Características relevantes de algunos modelos PIC17CXXX de la gama alta. Consultado en (Angulo,
2003)
4. Gama mejorada
Esta gama surge en los inicios del tercer milenio surge con la finalidad de soportar las
aplicaciones avanzadas en las áreas de automoción, comunicaciones, ofimática y control
industrial. Su principal mejora fue la alta velocidad (40 MHz), contando también con un
gran rendimiento (10 MIPS a 10 MHz). Cabe mencionar que MIPS es Millones de
Instrucciones Por Segundo. También cuenta con un juego de 77 instrucciones de 16 bits
cada una, además de estar orientados a la programación en lenguaje C.
Memoria
Frec.
PATITAS
Memoria (Bytes)
ADC Maxi
Modelo PROGRAM DATOS Temporizadores Interrupciones E/S
Canales ma
A (Bytes) EPROO (MHz)
RAM
M
PIC18C24 16K
512 - 4 16 23 5 40 28
2 EEPROM
PIC18F24 16K
2 FLASH
768 256 4 16 23 5 40 28
PIC18F25 32K 153
2 FLASH 6
256 4 16 23 5 40 28
PIC18F44 16K
2 FLASH
768 256 4 16 34 8 40 40
PIC18F45 32K 153
2 FLASH 6
256 4 16 34 8 40 40
PIC18F66 64K 384
20 FLASH 0
1024 4 16 52 12 25 64
PIC18F87 128K 384
20 FLASH 0
1024 4 16 68 16 25 80
Características relevantes de algunos modelos de la familia PIC18C(F)XXX de la gama mejorada.
Consultado en (Angulo, 2003)
Si se desea identificar cuántas patitas destina un PIC para líneas de Entrada y Salida
(E/S), es necesario que sepas que este tipo de líneas son identificadas en un PIC con los
nombres RAx, RBx, RCx, RDx, REx, etc., según la versión y modelo del PIC. Para eso es
importante que revises las especificaciones de cada modelo y ver cuantos puertos usa.
PIC con 12 patitas para E/S PIC con 20 patitas para E/S
PIC con 50 patitas para E/S PIC con 66 patitas para E/S
Patitas de Entrada y Salida (E/S). Consultado en: http://www.microchip.com/
Recuerda que en esta unidad se va a trabajar con el modelo PIC16F84, por tal motivo se
presenta el esquema de la función de cada patita o pin del PIC.
En la sección Para saber más, se anexa una liga con toda la información y
especificaciones del PIC16F84.
2. Elige y crea un organizador gráfico que detalle el PIC que convendría usar de
acuerdo a las características propias del mismo de acuerdo al caso dado por tu
Facilitador(a).
Una vez que ya se dio a conocer parte fundamental de la gran familia de los PIC y su
arquitectura general, se procede a identificar las diferentes instrucciones que se usan para
crear un programa y después ser grabado en el PIC. Pero también es importante conocer
las instrucciones que son la base de funcionamiento del PIC.
Esta división se encuentra dada por el tipo de datos con los que trabajan, a continuación
se mostrará una tabla en la cual se menciona cada una de estas instrucciones o
mnemónicos de manera breve, es así que para entender mejor cada instrucción se brinda
el significado de algunos parámetros:
Parámetro Significado
F Registro al que afecta la instrucción
W Acumulador (working register)
B Número de bit (hay instrucciones que afectan a un solo bit)
K Constante (un número)
Selección de destino del resultado de la instrucción, puede ser “0” o “1”, si
D es “0” el resultado se guarda en el acumulador (W) y si es “1” se guarda
en el registro f al que afecta la instrucción
Parametros usados en las instrucciones. Consultado en:
http://ww1.microchip.com/downloads/en/DeviceDoc/30430D.pdf
Ahora bien, estas son instrucciones propias del PIC que usa de manera interna, la parte
más interesante se presenta a continuación, es en la cual debes de programar o crear tus
programas para que posteriormente sean grabados dentro del PIC.
En la siguiente imagen puedes ver un grabador para PIC, estos son dispositivos que
permiten realizar la inserción de nuestro archivo con extensión hex dentro del PIC.
Pero, ¿por qué generar o usar un archivo con extensión “hex”?. Porque los
microcontroladores el único lenguaje que entienden es el código máquina que como se
sabe está formado por ceros y unos del sistema binario, por tal motivo se genera una
archivo que por lo regular suele tener la extensión: “*.hex” el cual lleva código máquina.
Una vez que se muestran las instrucciones con las que cuenta el PIC y el proceso de
cómo se graba la información de la PC a un microcontrolador, se procede a explicar
brevemente el uso de algunos lenguajes de programación entre ellos el más usado
Esto se ha dado debido a que es mucho más fácil utilizar otros lenguajes de programación
que no sean ensamblador debido a que no muchos usuarios son expertos en
programación. Un ejemplo claro del uso de los lenguajes se ve en el siguiente ejemplo
que para poder realizar una suma de dos números se llevaría a cabo de la siguiente
manera:
.model small
.stack
.data
valor db ?
.code
.startup
mov ah, 01h ;Leer carácter desde el teclado
int 21h ;Lee primer carácter
Lenguaje sub al, 30h ;Resto 30H (48Dec) para obtener el numero
Ensamblador mov valor, al ;Lo guardo en variable valor
.exit
End
#include <iostream.h>
#include <conio.h>
De esta forma se da a conocer el uso de dos lenguajes para poder programar nuestro
PIC, con el uso de éstos se generara el programa que posteriormente será grabado en el
microcontrolador. Estos lenguajes son:
Lenguaje Ensamblador (Assembler). Lenguaje de programación de bajo nivel-
Lenguaje C. Lenguaje de programación de medio nivel.
El funcionamiento del procesador está determinado por las instrucciones que éste ejecuta.
Dichas instrucciones se denominan instrucciones máquina. Al conjunto de estas
instrucciones distintas que puede ejecutar el procesador se denomina repertorio de
instrucciones del procesador. Cada instrucción debe contener la información que necesita
el procesador para su ejecución (Stallings, 2007).
Es muy complicado y difícil, tanto para los programadores como para las personas que no
están familiarizadas con estos temas, manejar las representaciones binarias de las
instrucciones máquina. Por ello, es una práctica común utilizar representaciones
simbólicas de las instrucciones máquina (Stallings, 2007).
ADD, R, Y
Las características que se pretende que tenga un conjunto de instrucciones son cuatro
principalmente:
1. Completo. Esto se refiere a que se puede realizar en tiempo finito cualquier tarea
ejecutable con una computadora o dispositivo.
2. Eficiente. Se refiere a que debe permitir alta velocidad de cálculo sin exigir una
elevada complejidad en su Unidad de Control y Unidad Aritmético Lógica, además
de no consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en
un tiempo razonable minimizando el uso de los recursos.
3. Autocontenidas. Esto es, que contengan en sí mismas toda la información
necesaria para ejecutarse.
4. Independientes. Que no dependen de la ejecución de alguna otra instrucción.
Como se puede observar, una sola instrucción de lenguaje C, puede necesitar de tres
instrucciones máquina. Como se mostró en una tabla anteriormente con lenguaje
ensamblador y lenguaje C.
En el tema anterior se mencionaron las principales características que debe de tener una
instrucción, en este tema se verán los diferentes tipos de operandos y las operaciones
básicas que se realizan o usan en un programa.
El operador es: “+“ y los operandos son: “3“ y “6“. Por tal motivo se mencionan los tipos de
operandos que se pueden usar en programación.
En Stallings (2007), se puede ver que las instrucciones máquina operan con datos. Las
categorías generales más importantes de datos son:
Direcciones
Números
Caracteres
Datos lógicos
Los tipos de datos más comunes son los números, los caracteres y los datos lógicos; y
cada uno de ellos se analizará brevemente.
Números:
Una distinción importante entre los números utilizados en las matemáticas ordinarias y los
almacenados en una computadora es que éstos últimos están limitados. Esto es cierto en
dos sentidos, en primer lugar hay un límite para la magnitud de los números
representables en una máquina y, en segundo lugar, en el caso de números en coma
flotante, su precisión está limitada. Por tanto, el programador debe ser consciente de las
consecuencias del redondeo, el desbordamiento o el desbordamiento a cero.
Caracteres:
Una forma bastante común de datos es el texto o secuencia de caracteres. Aunque la
información textual sea más conveniente para las personas, no puede ser almacenada o
transmitida fácilmente en forma de caracteres por los sistemas de comunicación y de
procesamiento de datos. Tales sistemas están diseñados para datos binarios. Por lo
tanto, se han ideado diversos códigos que permiten representar caracteres mediante
secuencias de bits. Hoy en día, el código de caracteres más utilizado es el alfabeto de
referencia internacional (IRA), conocido en los Estados Unidos como ASCII (American
Standard Code for Information Interchange): código estándar americano para intercambio
de información. Cada carácter es representado en este código por un patrón distinto de 7
bits; pueden representarse por tanto 128 caracteres diferentes.
Datos Lógicos:
Normalmente, cada palabra o cualquier otra unidad direccionable (byte, media palabra,
etc.) es tratada como una unidad de datos individual. Sin embargo, a veces es útil
considerar una unidad de n bits como n elementos o datos de un bit, donde cada
elemento tiene un valor 1 o 0. Cuando los datos son vistos de esta manera, se consideran
datos lógicos.
operaciones de E/S
Transfiere información de estado
Test I/O (comprobar E/S) desde el sistema de E/S al destino
especificado
Traducción de los valores de una
Translate (traducir) sección de memoria, basado en una
tabla de correspondencia
Conversión Convierte el contenido de una
palabra de un formato a otro (por
Convert (convertir)
ejemplo., de decimal empaquetado a
binario)
Operaciones usuales de repertorios de instrucciones. Consultado en (Hayes, 1998)
Estas son las principales instrucciones que se llevan a cabo o se pueden usar dentro del
lenguaje máquina, en el siguiente tema se mostrarán brevemente ejemplos en los cuales
se hará uso de las operaciones y de algunas instrucciones.
Supón que quieres programar esta sentencia en el lenguaje máquina y dar a I, J, y K los
valores iniciales 2, 3 y 4 respectivamente. La forma de hacer esto se muestra en la
siguiente figura:
Dirección Contenido
101 0010 0010 101 2201
102 0001 0010 102 1202
103 0001 0010 103 1203
104 0011 0010 104 3204
Una mejora a esta situación puede ser redactar el programa en hexadecimal en lugar de
binario. Quedando de la siguiente manera:
Dirección Contenido
101 2201
102 1202
103 1203
104 3204
201 0002
202 0003
203 0004
204 0000
Programa en hexadecimal. Consultado en: Stallings, 2007.
Para que la mejora se a más significativa, puedes hacer uso de nombres simbólicos o
nemotécnicos de las instrucciones. El resultado es el programa simbólico mostrado en la
siguiente figura:
Dirección Instrucción
101 LDA 201
102 ADD 202
103 ADD 203
104 STA 204
201 DAT 2
202 DAT 3
203 DAT 4
204 DAT 0
Programa simbólico. Consultado en: Stallings, 2007.
El uso de programas simbólicos hace la vida mucho más fácil pero es aún engorroso. Un
procedimiento mejor, utilizado con frecuencia, es emplear direcciones simbólicas. Esto se
ilustra en la siguiente figura:
I DATA 2
J DATA 3
K DATA 4
N DATA 0
Programa en ensamblador. Consultado en: Stallings, 2007.
Esto hace a los lenguajes de alto nivel mucho más recomendables, desde el punto de
vista del programador, que el lenguaje máquina y ensamblador.
Debido a que el lenguaje ensamblador es un poco difícil de usar si no cuentas con los
conocimientos básicos de dicho lenguaje se mostrarán ejemplos elaborados en lenguaje
C, ya que los ejemplos que se verán en adelante serán con el uso de este lenguaje para
poder programar un PIC.
*La actividad será evaluada de acuerdo a su respectiva rúbrica, así que es importante
que la consultes.
Este tema es muy pequeño pero de mucha importancia para entender el manejo de un
PIC, así como los elementos que se mencionan en el DataSheet del PIC16F84 y que
quizás no se entiendan.
El PIC cuenta con algunos elementos que son de suma importancia que distingas de
manera general y logres diferenciar ya que te serán de mucha utilidad para poder elaborar
tus proyectos y actividades, estos elementos se vieron de manera general anteriormente,
pero en este momento se verán de manera individual.
“Los PIC contienen todos los recursos posibles, aunque su fabricante no les incluye en
todos los modelos, sino que los alterna para poderse ajustar óptimamente a las
necesidades de cada diseño” (Angulo, 2003).
En este apartado se describirán algunos de los recursos más importantes de los PIC
tomando en cuenta que al que se hará mayor referencia es al PIC16F84.
3.3.1. Puertos
Los PIC 16X8X sólo disponen de dos puertas de E/S. La puerta A posee 5 líneas, desde
RA0 hasta RA4, y una de ellas soporta dos funciones multiplexadas. Se trata de la
RA4/TOCKI, que puede actuar como línea de E/S o como una patita por la que se reciben
los impulsos que debe contar TMR0. La puerta B tiene 8 líneas, desde RB0 hasta RB7, y
también tiene una con funciones multiplexadas, la RB0/INNT, que además de línea típica
de E/S, sirve como patita por la que se reciben los impulsos externos que provocan una
interrupción, esta información se encuentra dentro del DataSheet del PIC16F84.
Cada línea de E/S se puede configurar tanto como entrada o como salida, todo depende
de cómo se declare si a 1 o a 0, respectivamente, el bit asociado del registro de
configuración de cada puerta (TRISA y TRISB).
Se llaman PUERTA-A y PUERTA-B los registros que guardan la información que entra o
sale por la puerta y ocupan las direcciones 5 y 6 del banco 0 de la memoria de datos. Los
registros de configuración TRISA y TRISB ocupan las mismas direcciones, pero en el
banco 1, como se puede observar en la siguiente figura:
3.3.2. Temporizadores
Para abordar este tema es necesario que recuerdes que se definió a un Temporizador
como: “El dispositivo mediante el cual puedes regular la conexión o desconexión de un
circuito eléctrico durante un tiempo determinado” (Construmática, 2013).
Una de las labores más habituales en los programas de control de dispositivos suele ser
determinar intervalos concretos de tiempo, y recibe el nombre de temporizador (timer) el
elemento encargado de realizar esta función.
3.3.3. Convertidores
El PIC16F84 como se mencionó al inicio de esta unidad cuenta con convertidor Analógico-Digital
(ADC o A/D), el cual no es más que un pequeño circuito electrónico que convierte señales
continuas a números digitales discretos (ADC). La operación contraria es realizada por un
conversor digital-analógico (DAC).
Recuerda que una señal analógica es una onda sinusoidal como la de la siguiente imagen:
Lo que realmente hace un convertidor por ejemplo si le entra una señal analógica elevada este la
convierte en un 1 o si es muy baja y pasa cierto rango entonces estaría arrojando un 0.
2. En tus propias palabras, elabora una pequeña introducción de lo que vas a tratar
en tu diagrama, mínimo media cuartilla.
8. Escribe una conclusión de mínimo media cuartilla, aterrizando todas las ideas
plasmadas durante el desarrollo de tu actividad.
Una forma excelente de conseguir una comprensión de los temas vistos de manera
básica, es visualizando y realizando algunos ejemplos que te serán proporcionados en los
temas faltantes, con la finalidad de que puedas resolver sin ningún problema tu evidencia
de aprendizaje.
Por ejemplo:
Mediante los siguientes ejemplos se pretende resumir de forma clara y concisa los pasos
que se deben llevar a cabo para realizar las ejemplos propuestos.
Existen otras herramientas que se pueden utilizar para la generación del código fuente
como PIC Basic© de Microsoft©, pero desafortunadamente no permite la generación del
archivo con extensión “hex”, se requiere una aplicación extra.
Ejemplo 1:
Encender un led usando el puerto RB0 que prenda por dos segundos y que se apague
por medio segundo y que lo siga haciendo ilimitadamente.
El código es el siguiente:
} //Fin de la condición
} //Fin de la función principal
Ejemplo 2:
Encender un led usando un botón conectado a RA0 y el led conectado a RB0 solo
encenderá cuando se presione el botón. El led permanecerá encendido por 1 segundo y
luego se apagará.
El código es el siguiente:
El proceso de elaboración de este circuito se puede apreciar en el video que lleva por
nombre: “Grabación del PIC16F84 - Encender un led al presionar un botón...!”
Ejemplo 3:
Mandar voltaje a un dispositivo de tal forma que se vayan encendiendo ordenadamente
los puertos de RB del 0 al 7. Esto lo puedes resolver con ayuda de los ejemplos ya antes
vistos.
Se debe de mandar una señal alta al puerto y los demás apagados, por ejemplo RB0
encendido y los demás apagados, posteriores RB1 encendido y los demás apagados, así
sucesivamente.
output_high(PIN_B5);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B0) && output_low(PIN_B6);
output_low(PIN_B7);
delay_ms (200);
output_high(PIN_B6);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B0);
output_low(PIN_B7);
delay_ms (200);
output_high(PIN_B7);
output_low(PIN_B1) && output_low(PIN_B2) && output_low(PIN_B3);
output_low(PIN_B4) && output_low(PIN_B5) && output_low(PIN_B6);
output_low(PIN_B0);
delay_ms (200);
}
} //Fin de la función principal
Estos son algunos de los ejemplos que puedes realizar con ayuda del PIC16F84, con
ayuda de éstos se propone que realices las siguientes propuestas de manera que puedas
practicar con ejercicios muy sencillos.
Propuestas:
1. Encender un led conectado a RB4 durante 1.5 segundos y luego apagarlo por 0.5
segundos, el proceso debe repetirse sólo 4 veces, luego el led debe permanecer
apagado.
2. Encender dos leds conectados en RB0 y RB1 alternadamente, es decir mientras
un led está encendido el otro permanecerá apagado y viceversa, los tiempos de
transición serán de 0.5 segundos, el proceso debe continuar indefinidamente.
3. Generar 6 parpadeos en un led con intervalos de tiempo de 300 milisegundos,
luego generar 2 parpadeos de 1 segundo con un segundo led, luego hacer que los
dos leds parpadean al mismo tiempo 3 veces con intervalos de 0.5 segundos,
repetir el proceso indefinidamente.
Proyecto 1:
Elaborar un semáforo sencillo para una esquina, donde solo se usan colores rojo, amarillo
y verde.
Primero que nada debes analizar el problema, para esto se requiere mucha lógica y
pensar en cómo solucionarlo.
¿Cómo funciona un semáforo?, para este ejemplo se usarán los siguientes nombres para
simplificar y entender mejor:
Semáforo 1: Rojo1, Amarillo1 y Verde1
Semáforo 2: Rojo2, Amarillo2 y Verde2
El código es el siguiente:
Semáforo en PROTEUS©
Proyecto 2:
Elaborar un contador decimal de 0 a 99 con un display de 7 segmentos.
Un display es un componente que encenderá los leds que tiene integrados conforme
reciba voltaje en alguna de sus patitas, es muy usado para representar numero debido a
la forma que tiene, por ejemplo si observas en la siguiente imagen para poder representar
el número 1 se debe recibir voltaje en sus patitas b y c, si se desea representar el número
0, todas las patitas deberán de estar encendidas excepto la g.
Pues bien, ahora lo único que tienes que hacer es implementar un ciclo for ya que con un
display solo puedo representar los 10 dígitos del sistema decimal que son: “0, 1, 2, 3, 4, 5,
6, 7, 8, 9”, por tal motivo lo que se pretende es que conforme avance mi contador se
representen cada uno de estos números, pero no solo eso sino que lo haga hasta el
número 99.
Por tal motivo se utilizarán dos displays uno para las unidades y otro para las decenas,
recordando que las decenas incrementaran cada que se incrementen 10 veces las
unidades.
Para poder encender el display se crea un arreglo el cual contiene los valores de las
patitas en valor hexadecimal a las que se tiene que mandar voltaje quedando como se
muestra en la siguiente tabla, los 1´s representan encendido y los 0´s apagado.
Las posiciones hexadecimales serán usadas como se mencionó dentro del arreglo para
que al momento que se indique al puerto B cual será la salida se mande valores de 1 o 0
según corresponda en los puertos de salida de RB.
void main(void){
byte ud=0,dec=0;
SET_TRIS_B(0x00);
SET_TRIS_A(0x00);
OUTPUT_B(0);
for( ;; ){
for (dec=0;dec<10;dec++){ //Cuenta digito decenas
for (ud=0;ud<10;ud++){
OUTPUT_A(0x02); //cat_D=apagado,cat_U=encendido
OUTPUT_B(DISPLAY[ud]); //Digito unidades
delay_ms(50); //Para evitar parpadeos
Contador en PROTEUS©
Con los ejemplos antes mencionados, puedes resolver gran cantidad de ejercicios y
proyectos, todo depende de tu creatividad e imaginación, así como de lo que desees
resolver o implementar.
Autoevaluación
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
unidad del curso, es necesario que resuelvas la autoevaluación.
Ingresa al Aula para realizar tu actividad. Si tienes alguna duda consúltala con tu
Facilitador(a) para disiparla lo antes posible.
1. Identifica el problema
3. Simula el problema
*La evidencia será evaluada de acuerdo a su respectiva rúbrica, así que es importante
que la consultes.
Autorreflexiones
Cierre de la unidad
Con este diagrama se concluye y da por terminada la tercera y última unidad de esta
asignatura. La finalidad de este diagrama es que puedas detectar todo lo visto desde la
primera unidad, ya que has podido observar elementos básicos de un microprocesador
como la ALU, la unidad de Control, los diferentes tipos de Buses, así como el
funcionamiento de algunos elementos que son de suma importancia que conocieras.
Posteriormente se dan a conocer las diferentes instrucciones con las que cuenta el PIC
así como algunas instrucciones del Lenguaje Ensamblador que sirven para poder
programar un PIC, así como mostrando una comparación entre el lenguaje ensamblador y
el lenguaje C, demostrando que es mucho más fácil de manejar incluso para realizar
operaciones aritméticas como sumas, restas, entre otras. De igual forma se explicó la
importancia de algunos elementos del PIC como los temporizadores y el papel
fundamental que desempeña así como los puertos con los que cuenta el PIC16F84.
En la sección Para saber más, se agregan algunos videos y artículos publicados que te
ayudarán a reforzar algunos temas vistos, así como el uso del simulador PROTEUS, entre
otros datos que pueden resultar de tu interés.
En el video que se titula “Grabación del PIC16F84 de manera Simulada – Parte 1”,
en el cual se menciona el proceso de creación de un proyecto de manera simulada
con el uso de PROTEUS y PCW, esta información te será de gran utilidad para
entender rápidamente los pasos de grabación de un PIC de manera modelada.
http://www.youtube.com/watch?v=bY-KDoCe8Jg&feature=youtu.be
En el video que se titula “Tutorial de ISIS proteus” se explica de una manera breve
y clara la forma en la cual se hace uso del simulador proteus con un pequeño
ejemplo para que se entienda la forma de trabajar en dicho simulador.
http://www.youtube.com/watch?v=jsb75ms0zRU
En el capítulo 3 del libro “Compilador C CCS y simulador PROTEUS para
Microcontroladores PIC” se explica a detalle la forma en que se configuran los
puertos A y B del PIC16F84 y como se usan en caso de que se pretendan usar
como entrada o salida. Su ISBN y editorial lo encuentras en las fuentes
complementarias.
En el siguiente video que lleva por nombre: “Grabación del PIC16F84 - Encender
un Led...!” Se explica el ejemplo 1 de esta unidad, en él se muestra cómo usar el
simulador PROTEUS y la elaboración del Código fuente para nuestro PIC, además
de que es más visible el proceso de creación de un ejercicio.
http://www.youtube.com/watch?v=rdL-nCeW-Ho&feature=youtu.be
En el video que tiene por nombre “Grabación del PIC16F84 - Encender un Led al
presionar un botón...!” se explica y se muestra como se utiliza el puerto A para
poder recibir un valor y este se vea reflejado en el puerto B.
http://www.youtube.com/watch?v=zwa1wYYZ--c&feature=youtu.be
El video titulado “Grabación del PIC16F84 - Luces de Discoteca...!” muestra breve
y detalladamente el funcionamiento del código fuente así como la forma de simular
el problema en el simulador PROTEUS.
http://www.youtube.com/watch?v=ZmFlugYsPPI&feature=youtu.be
En el siguiente video que lleva por nombre “Grabación del PIC16F84 - Semáforo
sencillo...!” se explica y se muestra la lógica a utilizar y se explica el código fuente
para resolver el problema de la implementación de un semáforo sencillo así como
su simulación dentro PROTEUS.
http://www.youtube.com/watch?v=sK9pwiIcOr8&feature=youtu.be
En el video que se titula: “Grabación del PIC16F84 - Contador Decimal de 0 a
99...!” se explica de una manera concreta pero muy entendible el uso de la lógica
para dar solución a este proyecto, de igual forma se muestra el código fuente y el
uso de cada instrucción y finalmente el proyecto simulado en PROTEUS.
http://www.youtube.com/watch?v=7rb2JnrAtHw&feature=youtu.be
Fuentes de consulta
Fuentes básicas
Fuentes complementarias
Fuentes electrónicas