Está en la página 1de 65

INSTITUTO POLITÉCNICO NACIONAL

CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS No.3


“ESTANISLAO RAMIREZ RUIZ”
CARRERA TECNICA EN SISTEMAS DIGITALES

TESINA
“CUBO LED CONTROLADO VÍA BLUETOOTH”

Para obtener el título de:

TÉCNICO
EN SISTEMAS DIGITALES

P R E S E N T A:

AGUILAR GERVACIO JORGE ALBERTO


JIMÉNEZ HERNÁNDEZ IVÁN
OLIVARES ZAMARRÓN JARED JOSAFAT
RAMÍREZ CORONA SEBASTIÁN

ASESORES:

ING. ARMANDO HERRERA MARTINEZ

 México, D. F. Junio del


2018.
DICTAMEN DE ASIGNACIÓN DE ASESORES
AGRADECIMIENTOS
Primeramente, agradecemos a la institución por permitirnos haber formado parte de
ella, y colaborar activamente en nuestra preparación científica y tecnológica. Ya que
gracias al esfuerzo que se llevó a cabo por ambas partes pudo darse el fruto de un
proyecto terminal de sistemas digitales, así también a los docentes que me
impartieron ciclos de preparación académica.

Por otra parte, agradezco a mi asesor de tesis, Ing. Armando Herrera Martínez por
haberme guiado en el desarrollo del proyecto y haber respetado las ideas u
opiniones que se plantearon sobre éste.

Por último, a nuestros padres, familiares y amigos, ya que son el motor de


motivación para la superación de cada una de las metas y objetivos que en nuestra
vida tenemos.
ÍNDICE

RESUMEN.....................................................................................................................6
OBJETIVO.....................................................................................................................7
INTRODUCCIÓN...........................................................................................................8
I. JUSTIFICACIÓN.................................................................................................8
II. ANTECEDENTES...............................................................................................9
III. ESTADO DEL ARTE.....................................................................................10
El diodo Led.........................................................................................................10
El microcontrolador............................................................................................10
Bluetooth..............................................................................................................11
IV. DESCRIPCIÓN DEL TRABAJO....................................................................12
CUERPO DEL TRABAJO...........................................................................................13
CAPITULO 1: MICROCONTROLADORES FUNDAMENTOS Y APLICACIONES
CON PIC...................................................................................................................13
1.1 Introducción a los microcontroladores y microprocesadores............13
1.2 Arquitectura del microcontrolador.........................................................15
1.3 Las características generales del microcontrolador PIC.....................17
1.4 Familias de Microcontrolador..................................................................19
1.5 La memoria en los microcontroladores.................................................21
1.6 El set de instrucciones.............................................................................23
1.7 El microcontrolador PIC16F886...............................................................25
CAPITULO 2: Diodo emisor de luz: Tecnología LED..........................................27
2.1 El diodo emisor de luz (LED)...................................................................27
2.2 Funcionamiento........................................................................................28
2.3 Aplicaciones..............................................................................................29
2.4 El led Azul ultra brillante..........................................................................30
CAPITULO 3: Comunicación Inalámbrica Bluetooth..........................................31
3.1 Descripción del Bluetooth...........................................................................31
3.2 Funcionamiento del Bluetooth....................................................................32
3.3 Protocolo Bluetooth.....................................................................................34
3.4 Arquitectura Bluetooth.................................................................................35
3.5 Módulo Bluetooth HC05...............................................................................36
CAPITULO 4: Prototipo de cubo led.....................................................................37
4.1 Construcción del prototipo..........................................................................38
4.2 Construcción de la estructura cúbica........................................................39
CAPITULO 5: Diseño Electrónico del prototipo cubo LED................................40
5.1 Diseño del diagrama en ISIS........................................................................40
5.2 Diseño del PCB ARES..................................................................................41
CAPITULO 6: Programación en MPLAB con lenguaje ensamblador...............42
CONCLUSIONES........................................................................................................43
REFERENCIAS...........................................................................................................44
ANEXOS......................................................................................................................44
RESUMEN

El principal fundamento del proyecto consistió en crear un cubo con estructura


formada de diodo emisor de luz, dentro de éste se visualizan rutinas seleccionadas
por el usuario por medio de una aplicación utilizando el protocolo de comunicación
inalámbrico Bluetooth.

Lo primero fue realizar una estructura cúbica de doscientos dieciséis leds’, teniendo
que ocupar treinta y seis por cuadrado, se controlaron a través de un
microcontrolador de gama media PIC16F886, los led’s que se utilizan son azules
ultra brillantes, debido a que éstos ocupan menor amperaje y los lúmenes que
desprenden son mayores. Se procedió a diseñar los circuitos de comunicación y
control del cubo en software de diseño electrónico (Proteus), y se pasaron con ayuda
de éstos a placas de cobre.

Posteriormente se accedió al control del cubo por medio de la comunicación


inalámbrica Bluetooth, mediante esto se creó una red con dos piconet uno actúa
como maestro y el otro esclavo.

En síntesis, se realizó una estructura cúbica con led’s ultra brillantes azules, en el
prototipo de cubo el microcontrolador actúa como el cerebro, pues éste predispone
de rutinas a las que se puede iniciar mediante la comunicación Bluetooth, para esto
se creó una red scatternet, que comunica un piconet maestro esclavo, la red se creó
mediante el módulo Bluetooth HC05, pues éste comunica al microcontrolador como
esclavo.

6
OBJETIVO

Por medio de un cubo formado por led’s, con la ayuda del PIC16F886 y un módulo
Bluetooth HC05 se accede a controlar rutinas del prototipo, una rutina dentro del
prototipo comprende diferentes frecuencias, movimientos dentro de las coordenadas
que harán ver diferentes figuras dentro del cubo, e incluso activar o desactivar
rutinas a la selección del usuario.

En primer término, se programan tres rutinas que pueden ser seleccionadas por el
usuario, la primera refleja la palabra IPN, activa letra por letra de tal manera que
primero se observa la I, después de un breve tiempo la P y posterior la N.

En segundo término, la segunda rutina es una serie de efectos de una cara que
recorrerá los cuatro puntos cardinales desde el centro del cubo, es decir, arriba,
abajo, izquierda y derecha.

En tercer término, la rutina final es una pared giratoria que se desplazara por los 4
puntos cardinales respecto al eje, norte, sur, este y oeste. Esto hará ver el efecto que
se recorren 6 leds alrededor del cubo.

Por último, se implementa comunicación inalámbrica Bluetooth al prototipo por medio


de un módulo HC05 que establece una red maestro esclavo entre un dispositivo
inteligente y el microcontrolador. Esto para que el usuario puede iniciar a su
preferencia las rutinas del cubo.

7
INTRODUCCIÓN
I. JUSTIFICACIÓN

Emplear tecnología de semiconductores, ellos surgen ya hace casi 60 años y desde


entonces siguen teniendo nuevas aplicaciones, que van desde industriales, caseras,
académicas, y enfocadas a sustituir viejas tecnologías.

En el mundo moderno, hay la exigencia de desarrollar cada día innovaciones en el


campo de la tecnología y ciencia, pues eso abre paso al progreso continúo de la
sociedad, de cierta manera el realizar un proyecto que se basa en los avances
actuales de tecnologías que emergieron el siglo pasado, el cual es el caso del diodo
emisor de luz, permite la posibilidad de encontrar nuevas variantes y aplicaciones de
ellos. Nos permite explorar más aplicaciones para éstos.

Es un proyecto funcional y practico, pero se basa en principios científicos como las


leyes de la electricidad de Ohm, pues sin las aplicaciones de ésta ley no fuera tan
simple la conexión entre cada elemento utilizado, nos permite también abrir nuestro
entorno de programación a objetos más prácticos.

El punto vital del proyecto se enfoca en un prototipo capaz de ser manipulado por un
usuario externo cualquiera. A través del prototipo se entiende que las aplicaciones
del diodo, así como de los microcontroladores son accesibles para cualquier persona
y que, por otra parte, permitan el desarrollo de proyectos de todo tipo.

8
II. ANTECEDENTES

La tecnología siempre se ha desarrollado acorde a las necesidades del hombre, en


el momento justo han surgido las creaciones e ideas que han dado progreso y
bienestar a la humanidad, gran parte de ello se debe a los descubrimientos de
fenómenos como la electroluminiscencia, el magnetismo, la electricidad, la gravedad,
etcétera. Y debido a ellas, han prevalecido teorías, postulados, leyes y modelos.

Basta con centrarnos en el tema fundamental, la invención del diodo, o el inicio de la


era del semiconductor, por parte de William shockley, Walter brattain, John bardeen.
De ello también parte el desarrollo de microcontroladores por parte de Texas
Instrument. Desde la presentación del primer microcontrolador el TMS 1000 hasta el
desarrollo de gamas de microcontroladores, algunos con más capacidad de
almacenamiento, mayor manejo de instrucciones, mayor cantidad de líneas de
comunicación o puertos, etcétera. Así mismo el primer diodo emisor de luz, pues
éstos funcionan con voltaje de corriente directa y un amperaje muy bajo, en la
actualidad se han desarrollado diferentes tipos de Leds algunos han llegado a
parámetros de funcionamiento con un estándar muy bajo. Los primeros diodos
emisores trabajaban con 5 Volts y una corriente de .2 Amperes. Y el diodo ultra
brillante azul con 3.6 Volts y .12 Amperes por citar una transformación en el
funcionamiento.

El diseño de prototipos con leds no es algo nuevo, anuncios, lámparas, etcétera,


pero hemos planteado una estructura cúbica formado por diodo emisor de luz, para
ello hemos aplicado conocimientos básicos de electricidad como la ley de ohm, pues
nos permite crear el arreglo en forma de matriz 6x6 de leds. El diseño de cubo se
hizo uniendo los puntos en común de las matrices, igualmente aplicando los cálculos
por ley de ohm para el funcionamiento óptimo del cubo.

9
III. ESTADO DEL ARTE

El diodo Led

Los diodos emisores de luz led, en ellos está basado gran parte del proyecto, pues
los leds siempre se han utilizado en el mundo de la tecnología como indicadores
lumínicos, ya que son dispositivos semiconductores que emiten luz cuando por el
circula una corriente eléctrica. La tecnología led ha dado su paso más reciente con
los leds de luz blanca que son los que pueden sustituir a las bombillas de luz,
principalmente porque consumen menos energía eléctrica la cual se enfoca al
cuidado del medio ambiente. El led se define por sus siglas como diodo emisor de luz,
no es más que un pequeño chip de material semiconductor, que cuando es atravesado
por una corriente eléctrica, en sentido apropiado, emite luz monocromática sin producir
calor, es decir un componente electrónico semiconductor, con polaridad por lo que se
usará en funciones de señalización, estética y, actualmente iluminación.

Su estructura consta de un hilo muy fino, entre el cátodo y el ánodo, que podría dar
apariencia de fragilidad, pero no es así; porque no tiene que ponerse incandescente
(de hecho, apenas se calienta) y no está al aire, sino incrustado dentro del epoxi.

Está basado el proyecto en diodos led debido a sus principales beneficios, como lo son
el tamaño, el mínimo voltaje y corriente, a que no se calientan, debido a ello no son
necesario disipadores de calor, potencia que manejan, etcétera. Específicamente, el
led azul ultra brillante, nos ofrece todas estas características.

10
El microcontrolador

Los microcontroladores están concebidos fundamentalmente para ser utilizados en


aplicaciones puntuales, es decir, aplicaciones donde el microcontrolador debe realizar
un pequeño número de tareas, al menor costo posible. En estas aplicaciones, el
microcontrolador ejecuta un programa almacenado permanentemente en su memoria,
el cual trabaja con algunos datos almacenados temporalmente e intercambia con el
exterior a través de las líneas de entrada y salida de que dispone.

El microcontrolador es parte de la aplicación: es un controlador incrustado o embebido


en la aplicación. En aplicaciones de cierta envergadura se utilizan varios
microcontroladores, cada uno de los cuales se ocupa de un pequeño grupo de tareas.

Cabe decir que hay tres clases de microcontroladores, los de gama baja, media y alta,
cada una de las cuales tiene propósitos y aplicaciones diferentes, pues alguna de ellas
maneja instrucciones lógicas más potentes, lo cual sirve para generar diferentes
objetivos y funciones dentro del código de programa.

El microcontrolador de gama media, maneja un set o reparto de instrucciones de treinta


y cinco, divididas en instrucciones lógicas de manejo de datos, de control de literales y
contantes y de bits. Para las acciones que realiza el cubo, basta con las treinta y cinco
instrucciones. En específico el microcontrolador 16F886 permite la comunicación a
través de 24 líneas de comunicación o líneas de puertos. Además de que son fáciles
de programar y accesibles en cuanto a relación de costo.

En el proyecto, el microcontrolador actúa como el cerebro, pues éste comanda toda


acción que el cubo realice, así mismo permite el intercambió o no de señales externos
como método de comunicación.

11
Bluetooth

El Bluetooth es una tecnología orientada a la conectividad inalámbrica entre


dispositivos tan dispares como PCs, PDAs, teléfonos móviles, electrodomésticos,
etcétera.
En general, podemos decir que las posibilidades pueden considerarse infinitas. El
Bluetooth, aparte de ser una nueva tecnología, es también una especificación abierta
para comunicaciones inalámbricas de voz y datos. Está basado en un enlace de radio
de bajo coste y corto alcance, el cual proporciona conexiones instantáneas tanto para
entornos de comunicaciones móviles como estáticos. Esta tecnología ha revolucionado
el mercado de la conectividad ya que es capaz de comunicar cualquier dispositivo que
cumpla con las especificaciones inalámbricas del Bluetooth. La principal ventaja que
ofrece esta tecnología es la conectividad sin cables de todos los dispositivos, pero más
que reemplazar los incómodos cables, esta tecnología ofrece un puente entre las redes
de datos hoy existentes y el exterior.

La tecnología Bluetooth comprende hardware, software y requerimientos de


interoperabilidad, por lo que para su desarrollo ha sido necesaria la participación de los
principales fabricantes de los sectores de las telecomunicaciones y la informática.

Una comunicación Bluetooth ocurre entre la capa radio de un maestro y la capa radio
de un esclavo. Las especificaciones radio de uno y otro agente son simétricas, de
esta forma el mismo dispositivo puede operar como maestro y como esclavo al
mismo tiempo, en distintas piconets. Cada interfaz radio tiene una dirección única de
48 bits, BD_ADDR. Si unimos al menos un maestro y varios esclavos (hasta 7
esclavos) tenemos una red ad-hoc, llamada piconet. Todas las unidades de una
misma piconet, comparten un mismo canal.

La comunicación Bluetooth entre el prototipo y el microcontrolador se dará mediante


un módulo HC05, que hará actuar al microcontrolador con una capa de radio esclava
para ser controlada por una maestra.

12
IV. DESCRIPCIÓN DEL TRABAJO

El trabajo se realiza en diferentes etapas, la primera etapa consiste en armar un


cubo led con doscientos dieciséis diodos, posterior a esto se crea el circuito que los
comunique al microcontrolador, llamado circuito de control, que posteriormente es
diseñado en placa de cobre pcb para presentación formal del prototipo, anterior a
ello se necesita el diseño de dicha placa con ayuda de un software de diseño
electrónico, el cual es en este caso Proteus 8.1.

La segunda etapa consiste en programar por medio de lenguaje ensamblador un


microcontrolador PIC, a través de éste dispositivo podremos ejercer control del
prototipo por medio de líneas de comunicación llamados puertos, cabe decir que
también se puede comunicar al microcontrolador con un módulo bluetooth.

La etapa siguiente trata sobre sincronizar el proyecto, cubo led a un módulo


Bluetooth HC05, por medio de él se podrá controlar a corto alcance el prototipo,
mediante una aplicación que funcione en dispositivos inteligentes que puede ser
operado por un usuario externo.

13
CUERPO DEL TRABAJO
CAPITULO 1: MICROCONTROLADORES FUNDAMENTOS Y APLICACIONES
CON PIC

1.1 Introducción a los microcontroladores y microprocesadores

El microprocesador

La CPU es el "cerebro" del microcomputador y actúa bajo el control del programa


almacenado en la memoria. La CPU se ocupa básicamente de traer las instrucciones
del programa desde la memoria, interpretarlas y hacer que se ejecuten. La CPU
también incluye los circuitos para realizar operaciones aritméticas y 16gicas
elementales con los datos binarios, en la denominada Unidad Aritmética y Lógica (ALU:
Arithmetic and Lógica Unit). En un microcomputador, la CPU no es otra cosa que el
microprocesador, el circuito integrado capaz de realizar las funciones antes
mencionadas. Un microcontrolador es un microcomputador realizado en un circuito
integrado (chip). Históricamente, los microcontroladores aparecieron con posterioridad
a los microprocesadores y han tenido evoluciones independientes.

Los microprocesadores se han desarrollado fundamentalmente orientados al mercado


de los ordenadores personales y las estaciones de trabajo, donde se requiere una
elevada potencia de cálculo, el manejo de gran cantidad de memoria y una gran
velocidad de procesamiento. Un parámetro importante en los microprocesadores es el
tamaño de sus registros internos (8, 16, 32 6 64 bits), que determina la cantidad de bits
que pueden procesar simultáneamente.

Imagen 1.1: Microprocesador en una placa


madrehttps://es.dreamstime.com/foto-de-archivo-
placa-de-circuito-con-el-microprocesador-
image51503827
14
El microcontrolador
Los microcontroladores se han desarrollado para cubrir las más diversas aplicaciones.
Se usan en automoción, en equipos de comunicaciones y de telefonía, en instrumentos
electrónicos, en equipos médicos e industriales de todo tipo, en electrodomésticos, en
juguetes, etc.

Los microcontroladores están concebidos fundamentalmente para ser utilizados en


aplicaciones puntuales, es decir, aplicaciones donde el microcontrolador debe realizar
un pequeño número de tareas, al menor costo posible. En estas aplicaciones, el
microcontrolador ejecuta un programa almacenado permanentemente en su memoria,
el cual trabaja con algunos datos almacenados temporalmente e intercambia con el
exterior a través de las líneas de entrada y salida de que dispone.

El microcontrolador es parte de la aplicación: es un controlador incrustado o embebido


en la aplicación (embedded controller). En aplicaciones de cierta envergadura se
utilizan varios microcontroladores, cada uno de los cuales se ocupa de un pequeño
grupo de tareas.

Imagen 1.1.2: Microcontroladores de Microchip de


diferentes gammas,
http://sherlin.xbot.es/microcontroladores/introduccion-
a-los-microcontroladores/que-es-un-microcontrolador

15
1.2 Arquitectura del microcontrolador

En la memoria de un ordenador, un microcomputador o un microcontrolador, se


almacenan instrucciones y datos. Las instrucciones deben pasar secuencialmente a la
CPU para su decodificación y ejecución, en tanto que algunos datos en memoria son
leídos por la CPU y otros son escritos en la memoria desde la CPU. Puede intuirse que
la organización de la memoria y su comunicación con la CPU son dos aspectos que
influyen en el nivel de prestaciones del ordenador. Las arquitecturas von Neumann y
Harvard son modelos generales del hardware de los ordenadores que representan dos
soluciones diferentes al problema de la conexión de la CPU con la memoria y a la
organización de la memoria como almacén de instrucciones y datos.

Von Neumann
La arquitectura von Neumann toma el nombre del matemático John von Neumann que
propuso la idea de un ordenador con el programa almacenado (stored-program
computer). J. von Neumann trabajo en el equipo de diseñadores de la computadora
ENIAC (Electronic Numerical Integrator and Calculator) diseñada en la Universidad de
Pennsylvania durante la Segunda Guerra Mundial.

La arquitectura von Neumann utiliza una memoria única para instrucciones y datos.
Esto significa que con un mismo bus de direcciones se localizan (direccionan)
instrucciones y datos y que por un único bus de datos transitan tanto instrucciones
como datos. El mismo serial de control que emite la CPU para leer un dato, sirve para
leer una instrucción. No hay señales de control diferentes para datos e instrucciones.
Debe quedar claro que, aunque se use memoria ROM para almacenar el programa y
RAM para los datos, para la CPU no hay tal distinción, sino que ROM y RAM forman un
conjunto (una memoria de lectura y escritura) para el cual la CPU emite señales de
control, de dirección y de datos.

16
Harvard Imagen 1.2.1: Estructura a bloques de la
arquitectura Von
El termino Neumann,https://www.slideshare.net/TitilaBich
arquitectura Harvard se debe al nombre del lugar donde Howard Aiken
a/arquitectura-von-neumann-57477722
diseño los ordenadores Mark I, II, III y IV. Estos ordenadores fueron los primeros en
utilizar memorias separadas para instrucciones y datos, una concepción diferente al
ordenador de programa almacenado.

La arquitectura Harvard utiliza memorias separadas para instrucciones y datos. En este


caso la memoria de programa (que almacena instrucciones) tiene su bus de
direcciones (de instrucciones), su propio bus de datos (más bien es un bus de
instrucciones) y su bus de control. Por otra parte, la memoria de datos tiene sus
propios buses de direcciones, datos y control, independientes de los buses de la
memoria de programa. La memoria de programa es solo de lectura, mientras que en la
de datos se puede leer y escribir.

La arquitectura von Neumann requiere menos líneas que la Harvard para conectar la
CPU con la memoria, lo cual significa una conexión más simple entre ambas. Pero con
esta arquitectura es imposible manipular simultáneamente datos e instrucciones,
debido a la estructura de buses físicos, algo que si es posible en la arquitectura
Harvard, que tiene buses separados. Esto confiere a la arquitectura Harvard la ventaja
de una mayor velocidad de ejecución de los programas.

Imagen 1.2.2: Estructura de la arquitectura Harvard de un


computador, http://www.fotoseimagenes.net/arquitectura-harvard

17
1.3 Las características generales del microcontrolador PIC

Los microcontroladores al ser dispositivos programables inteligentes están sujetos a


características de cálculo, de potencia, velocidad, almacenamiento, etcétera. A
continuación se enumeran gran parte de características que un PIC puede tener,
siempre considerando que algunas varían respecto a la gamma perteneciente o
tecnología.

I. Un microcontrolador PIC, posee recursos de entrada y salida. Más que en la


capacidad de cálculo del microcontrolador, muchas veces se requiere hacer
énfasis en los recursos de entrada y de salida del dispositivo, tales como el
manejo individual de líneas de entrada y salida, el manejo de interrupciones,
señales analógicas, etcétera.
II. Espacio optimizado. Se trata de tener en el menor espacio posible, y a un coste
razonable, los elementos esenciales para desarrollar una aplicación. Dado que
el número de terminales que puede tener un circuito integrado viene limitado por
las dimensiones de su encapsulado, el espacio se optimizar haciendo que unos
mismos terminales realicen funciones diferentes
III. El microcontrolador idóneo para una aplicación. Se procura que el diseñador
disponga del microcontrolador hecho a la medida de su aplicación. Por esto los
fabricantes ofrecen familias de microcontroladores, compuestas por miembros
que ejecutan el mismo repertorio de instrucciones pero que difieren en sus
componentes de hardware (más o menos memoria, más o menos dispositivos
de entrada y salida, etc.), permitiendo así que el diseñador de aplicaciones
pueda elegir el microcontrolador idóneo para cada aplicación.
IV. Seguridad en el funcionamiento del microcontrolador. Una medida de seguridad
elemental es garantizar que el programa que este ejecutando el
microcontrolador sea el que corresponde, es decir, que, si el microcontrolador se
"pierde", esto pueda ser rápidamente advertido y se tome alguna acción para
corregir la situación. Un componente común en los microcontroladores y que

18
contribuye a una operación segura es el perro guardián (WDT: Watchdog
Timer), dispositivo que no existe en los ordenadores personales.
V. Bajo consumo. Dado que hay muchas aplicaciones donde se desea utilizar
baterías como fuente de alimentación, es altamente deseable que el
microcontrolador consuma poca energía.
VI. Protección de los programas frente a copias. Se trata de proteger la información
almacenada en la memoria, es decir, el programa de la aplicación, contra
lecturas furtivas de la memoria del microcontrolador. Los microcontroladores
disponen de mecanismos que les protegen de estas acciones.
VII. Todos están basados en la arquitectura Harvard, con memorias de pro-
grama y de datos separadas.
VIII. Todos los microcontroladores PIC aplican la técnica del segmentado (pipeline)
en la ejecución de las instrucciones, en dos etapas, de modo que las
instrucciones se ejecutan en un ciclo de instrucción, equivalente a cuatro pulsos
del oscilador principal del microcontrolador, excepto las instrucciones de
transferencia de control que toman dos ciclos de instrucción.
IX. Otra característica común a los microcontroladores PIC es la forma en que esta
implementada la pila. La pila no forma parte de la memoria de datos, sino que
ocupa un espacio independiente y tiene además una profundidad limitada,
según el modelo de PIC. En estos microcontroladores no hay un puntero de pila
(registro SP: Stack Pointer), tan común en la mayoría de los microprocesadores
y en muchos microcontroladores.
X. Todos los microcontroladores PIC cuentan con un temporizador que trabaja
como perro guardián y tienen un cierto número de bits para configurar el
dispositivo, a los que se accede al programar el microcontrolador. Mediante
alguno de los bits de configuración, se puede proteger la memoria de programa
frente a copias no autorizadas.
XI. Muchos microcontroladores PIC pueden ser programados en el propio circuito
de la aplicación (ICSP: In-Circuit Serial Programming), utilizando un pequeño
fluffier° de líneas.

19
1.4 Familias de Microcontrolador

Los microcontroladores PIC se pueden clasificar, atendiendo al tamaño de sus


instrucciones, en tres grandes grupos o gamas:

I. Gama baja: microcontroladores con instrucciones de 12 bits.


II. Gama media: microcontroladores con instrucciones de 14 bits.
III. Gama alta: microcontroladores con instrucciones de 16 bits.

Los microcontroladores PIC también se agrupan en cinco grandes familias: PIC10,


PIC12, PIC16, PIC17 y PIC18. Los PIC10 son, básicamente, microcontroladores de 6
terminales. La familia de los PIC12 agrupa a los microcontroladores disponibles en
encapsulado de 8 terminales. Algunas de estas cinco familias tienen numerosas
subfamilias, como sucede con los PIC16. Además, algunas de estas familias incluyen
dispositivos de más de una gama, como los PIC16 y PIC12, que tienen dispositivos de
gama baja y media. Los PIC17 y PIC18 son de gama alta. El criterio empleado para
clasificar un PIC dentro de una familia es, pues, un tanto complejo.

Familia RO RA Pi Frecu Entr Resol Compar Tempori Comuni Sali Otro


M M ne encia adas ución adores zadores cación das s
[Kb [by s de A/D del de 8/16 serial PW
ytes tes] reloj. conve bits M
] [MHz rtidor
] A/D
Arquitectura de la gama baja de 8 bits, palabra de instrucción de 12 bits
PIC10F 0.37 16 6- 4-8 0-2 8 0-1 1x8 - - -
XXX 5- - 8
0.75 24
PIC12F 0.75 25 8 4-8 0-3 8 0-1 1x8 - - EEP
XXX - 1.5 - ROM
38
PIC16F 0.75 25 14 20 0-3 8 0-2 1x8 - - EEP
XXX -3 - - ROM
134 44
PIC16H 1.5 25 18 20 - - - 1x8 - - Vdd
VXXX - =
20 15V
Arquitectura de la gama media de 8 bits, palabra de instrucción de 14 bits
PIC12F 1.75 64 8 20 0 - 4 10 1 1-2x8 - 0- EEP
XXX - 3.5 - 1 x 16 1 ROM
128
PIC12H 1.75 64 8 20 0-4 10 1 1-2x8 - 0- -
VXXX 1 x 16 1
PIC16F 1.75 64 14 20 0- 8 or 0-2 1-2x8 USART 0- -

20
XXX - 14 - - 13 10 1 x 16 I2C SPI 3
368 64
PIC16H 1.75 64 14 20 0- 10 2 2x81x USART - -
VXXX - 3.5 - - 12 16 I2C SPI
128 20
Arquitectura de la gama alta de 8 bits, palabra de instrucción de 16 bits
PIC18F 4- 256 18 32 - 4- 10 or 0-3 0-2x8 USB2.0 0 - -
XXX 128 - - 48 16 12 2-3x CAN2.0 5
393 80 16 USART
6 I2C SPI
PIC18F 8 - 102 28 40 - 10 - 10 2 0-2x8 USB2.0 2 - -
XXJXX 128 4 - - 48 16 2-3x USART 5
393 10 16 Ethernet
6 0 I2C SPI
PIC18F 8 - 768 28 64 10 - 10 2 1 x 8 3 x USART 2 -
XXKXX 64 - - 13 16 I2C SPI
393 44
6
Tabla 1 1: Familias de los Microcontroladores PICS y sus principales características

21
1.5 La memoria en los microcontroladores

En este capítulo se estudia la organización y estructura de la memoria en los


microcontroladores en general y en los PIC de gama media en particular. Primero se
definen algunos conceptos básicos tales como palabra, dirección, capacidad de la
memoria y unidades en que se mide. A continuación, se estudian dos formas de
organizar la memoria en los microcontroladores: lineal y por páginas. Se exponen
luego las tecnologías empleadas en la fabricación de la memoria. Finalmente se
describe la organización y características de la memoria en los PIC de gama media.

Tipos de memorias del microcontrolador:


I. RAM: La memoria RAM es una memoria de lectura y escritura. Hay dos
variantes: la estática y la dinámica. En la memoria RAM estática la información
almacenada permanece estable indefinidamente mientras no se suprima la
tensión de alimentación. Eso las diferencias de la memoria RAM dinámicas, que
requieren un refrescamiento periódico de la información almacenada. Las RAM
dinámicas se usan profusamente en los ordenadores personales, pero no en los
microcontroladores.
II. ROM: En los microcontroladores que utilizan memoria ROM, la información se
graba durante el proceso de fabricación del dispositivo y no puede ser alterada
ulteriormente. Por ello, la información que se desea grabar en la memoria, que
puede ser el programa y algunos datos, debe haber sido comprobada v
depurada minuciosamente antes de encargar la fabricación del
microcontrolador. La memoria ROM es la más barata de todas las opciones,
siempre que el volumen de dispositivos fabricados sea suficientemente alto para
que el proceso sea rentable. En los microcontroladores PIC, las letras 'CR' en el
nombre del dispositivo indican que la memoria de programa es ROM. Ejemplos:
PIC16CR65, PIC16CR72.
III. EPROM y OTP: Estas memorias son muy similares, pero se diferencian en su
encapsulado. Los dispositivos con memoria EPROM tienen una ventana de
cristal de cuarzo para poderlos borrar masivamente con luz ultravioleta. Los
dispositivos OTP usan la misma memoria interna que las EPROM, pero sin la

22
ventana de cristal, por lo que una vez programados no se puede borrar ni alterar
su información. En los microcontroladores PIC, la letra 'C' en el nombre del
dispositivo indica que la memoria es OTP o EPROM. El PIC16C74B/JW es un
dispositivo con memoria EPROM, porque el sufijo JW indica que el encapsulado
dispone de una ventana de cuarzo para el borrado. Los dispositivos
PIC16C72A/P y PIC16C74B/SO son OTP con encapsulado plástico DIP y SOIC
para montaje en superficie, respectivamente.
IV. EEPROM: La memoria EEPROM es una memoria no volátil de lectura y
escritura. La escritura de la memoria se realiza por medios eléctricos. Las celdas
pueden ser escritas individualmente sin una operación previa de borrado. La
memoria se puede reprogramar un número finito, aunque muy grande, de veces
(del orden de 106).
V. FLASH En las memorias FLASH se pueden leer y escribir celdas individual-
mente, aunque, en general, para escribir en una celda hay que borrar primero su
información. El borrado de estas memorias se realiza por bloques de celdas de
memoria, no celda a celda. Esto las diferencias de las memorias EEPROM.
Borrar es poner todos los bits del bloque de celdas en 0. La operación de
escritura consiste en poner selectivamente a 1 los bits deseados. Con una
operación de escritura se puede poner a 1 un bit que está en 0, pero para poner
en 0 un bit que está en 1 hay que borrar el bloque de celdas correspondiente.
Entonces, a menudo, una operación de escritura de información en una celda de
memoria flash se convierte en una operación de lectura - borrado - escritura del
bloque de celdas donde se desea escribir la información. Todas las operaciones
de borrado, lectura y escritura se realizan con la tensión de funcionamiento
normal del dispositivo, sin necesidad de una tensión mayor.

Imagen 1.5.1: Tipos de memorias en un microcontrolador,


https://itm201511.webnode.es/arquitectura-de-
computadores/controladores/ 23
1.6 El set de instrucciones

Todas las instrucciones se ejecutan en un ciclo. La única excepción pueden ser las
instrucciones de ramificación condicional o las instrucciones que cambian el contenido
del contador de programa. En ambos casos, dos ciclos de reloj son necesarios para la
ejecución de la instrucción, mientras que el segundo ciclo se ejecuta como un NOP
(No operación). Las instrucciones de un ciclo consisten en cuatro ciclos de reloj. Si se
utiliza un oscilador de 4 MHz, el tiempo nominal para la ejecución de la instrucción es
1μS. En cuanto a las instrucciones de ramificación, el tiempo de ejecución de la
instrucción es 2μS. Juego de instrucciones de los microcontroladores PIC de 14 bits: 

INSTRUCCIÓN DESCRIPCIÓN OPERACIÓN BANDERA CLK *


Instrucciones para la transmisión de datos
MOVLW k Mover literal a W k -> w 1
MOVWF f Mover el contenido W -> f 1
de W a f
MOVF f,d Mover el contenido f -> d Z 1 1, 2
de f a d
CLRW Borrar el contenido 0 -> W Z 1
de W
CLRF f Borrar el contenido 0 -> f Z 1 2
de f
SWAPF f,d Intercambiar de f(7:4),(3:0) -> 1 1, 2
nibbles en f f(3:0),(7:4)
Instrucciones aritmético - lógicas
ADDLW k Sumar literal a W W+k -> W C, DC, Z 1
ADDWF f,d Sumar el contenido W+f -> d C, DC ,Z 1 1, 2
de W y f
SUBLW k Restar W de literal k-W -> W C, DC, Z 1
SUBWF f,d Restar W de f f-W -> d C, DC, Z 1 1, 2
ANDLW k AND W con literal W AND k -> W Z 1
ANDWF f,d AND W con f W AND f -> d Z 1 1, 2
IORLW k OR inclusivo de W W OR k -> W Z 1
con literal
IORWF f,d OR inclusivo de W W OR f -> d Z 1 1, 2
con f
XORWF f,d OR exclusivo de W W XOR k -> W Z 1 1, 2
con literal
XORLW k OR exclusivo de W W XOR f -> d Z 1
con f
INCF f,d Sumar 1 a f f+1 -> f Z 1 1, 2
DECF f,d Restar 1 a f f-1 -> f Z 1 1, 2
RLF f,d Rotar F a la C 1 1, 2
izquierda a través
del bit de Acarreo
RRF f,d Rotar F a la C 1 1, 2
derecha a través del

24
bit de Acarreo
COMF f,d Complementar f f -> d Z 1 1, 2
Instrucciones orientadas a bit
BCF f,b Poner a 0 el bit b 0 -> f(b) 1 1, 2
del registro f
BSF f,b Poner a 1 el bit b 1 -> f(b) 1 1, 2
del registro f
Instrucciones de control de programa
BTFSC f,b Saltar si bit b de Skip if f(b) = 0 1 (2) 3
registro f es 0
BTFSS f,b Saltar si bit b de Skip if f(b) = 1 1 (2) 3
reg. f es 1
DECFSZ f,d Disminuir f en 1. f-1 -> d skip if Z 1 (2) 1, 2,
Saltar si el =1 3
resultado es 0
INCFSZ f,d Incrementar f en 1. f+1 -> d skip if 1 (2) 1, 2,
Saltar si el Z=0 3
resultado es 1
GOTO k Saltar a una k -> PC 2
dirección
CALL k Llamar a una PC -> TOS, k -> 2
subrutina PC
RETURN Retornar de una TOS -> PC 2
subrutina
RETLW k Retornar con literal k -> W, TOS -> 2
en W PC
RETFIE Retornar de una TOS -> PC, 1 -> 2
interrupción GIE
Otras instrucciones
NOP No operación TOS -> PC, 1 -> 1
GIE
CLRWDT Reiniciar el 0 -> WDT, 1 -> TO, PD 1
temporizador perro TO, 1 -> PD
guardián
SLEEP Poner en estado de 0 -> WDT, 1 -> TO, PD 1
reposo TO, 0 -> PD
Tabla 1 2: El set de instrucciones de un PIC de gama media con 35 instrucciones lógicas, de control y
literales.

25
1.7 El microcontrolador PIC16F886

El proyecto de cubo led controlado vía Bluetooth utiliza un microcontrolador


PIC16F886, ya que éste permite controlar por medio de puertos de entrada y salida
todo el funcionamiento del mismo.

Las características son las siguientes:

I. Microcontrolador arquitectura de 8 bits


II. Versión mejorada que reemplaza al 16F876 y al 16F876A
III. Hasta 24 pines I/O disponibles
IV. Memoria de programa flash de 8192 words (4k @ 14bits)
V. RAM de 368 Bytes
VI. EEPROM de datos de 256 Bytes
VII. Velocidad de la CPU 5 MIPS
VIII. Oscilador externo hasta 20 MHz
IX. Oscilador interno de precisión con frecuencia seleccionable entre 31 kHz y 8
MHz
X. ADC de 10 bits y 11 canales
XI. Tecnología nano Watt que brinda características y funciones de bajo consumo
y ahorro de energía
XII. Voltaje de operación 2 V a 5.5 V
XIII. 2 módulos de captura/comparación/PWM
XIV. 2 timers de 8 bits y 1 de 16 bits
XV. EUSART
XVI. MSPP que soporta SPI y I²C
XVII. Múltiples fuentes de interrupción
XVIII. Resistencias de pull-ups en el puerto B programables
XIX. Función MCLR opcional
XX. Brown-out Reset de valor programmable
XXI. Power-on Reset
XXII. Power-up Timer y Oscillator Start-up Timer
XXIII. Soporta 100,000 ciclos de borrado/escritura en memoria flash

26
XXIV. Soporta 1,000,000 ciclos de borrado/escritura en memoria EEPROM
XXV. Retención de datos mayor a 40 años
XXVI. Protección de código y datos programable
XXVII. Encapsulado DIP de 28 pines

Imagen 1.7.1: Microcontrolador PIC16F886, un PIC de


gama media,
https://www.microchip.com/wwwproducts/en/PIC16F886

27
CAPITULO 2: Diodo emisor de luz: Tecnología LED

2.1 El diodo emisor de luz (LED)

El estudio de los diodos emisores de luz ha sido de mucha importancia a través de la


historia debido especialmente a sus aplicaciones. Estas aplicaciones y sus ventajas en
relación a costos y duración, hacen a los diodos emisores de luz dispositivos de gran
interés tanto para la ciencia como para la tecnología. Es de vital importancia para el
ingeniero conocer la curva de emisión y el patrón de radiación cuando realiza el
estudio y diseño de sistemas y circuitos optoelectrónicas para uso en comunicación o
control.

Los Led’s o diodos de emisión de luz siempre se han utilizado en el mundo de la


tecnología como indicadores lumínicos, ya que son dispositivos semiconductores
que emiten luz cuando por el circula una corriente eléctrica. La tecnología LED ha
dado su paso más reciente con los Led’s de luz blanca que son los que pueden
sustituir a las bombillas de luz, principalmente porque consumen menos energía
eléctrica la cual se enfoca al cuidado del medio ambiente. El LED se define por sus
siglas como diodo emisor de luz, no es más que un pequeño chip de material
semiconductor, que cuando es atravesado por una corriente eléctrica, en sentido
apropiado, emite luz monocromática sin producir calor, es decir un componente
electrónico semiconductor, con polaridad por lo que se usará en funciones de
señalización, estética y, actualmente iluminación.

Su estructura consta de un hilo muy fino, entre el cátodo y el ánodo, que podría dar
apariencia de fragilidad, pero no es así; porque no tiene que ponerse incandescente
(de hecho, apenas se calienta) y no está al aire, sino incrustado dentro del epoxi.

28
Imagen 2.1: Estructura del diodo emisor de
2.2 Funcionamiento luz, https://www.tr3sdland.com/2011/11/el-
diodo-led/
El LED es un componente electrónico que pertenece a la familia de los diodos pero
que tiene la propiedad de emitir luz cuando se le aplica una corriente eléctrica. Como
todo Diodo se encuentra construido a base de materiales cuya combinación
determinan tipo de luz, color. En el caso del Diodo LED, se encuentra construido en
base a un diodo se Silicio, el cual se “Dopa” con determinados elementos existentes en
la Tabla Periódica y estos le confieren características específicas, este Dopaje puede
ser de dos Tipos: El Dopaje N y el Dopaje P.

Se aplica voltaje a través del LED de manera que el ánodo sea positivo respecto del
cátodo. Esto causa una corriente de electrones que fluye en este sentido. Así, el
cátodo da electrones a la capa de emisión y el ánodo los sustrae de la capa de
conducción, seguidamente la capa de emisión comienza a cargarse negativamente
(por exceso de electrones), mientras que la capa de conducción se carga con huecos
(por carencia de electrones). Las fuerzas electrostáticas atraen a los electrones y a los
huecos, los unos con los otros, y se recombinan (en el sentido inverso de la carga no
habría recombinación y el dispositivo no funcionaría).

Esto sucede más cerca de la capa de emisión, porque en los semiconductores


orgánicos los huecos se mueven más que los electrones (no ocurre así en los
semiconductores inorgánicos)

Imagen 2.2: Funcionamiento del LED


http://www.asifunciona.com/fisica/af_leds/af_leds_3.h
tm

1. Cátodo (-),
2. Capa de emisión,
3. Emisión de radiación (luz),
4. Capa de conducción,
5. Ánodo (+).

29
2.3 Aplicaciones

Hoy en día de la tecnología led se ha aprovechado su gran economía eléctrica para


ser utilizado en varios dispositivos como luces, linternas, luces para vehículos, mandos
a distancia (leds infrarrojos o IRED), teléfonos móviles e inclusive pantallas, siendo las
pantallas basadas en led la más novedosa y revolucionara forma de utilizar estos
pequeños diodos.

Las tecnologías basadas en OLED no son nuevas relativamente hablando, y hay en el


mercado artículos que las incorporan, como teléfonos móviles. Lo realmente nuevo son
algunas aplicaciones que se les dan y, sobre todo, el comienzo de la comercialización
de productos basados en tecnologías OLED (monitores y televisores, sobre todo),
además algunas tecnologías OLED tienen la capacidad de tener una estructura
flexible, lo que ya ha dado lugar a desarrollar pantallas plegables, y en el futuro quizá
pantallas sobre ropa y tejidos.

Imagen 2.3: Aplicaciones del diodo led,


http://www.eneltec-led.es/news/Aplicaciones-de-iluminaci-n-LED--
nicos.html
Ventajas:
Las principales ventajas que nos presenta la tecnología LED son las siguientes.

 Reducido tamaño a unos pocos milímetros cúbicos


 Reducido consumo de energía generalmente en el orden de 100mw
 Larga vida útil hasta 100.000 horas de vida útil comparada con 8000 horas
de vida útil de una buena lámpara incandescente.
 Con la tecnología LED se produce una menor disipación de calor.
 Sin radiación U.V.

30
Desventajas:
Las principales desventajas que podemos encontrar en el uso de la tecnología Leds
son las siguientes.

 La principal desventaja es su precio, actualmente los Leds son caros en


relación al precio por lumen.
 El diodo Leds depende en gran parte por la temperatura ambiental.
 Los Leds deben ser suministrados con más voltaje requerido y menos de la
corriente necesaria.

2.4 El led Azul ultra brillante


Características:
I. Led Color Azul Ultra brillante de 5mm
II. Incluye 1000 piezas
III. Voltaje de Operación 3-5v
IV. Excelente para proyectos estudiantiles
V. Resistencia de 220 ohm para óptimo funcionamiento del led.

Imagen 2.4: Led azul u ltrabrillante,


http://www.electronicainsurgentes.com.mx/gallery-2.html

31
CAPITULO 3: Comunicación Inalámbrica Bluetooth

3.1 Descripción del Bluetooth

Bluetooth es una tecnología inalámbrica de corto alcance cuyo objetivo es eliminar


cualquier tipo de cable, exceptuando los de alimentación, en los dispositivos, tanto
portátiles como fijos. La traducción de Bluetooth es “diente azul”, y era el
sobrenombre de un rey vikingo llamado Arald Blatand que vivió en el siglo X. Durante
su reinado consiguió unir los reinos de Dinamarca y Noruega, ambos separados por
el mar y enemigos acérrimos entre sí. Once siglos después la compañía Ericsson
puso el nombre de Bluetooth a una nueva tecnología cuyo objetivo era el de mejorar
la conexión entre dispositivos al igual que Arald lo consiguió entre dos países.

La tecnología Bluetooth está pensada para adaptarse a dispositivos de pequeño


tamaño y a muy bajo coste y, por ello, está ampliamente difundida en PDA,
ordenadores portátiles y teléfonos móviles, en general para establecer pequeñas
redes de comunicación, llamadas piconets, mediante las cuales cualquier dispositivo
puede intercambiar información con otro. Tal como se establece en la especificación
de Bluetooth, las características más destacables de esta tecnología son: robustez,
bajo consumo y bajo coste, elementos fundamentales en cualquier tipo de
comunicación. Esta tecnología comprende tanto el hardware como el software
buscando interoperabilidad y compatibilidad con cualquier otro dispositivo Bluetooth,
con total independencia del fabricante. Bluetooth opera en la banda libre de 2,4 GHz,
conocida como ISM (Industrial Scientific and Medical). Con esto se garantiza, en
principio, que cualquier dispositivo pueda trabajar en cualquier parte del mundo. Sin
embargo, existen algunos países, entre los que está España, con una restricción de
frecuencias.

Imagen 3. 1: Símbolo del Bluetooth,


https://omicrono.elespanol.com/2015/
01/origen-simbolo-de-bluetooth/
32
3.2 Funcionamiento del Bluetooth

El Bluetooth funciona en la banda ISM (médico científica internacional), con rangos


que van entre los 2,4 y los 2,5 GHz exceptos en algunos países como Francia,
España y Japón en los cuales hay ciertas restricciones. La banda ISM, es una banda
abierta en todo el mundo que no necesita licencia.

La potencia de transmisión es de hasta 100mW. La distancia nominal en el enlace va


desde 10cm hasta los 10m, pudiéndose alcanzar los 100m si se aumenta
suficientemente la potencia. Cuando un equipo Bluetooth está dentro del radio de
cobertura de otro, estos pueden crear un enlace entre ellos. Hasta ocho unidades
Bluetooth pueden comunicarse entre ellas y forman lo que se denomina una Piconet.
La unión de varias piconets se denomina Scatternet. En todas las piconets sólo
puede haber una unidad maestra que normalmente es quien inicia la conexión, el
resto de unidades Bluetooth se denominan esclavas.

Cada unidad de la piconet utiliza su identidad maestra y reloj nativo para seguir en el
canal de salto. Cuando se establece la conexión, se añade un ajuste de reloj a la
propia frecuencia de reloj nativa de la unidad esclava para poder sincronizarse con el
reloj nativo del maestro. El reloj nativo mantiene siempre constante su frecuencia, sin
embargo, los ajustes producidos por las unidades esclavas para sincronizarse con el
maestro, sólo son válidos mientras dura la conexión.

Dentro de la misma área pueden coexistir diversas piconets ya que cada piconet
tiene una unidad maestra distinta con su propia secuencia de saltos de canales y de
fase. A medida que tenemos más piconets en la misma área de cobertura, la
probabilidad de colisión aumenta produciendo una degradación del espectro y
reduciendo el rendimiento del sistema.

Una unidad Bluetooth puede participar secuencialmente en varias piconets gracias al


sistema TDM (división de tiempo multiplexada). Esto es posible siempre y cuando la
unidad solo esté activa en una piconet a la vez. Para realizar este proceso, la unidad
cuando se incorpora a la nueva piconet debe ajustar el offset de su reloj nativo y
realizar los ajustes de configuración correspondientes a la nueva piconet. Cuando

33
una unidad abandona una piconet, la esclava informa el maestro actual que ésta no
estará disponible por un determinado periodo, que será en el que estará activa en
otra piconet. Una unidad maestra también puede cambiar de piconet, pero en este
caso el tráfico de la piconet en la cual está activa deja de tener tráfico hasta la vuelta
de la unidad maestra. La maestra que entra en una nueva piconet, en principio, lo
hace como esclava, a no ser que posteriormente ésta solicite actuar como maestra.

Imagen 3. 2: Funcionamiento de una scatternet


de tres piconet, http://www.rfwireless-
world.com/Terminology/difference-between-
piconet-and-scatternet-in-bluetooth.html,

34
3.3 Protocolo Bluetooth

Uno de los principales objetivos de la tecnología Bluetooth es conseguir que


aplicaciones de diferentes fabricantes mantengan una comunicación fluida. Para
conseguirlo, receptor y transmisor deben ejecutarse sobre la misma pila de
protocolos.

Imagen 3. 3: Pila de protocolo Bluetooth,


https://www.electronicafacil.net/tutoriales/P
rotocolos-Bluetooth.php

La pila está constituida por dos clases de protocolos. Una primera clase llamada de
protocolos específicos que implementa los protocolos propios de Bluetooth. Y una
segunda clase formada por el conjunto de protocolos adoptados de otras
especificaciones. Esta división en clases en el diseño de la pila de protocolos de
Bluetooth permite aprovechar un conjunto muy amplio de ventajas de ambas. Por un
lado, al implementar protocolos específicos de Bluetooth permite utilizar los
beneficios que aporta la adopción de la tecnología Bluetooth. Por otro lado, la
utilización de protocolos no específicos ofrece la ventaja de la interacción de esta
tecnología con protocolos comerciales ya existentes. Así como la posibilidad de que
Bluetooth este abierto a implementaciones libres o nuevos protocolos de aplicación
de uso común. La pila de protocolos se puede dividir en cuatro capas lógicas:

I. Núcleo de Bluetooth: Radio, Banda Base, LMP, L2CAP, SDP


II. Sustitución de cable: RFCOMM
III. Protocolos adoptados: PPP, UDP, TCP, IP, OBEX, WAP, IRMC, WAE
IV. Control de Telefonica: TCS-binary, AT-Commands

35
3.4 Arquitectura Bluetooth

Una comunicación Bluetooth ocurre entre la capa radio de un maestro y la capa radio
de un esclavo. Las especificaciones radio de uno y otro agente son simétricas, de
esta forma el mismo dispositivo puede operar como maestro y como esclavo al
mismo tiempo, en distintas piconets. Cada interfaz radio tiene una dirección única de
48 bits, BD_ADDR. Si unimos al menos un maestro y varios esclavos (hasta 7
esclavos) tenemos una red ad-hoc, llamada piconet. Todas las unidades de una
misma piconet, comparten un mismo canal.

Imagen 3. 4: Piconet formado por un maestro y en esclavo,


http://hearinghealthmatters.org/waynesworld/2013/bluetooth-
101-part-iii/

Para identificar un dispositivo activo dentro de una piconets, usamos una dirección
de bits AM_ADDR. Este valor no es fijo y cambia de dispositivo cuando alguno se
desconecta.

El maestro es el único capaz de iniciar un enlace de comunicaciones BT. Sin


embargo, una vez la comunicación se ha establecido, el esclavo puede solicitar un
cambio para convertirse en maestro.

La comunicación nunca ocurre entre esclavos, siempre tienen que ser entre un
maestro y un esclavo. Por otro lado, el esclavo de una piconet debe sincronizar su
reloj interno y su tasa de saltos en frecuencia, ya que como hemos comentado, en
cada piconet se usa una secuencia de frequency hopping diferente.

36
3.5 Módulo Bluetooth HC05

Para poder controlar el cubo led de una manera inalámbrica optamos por la
comunicación Bluetooth, mediante el módulo Bluetooth HC05 que nos permite crear
una piconet maestro esclavo, de ésta manera el microcontrolador actúa como
esclavo y cualquier dispositivo inteligente como maestro. El módulo ofrece el servicio
de puerto serie (RFCOMM), creando un enlace de datos transparente entre una PC,
Celular, Tablet o cualquier dispositivo con Bluetooth maestro y el microcontrolador. La
salida del módulo es una señal serial asíncrona a 9600 baudios que puede ser
recibida e interpretada fácilmente por cualquier microcontrolador.

Las principales características del módulo Bluetooth son las siguientes:

V. Funciona como dispositivo maestro y esclavo Bluetooth


VI. Configurable mediante comandos AT
VII. Bluetooth V2.0+EDR
VIII. Frecuencia de operación: 2.4 GHz Banda ISM
IX. Modulation: GFSK (Gaussian Frequency Shift Keying)
X. Potencia de transmisión: <=4dBm, Class 2
XI. Sensibilidad: <=-84dBm @ 0.1% BER
XII. Seguridad: Autenticación y Encriptación
XIII. Perfiles Bluetooth: Puerto serie Bluetooth.
XIV. Distancia de hasta 10 metros en condiciones óptimas del ambiente

Imagen 3. 5: Modulo Bluetooth HC05,


https://www.prometec.net/producto/modul
o-bluetooth-hc-05/#

37
CAPITULO 4: Prototipo de cubo led

En este capítulo se desarrolla la estructuración de forma cúbica del prototipo cubo


led, se formaron caras compuestas por 36 diodos así formando un cuadrado de seis
elementos por lado, pero para su elaboración se necesitaron herramientas,
instrumentos y materiales. A continuación, la lista de materiales utilizados:

Materiales
 Microcontrolador PIC 16F886
 216 LED azul ultra brillante
 Placa Fenólica una cara virgen (30x20CM) y (20x20CM)
 Soldadura de estaño 22mm
 Cautín de punta
 Pasta de soldar
 Multiplexor 74164 (8bits)
 Resistencia de valor 330, 220 (ohm)
 Alambre de cobre calibre 14
 Jumper de conexión macho y hembra
 Modulo Bluetooth HC-05

Imagen 4. 1: Material utilizado para la elaboración


del cubo led

38
4.1 Construcción del prototipo

Primeramente se creó el prototipo de una estructura cúbica de 216 les azul ultra
brillantes, para ello se realizaron 6 cuadrados de 36 diodos, ocupando así cartón que
permitió ubicar a cada led por medio de coordenadas en el cuadrado. Quedo de la
siguiente manera:

Imagen 4.1.2 Cara con treinta y seis leds

Se soldaron con ayuda de alambre de cobre y estaño, la separación entre cada


elemento equivale a 1CM, la cara queda de la siguiente manera:

Imagen 4.1.3 Cara con treinta y seis soldado

39
4.2 Construcción de la estructura cúbica

Ya teniendo los 6 cuadrados de leds se pasó a crear una estructura con ellos,
montando uno encima de otro y uniendo los puntos comunes y de señales.

Se colocaron los LED mediante los jumperes, formando así un cubo de 6x6x6 Leds.
Para facilitar su control se construyó el cubo de tal modo que se compone por planos
verticales individuales que permiten que 36 LED compartan un ánodo en común, al
igual que los cátodos, pero estos últimos formando filas verticales (LED Cube
Manual).

Dado que sólo se enciende únicamente un LED a la vez, de acuerdo con la ley de
Ohm, se requiere aplicar un voltaje de 7.1 V para alimentar el sistema usan- do
resistencias de 330 Ω para limitar la corriente de cada fila de 20 LED (dos filas
verticales). En la base de cada transistor se conectaron resistencias de 1 K, para
lograr la polarización y operación adecuada.

Imagen 4.2 Estructura de cubo LED, 6x6x6

Después de armar la estructura cúbica de 216, se controló por medio de placas


diseñadas en el software proteus y se programó el cubo con lenguaje ensamblador
el compilador mplab IDE. Así se realizó el proyecto.

40
CAPITULO 5: Diseño Electrónico del prototipo cubo LED

5.1 Diseño del diagrama en ISIS

En éste capítulo se trata el diseño electrónico mediante el uso del software Proteus 8
para ello se diseña el circuito implementando la herramienta de diseño ISIS de
Proteus, en ella misma se puede simular el funcionamiento del prototipo.

Proteus es un software de licencia libre, esto quiere decir que es completamente


abierto al público y gratis. En el existen herramientas de diseño de placas conocidas
como PCBs y de simulación de circuitos eléctricos.

Lo primero es diseñar el circuito en la herramienta ISIS, para ello es necesario


asignar los componentes que se ocuparán, en éste caso los componentes son:

I. Microcontrolador PIC16F886
II. Pines o TBLOCK (2, 6) unidades
III. Registro de corrimiento 74164

Lo siguiente es conectar los componentes en la forma en la que se deseé, o poner


en diagrama el circuito. El microcontrolador junto a los registros quedó de la
siguiente manera:

Imagen 5.1 Diagrama ISIS del circuito de control cubo led

41
5.2 Diseño del PCB ARES

El siguiente paso que precede al diseño de la placa es la realización del PCB o


circuito impreso de las siglas en ingles, Printed Circuit Board, para ello utilizamos la
herramienta llamada ARES, en ésta iniciamos configurando el área rectangular que
ocupará el circuito en placa con Board Edge, se delimita el área y se ordenan de tal
manera que, se eviten los cruces entre líneas de comunicación ya sea de señal o
voltaje, y luego se da click en la herramienta Auto Router, después de hacer esto la
placa nos quedó de la siguiente manera.

Imagen 5.2 pistas de la placa PCB

42
CAPITULO 6: Programación en MPLAB con lenguaje ensamblador

En este capítulo se trata la programación el lenguaje ensamblador del proyecto, el


compilador que se utilizo es mplab IDE, la programación es la continuación en ella
están las tres rutinas anteriormente descritas.

Primero se inicializa el proyecto, en él se coloca el microcontrolador utilizado,


Segundo, se configura el PIC internamente activando y desactivando ciertas
características, por último, se empieza a escribir las líneas de código.

list p=16f886; list directive to RETLW B'11110011'


RETLW B'00001100'
define processor
RETLW B'00000000'
#include <p16f886.inc>; processor TABLA_P
specific variable definitions ADDWF PCL,1
RETLW B'11111111'
__CONFIG _CONFIG1, _LVP_OFF & RETLW B'00111100'
_FCMEN_ON & _IESO_OFF & _BOR_OFF & RETLW B'00000000'
_CPD_OFF & _CP_OFF & _MCLRE_OFF & RETLW B'11000011'
_PWRTE_ON & _WDT_OFF & RETLW B'00000000'
_INTRC_OSC_NOCLKOUT TABLA_N
__CONFIG _CONFIG2, _WRT_OFF & ADDWF PCL,1
_BOR21V RETLW B'11001111'
RETLW B'00100000'
RESET_VECTOR CODE 0x0000; processor RETLW B'00000000'
reset vector RETLW B'01000000'
nop RETLW B'00110000'

goto start; go to beginning of program ;;;;;;;;;;;;;;;;;;;;RUTINA DE LINEA;;;;;;;;;;;;;;;;;;;

INT_VECTOR CODE 0x0004; interrupt TABLA_UNO


vector location ADDWF PCL,1
RETLW B'11101111'
MAIN_PROG CODE RETLW B'11111011'
RETLW B'10111110'
;;;;;;;;;;;;;;;;;;RUTINA DE IPN;;;;;;;;;;;;;;;;;;;;;;
RETLW B'11101111'
TABLA_I RETLW B'11111011'
ADDWF PCL,1
TABLA_DOS
RETLW B'00001111'
ADDWF PCL,1
RETLW B'00000000'

43
RETLW B'11011111' TABLA_OCHO
RETLW B'11110111' ADDWF PCL,1
RETLW B'01111101' RETLW B'11111111'
RETLW B'11011111' RETLW B'00000011'
RETLW B'11110111' RETLW B'11111111'
RETLW B'11111111'
TABLA_TRES
RETLW B'11111111'
ADDWF PCL,1
RETLW B'10111111' TABLA_NUEVE
RETLW B'11101111' ADDWF PCL,1
RETLW B'11111011' RETLW B'11111111'
RETLW B'10111110' RETLW B'11111111'
RETLW B'11101111' RETLW B'11000000'
RETLW B'11111111'
TABLA_CUATRO
RETLW B'11111111'
ADDWF PCL,1
RETLW B'01111111' TABLA_DIEZ
RETLW B'11011111' ADDWF PCL,1
RETLW B'11110111' RETLW B'11111111'
RETLW B'01111101' RETLW B'11111111'
RETLW B'11011111' RETLW B'00111111'
RETLW B'11110000'
TABLA_CINCO
RETLW B'11111111'
ADDWF PCL,1
RETLW B'11111111' TABLA_ONCE
RETLW B'10111110' ADDWF PCL,1
RETLW B'11101111' RETLW B'11111111'
RETLW B'11111011' RETLW B'11111111'
RETLW B'10111110' RETLW B'11111111'
RETLW B'00001111'
TABLA_SEIS
RETLW B'11111100'
ADDWF PCL,1
RETLW B'11111111' TABLA_DOCE
RETLW B'01111101' ADDWF PCL,1
RETLW B'11011111' RETLW B'11111111'
RETLW B'11110111' RETLW B'11111111'
RETLW B'01111101' RETLW B'11111111'
RETLW B'11111111'
TABLA_SIETE
RETLW B'00000011'
ADDWF PCL,1
RETLW B'00001111' ;;;;;;;;;;;;;;;;;;;;;RUTINA DE PARED;;;;;;;;;;;;;;;;;;
RETLW B'11111100'
TABLA_UNO0
RETLW B'11111111'
ADDWF PCL,1
RETLW B'11111111'
RETLW B'11111111'
RETLW B'11111111'
RETLW B'10111101'
RETLW B'11110111'

44
RETLW B'11011110' RETLW B'11111001'
RETLW B'11111011' RETLW B'11111001'
RETLW B'11111100'
TABLA_UNO1
ADDWF PCL,1 TABLA_UNO7
RETLW B'11111111' ADDWF PCL,1
RETLW B'11011110' RETLW B'11111111'
RETLW B'11110111' RETLW B'11111111'
RETLW B'10111110' RETLW B'11111000'
RETLW B'11110111' RETLW B'11110001'
RETLW B'11111111'
TABLA_UNO2
ADDWF PCL,1 TABLA_UNO8
RETLW B'01111111' ADDWF PCL,1
RETLW B'11011110' RETLW B'11111111'
RETLW B'11110111' RETLW B'11111111'
RETLW B'10111110' RETLW B'00000111'
RETLW B'11101111' RETLW B'11111110'
RETLW B'11111111'
TABLA_UNO3
ADDWF PCL,1 TABLA_UNO9
RETLW B'10111111' ADDWF PCL,1
RETLW B'11101111' RETLW B'11111111'
RETLW B'11111011' RETLW B'01111111'
RETLW B'01111101' RETLW B'01100111'
RETLW B'11011111'
RETLW B'11101110'
TABLA_UNO4 RETLW B'11111111'
ADDWF PCL,1
;;;;;;;;;;;;;;;;;;;;;;;;;LINEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RETLW B'11011111'
RETLW B'11101111' SEGUNDA
RETLW B'11111011' CLRF 0X22
RETLW B'01111101' MOVLW D'5' ;NUMERO DE DATOS QUE
RETLW B'10111111' HAY EN LAS TABLAS
MOVWF 0X24
TABLA_UNO5
ADDWF PCL,1 RETROCESO
RETLW B'11101111' MOVLW D'8';VECES QUE SE VA A
RETLW B'11110111' ROTAR
RETLW B'11111011' MOVWF 0X25
RETLW B'11111101' MOVFW 0X22 ; PARA LLAMAR A LAS
RETLW B'01111110' TABLAS
CALL TABLA_UNO
TABLA_UNO6
MOVWF 0X26 ;MOVER EL DATO DE LA
ADDWF PCL,1
TABLA A LA LOCALIDAD
RETLW B'11111111'
RETLW B'11111011'

45
NEW NEW2
RRF 0X26 ; ROTAR RRF 0X26 ; ROTAR
BTFSS STATUS,C BTFSS STATUS,C
GOTO CERO GOTO CERO2
BSF PORTC,1 BSF PORTC,1
REPETIR2
REPETIR
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK
CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN
BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK
PULSO AL CLOCK
DECFSZ 0X25
DECFSZ 0X25
GOTO NEW2
GOTO NEW
INCF 0X22
INCF 0X22
DECFSZ 0X24
DECFSZ 0X24
GOTO RETROCESO2
GOTO RETROCESO
BSF PORTC,2 ;PRENDO PARA DAR PULSO
BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO
AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO
DATO MANDADO
MOVLW B'00000100'
MOVLW B'00000100'
MOVWF PORTA
MOVWF PORTA
GOTO SEGUNDA2
;GOTO SEGUNDA
RETURN
RETURN
CERO2
CERO
BCF PORTC,1
BCF PORTC,1
GOTO REPETIR2
GOTO REPETIR

SEGUNDA3
SEGUNDA2
CLRF 0X22
CLRF 0X22
MOVLW D'5' ;NUMERO DE DATOS QUE
MOVLW D'5' ;NUMERO DE DATOS QUE
HAY EN LAS TABLAS
HAY EN LAS TABLAS
MOVWF 0X24
MOVWF 0X24
RETROCESO3
RETROCESO2
MOVLW D'8';VECES QUE SE VA A
MOVLW D'8';VECES QUE SE VA A
ROTAR
ROTAR
MOVWF 0X25
MOVWF 0X25
MOVFW 0X22 ; PARA LLAMAR A LAS
MOVFW 0X22 ; PARA LLAMAR A LAS
TABLAS
TABLAS
CALL TABLA_TRES
CALL TABLA_DOS
MOVWF 0X26 ;MOVER EL DATO DE LA
MOVWF 0X26 ;MOVER EL DATO DE LA
TABLA A LA LOCALIDAD
TABLA A LA LOCALIDAD

46
NEW3 NEW4
RRF 0X26 ; ROTAR RRF 0X26 ; ROTAR
BTFSS STATUS,C BTFSS STATUS,C
GOTO CERO3 GOTO CERO4
BSF PORTC,1 BSF PORTC,1

REPETIR3 REPETIR4
BSF PORTC,0 ;PRENDO PARA DAR CLOCK BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK PULSO AL CLOCK
DECFSZ 0X25 DECFSZ 0X25
GOTO NEW3 GOTO NEW4
INCF 0X22 INCF 0X22
DECFSZ 0X24 DECFSZ 0X24
GOTO RETROCESO3 GOTO RETROCESO4
BSF PORTC,2 ;PRENDO PARA DAR PULSO BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO DATO MANDADO
MOVLW B'00000100' MOVLW B'00000100'
MOVWF PORTA MOVWF PORTA
GOTO SEGUNDA3 GOTO SEGUNDA4
RETURN RETURN

CERO3 CERO4
BCF PORTC,1 BCF PORTC,1
GOTO REPETIR3 GOTO REPETIR4

SEGUNDA4 SEGUNDA5
CLRF 0X22 CLRF 0X22
MOVLW D'5' ;NUMERO DE DATOS QUE MOVLW D'5' ;NUMERO DE DATOS QUE
HAY EN LAS TABLAS HAY EN LAS TABLAS
MOVWF 0X24 MOVWF 0X24

RETROCESO4 RETROCESO5
MOVLW D'8';VECES QUE SE VA A MOVLW D'8';VECES QUE SE VA A
ROTAR ROTAR
MOVWF 0X25 MOVWF 0X25
MOVFW 0X22 ; PARA LLAMAR A LAS MOVFW 0X22 ; PARA LLAMAR A LAS
TABLAS TABLAS
CALL TABLA_CUATRO CALL TABLA_CINCO
MOVWF 0X26 ;MOVER EL DATO DE LA MOVWF 0X26 ;MOVER EL DATO DE LA
TABLA A LA LOCALIDAD TABLA A LA LOCALIDAD

47
NEW5 NEW6
RRF 0X26 ; ROTAR RRF 0X26 ; ROTAR
BTFSS STATUS,C BTFSS STATUS,C
GOTO CERO5 GOTO CERO6
BSF PORTC,1 BSF PORTC,1

REPETIR5 REPETIR6
BSF PORTC,0 ;PRENDO PARA DAR CLOCK BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK PULSO AL CLOCK
DECFSZ 0X25 DECFSZ 0X25
GOTO NEW5 GOTO NEW6
INCF 0X22 INCF 0X22
DECFSZ 0X24 DECFSZ 0X24
GOTO RETROCESO5 GOTO RETROCESO6
BSF PORTC,2 ;PRENDO PARA DAR PULSO BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO DATO MANDADO
MOVLW B'00000100' MOVLW B'00000100'
MOVWF PORTA MOVWF PORTA
GOTO SEGUNDA5 GOTO SEGUNDA6
RETURN RETURN

CERO5 CERO6
BCF PORTC,1 BCF PORTC,1
GOTO REPETIR5 GOTO REPETIR6

SEGUNDA6 SEGUNDA7
CLRF 0X22 CLRF 0X22
MOVLW D'5' ;NUMERO DE DATOS QUE MOVLW D'5' ;NUMERO DE DATOS QUE
HAY EN LAS TABLAS HAY EN LAS TABLAS
MOVWF 0X24 MOVWF 0X24

RETROCESO6
RETROCESO7
MOVLW D'8';VECES QUE SE VA A
MOVLW D'8';VECES QUE SE VA A
ROTAR
ROTAR
MOVWF 0X25
MOVWF 0X25
MOVFW 0X22 ; PARA LLAMAR A LAS
MOVFW 0X22 ; PARA LLAMAR A LAS
TABLAS
TABLAS
CALL TABLA_SEIS
CALL TABLA_SIETE
MOVWF 0X26 ;MOVER EL DATO DE LA
MOVWF 0X26 ;MOVER EL DATO DE LA
TABLA A LA LOCALIDAD
TABLA A LA LOCALIDAD

48
NEW7 NEW8
RRF 0X26 ; ROTAR RRF 0X26 ; ROTAR
BTFSS STATUS,C BTFSS STATUS,C
GOTO CERO7 GOTO CERO8
BSF PORTC,1 BSF PORTC,1

REPETIR7 REPETIR8
BSF PORTC,0 ;PRENDO PARA DAR CLOCK BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK PULSO AL CLOCK
DECFSZ 0X25 DECFSZ 0X25
GOTO NEW7 GOTO NEW8
INCF 0X22 INCF 0X22
DECFSZ 0X24 DECFSZ 0X24
GOTO RETROCESO7 GOTO RETROCESO8
BSF PORTC,2 ;PRENDO PARA DAR PULSO BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO DATO MANDADO
MOVLW B'00000100' MOVLW B'00000100'
MOVWF PORTA MOVWF PORTA
;GOTO SEGUNDA5 GOTO SEGUNDA5
RETURN RETURN

CERO7 CERO8
BCF PORTC,1 BCF PORTC,1
GOTO REPETIR7 GOTO REPETIR8

SEGUNDA8 SEGUNDA9
CLRF 0X22 CLRF 0X22
MOVLW D'5' ;NUMERO DE DATOS QUE MOVLW D'5' ;NUMERO DE DATOS QUE
HAY EN LAS TABLAS HAY EN LAS TABLAS
MOVWF 0X24 MOVWF 0X24

RETROCESO8 RETROCESO9
MOVLW D'8';VECES QUE SE VA A MOVLW D'8';VECES QUE SE VA A
ROTAR ROTAR
MOVWF 0X25 MOVWF 0X25
MOVFW 0X22 ; PARA LLAMAR A LAS MOVFW 0X22 ; PARA LLAMAR A LAS
TABLAS TABLAS
CALL TABLA_OCHO CALL TABLA_NUEVE
MOVWF 0X26 ;MOVER EL DATO DE LA MOVWF 0X26 ;MOVER EL DATO DE LA
TABLA A LA LOCALIDAD TABLA A LA LOCALIDAD

49
NEW9 SEGUNDA10
RRF 0X26 ; ROTAR CLRF 0X22
BTFSS STATUS,C MOVLW D'5' ;NUMERO DE DATOS QUE
GOTO CERO9 HAY EN LAS TABLAS
BSF PORTC,1 MOVWF 0X24

REPETIR9
RETROCESO10
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
MOVLW D'8';VECES QUE SE VA A
CALL CLK ;LLAMO AL CLOCK
ROTAR
BCF PORTC,0 ; APAGO PARA DAR UN
MOVWF 0X25
PULSO AL CLOCK
MOVFW 0X22 ; PARA LLAMAR A LAS
DECFSZ 0X25
TABLAS
GOTO NEW9
CALL TABLA_DIEZ
INCF 0X22
MOVWF 0X26 ;MOVER EL DATO DE LA
DECFSZ 0X24
TABLA A LA LOCALIDAD
GOTO RETROCESO9
BSF PORTC,2 ;PRENDO PARA DAR PULSO NEW10
AL LATCH Y QUE SE VISUALISE EL DATO RRF 0X26 ; ROTAR
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL BTFSS STATUS,C
DATO MANDADO GOTO CERO10
MOVLW B'00000100' BSF PORTC,1
MOVWF PORTA
REPETIR10
GOTO SEGUNDA5
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
RETURN
CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN
CERO9 PULSO AL CLOCK
BCF PORTC,1 DECFSZ 0X25
GOTO REPETIR9 GOTO NEW10
INCF 0X22
DECFSZ 0X24
GOTO RETROCESO10
BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO
MOVLW B'00000100'
MOVWF PORTA
GOTO SEGUNDA5
RETURN

CERO10
BCF PORTC,1
GOTO REPETIR10

50
SEGUNDA11 SEGUNDA12
CLRF 0X22 CLRF 0X22
MOVLW D'5' ;NUMERO DE DATOS QUE MOVLW D'5' ;NUMERO DE DATOS QUE
HAY EN LAS TABLAS HAY EN LAS TABLAS
MOVWF 0X24 MOVWF 0X24

RETROCESO11
RETROCESO12
MOVLW D'8';VECES QUE SE VA A
MOVLW D'8';VECES QUE SE VA A
ROTAR
ROTAR
MOVWF 0X25
MOVWF 0X25
MOVFW 0X22 ; PARA LLAMAR A LAS
MOVFW 0X22 ; PARA LLAMAR A LAS
TABLAS
TABLAS
CALL TABLA_ONCE
CALL TABLA_DOCE
MOVWF 0X26 ;MOVER EL DATO DE LA
MOVWF 0X26 ;MOVER EL DATO DE LA
TABLA A LA LOCALIDAD
TABLA A LA LOCALIDAD
NEW11
NEW12
RRF 0X26 ; ROTAR
RRF 0X26 ; ROTAR
BTFSS STATUS,C
BTFSS STATUS,C
GOTO CERO11
GOTO CERO5
BSF PORTC,1
BSF PORTC,1
REPETIR11
REPETIR12
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK
CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN
BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK
PULSO AL CLOCK
DECFSZ 0X25
DECFSZ 0X25
GOTO NEW11
GOTO NEW12
INCF 0X22
INCF 0X22
DECFSZ 0X24
DECFSZ 0X24
GOTO RETROCESO11
GOTO RETROCESO12
BSF PORTC,2 ;PRENDO PARA DAR PULSO
BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO
AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
MOVLW B'00000100' DATO MANDADO
MOVWF PORTA MOVLW B'00000100'
GOTO SEGUNDA5 MOVWF PORTA
RETURN GOTO SEGUNDA5
RETURN
CERO11
BCF PORTC,1 CERO12
GOTO REPETIR11 BCF PORTC,1
GOTO REPETIR12

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IPN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

51
PRIMERA1 MOVLW D'5' ;NUMERO DE DATOS QUE
CLRF 0X22 HAY EN LAS TABLAS
MOVLW D'5' ;NUMERO DE DATOS QUE MOVWF 0X24
HAY EN LAS TABLAS
RETROCESOPRIMERA2
MOVWF 0X24
MOVLW D'8';VECES QUE SE VA A
ROTAR
RETROCESOPRIMERA
MOVWF 0X25
MOVLW D'8';VECES QUE SE VA A
MOVFW 0X22 ; PARA LLAMAR A LAS
ROTAR
TABLAS
MOVWF 0X25
CALL TABLA_P
MOVFW 0X22 ; PARA LLAMAR A LAS
MOVWF 0X26 ;MOVER EL DATO DE LA
TABLAS
TABLA A LA LOCALIDAD
CALL TABLA_I
MOVWF 0X26 ;MOVER EL DATO DE LA NEWPRIMERA2
TABLA A LA LOCALIDAD RRF 0X26 ; ROTAR
BTFSS STATUS,C
NEWPRIMERA
GOTO CEROPRIMERA2
RRF 0X26 ; ROTAR
BSF PORTC,1
BTFSS STATUS,C
GOTO CEROPRIMERA REPETIRPRIMERA2
BSF PORTC,1 BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK
REPETIRPRIMERA
BCF PORTC,0 ; APAGO PARA DAR UN
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
PULSO AL CLOCK
CALL CLK ;LLAMO AL CLOCK
DECFSZ 0X25
BCF PORTC,0 ; APAGO PARA DAR UN
GOTO NEWPRIMERA2
PULSO AL CLOCK
INCF 0X22
DECFSZ 0X25
DECFSZ 0X24GOTO RETROCESOPRIMERA2
GOTO NEWPRIMERA
BSF PORTC,2 ;PRENDO PARA DAR PULSO
INCF 0X22
AL LATCH Y QUE SE VISUALISE EL DATO
DECFSZ 0X24
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
GOTO RETROCESOPRIMERA
DATO MANDADO
BSF PORTC,2 ;PRENDO PARA DAR PULSO
RETURN
AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL CEROPRIMERA2
DATO MANDADO BCF PORTC,1
RETURN GOTO REPETIRPRIMERA2

CEROPRIMERA
BCF PORTC,1 PRIMERA3
GOTO REPETIRPRIMERA CLRF 0X22
MOVLW D'5' ;NUMERO DE DATOS QUE
HAY EN LAS TABLAS
PRIMERA2 MOVWF 0X24
CLRF 0X22

52
RETROCESOPRIMERA3 MOVWF 0X25
MOVLW D'8';VECES QUE SE VA A MOVFW 0X22 ; PARA LLAMAR A LAS
ROTAR TABLAS
MOVWF 0X25 CALL TABLA_UNO0
MOVFW 0X22 ; PARA LLAMAR A LAS MOVWF 0X26 ;MOVER EL DATO DE LA
TABLAS TABLA A LA LOCALIDAD
CALL TABLA_N
NEW20
MOVWF 0X26 ;MOVER EL DATO DE LA
RRF 0X26 ; ROTAR
TABLA A LA LOCALIDAD
BTFSS STATUS,C
NEWPRIMERA3 GOTO CERO20
RRF 0X26 ; ROTAR BSF PORTC,1
BTFSS STATUS,C
REPETIR20
GOTO CEROPRIMERA3
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
BSF PORTC,1
CALL CLK ;LLAMO AL CLOCK
REPETIRPRIMERA3 BCF PORTC,0 ; APAGO PARA DAR UN
BSF PORTC,0 ;PRENDO PARA DAR PULSO AL CLOCK
CLOCKCALL DECFSZ 0X25
CLK ;LLAMO AL CLOCK GOTO NEW20
BCF PORTC,0 ; APAGO PARA DAR UN INCF 0X22
PULSO AL CLOCK DECFSZ 0X24
DECFSZ 0X25 GOTO RETROCESO20
GOTO NEWPRIMERA3 BSF PORTC,2 ;PRENDO PARA DAR PULSO
INCF 0X22 AL LATCH Y QUE SE VISUALISE EL DATO
DECFSZ 0X24 BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
GOTO RETROCESOPRIMERA3 DATO MANDADO
BSF PORTC,2 ;PRENDO PARA DAR PULSO MOVLW B'11111111'
AL LATCH Y QUE SE VISUALISE EL DATO MOVWF PORTA
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL GOTO SEGUNDA
DATO MANDADO RETURN
RETURN
CERO20
CEROPRIMERA3 BCF PORTC,1
BCF PORTC,1 GOTO REPETIR20
GOTO REPETIRPRIMERA3

;;;;;;;;;;;;;;;;;;;;;;;;;PARED;;;;;;;;;;;;;;;;;;;;;;;;;;;
TERCERA21
TERCERA20 CLRF 0X22
CLRF 0X22 MOVLW D'5' ;NUMERO DE DATOS QUE
MOVLW D'5' ;NUMERO DE DATOS QUE HAY EN LAS TABLAS
HAY EN LAS TABLAS MOVWF 0X24
MOVWF 0X24 RETROCESO21
RETROCESO20 MOVLW D'8';VECES QUE SE VA A
MOVLW D'8';VECES QUE SE VA A ROTAR
ROTAR MOVWF 0X25

53
MOVFW 0X22 ; PARA LLAMAR A LAS TABLAS
TABLAS CALL TABLA_UNO2
CALL TABLA_UNO1 MOVWF 0X26 ;MOVER EL DATO DE LA
MOVWF 0X26 ;MOVER EL DATO DE LA TABLA A LA LOCALIDAD
TABLA A LA LOCALIDAD
NEW22
NEW21 RRF 0X26 ; ROTAR
RRF 0X26 ; ROTAR BTFSS STATUS,C
BTFSS STATUS,C GOTO CERO22
GOTO CERO21 BSF PORTC,1
BSF PORTC,1
REPETIR22
REPETIR21_
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK
CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN
BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK
PULSO AL CLOCK
DECFSZ 0X25
DECFSZ 0X25
GOTO NEW22
GOTO NEW21
INCF 0X22
INCF 0X22
DECFSZ 0X24
DECFSZ 0X24
GOTO RETROCESO22
GOTO RETROCESO21
BSF PORTC,2 ;PRENDO PARA DAR PULSO
BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO
AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO
DATO MANDADO
MOVLW B'11111111'
MOVLW B'11111111'
MOVWF PORTA
MOVWF PORTA
GOTO SEGUNDA
GOTO SEGUNDA
RETURN
RETURN

CERO21 CERO22
BCF PORTC,1 BCF PORTC,1
GOTO REPETIR21 GOTO REPETIR22

TERCERA23
CLRF 0X22
TERCERA22 MOVLW D'5' ;NUMERO DE DATOS QUE
CLRF 0X22 HAY EN LAS TABLAS
MOVLW D'5' ;NUMERO DE DATOS QUE MOVWF 0X24
HAY EN LAS TABLAS
MOVWF 0X24 RETROCESO23
RETROCESO22 MOVLW D'8';VECES QUE SE VA A
MOVLW D'8';VECES QUE SE VA A ROTAR
ROTAR MOVWF 0X25
MOVWF 0X25 MOVFW 0X22 ; PARA LLAMAR A LAS
MOVFW 0X22 ; PARA LLAMAR A LAS TABLAS

54
CALL TABLA_UNO3 MOVWF 0X26 ;MOVER EL DATO DE LA
MOVWF 0X26 ;MOVER EL DATO DE LA TABLA A LA LOCALIDAD
TABLA A LA LOCALIDAD
NEW24
NEW23
RRF 0X26 ; ROTAR
RRF 0X26 ; ROTAR
BTFSS STATUS,C
BTFSS STATUS,C
GOTO CERO24[
GOTO CERO23
BSF PORTC,1
BSF PORTC,1

REPETIR23 REPETIR24
BSF PORTC,0 ;PRENDO PARA DAR CLOCK BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK[ PULSO AL CLOCK
DECFSZ 0X25 DECFSZ 0X25
GOTO NEW23 GOTO NEW25
INCF 0X22 INCF 0X22
DECFSZ 0X24 DECFSZ 0X24
GOTO RETROCESO23 GOTO RETROCESO24
BSF PORTC,2 ;PRENDO PARA DAR PULSO BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO DATO MANDADO
MOVLW B'11111111' MOVLW B'11111111'
MOVWF PORTA MOVWF PORTA
GOTO SEGUNDA GOTO SEGUNDA
RETURN RETURN

CERO23 CERO24
BCF PORTC,1 BCF PORTC,1
GOTO REPETIR23 GOTO REPETIR24

TERCERA24 TERCERA25
CLRF 0X22 CLRF 0X22
MOVLW D'5' ;NUMERO DE DATOS QUE MOVLW D'5' ;NUMERO DE DATOS QUE
HAY EN LAS TABLAS HAY EN LAS TABLAS
MOVWF 0X24 MOVWF 0X24
RETROCESO24 RETROCESO25
MOVLW D'8';VECES QUE SE VA A MOVLW D'8';VECES QUE SE VA A
ROTAR ROTAR
MOVWF 0X25 MOVWF 0X25
MOVFW 0X22 ; PARA LLAMAR A LAS MOVFW 0X22 ; PARA LLAMAR A LAS
TABLAS TABLAS
CALL TABLA_UNO4 CALL TABLA_UNO5

55
MOVWF 0X26 ;MOVER EL DATO DE LA MOVWF 0X26 ;MOVER EL DATO DE LA
TABLA A LA LOCALIDAD TABLA A LA LOCALIDAD

NEW25 NEW26
RRF 0X26 ; ROTAR RRF 0X26 ; ROTAR
BTFSS STATUS,C BTFSS STATUS,C
GOTO CERO25 GOTO CERO26
BSF PORTC,1 BSF PORTC,1

REPETIR25 REPETIR26
BSF PORTC,0 ;PRENDO PARA DAR CLOCK BSF PORTC,0 ;PRENDO PARA DAR CLOCK
CALL CLK ;LLAMO AL CLOCK CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK PULSO AL CLOCK
DECFSZ 0X25 DECFSZ 0X25
GOTO NEW25 GOTO NEW26
INCF 0X22 INCF 0X22
DECFSZ 0X24 DECFSZ 0X24
GOTO RETROCESO25 GOTO RETROCESO26
BSF PORTC,2 ;PRENDO PARA DAR PULSO BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO DATO MANDADO
MOVLW B'11111111' MOVLW B'11111111'
MOVWF PORTA MOVWF PORTA
GOTO SEGUNDA GOTO SEGUNDA
RETURN RETURN

CERO25 CERO26
BCF PORTC,1 BCF PORTC,1
GOTO REPETIR25 GOTO REPETIR26

TERCERA26 TERCERA27
CLRF 0X22 CLRF 0X22
MOVLW D'5' ;NUMERO DE DATOS QUE MOVLW D'5' ;NUMERO DE DATOS QUE
HAY EN LAS TABLAS HAY EN LAS TABLAS
MOVWF 0X24 MOVWF 0X24
RETROCESO26 RETROCESO27
MOVLW D'8';VECES QUE SE VA A MOVLW D'8';VECES QUE SE VA A
ROTAR ROTAR
MOVWF 0X25 MOVWF 0X25
MOVFW 0X22 ; PARA LLAMAR A LAS MOVFW 0X22 ; PARA LLAMAR A LAS
TABLAS TABLAS
CALL TABLA_UNO6 CALL TABLA_UNO7
MOVWF 0X26 ;MOVER EL DATO DE LA

56
TABLA A LA LOCALIDAD TERCERA28
CLRF 0X22
NEW27 MOVLW D'5' ;NUMERO DE DATOS QUE
RRF 0X26 ; ROTAR HAY EN LAS TABLAS
BTFSS STATUS,C MOVWF 0X24
GOTO CERO27 RETROCESO28
BSF PORTC,1 MOVLW D'8';VECES QUE SE VA A
ROTAR
REPETIR27
MOVWF 0X25
BSF PORTC,0 ;PRENDO PARA DAR CLOCK
MOVFW 0X22 ; PARA LLAMAR A LAS
CALL CLK ;LLAMO AL CLOCK
TABLAS
BCF PORTC,0 ; APAGO PARA DAR UN
CALL TABLA_UNO8
PULSO AL CLOCK
MOVWF 0X26 ;MOVER EL DATO DE LA
DECFSZ 0X25
TABLA A LA LOCALIDAD
GOTO NEW27
INCF 0X22 NEW28
DECFSZ 0X24 RRF 0X26 ; ROTAR
GOTO RETROCESO27 BTFSS STATUS,C
BSF PORTC,2 ;PRENDO PARA DAR PULSO GOTO CERO28
AL LATCH Y QUE SE VISUALISE EL DATO BSF PORTC,1
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO
MOVLW B'11111111' REPETIR28
MOVWF PORTA BSF PORTC,0 ;PRENDO PARA DAR CLOCK
GOTO SEGUNDA CALL CLK ;LLAMO AL CLOCK
RETURN BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK
CERO27
DECFSZ 0X25
BCF PORTC,1
GOTO NEW28
GOTO REPETIR27
INCF 0X22
DECFSZ 0X24
GOTO RETROCESO28
BSF PORTC,2 ;PRENDO PARA DAR PULSO
AL LATCH Y QUE SE VISUALISE EL DATO
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL
DATO MANDADO
MOVLW B'11111111'
MOVWF PORTA
GOTO SEGUNDA
RETURN

CERO28
BCF PORTC,1
GOTO REPETIR28

57
TERCERA29 CLK
CLRF 0X22 MOVLW D'5'
MOVLW D'5' ;NUMERO DE DATOS QUE MOVWF 0X33
HAY EN LAS TABLAS UNO
MOVWF 0X24 NOP
RETROCESO29 DECFSZ 0X33
MOVLW D'8';VECES QUE SE VA A GOTO UNO
ROTAR RETURN
MOVWF 0X25
MOVFW 0X22 ; PARA LLAMAR A LAS
TABLAS SEG
CALL TABLA_UNO9_ MOVLW D'70'
MOVWF 0X26 ;MOVER EL DATO DE LA MOVWF 0X31
TABLA A LA LOCALIDAD YY
MOVLW D'249'
NEW29 MOVWF 0X32
RRF 0X26 ; ROTAR XX
BTFSS STATUS,C NOP
GOTO CERO29 DECFSZ 0X32
BSF PORTC,1 GOTO XX
DECFSZ 0X31
REPETIR29 GOTO YY
BSF PORTC,0 ;PRENDO PARA DAR CLOCK RETURN
CALL CLK ;LLAMO AL CLOCK
BCF PORTC,0 ; APAGO PARA DAR UN
PULSO AL CLOCK SEG2
DECFSZ 0X25 MOVLW D'50'
GOTO NEW29 MOVWF 0X31
INCF 0X22 YYY
DECFSZ 0X24 MOVLW D'249'
GOTO RETROCESO29 MOVWF 0X32
BSF PORTC,2 ;PRENDO PARA DAR PULSO XXX
AL LATCH Y QUE SE VISUALISE EL DATO NOP
BCF PORTC,2 ;APAGO PARA QUE SE VEA EL DECFSZ 0X32
DATO MANDADO GOTO XXX
MOVLW B'11111111' DECFSZ 0X31_
MOVWF PORTA GOTO YYY
GOTO SEGUNDA RETURN
RETURN
CERO29
BCF PORTC,1 ENCENDIDO
GOTO REPETIR29 MOVLW B'00000100'
MOVWF PORTA
CALL SEG

58
MOVLW B'00001100' BSF STATUS,RP1
MOVWF PORTA CLRF ANSEL
CALL SEG CLRF ANSELH
MOVLW B'00011100' CLRF STATUS
MOVWF PORTA
;;;;;;;;;;;;;;;PROGRAMA PRINCIPAL;;;;;;;;;;;
CALL SEG
MOVLW B'00111100' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IPN;;;;;;;;;;;;;;;;;;;;;;;;;
MOVWF PORTA
CALL SEG CALL PRIMERA1
MOVLW B'01111100' CALL ENCENDIDO
MOVWF PORTA CALL PRIMERA2
CALL SEG CALL ENCENDIDO
MOVLW B'11111100' CALL PRIMERA3
MOVWF PORTA CALL ENCENDIDO
CALL SEG ;;;;;;;;;;;;;;;;;;;;;;;;;;;LINEA;;;;;;;;;;;;;;;;;;;;;;;
MOVLW B'11111000'
MOVWF PORTA PISTO
CALL SEG MOVLW D'3' ;VECES QUE SE REPETIRA LA
MOVLW B'11110000' RUTINA
MOVWF PORTA MOVWF 0X39
CALL SEG GOGO
MOVLW B'11100000' CALL SEGUNDA
MOVWF PORTA CALL SEG
CALL SEG NOP
MOVLW B'11000000' CALL SEGUNDA2
MOVWF PORTA CALL SEG
CALL SEG NOP
MOVLW B'10000000' CALL SEGUNDA3
MOVWF PORTA CALL SEG
CALL SEG NOP
MOVLW B'00000000' CALL SEGUNDA4
MOVWF PORTA CALL SEG
CALL SEG NOP
RETURN CALL SEGUNDA5
CALL SEG
start NOP
;;;;;;;;;CONFIGURACIÓN DE PUERTOS;;;;;;;;;; CALL SEGUNDA6
CALL SEG
BSF STATUS,RP0 NOP
CLRF TRISC CALL SEGUNDA5
CLRF TRISA CALL SEG
MOVLW 0X00 NOP
MOVWF PORTC CALL SEGUNDA4
MOVLW 0X00 CALL SEG
MOVWF PORTA NOP

59
CALL SEGUNDA3 GOGO2
CALL SEG CALL SEGUNDA7
NOP CALL SEG
CALL SEGUNDA2 NOP
CALL SEG CALL SEGUNDA8
NOPDECFSZ 0X39 CALL SEG
GOTO GOGO NOP
CALL SEGUNDA9
PISTO2
CALL SEG
MOVLW D'3' ;VECES QUE SE REPETIRA LA
NOP
RUTINA
CALL SEGUNDA10
MOVWF 0X39
CALL SEG
NOP
CALL SEGUNDA11
CALL SEG
NOP
CALL SEGUNDA12
CALL SEG
NOP
CALL SEGUNDA11
CALL SEG
NOP
CALL SEGUNDA10
CALL SEG
NOP
CALL SEGUNDA9
CALL SEG
NOP
CALL SEGUNDA8
CALL SEG
NOP
DECFSZ 0X39
GOTO GOGO2

MOVLW D'3'
MOVWF 0X39
GEGE
CALL SEGUNDA3
MOVLW B'00100000'
MOVWF PORTA
CALL SEG
NOP
MOVLW B'00010000'

60
MOVWF PORTA ;;;;;;;;;;;;;;;;;;;;;;;PARED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CALL SEG
PISTO3
NOP
MOVLW D'4' ;VECES QUE SE REPETIRA LA
MOVLW B'00001000'
RUTINA
MOVWF PORTA
MOVWF 0X39
CALL SEG
GAGA
NOP
CALL TERCERA20
MOVLW B'00000100'
CALL SEG2
MOVWF PORTA
NOP
CALL SEG
CALL TERCERA21
NOP
CALL SEG2
MOVLW B'00000010'
NOP
MOVWF PORTA
CALL TERCERA22
CALL SEG
CALL SEG2
NOP
NOP
MOVLW B'00000001'
CALL TERCERA23
MOVWF PORTA
CALL SEG2
CALL SEG
NOP
NOP
CALL TERCERA24
MOVLW B'00000010'
CALL SEG2
MOVWF PORTA
NOP
CALL SEG
CALL TERCERA25
NOP
CALL SEG2
MOVLW B'00000100'
NOP
MOVWF PORTA
CALL TERCERA26
CALL SEG
CALL SEG2
NOP
NOP
MOVLW B'00001000'
CALL TERCERA27
MOVWF PORTA
CALL SEG2
CALL SEG
NOP
NOP
CALL TERCERA28
MOVLW B'00010000'
CALL SEG2
MOVWF PORTA
NOP
CALL SEG
CALL TERCERA29
NOP
CALL SEG2
MOVLW B'00100000'
NOP
MOVWF PORTA
DECFSZ 0X39
CALL SEG
GOTO GAGA
NOP
CLRF PCL
DECFSZ 0X39
GOTO GEGE
END ; directive 'end of program'

61
CONCLUSIONES

El proyecto se desarrolló bajo un sistema de diodos emisor de luz, en un arreglo


cúbico de dimensión total de 216 unidades, se programó en lenguaje escalera el
prototipo, funcionando por medio de registros de corrimiento de 8 bits y un
microcontrolador PIC16F886. El proyecto funciona bajo lógica inversa, es decir, para
activar un led, se mandan 0s, esto se hizo así para evitar el sobrecalentamiento
debido a la corriente en el PIC.

También se implementó el control del prototipo por medio de un módulo Bluetooth


HC05 y una aplicación sincronizado a éste que permite controlar las rutinas dentro
de la actividad del prototipo., así como también cambiar de rutina.

62
El proyecto se realizó empleando técnicas, procedimientos y métodos de
programación adquiridos en los cuatro semestres que aprendimos en el transcurso
de éstos.

REFERENCIAS
No hay ninguna fuente en el documento actual.

63
ANEXOS

64
65

También podría gustarte