Sistema de alarma para museos - Inicio

Anuncio
INDICE GENERAL
CAPITULO I. CONCEPTOS BASICOS
pag.
1.1
INTRODUCCION.
1
1.2
OBJETIVOS
1
1.3
JUSTIFICACION
1
CAPITULO II. SISTEMAS DE SEGURIDAD
2.1
SEGURIDAD EN EL MUSEO
3
2.2
DISPOSITIVOS TECNICOS DE SEGURIDAD
3
2..2.1 DETECTORES DE HUMO
4
2.2.2 SENSORES MAGNETICOS
5
2.2.3 DETECTOR DE MOVIMIENTO
5
2.2.4 CAMARAS DE VIDEO
6
2.2.5 CAMARAS DE VISION NOCTURNA
7
2.2.6 ALARMA CONTRA INCENDIO
8
2.3
COMPONENTES DEL SISTEMA
8
2.4
PROPUESTA DE CONTROL DE SEGURIDAD EN EL MUSEO
9
2.4.1 MUSEO DE CIENCIAS ZIGZAG
10
2.4.2 VISTA DE PLANTA DE LAS INSTALACIONES
DEL MUSEO
11
2.4.3 EDIFICIO Nº 1 “N ZAC”
12
2.4.4 EDIFICIO Nº 2 “PIN-PON”
13
2.4.5 EDIFICIO Nº3 “ACCION-REACCION”
14
2.4.6 EDIFICIO Nº4 “AGUA-AIRE”
15
2.4.7 EDIFICIO Nº5 “POLOS-CARGAS”
16
2.4.8 EDIFICIO Nº6 “MAS-MENOS”
18
I
2.4.9 EDIFICIO Nº7 “VIENE-VA”
19
CAPITULO III. CIRCUITOS INTEGRADOS PROGRAMABLES (PIC)
3.1
INTRODUCCION A LOS MICROCONTROLADORES
20
3.1.2 ESTRUCTURA DE UN MICROCONTROLADOR
21
3.1.3 EL PROCESADOR O CPU
22
3.1.4 MEMORIA ROM
22
3.1.5 ROM CON MASCARA
23
3.1.6 OTP
23
3.1.7 EPROM
23
3.1.7.1 EEPROM
23
3.1.8 FLASH
24
3.1.9 MEMORIA RAM
24
3.2
REGISTROS Y BITS
24
3.3
LINEAS DE ENTRADA/SALIDA (E/S), (PUERTOS)
25
3.4
MODULOS TEMPORIZADORES INTERNOS (TMRS)
26
3.5
UTILIZANDO UN MICROCONTROLADOR
27
3.6
APLICACCIONES DE LOS MICROCONTROLADORES
28
3.7
EL MERCADO DE LOS MICROCONTROLADORES
29
3.8
RECURSOS COMUNES A TODOS
LOS MICROCONTROLADORES
30
CARACTERISTICAS DEL PIC16F877X
31
3.9.1 LA ARQUITECTURA HARVARD
31
3.9.2 PRINCIPALES CARACTERISTICAS
31
3.9.3 TERMINALES DE ENTRADA-SALIDA
33
3.9.4 OTRAS TERMINALES
34
3.10
DISPOSITIVOS PERIFERICOS
35
3.11
DIFERENCIA ENTRE 28 Y 40 PINES DEL PIC
35
3.12
EL PIC 16F87X
36
3.9
II
3.13
DESCRIPCION GLOBAL DEL DISPOSITIVO
37
3.14
PROGRAMACION
40
3.14.1 INSTRUCCIONES DEL PIC16F877
40
3.14.2 INSTRUCCIONES ORIENTADAS A MANEJO DE BITS
48
3.14.3 OPERACIONES CON LITERALES Y DE CONTROL
50
EJEMPLOS DE PROGRAMACIÓN
55
3.15.1 EJEMPLO 1
55
3.15.2 EJEMPLO 2
56
3.15
CAPITULO IV. CIRCUITERIA Y EQUIPO ELECTR4ONICO USADO
4.1
SEÑALES DE ENTRADA AL SISTEMA
57
4.2
SEÑALES DE SALIDA AL SISTEMA
58
4.3
CIRCUITERIA ADICIONAL
60
4.4
CARACTERISTICAS DEL SISTEMA
66
CAPITULO V. MANUAL DEL SISTEMA DE ALARMA Y NIPLE
5.1
MANUAL DEL SISTEMA
67
5.2
MANUAL DEL NIPLE
82
5.3
INTRODUCCION AL NIPLE
84
5.4
FUNCIONES DISPONIBLES
86
CONCLUCIONES
87
CAPITULO VI. PROGRAMACION
6.1
DIAGRAMA GENERAL DE FLUJO
88
REFERENCIAS
115
III
INDICE DE FIGURAS
2.4.2 VISTA DE PLANTA DE LAS INST. DEL MUSEO
11
2.4.3 EDIFICIO #1 “N-ZAC
12
2.4.4 EDIFICIO #2 “PIN-PON
13
2.4.5 EDIFICIO #3 “ACCION-REACCION
14
2.4.6 EDIFICIO #4 “AGUA-AIRE
15
2.4.7 EDIFICIO #5 “POLOS-CARGAS
16
2.4.8 EDIFICIO #6 “MAS-MENOS
18
2.4.9 EDIFICIO #7 “VIENE-VA
19
3.1
EL MICROCONTROLADOR
30
3.2
ARQUITECTURA HARVARD
31
3.3
ENCAPSULADO DIP 40 PINES
33
3.4
DIAGRAMA DE CONEXIÓNES DE ALIMENTACION
35
4.1
TARJETA PRINCIPAL DEL PIC
60
4.2
MODULO DE TECLADO Y DISPLAY
61
4.3
SENSOR INFRARROJO
62
4.4
RELOJ EN TIEMPO REAL
62
4.5
MODULO DE ENTRADAS OPTOACOPLADAS
63
4.6
FUNTE DE VOLTAJE +5 Y +12 VOLTS
63
4.7
MODULO DE SALIDAS CORRIENTE DIRECTA
64
4.8
MODULO DE SALIDAS CORRIENTE ALTERNA
64
4.9
MODULO DE SALIDAS CON REELEVADOR
65
4.10
SENSOR DE TEMPERATURA
65
5.1
COMPARACIONES DEL LENGUAJES DE PROGRAMACION
83
INDICE DE TABLAS
3.1
COMPARATIVA DE MICROCONTROLADORES
36
3.2
EL PIC 16F877 POR DENTRO
38
3.3
DESCRIPCION DE PINES 16F874 Y 16F877
39
IV
4.1
ENTRADAS DEL PIC
57
4.2
SALIDAS DEL PIC
59
V
CAPITULO I
1.1 Introduccion
Los sistemas digitales han logrado avanzar a tal grado que en la actualidad se pueden
alcanzar logros que alguna ves solo fueron en los sueños, de forma que ahora se pueden
realizar diferentes tarea complejas en lapsos de tiempo relativamente menor al que se
necesitaba para algunas tareas en el pasado, una de ellas es gracias a la aparición de
microcontroladores (PIC). En todo el planeta ocurren fenómenos físicos que en algunas de
las situaciones necesitamos comprender de diferente manera o tal vez necesitamos
controlar, por ejemplo, la temperatura de una habitáculo, paso de alguna persona o de la
intrusión de un objeto, etc. para lo cual se pueden utilizar una multitud de elementos
electrónicos que combinados nos llevan a mejorar la vida y agilizar procesos
1.2 Objetivos
Nuestro principal objetivo es desarrollar un sistema de seguridad fiable que cubra todos los
aspectos más importantes de seguridad en el museo de ciencias zigzag de Zacatecas.
Para lo cual haremos una maqueta con los elementos principales que llevara el museo en
caso de que así lo solicite, el cual contara con los siguientes elementos, sensores
magnéticos, sensor de humo, sensor de rompimiento de cristales, sensor de temperatura con
su respectivo extractor, sensor de movimiento, sensor infrarrojo y chapa eléctrica la cual
contendrá un display y un teclado para manejar la alarma.
1.3 Justificacion
El motivo por el cual se pretende desarrollar un sistema de seguridad para este museo, es
principalmente porque este no cuenta actualmente con ningún tipo de sistema de seguridad
electrónica, ya que este cuenta con equipo en exhibición e interacción algunos de alto costo,
lo cual justifica la implementación de monitoreo y en algunos casos de proteger, una o
varias salas.
1
CAPITULO II
En este capitulo se encuentran las características de debe cumplir un museo en cuanto a
seguridad y protección y algunos detalles de cada uno de los componentes electrónicos del
sistema de alarma que se utilizan en algunos museos.
CAPITULO III
En este capitulo se pretende mostrar las características del PIC que se usara en este caso
que es el PIC 16f877, así como posibles aplicaciones que tiene este, así como diferenciar
entre microcontrolador y microprocesador
CAPITULO IV
En este capitulo se muestran las entradas y salidas del PIC 16f877, así como los
componentes que va a contener cada una de las entradas y salidas ya que como en este caso
será la aplicación para una alarma, se tendrán entradas y salidas
CAPITULO V
Con formato: Fuente: Negrita,
Español (México)
En este capitulo se da una pequeña introducción al software NIPLE que se uso para la
programación del PIC, ademas del manual de operación del sistema de alarma.
Con formato: Justificado,
Interlineado: sencillo
CAPITULO VI
Este capitulo contiene toda la programación que se hizo mediante diagramas de flujo.
2
Con formato: Español (México)
CAPITULO II.- SISTEMAS DE SEGURIDAD
2.1 Seguridad en el museo
Un Museo, como entidad depositaria responsable de la salvaguarda, preservación y
divulgación del patrimonio de una comunidad, debe encarar con responsabilidad el aspecto
de seguridad de su acervo cultural.
La pérdida o destrucción de cualquier material histórico, artístico o científico significaría
siempre un perjuicio para toda la comunidad.
De una manera general la seguridad aplicada a los Museos implicará:

Prevención en la construcción de edificios

Protección contra incendios

Protección contra robos

Protección contra vandalismo

Sistemas de seguridad y vigilancia
2.2 Dispositivos tecnicos de seguridad
La importancia y efectividad de los sistemas de detección ha sido reconocida y su
tecnología se ha desarrollado hasta el punto de poder, en muchos casos, ser
Regulados a distintos tiempos de respuesta.
Para decidir el tipo de detectores a instalar, el Museo debe siempre tener en cuenta los
objetos bajo su protección y su situación económica, a fin de seleccionar el sistema o
equipo más efectivo en relación a su costo.
Para la seguridad antes mencionada se tienen los siguientes dispositivos
3

Detectores de humo.

Sensores magnéticos.

Detector de movimiento.

Cámaras de video.

Cámaras de visión nocturna.

Alarma contra incendio.
2.2.1 Detectores de humo
Uno de los artefactos más importantes para la
prevención de incendios en los museos es el detector
de humo. Luego de volverse comunes a principios de
la década de 1970, la venta de los detectores de humo
aumentó rápidamente y el precio bajó, de manera que
para el año1991, el 88 % de los museos en Estados
Unidos tenía por lo menos uno, en cada sala y podían
comprarse por menos de diez dólares.
Varios estudios han determinado que cuando hay instalados detectores de humo, que
funcionan, la probabilidad de morir a causa de un incendio se reduce a la mitad. Los
detectores de humo actualmente instalados han salvado miles de vidas, aunque persisten
varios problemas. Primero, el 12 % de los museos sin dichos detectores registra más de la
mitad de los incendios; segundo, se estima que un tercio de los detectores de humo
instalados no están funcionando, con frecuencia por la falla de no cambiar la batería
gastada; y tercero, muchas son los museos que no tienen la cantidad de detectores de humo
que se precisan para proteger adecuadamente a los visitantes del museo.
4
2.2.2 Sensores magneticos
El censor consta de dos partes, emisor y
receptor. El emisor es básicamente un
potente imán el cual constantemente
genera un campo electromagnético por lo
que no necesita de cables y el receptor es
un tipo de switch normalmente abierto que
se activa por medio de un campo
electromagnético. El emisor se coloca en
una orilla de la parte externa de la puerta y
el receptor se coloca en una parte de la
orilla del marco de la puerta de tal manera
que al estar cerrada el receptor quede de forma paralela y lo mas cercano posible al emisor.
Le permiten tener controlado el perímetro del museo mientras usted no esta dentro. De esta
forma el sistema vigilara las puertas y ventanas mientras duerme o cuando alguien no se
encuentra cerca y pueda avisar de alguna intrusión. También le sirven para marcar e indicar
el estado de las puertas y ventanas al salir, de esta forma no volverán a quedarse abiertas las
ventanas del museo cuando no se encuentre en el.
2.2.3 Detector de movimiento
La función de un detector de movimiento, como dice su propio
nombre, es la de detectar cualquier cosa o persona en
movimiento. Se encuentran, generalmente, en sistemas de
seguridad o en circuitos cerrados de televisión.
El sistema puede estar compuesto, simplemente, por una cámara
de vigilancia conectada a un ordenador, que se encarga de
5
generar una señal de alarma o poner el sistema en estado de alerta cuando algo se mueve
delante de la cámara. Aunque, para mejorar el sistema se suele utilizar más de una cámara,
multiplexores y grabadores digitales.
Además, se maximiza el espacio de grabación, grabando solamente cuando se detecta
movimiento. Un algoritmo que compara la imagen actual con una de referencia y,
posteriormente, cuenta los píxeles en que difieren las dos imágenes, es una forma sencilla y
eficiente de detectar movimiento. Aunque los algoritmos que se emplean son más
complejos, debido a que lo explicado anteriormente lleva problemas cuando la cámara que
registra no se encuentra fija o cuando se producen otros cambios, como por ejemplo, de
iluminación.
2.2.4 Cámaras de video
Las cámaras son cada vez más resistentes,
pequeñas, sensibles y más baratas que
antes.
Imágenes
tomadas
pueden
retransmitirse de diversas maneras y a la
inversa, la cámara puede ser manejada a
distancia. Para el transporte de imágenes se
puede usar todo lo que pueda transportar
datos digitales: (coaxial) cables, fibra
óptica, la línea telefónica normal, ISDN,
teléfono de autos, radio de bolsillo, emisores/receptores y para distancias cortas es
apropiada actualmente hasta la luz infrarroja. También pueden ser usados a veces, cables
que se conectan al televisor. Ahora los museos se envían mensajes de ida y vuelta a través
de las (partes no visibles) de determinadas frecuencias de TV.
Las cámaras pueden ser conectadas a computadoras y a diversos sistemas high - tech (de
alta tecnología) de manera que se pueda hacer más con la información de las imágenes.
6
2.2.5 Cámaras de visión nocturna
Antes no era posible ver en la oscuridad. Gracias a la
invención del amplificador de luz residual y el visor
infrarrojo, es posible actualmente. Al principio la calidad
de la imagen no era óptima. Podía ocurrir alguna vez que
se viera en la pantalla una mancha gris en el lugar en que
se suponía que debería verse la cara del asaltante del
Banco. Y todavía sucede a veces. Sin embargo,
actualmente hay aparatos que pueden fotografiarte o
filmarte muy bien aunque tú no veas casi nada.
Existen dos tipos de cámaras infrarrojas:

las activas.

las pasivas.
La cámara activa emite luz infrarroja a través de un reflector, cuya apariencia es la de un
disquete negro o rojo pálido que está sobre la cámara o en otro sitio. Así como no todos los
sonidos son audibles para el oído humano, tampoco todos los tipos de luz son visibles a
nuestros ojos. La luz infrarroja no puede verse sin Medios auxiliares especiales.
Bajo el término de cámara infrarroja pasiva entendemos la cámara que reacciona al calor.
El funcionamiento de la misma está basado en el hecho de que objetos con una temperatura
entre 0 y 40 grados Celsius (quizás entre ellos tu propio cuerpo) "emiten" calor dentro de la
zona infrarroja. Una moderna cámara infrarroja pasiva que registra diferencias térmicas
hasta 0,01 grado, convierte el calor en imagen visible para la gente. De ese modo no puede
ser reconocible un patrón térmico determinado; las superficies calientes aparecen como
lugares iluminados, las frías como oscuros. Con la ayuda de una cámara de ese tipo se
puede determinar cuántas personas hay presentes en un recinto cerrado y cuáles son sus
siluetas. En principio, todo lo que tiene que ver con diferencias de temperatura, puede ser
registrado. Lo que no quita que la imagen construida por la cámara, pueda ser interpretada
erróneamente.
7
Si el detector térmico de este tipo de cámara tiene aproximadamente la misma temperatura
que el objeto buscado, la misma no funciona. Por eso el detector de las mejores se enfría
hasta cerca de los -200 grados Celsius.
2.2.6 Alarma contra incendio
Un sistema para museos de alarma para
incendios generalmente forma parte de un
sistema completo de seguridad que ofrece,
además de protección contra los incendios,
protección contra robos. Dicho sistema vigila las
puertas, ventanas y todos los espacios del museo
por donde pueden entrarse a dicho museo, y
puede brindar servicio de vigilancia marcando
su número de teléfono para informar sobre un incendio o reportar a un intruso a una oficina
de seguridad de donde se lo comunicarán al departamento de policía o al departamento
local de bomberos.
Dado su costo relativamente alto, esos sistemas por lo general se encuentran solamente en
las casas grandes. El instalar esos sistemas puede costar 1.000 dólares o más, y los servicios
de vigilancia de 24 horas cuestan entre 15 y 20 dólares al mes.
2.3 Componentes del sistema
Esos sistemas constan de un panel central de control, al que están conectados los detectores
de humo y los detectores térmicos, y campanas y bocinas que suenan cuando se activa el
sistema. Otros sensores relacionados con los robos, conectan las puertas y ventanas, o
vigilan los cuartos para detectar movimientos o el calor del cuerpo humano. El panel de
control opera con la electricidad de la casa, pero también tienen una batería de emergencia
que puede operar el sistema por 24 horas durante un corte del servicio eléctrico.
8
Los requerimientos básicos para la cantidad y la ubicación de las alarmas son exactamente
los mismos que para los detectores individuales que mencionamos antes. La diferencia es
que un sistema de alarma contra incendios le permite más flexibilidad para colocar alarmas
adicionales y campanas o bocinas adicionales (o luces intermitentes, si es que alguna
persona en la casa tiene dificultades para escuchar).
Los sistemas de alarma para incendios que ofrecen servicios de supervisión a distancia,
también se pueden usar para servicios de alerta médica. En ese caso, una persona con
problemas de salud, que vive sola, carga un radio transmisor que puede activar el sistema
en caso de que necesite ayuda. Las señales recibidas en la estación de vigilancia se
identifican por el tipo (incendio, robo, alerta médica), para poder prestar la ayuda adecuada.
2.4 Propuesta de control de seguridad en el museo de ciencias
Este es el tema de nuestra tesis por lo que nosotros proponemos lo siguiente.
En el caso especifico del museo de ciencia zig-zag, el cual es un museo de ciencias
dedicado a la comprensión del niño a comprender fenómenos naturales sencillos ubicado
en donde era PEMEX en el centro de la ciudad de Zacatecas. Se propone implementar un
sistema de seguridad en el cual se tiene planeado utilizar un tablero de 16 dígitos para
introducir una contraseña y si es necesario cambiarla desde el mismo teclado sin necesidad
de reprogramar el PIC, teniendo un display para poder observar en todo momento el estado
del sistema de acceso, además de sensores de movimiento, de temperatura, y de incendio.
Todos los sensores que se manejen tanto de movimiento, de humo y de temperatura serán
controlador por el PIC, se propone usar el PIC16F877
Por lo tanto consideramos que este sistema de acceso junto con la alarma de incendio y la
alarma de detección de movimiento tenemos un buen sistema de seguridad, así como el
control de temperatura que también estará monitoreado y controlado por el PIC.
Este sistema de temperatura se conforma principalmente del sensor LM35 y un extractor de
aire.
El sistema de video-vigilancia esta compuesto por las cámaras de video que sean necesarias
un software y una PC, teniendo ventajas también de detección de movimiento y
9
almacenamiento en disco duro de los videos cuando se registre algún movimiento, de la
misma manera pudiendo reproducir una alarma sonora en la PC.
2.4.1 Museo de ciencias zig zag
Dentro de las instalaciones del museo se encuentran 7 edificios con material interactivo y
de exhibición, de las cuales ninguna cuenta con equipo de seguridad tales como los que se
mencionan al principio de este capitulo, a continuación se muestran algunas imágenes en
general del museo y sus instalaciones, junto con el plano donde se puede observar la
ubicación de cada uno de los edificios, cave mencionar que cada edificio cuenta con su
nombre de acuerdo a cada tema relacionado a su destino.
10
5
P OLOS
Y
CARGAS
AGUA
Y
AIRE
4
1
NZAC
2
PIN PON
6
MASMENOS
3
ACCION
Y
REACCI ON
7
VIE NEVA
2.4.2 VISTA DE PLANTA DE LAS INSTALACIONES DEL MUSEO
11
2.4.3 Edificio no. 1 “N zac”
En esta sala aunque se encuentra con poco equipo este tiene tres pantallas de plasma que ya
su calidad y elevado costo seria conveniente tomarla en cuenta y seria una de las salas que
llevase más censores de movimiento enfocadas hacia las pantallas y otro a una PC de
escritorio que se encuentra en la misma sala.
12
2.4.4 Edificio no. 2 “pin – pon”
En esta área se encuentra un contenido de elementos de los cuales no seria factible la
instalación de un sistema como el que se propone ya que todos los elementos que este
contiene son solo artículos de madera y demasiado sencillos.
13
2.4.5 Edificio no. 3 “acción – reacción”
En la sala anterior encontramos que la seguridad seria algo de tomar en cuenta ya que esta
contiene aparatos de un valor mas elevado que en la anterior en ella encontramos de valor
una cama de clavos la cual tiene un funcionamiento electrónico controlado, un equipo de
nubes portátil el cual conlleva un sistema electrónico de costo medio alto, así como una
hélice que produce energía eléctrica el cual también es de un costo medio elevado. Pero así
como se ocuparía será solamente un equipo de censores de movimiento ya que solo seria
cuidar de intrusión nocturna al habitáculo para evitar su robo.
14
2.4.6 Edificio no. 4 “agua – aire”
15
En esta sala se encuentra llena de aparatos pero a excepción de la cámara de aire que ya su
gran volumen y robustez es difícil robarlo o maltratarlo, todos los de más elementos son
censillos y de bajo costo por eso tomamos en cuenta solo para poner solo detectores de
movimiento.
2.4.7 Edificio no. 5 “Polos – Cargas”
16
Esta es una de las salas en la que mas tenemos el interés de poder instalar el todo lo que
tenemos de la alarma ya que en esta se encuentran 8 maquinas de escritorio así como la
esfera de plasma que también exige supervisión y cuidado de quien la pudiera dañar así
como ver que le estén dando buen uso a las maquinas y la esfera, por medio de la cámara, y
por el exceso de calor se pondría un extractor de calor controlado por un censor de
temperatura, así como controlar la entrada a este por medio de el teclado y la cerradura
electrónica y por si acaso entraran por otro lado serian los sensores de movimiento
17
2.4.8 Edificio no. 6 “mas – menos”
En esta sala se tiene poco equipo de importancia solo lo mas importante es lo que se tiene
en las fotos pero igual que en algunas de las salas antes mencionadas será conveniente
poner sensores de movimiento para proteger de la intuición de algún individuo no deseado,
a horas que no sean de trabajo y así evitar algún robo de los equipos antes descritos, además
que el calor generado por las PC de escritorio no es suficiente como para justificar el sensor
de temperatura y el extractor de calor
18
2.4.9 Edificio no. 7 “viene – va”
En esta sala se tiene equipo de importancia y sobre todo las dos PC de escritorio pero aun
así estudiándola tomamos la decisión de solo poner sensores de movimiento, ya que el
material que contiene no es de un costo tan elevado y no es tan delicado como en la sala de
polos y cargas que es la que justificaría poner un sistema completo, además que el calor
generado por la PC no es grande como para justificar un sensor de temperatura y un
extractor de calor.
19
CAPITULO III.- CIRCUITOS INTEGRADOS PROGRAMABLES (PIC)
3.1 Introduccion a los microcontroladores.
¿Que es un microcontrolador?
Los microcontroladores hicieron su aparición a principio de los ’80 y se trata de un circuito
integrado programable que contiene toda la estructura (arquitectura) de una
microcomputadora. Es decir que, dentro de un microcontrolador podemos encontrar:
· una CPU (Unidad Central de Proceso)
· Memoria RAM
· Memoria ROM
· Memoria EEPROM (Memoria de lectura y escritura no volátil, es decir, que no se pierden
los datos cuando el circuito es desconectado)
· Puertos de Entrada/Salida (Pines de E/S)
E incluso muchos modelos de microcontroladores incorporan distintos módulos
“periféricos”, como pueden ser; conversores analógico/digital (A/D), módulos PWM
(control por ancho de pulso), módulos de comunicaciones seriales o en paralelo, y más.
Todo esto lo podemos encontrar dentro del mismo circuito integrado.
Cada vez existen más productos que incorporan microcontroladores con el fin de aumentar
sustancialmente sus prestaciones, reducir su tamaño y costo, mejorar su confiabilidad y
disminuir el consumo de energía.
20
Los microcontroladores “PIC”
Los microcontroladores denominados “PIC” corresponden exclusivamente a la marca
“Microchip”. PIC significa "Peripheral Interfase Controller" y fue desarrollado por
Microchip a principio de los 80.
Existe una gran cantidad de modelos de microcontroladores cuyas características y
prestaciones varían de un modelo a otro. De esta manera los desarrolladores pueden
seleccionar el modelo que mejor se ajuste a sus necesidades.
Los distintos modelos de microcontroladores se agrupan por “familia”. Una familia puede
estar formada por un conjunto de modelos cuyas características y prestaciones son bastante
similares.
Cuando compramos un microcontrolador, la memoria del mismo se encuentra “vacía” y
para que funcione es necesario que sea “programado”, es decir que, el desarrollador debe
escribir un programa que contenga todos los procesos que el microcontrolador debe
ejecutar.
Este programa se escribe en un lenguaje llamado “Assembler” (ensamblador) cuya
principal característica es su alta complejidad ya que se trata de un lenguaje “de bajo nivel”,
es decir, que se encuentra “más
Cercano” al lenguaje de la máquina que del lenguaje humano.
Por esto, sólo los técnicos altamente capacitados están en condiciones de realizar
desarrollos electrónicos que incluyan microcontroladores. Incluso a estos especialistas les
implica un gran esfuerzo intelectual y mucho tiempo de desarrollo.
3.1.2 Estructura de un microcontrolador
Básicamente, un microcontrolador esta compuesto por los siguientes componentes:
· Procesador o CPU (del inglés Central Prossesing Unit o Unidad Central de Proceso).
· Memoria para el programa tipo ROM.
· Memoria RAM para contener los datos.
· Líneas de E/S para comunicarse con el exterior.
· Diversos módulos para el control de periféricos (temporizadores, Puertas Serie y Paralelo
CAD: Conversores Analógico/Digital, CDA: Co inversores Digital/Analógico, etc.).
21
3.1.3 El procesador o CPU
Es el elemento más importante del microcontrolador y determina sus principales
características, tanto a nivel hardware como software. La CPU (Central Processing Unit o
Unidad Central de Proceso) se encarga la decodificación y ejecución del programa.
Actualmente, existen 3 tipos de arquitectura de procesadores:
· CISC (Computadores de Juego de Instrucciones Complejo): Disponen de más de 80
instrucciones en su repertorio, algunas de las cuales son muy sofisticadas y potentes,
requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que
ofrecen instrucciones complejas que actúan como macros.
· RISC (Computadores de Juego de Instrucciones Reducido): En estos procesadores el
repertorio de instrucciones es muy reducido y las instrucciones son simples y generalmente
se ejecutan en un ciclo. La ventaja de éstos es que la sencillez y rapidez de las instrucciones
permiten optimizar el hardware y el software del procesador.
· SISC (Computadores de Juego de Instrucciones Específico): En los microcontroladores
des - tinados a aplicaciones muy concretas, el juego de instrucciones, además de ser
reducido, es "específico", o sea, las instrucciones se adaptan a las necesidades de la
aplicación prevista.
3.1.4 Memoria ROM
La memoria ROM es una memoria no volátil, es decir, que no se pierden los datos al
desconectar el equipo y se destina a contener el programa de instrucciones que gobierna la
aplicación. Los microcontroladores disponen de capacidades de ROM comprendidas entre
512 bytes y 8 k bytes.
Existen distintos tipos de memorias ROM, la cual determinará la aplicación del
microcontrolador.
22
3.1.5 ROM con máscara
Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación
del chip. El elevado costo del diseño de la máscara sólo hace aconsejable el empleo de los
microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a
varios miles de unidades.
3.1.6 OTP
El microcontrolador contiene una memoria no volátil de sólo lectura "programable una
sola vez" por el usuario. OTP (One Time Programmable). Es el usuario quien puede
escribir el programa en el chip mediante un sencillo grabador controlado por un programa
desde una PC. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del
producto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo
de memoria como en la EPROM, se suele usar la encriptación mediante fusibles para
proteger el código contenido.
3.1.7 EPROM
Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read
OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se realiza, como en
el caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea
borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete
a la EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de material
cerámico y son más caros que los microcontroladores con memoria OTP que están hechos
con material plástico.
3.1.7.1 EEPROM
Se trata de memorias de sólo lectura, las cuales se puede escribir y borrar eléctricamente.
EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación
como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control
programado de un PC. Es muy cómoda y rápida la operación de grabado y la de borrado.
23
No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de
memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas
veces se quiera sin ser retirados de dicho circuito. Para ello se usan "grabadores en circuito"
que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el
programa de trabajo. El número de veces que puede grabarse y borrarse una memoria
EEPROM es finito, por lo que no es recomendable una reprogramación continúa. Son muy
idóneos para la enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la
tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables
Para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo
a las condiciones del entorno. Este tipo de memoria es relativamente lenta.
3.1.8 FLASH
Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar.
Funciona como una ROM y una RAM pero consume menos y es más pequeña. A diferencia
de la ROM, la memoria FLASH es programable en el circuito. Es más rápida y de mayor
densidad que la EEPROM. La alternativa FLASH está recomendada frente a la EEPROM
cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera
más ciclos de escritura y borrado.
3.1.9 Memoria RAM
La memoria RAM es una memoria volátil, es decir, que se pierden los datos al desconectar
el equipo, y se destina a guardar las variables y los datos. Los microcontroladores disponen
de capacidades de RAM comprendidas entre 20 y 512 bytes.
3.2 Registros y Bits
Un registro es una posición de memoria en la cual se puede almacenar un dato. Es decir que
la memoria esta dividida en pequeñas “partes” llamadas “Registros”.
Dentro de la memoria, cada registro se identifica mediante un número, el cual se denomina
“Dirección de memoria” y generalmente está expresado en formato Hexadecimal. El primer
registro de una memoria corresponde a la dirección 00H.
24
Dado que identificar a cada registro mediante un número hexadecimal puede resultar muy
complejo a la hora de diseñar el programa, existe la posibilidad de asignar un “nombre” a
una dirección de registro. En general, este nombre está directamente relacionado con la
función que cada registro cumple dentro del sistema.
Los registros no solo son utilizados por el programador (usuario) para almacenar los datos
que la aplicación debe procesar, sino que, además, sirven para controlar todo el
funcionamiento del microcontrolador en su conjunto. Esta función, la cumple un conjunto
de registros que ya vienen “Predefinidos” desde la fábrica.
Es decir, que el fabricante asigna las funciones de configuración y control del
microcontrolador en un grupo de registros y el usuario no puede modificar la función que
cumple cada uno de éstos. Cada Registro está dividido en 8 “partes” a los cuales se los
denomina “Bits”. Entonces podemos decir que un Registro esta formado por un conjunto de
8 bits.
El Bit es la menor unidad de información que un sistema digital puede procesar y solo
puede contener los valores lógicos 0 y 1.
3.3 Líneas de Entrada/Salida (E/S), (Puertos)
Los microcontroladores cuentan con una serie de pines destinados a entrada y salida de
datos o señales digitales. A estos pines se les denomina “Puerto”.
Como mencionamos anteriormente, todo el funcionamiento del microcontrolador está
controlado a través de los registros. Los puertos no son la excepción, también están
controlados por los registros. Por esto, un puerto no puede estar formado por más de 8
pines; 1 Pin por cada Bit de un registro. Un puerto si puede estar
Formado por menos de 8 pines.
Un microcontrolador puede contener varios puertos dependiendo del modelo.
A cada puerto se lo identifica con una letra. Por ejemplo; “Puerto A”, “Puerto B”, etc.
Para poder utilizar un puerto, primero el mismo debe ser configurado. Cada pin de un
puerto puede ser configurado como entrada o salida independientemente del resto de los
pines del mismo puerto.
25
3.4 Módulos Temporizadores Internos (TMRs)
Un temporizador interno (TMR) es un módulo de hardware incluido en el mismo
microcontrolador el cual está especialmente diseñado para incrementar automáticamente el
valor de un registro asociado al TMR cada vez que el módulo TMR recibe un pulso. A este
pulso se lo llama “señal de reloj”.
El módulo TMR siempre incrementa el valor del registro asociado, nunca decremento dicho
valor.
Algunos microcontroladores pueden incluir más de un módulo TMR y la señal de reloj de
cada uno de éstos puede ser de origen interno o externo.
Si el origen de la señal de reloj está configurado como externo, el módulo temporizador
puede ser utilizado como un contador de eventos externos, incrementando el TMR con cada
pulso recibido mediante el pin correspondiente.
Si el origen de la señal de reloj es interno, el TMR incrementa con cada ciclo del oscilador.
Esto permite utilizar el temporizador como “contador de ciclos de programa”, donde, un
ciclo corresponde al tiempo de ejecución de una instrucción, lo cual se puede calcular con
la siguiente fórmula:
1
-----------------( Frec. Osc. / 4)
Donde “Frec. Osc.” es la frecuencia del oscilador utilizado.
Dado que la velocidad de ejecución del microcontrolador corresponde a ¼ de la velocidad
del cristal utilizado, cada ciclo de programa se ejecuta en un tiempo determinado según el
cristal que estemos utilizando.
Por ejemplo; con un cristal de 4Mhz la velocidad real de procesamiento del
microcontrolador es de 1 Mhz.
Esto significa que cada ciclo de programa se ejecuta a 1/1.000.000 (1 uS) y dado que cada
incremento del TMR corresponde a un ciclo de programa, si contamos los incrementos de
un TMR, indirectamente podremos calcular el tiempo transcurrido.
26
3.5 Utilizando un microcontrolador
Como mencionamos anteriormente, el microcontrolador tiene una memoria de programa,
donde grabamos las instrucciones necesarias para que el micro realice el trabajo que
necesitamos. Cuando compramos un microcontrolador, la memoria de programa viene
vacía. Para que un microcontrolador funcione es necesario
“programarlo”.
Los microcontroladores se programan en un lenguaje de programación llamado
Ensamblador (en inglés Assembler) cuya principal característica es su altísima
complejidad.
Los lenguajes de programación se clasifican según el “Nivel” de programación en:
escritura fácilmente legible y comprensible por el hombre. En la actualidad se trata de
lenguajes de tipo visual.
poco más al lenguaje de maquina.
Permiten un acceso más amplio al control físico de la maquina (hardware).
escribe código en el mismo “idioma” del procesador. Se tiene control total del sistema. Es
necesario un conocimiento de la arquitectura mecánica del procesador para realizar una
programación efectiva. El lenguaje de programación es muy especifico para cada modelo
de procesador, incluso puede variar de un modelo a otro de procesador dentro de un mismo
fabricante.
Podemos decir que los lenguajes de alto Nivel se asemejan más al lenguaje humano y que
los lenguajes de bajo Nivel se asemejan más al lenguaje de máquina y en el lenguaje
ensamblador el usuario debe programar en el propio “idioma del procesador”.
El microcontrolador sólo entiende de números, es decir que, el código Assembler (texto) no
puede ser procesado directamente por el microcontrolador. Para poder grabar el programa
27
en el micro, primero debemos convertir el texto del código Assembler a números, en
general, en formato hexadecimal. A este proceso
Se le llama “Compilación”.
Por último, después de compilado, el programa está listo para ser grabado al
microcontrolador. Esto realiza mediante una “placa programadora”. A ésta placa
programadora, comúnmente se la llama “programador”.
Existen distintos tipos de programadores los cuales pueden ser para conectar a la PC
mediante el puerto Serie (COM) o Paralelo (LPT).
Cada programador trabaja en conjunto con un software, mediante el cual se realiza el
proceso de lectura y escritura de los microcontroladores.
A continuación se presenta un resumen del proceso de desarrollo del código y grabación de
un microcontrolador:
1) Escribir el código Assembler . Se genera un archivo con extensión ASM.
2) Compilar el código Assembler . Se genera un archivo con extensión HEX.
3) Grabar (transferir) el programa desde la PC al microcontrolador mediante un
programador.
3.6 Aplicaciones de los microcontroladores.
Cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar
sustancialmente sus prestaciones, reducir su tamaño y coste, mejorar su fiabilidad y
disminuir el consumo.
Algunos fabricantes de microcontroladores superan el millón de unidades de un modelo
determinado producidas en una semana. Este dato puede dar una idea de la masiva
utilización de estos componentes.
Los microcontroladores están siendo empleados en multitud de sistemas presentes en
nuestra vida diaria, como pueden ser juguetes, horno microondas, frigoríficos, televisores,
computadoras, impresoras, módems, el sistema de arranque de nuestro coche, etc. Y otras
28
aplicaciones con las que seguramente no estaremos tan familiarizados como
instrumentación electrónica, control de sistemas en una nave espacial, etc. Una aplicación
típica podría emplear varios microcontroladores para controlar pequeñas partes del sistema.
Estos pequeños controladores podrían comunicarse entre ellos y con un procesador central,
probablemente más potente, para compartir la información y coordinar sus acciones, como,
de hecho, ocurre ya habitualmente en cualquier PC.
3.7 El mercado de los microcontroladores.
Aunque en el mercado de la microinformática la mayor atención la acaparan los desarrollos
de los microprocesadores, lo cierto es que se venden cientos de microcontroladores por
cada uno de aquéllos.
Existe una gran diversidad de microcontroladores. Quizá la clasificación más importante
sea entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de los
microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los
microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer.
La razón de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para
la gran mayoría de las aplicaciones, lo que hace absurdo emplear micros más potentes y
consecuentemente más caros. Uno de los sectores que más tira del mercado del
microcontrolador es el mercado automovilístico. De hecho, algunas de las familias de
microcontroladores actuales se desarrollaron pensando en este sector, siendo modificadas
posteriormente para adaptarse a sistemas más genéricos. El mercado del automóvil es
además uno de los más exigentes: los componentes electrónicos deben operar bajo
condiciones extremas de vibraciones, choques, ruido, etc. y seguir siendo fiables. El fallo
de cualquier componente en un automóvil puede ser el origen de un accidente.
En cuanto a las técnicas de fabricación, cabe decir que prácticamente la totalidad de los
microcontroladores actuales se fabrican con tecnología CMOS (Complementary Metal
Oxide Semiconductor). Esta tecnología supera a las técnicas anteriores por su bajo
consumo y alta inmunidad al ruido.
29
La distribución de las ventas según su aplicación es la siguiente:

Una tercera parte se absorbe en las aplicaciones relacionadas con los
computadores y sus periféricos.

La cuarta parte se utiliza en las aplicaciones de consumo (electrodomésticos,
juegos, TV, vídeo, etc.)

El 16% de las ventas mundiales se destinó al área de las comunicaciones.

Otro 16% fue empleado en aplicaciones industriales.

El resto de los microcontroladores vendidos en el mundo, aproximadamente un
10% fueron adquiridos por las industrias de automoción.
También los modernos microcontroladores de 32 bits van afianzando sus posiciones en el
mercado, siendo las áreas de más interés el procesamiento de imágenes, las
comunicaciones, las aplicaciones militares, los procesos industriales y el control de los
dispositivos de almacenamiento masivo de datos.
3.8 Recursos comunes a todos los microcontroladores.
Al estar todos los microcontroladores integrados en un chip, su estructura fundamental y
sus características básicas son muy parecidas. Todos deben disponer de los bloques
esenciales Procesador, memoria de datos y de instrucciones, líneas de E/S, oscilador de
reloj y módulos controladores de periféricos. Sin embargo, cada fabricante intenta enfatizar
los recursos más idóneos para las aplicaciones a las que se destinan preferentemente.
30
Figura 3.1 El microcontrolador. Este es un sistema cerrado. Todas las partes del
Con formato: Fuente: Negrita
computador están contenidas en su interior y sólo salen al exterior las líneas que gobiernan
los periféricos.
3.9 Caracteristicas del PIC16F87X
3.9.1 La arquitectura harvard
En el caso específico se utilizara el 16f877
La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que el
CPU esta conectado a dos memorias a través de dos buses independientes (y no
necesariamente deben tener el mismo ancho). Una de las memorias contiene solamente las
instrucciones del programa (Memoria de Programa) y la otra almacena los datos (Memoria
de Datos).
Bus de datos
Bus de Instrucciones
MEMORIA DE
DATOS
CPU
8
12
MEMORIA DE
INSTRUCCIONES
Figura 3.2 Aarquitectura harvard,
Muestra como se compone un sistema harvard con la unidad principal de CPU, una
memoria de datos y una memoria de programa. Los microcontroladores PIC utilizan la
arquitectura Harvard, con una memoria de datos de 8 bits, y una memoria de programa que,
según el modelo, puede ser de 12, 14 o 16 bits.
3.9.2 Principales características
Se enumeran las prestaciones y dispositivos especiales de los PIC16F87X.
· Procesador de arquitectura RISC avanzada
31
· Juego de solo 35 instrucciones con 14 bits de longitud. Todas ellas se ejecutan en un ciclo
de instrucción, menos las de salto que tardan dos.
· Hasta 8K palabras de 14 bits para la Memoria de Programa, tipo FLASH en los modelos
16F876 y 16F877 y 4KB de memoria para los PIC 16F873 y 16F874.
· Hasta 368 Bytes de memoria de Datos RAM.
· Hasta 256 Bytes de memoria de Datos EEPROM.
· Pines de salida compatibles para el PIC 16C73/74/76/77.
· Hasta 14 fuentes de interrupción internas y externas.
· Pila de 8 niveles.
· Modos de direccionamiento directo e indirecto.
· Power-on Reset (POP).
· Temporizador Power-on (POP) y Oscilador Temporizador Start-Up.
· Perro Guardián (WDT).
· Código de protección programable.
· Modo SLEEP de bajo consumo.
· Programación serie en circuito con dos pines, solo necesita 5V para
Programarlo en este modo.
· Voltaje de alimentación comprendido entre 2 y 5,5 V.
· Bajo consumo: < 2 mA valor para 5 V y 4 Mhz 20 A para 3V y 32 M <
1 A en standby.
32
Figura 3.3 Encapsulado PDIP de 40 pines.
Terminales del PIC16F877, esta figura muestra cada una de las terminales del
microcontrolador, las flechas indican si son de entrada o salida, en caso de que cuente con
dos flechas esto indica que se puede configurar como entrada o salida.
3.9.3 Terminales de entrada-salida
Puerto A:
Puerto de e/s de 6 pines
RA0 RA0 y AN0
RA1 RA1 y AN1
RA2 RA2, AN2 y VrefRA3 RA3, AN3 y Vref+
RA4 RA4 (Salida en colector abierto) y T0CKI(Entrada de reloj del modulo Timer0)
RA5 RA5, AN4 y SS (Selección esclavo para el puerto serie síncrono)
Puerto B:
Puerto e/s 8 pines
Resistencias pull-up programables
RB0 Interrupción externa
RB4-7 Interrupción por cambio de flanco
RB5-RB7 y RB3 programación y debugger in circuit
Puerto C:
Puerto e/s de 8 pines
RC0 RC0, T1OSO (Timer1 salida oscilador) y T1CKI (Entrada de reloj del modulo
Timer1).
RC1-RC2 PWM/COMP/CAPT
RC1 T1OSI (entrada osc timer1)
RC3-4 IIC
RC3-5 SPI
33
RC6-7 USART
Puerto D:
Puerto e/s de 8 pines
Bus de datos en PPS (Puerto paralelo esclavo)
Puerto E:
Puerto de e/s de 3 pines
RE0 RE0 y AN5 y Read de PPS
RE1 RE1 y AN6 y Write de PPS
RE2 RE2 y AN7 y CS de PPS
3.9.4 Otras terminales

VDD: Positivo de alimentación. 2-6 Vcc.

VSS: Negativo de alimentación.

MCLR: Master Clear (Reset). Mientras en este terminal haya un nivel bajo (0 Vcc),
el microcontrolador permanece inactivo.

OSC1/CLKIN: Entrada del oscilador (cristal). Entrada de oscilador externo.

OSC2/CLKOUT: Salida del oscilador (cristal).
34
Figura 3.4 diagrama de conexiones de alimentación
En esta figura se muestran las conexiones necesarias para el funcionamiento del PIC así
como los componentes necesarios que en el PIC se utilizan son un oscilador a 4 mhz dos
capacitares cerámicos de 22pf y resistencia de 10k y sus conexiones a 5v y tierra.
3.10 Dispositivos periféricos
0: Temporizador-contador de 8 bits con preescaler de 8 bits
1: Temporizador-contador de 16 bits con preescaler que puede
Incrementarse en modo sleep de forma externa por un cristal/clock.
-contador de 8 bits con preescaler y postscaler.
dulos de Captura, Comparación, PWM (Modulación de Ancho de Pulsos).
Conversor A/D de 1 0 bits.
Transmitter) con 9 bit.
lo Esclavo (PSP) solo en encapsulados con 40 pines
3.11 Diferencias entre los modelos de 28 y los de 40 pines
El PIC 16F873 y el 876 tienen 28 pines, mientras que el PIC 1 6F874 y 877 tienen 40.
Nos centraremos en el PIC 16F873 y las diferencias que tiene con sus hermanos son
mínimas y se detallan a continuación:
Los modelos de 40 pines disponen de 5 Puertos de E/S: A, B, C, D y E, mientras que los de
28 solo tienen 3 Puertos: A, B y C.
Los modelos de 40 pines tienen 8 canales de entrada al Conversor A/D, mientras que los de
28 solo tienen 5 canales. Sólo poseen el Puerto Paralelo Esclavo los PIC 16F87X de 40
pines.
35
3.12 ELl PIC 16F87X
Bajo el nombre de esta subfamilia de microcontroladores, actualmente encontramos cuatro
modelos: EL PIC 16F873/4/6 y 7. Estos microcontroladores disponen de una memoria e
programa FLASH de 4 a 8 KBytes de 14 bits, considerablemente superior frente al PIC
16F84 en el que solo disponíamos de l Kbyte de 14 bits.
De los microcontroladores indicados, el 16F873 y el 16F876 son de 28 pines, mientras que
16F874 y el 16F877 tiene 40 pines, lo que les permite disponer de hasta 33 líneas de E/S.
En su arquitectura además incorporan:
· Varios Timer
· USART
· Bus I2C
Tabla 3.1 En la Tabla se muestran las características comparativas más relevantes de esta
familia de microcontroladores
36
3.13 Descripción global del dispositivo
Este documento contiene la información específica del dispositivo. Se puede encontrar
información adicional del PICmicroTM en el Manual de Referencia de los PIC de la gama
media, (DS33023) que se puede obtener en el website de Microchip. El Manual de
referencia debe ser considerado un documento complementario a estos datos, y
recomendable leerlo para entender mejor la arquitectura del dispositivo y el funcionamiento
de los módulos periféricos.
La familia consta de cuatro dispositivos (PIC16FS73, PIC16F874, PIC16F876 y PIC
16F877) en estas hojas de datos. Los PIC 1 6F876/873 entran en el bloque de dispositivos
encapsulados en 28-pines y los PIC 1 6F877/874 entran en el bloque de dispositivos
encapsulados en 40 pines. Los dispositivos de 28- pines no tienen implementado el puerto
paralelo esclavo.
37
Tabla 3.2 El PIC16F877 por dentro. Esta figura muestra la estructura interna del
Con formato: Fuente: Negrita
Con formato: Fuente: Negrita
Pic16f877.
38
Tabla 3.3 Descripción de los Pines del PIC 16F874 y PIC16F877
39
Descripción de los pines de los PIC 16F874 y 16F877 (Continuación Tabla 3.3)
3.14 Programacion.
3.14.1 Instrucciones del PIC16F877.
Se tienen 35 instrucciones con las cuales se puede programar el PIC, y a continuación se
describe cada una de ellas.
ADDLW
CALL
INCF
NOP
SLEEP
ADDWF
CLRF
INCFSZ
RETFIE
SUBLW
ANDLW
CLRW
IORLW
RETLW
SUBWF
ANDWF
CLRWDT
IORWF
RETURN
SWAPF
BCF
COMF
MOVF
RLF
XORLW
BSF
DECF
MOVLW
RRF
XORWF
40
BTFSC
DECFSZ
BTFSS
GOTO
MOVWF
La función de cada una de las instrucciones se describe a continuación.
ADDWF
Acción
Suma el contenido del acumulador y el registro dado, y el resultado
lo guarda en d
Sintaxis
ADDWF f,d
Funcionamiento
Add W to file register (Añade W al registro)
Operación
d = W + f (d puede ser W ó f).
Descripción
Esta instrucción suma el contenido de un registro específico al
contenido de W donde f puede ser un registro cualquiera con un
determinado valor.
ANDWF
Acción
Realiza la operación AND entre un registro y W
Sintaxis
ANDWF f,d
Funcionamiento
AND W with f
Operación
d = W AND f (d puede ser W o f).
Descripción
Esta instrucción realiza la operación lógica AND entre el
acumulador y el registro f. el resultado se guarda dependiendo del
valor de d. Si este se omite, el valor por defecto es 1 y se guarda en
f
41
CLRF
Acción
Borra un registro
Sintaxis
CLRF f
Funcionamiento
Clear file register
Operación
F=0
Descripción
Esta instrucción borra un registro específico, poniendo sus bits a
cero
CLRW
Acción
Borra el acumulador
Sintaxis
CLRW
Funcionamiento
Clear W
Operación
W=0
Descripción
Esta instrucción borra el registro W solamente
COMF
Acción
Complementa el registro F
Sintaxis
COMF f,d
Funcionamiento
Complement f
Operación
d = NOT f (d puede ser W ó f).
Descripción
Esta instrucción complementa un registro, es decir, los ceros los
convierte en unos, y los unos en ceros.
42
DECF
Acción
Decrementa el registro f
Sintaxis
DECF f,d
Funcionamiento
Decrement f
Operación
d = f – 1 (d puede ser W ó f).
Descripción
Esta instrucción decrementa en una sola unidad el registro "f".
DECFSZ
Acción
Decrementa el registro f, y si el resultado es cero, se salta una
instrucción.
Sintaxis
DECFSZ f,d
Funcionamiento
Decrement f, skip if 0
Operación
d = f – 1, si d = 0 SALTA (d puede ser W ó f).
Descripción
Esta instrucción decrementa el contenido del registro direccionado
por el parámetro f, y si el resultado es 0 salta la instrucción
siguiente. Si no, sigue con su curso habitual
INCF
Acción
Suma una unidad al registro f
Sintaxis
INCF f,d
Funcionamiento
Increment f
Operación
d = f + 1 (d puede ser W ó f).
Descripción
Esta instrucción incrementa en una sola unidad el registro "f".
43
INCFSZ
Acción
Incrementa en 1 a f, y si f= 0 salta la siguiente instrucción
Sintaxis
INCFSZ f,d
Funcionamiento
Increment f, Skip if 0
Operación
d = f + 1, si d = 0 SALTA (d puede ser W ó f).
Descripción
Esta instrucción incrementa en una sola unidad el registro "f", en la
cual si el resultado “d” es igual a cero, entonces salta la instrucción
siguiente.
IORWF
Acción
Operación lógica OR entre el acumulador y un registro
Sintaxis
IORWF f,d
Funcionamiento
Inclusive Or W with F
Operación
d = W OR f (d puede ser W ó f).
Descripción
Esta instrucción realiza una operación lógica OR inclusivo entre el
acumulador W y el registro direccionado por el parámetro f. El
parámetro d determina donde se almacenará el resultado de la
operación. Si no se pone nada, el valor por defecto es 1 y se guarda
en f.
MOVF
Acción
Mueve el contenido de un registro al acumulador o al propio
registro
Sintaxis
MOVF f,d
Funcionamiento
Move f
Operación
d = f (d puede ser W ó f).
Descripción
Esta instrucción mueve el contenido del registro f en el mismo
44
registro f o en W. D determina el destino del resultado. Si no se
pone nada, el valor por defecto es 1 y se guarda en f.
MOVWF
Acción
Mueve el acumulador al registro f
Sintaxis
MOVWF f
Funcionamiento
Move W to f
Operación
f=W
Descripción
Esta instrucción copia el contenido del acumulador W en el registro
direccionado por el parámetro f.
NOP
Acción
No opera
Sintaxis
NOP
Funcionamiento
No Operation
Operación
Ninguna
Descripción
Esta instrucción no
realiza ninguna ejecución, pero sirve para
gastar un ciclo de máquina, equivalente a 4 de reloj
RLF
Acción
Rota a la izquierda el registro f
Sintaxis
RLF f,d
Funcionamiento
Rotate Left through Carry f
45
Operación
d = << 1 (d puede ser W ó f).
Descripción
Esta instrucción rota a la izquierda todos los bits del registro
direccionado por el parámetro f pasando por el bit CARRY del
registro STATUS (desde los bits menos significativos a los más
significativos).
Es como si multiplicáramos por dos el contenido del registro.
Veamos el registro f de forma gráfica:
El bit D7 pasa al CARRY del registro STATUS, el contenido del
CARRY pasa al D0, el D0 al D1, etc.
RRF
Acción
Rota a la derecha el registro f
Sintaxis
RRF f,d
Funcionamiento
Rotate Right through Carry f
Operación
d = f >> 1 (d puede ser W ó f).
Descripción
Esta instrucción rota a la derecha todos los bits del registro
direccionado por el parámetro f pasando por el bit CARRY del
registro STATUS (desde los bits más significativos a los menos
significativos).
Es como si dividiéramos por dos el contenido del registro.
Si no se pone nada, el valor por defecto es 1 y se guarda en f.
46
SUBWF
Acción
Resta el contenido del registro W el registro f
Sintaxis
SUBWF f,d
Funcionamiento
Subtract W from f
Operación
d = f – W (d puede ser W ó f).
Descripción
Esta instrucción resta el valor contenido en el acumulador W del
valor contenido en el registro direccionado por el parámetro f. El
parámetro d determina el destino. Si no se pone nada el valor por
defecto será 1 y se almacenará en f.
SWAPF
Acción
Invierte los dos nibbles que forman un byte dentro de un registro
Sintaxis
SWAPF f,d
Funcionamiento
Swap nibbles in f
Operación
f = 0123 SWAP 4567 de f
Descripción
Esta instrucción intercambia el valor de los 4 bits más
significativos (D7-D4) contenidos en el registro f, con los 4 bits
menos significativos (D3-D0) del mismo. El parámetro d determina
el destino. Si no se pone nada, el valor por defecto es 1 y se guarda
en f.
XORWF
Acción
Operación lógica OR-Exclusiva
Sintaxis
XORWF f,d
Funcionamiento
Exclusive OR W with f
Operación
d = W OR f
Descripción
Esta instrucción efectúa la operación lógica XOR (OR exclusivo)
47
entre el valor contenido en el acumulador W y el valor contenido
en el registro direccionado por el parámetro f. El parámetro d
determina el destino. Si no se pone nada el valor por defecto es 1 y
se guarda en f
3.14.2 Instrucciones orientadas al manejo de bits
BCF
Acción
Pone a cero el bit b del registro f
Sintaxis
BCF f,b
Funcionamiento
Bit Clear f
Operación
F(b) = 0
Descripción
Esta instrucción pone a cero un bit que hayamos elegido de un
registro determinado.
BSF
Acción
Pone a uno el bit b del registro f
Sintaxis
BSF f,b
Funcionamiento
Bit Set f
Operación
F(b) = 1
Descripción
Esta instrucción pone a uno un bit que hayamos elegido de un
registro determinado.
48
BTFSC
Acción
Comprueba un bit b del registro f, y salta la instrucción siguiente si
este es cero
Sintaxis
BTFSC f,b
Funcionamiento
Bit Test, Skip if Clear
Operación
F(b) = 0? SI, salta una instrucción
Descripción
Esta instrucción comprueba el valor del bit b en el registro f, y si b
= 0 entonces se salta la siguiente instrucción. Si b = 1 no salta y
sigue con su ejecución normal.
BTFSS
Acción
Comprueba un bit b del registro f, y salta la instrucción siguiente si
este es uno
Sintaxis
BTFSC f,b
Funcionamiento
Bit Test, Skip if Set
Operación
F(b) = 1? SI, salta una instrucción
Descripción
Esta instrucción comprueba el valor del bit b en el registro f, y si b
= 1 entonces se salta la siguiente instrucción. Si b = 0 no salta y
sigue con su ejecución normal.
49
3.14.3 Operaciones con literales y de control
ADDLW
Acción
Suma a W un literal
Sintaxis
ADDLW
Funcionamiento
Add literal to W
Operación
W=W+k
Descripción
Esta instrucción suma un valor de un literal al contenido del
registro W y lo guarda en W.
ANDLW
Acción
Realiza la operación AND entre un literal y W
Sintaxis
ANDLW k
Funcionamiento
AND W with k
Operación
W = W AND k
Descripción
Esta instrucción realiza una operación lógica AND entre el
contenido de W y k. El resultado se guarda siempre en el
acumulador W
CALL
Acción
Llama a una subrutina en la dirección k
Sintaxis
CALL k
Funcionamiento
Call subroutine
Operación
CALL  k...RETURN  PC+1.
Descripción
Esta instrucción llama a un grupo de instrucciones (subrutina) que
comienzan en la dirección k, donde k puede ser un valor numérico
o una etiqueta. Siempre termina con la instrucción de retorno
(RETURN o RETLW).
50
CLRWDT
Acción
Pone el temporizador WDT a cero.
Sintaxis
CLRWDT
Funcionamiento
Clear WatchDog Timer
Operación
WDT = 0
Descripción
Esta instrucción se utiliza cuando programamos el PIC con la
opción Watch Dog habilitada. Para evitar el reset del PIC, el
programa debe contener cíclicamente la instrucción CLRWDT para
ponerlo a cero. Si no se pone a cero a tiempo, el WDT interpretará
que se ha bloqueado el programa y ejecutará un reset para
desbloquearlo.
GOTO
Acción
Salto incondicional a k.
Sintaxis
GOTO k
Funcionamiento
Go to address (label)
Operación
Salto  k
Descripción
Esta instrucción ejecuta un salto del programa a la dirección k. El
parámetro k puede ser un valor numérico o una etiqueta.
IORLW
Acción
Operación lógica OR entre el acumulador y un literal
Sintaxis
IORWF f,d
Funcionamiento
Inclusive OR W with l
Operación
W = W OR l
51
Descripción
Esta instrucción realiza una operación lógica OR inclusivo entre el
acumulador W y un literal. El resultado siempre se guarda en el
acumulador.
MOVLW
Acción
Copia el contenido de un literal al acumulador
Sintaxis
MOVLW f
Funcionamiento
Move literal to W
Operación
W=f
Descripción
Esta instrucción asigna al acumulador W el valor del literal k, el
cual debe estar comprendido entre 0 y 255.
RETFIE
Acción
Retorno de la llamada a una subrutina
Sintaxis
RETFIE
Funcionamiento
Return From Interrupt
Operación
FIN INTERRUPCIÓN
Descripción
Esta instrucción devuelve el control al programa principal después
de ejecutarse una subrutina de gestión de una interrupción.
RETLW
Acción
Retorno de subrutina y carga literal k en el acumulador
Sintaxis
RETLW
Funcionamiento
Return with Literal in W
Operación
RETORNO con W = k
52
Descripción
Esta instrucción retorna de una subrutina al programa principal,
cargando el acumulador W con el literal k.
RETURN
Acción
Retorno de una subrutina.
Sintaxis
RETURN
Funcionamiento
Return from subroutine
Operación
RETORNO
Descripción
Esta instrucción retorna de una subrutina al programa principal en
la instrucción siguiente a la llamada de la subrutina, tomando el
valor almacenado en el stack para continuar.
Es la última instrucción que forma una subrutina (al igual que
RETLW).
SLEEP
Acción
Paso a modo de bajo consumo
Sintaxis
SLEEP
Funcionamiento
Go into Standby Mode
Operación
EN ESPERA.
Descripción
Esta instrucción detiene la ejecución del programa, deja el PIC en
modo suspendido y el consumo de energía es mínimo.
No ejecuta ninguna instrucción hasta que sea nuevamente
reinicializado (reset) o surja una interrupción.
Durante este modo, el contador del Watch Dog sigue trabajando, y
si lo tenemos activado el PIC se reseteará por este medio.
53
SUBLW
Acción
Resta al literal k el valor del acumulador.
Sintaxis
SUBLW k
Funcionamiento
Substract W from Literal
Operación
W=k-W
Descripción
Esta instrucción resta al literal k el valor almacenado en W y el
resultado se guarda en el acumulador.
XORLW
Acción
Operación lógica OR exclusivo entre el acumulador y el literal k
Sintaxis
XORLW k
Funcionamiento
Exclusive OR Literal with W
Operación
W = W XOR k
Descripción
Esta instrucción realiza un OR exclusivo entre el contenido del
acumulador W y el valor del literal k. El resultado se guarda
siempre en el acumulador.
54
3.4.2 Ejemplos de programacion
Con formato: Fuente: Negrita
3.4.2.1 Ejemplo 1
Con formato: Fuente: Negrita
;Sumar dos valores inmediatos (p.e. 5+7) el resultado se deposita en la posición 0x10
;
List
p=16F873
;Tipo de procesador
include"P16F873.INC"
Resultado
Inicio
Stop
;Definiciones de registros internos
equ
0x10
;Define la posición del resultado
org
0x00
;Vector de Reset
goto
Inicio
org
0x05
;Salva el vector de interrupción
movlw 0x05
;Carga 1er. sumando en W
addlw 0x07
;Suma el 2º sumando
movwf Resultado
;Almacena el resultado
nop
;Poner breakpoint de parada
nop
end
A_igual_B
clrf
Stop
nop
;Fin del programa fuente
Resultado
;Pone a 0 el resultado
;Poner breakpoint de parada
nop
end
;Fin del programa fuente
55
3.4.2.2 Ejemplo 2
Con formato: Fuente: Negrita
Con formato: Fuente: Negrita
;El programa compara dos números A y B. Si A=B, el resultado es 0. Si A > B, el resultado
;es A-B. Si A < B el resultado es A+B;
;Hay que destacar que, al no haber instrucciones de comparación, esta se realiza mediante
;restas.
List
p=16F873
;Tipo de procesador
include"P16F873.INC"
;Definiciones de registros internos
Dato_A
equ
0x10
;Variable del dato A
Dato_B
equ
0x11
;Variable del dato B
Resultado
Inicio
equ
0x12
;Variable para el resultado
org
0x00
;Vector de Reset
goto
Inicio
org
0x05
;Salva el vector de interrupción
movf Dato_B,W
;Carga el dato B
subwf Dato_A,W
;Resta/compara con dato A
btfsc
STATUS,Z
;Son iguales (Z=1)??
goto
A_igual_B
;Si
btfsc
STATUS,C
;No. A mayor que B (C=0)??
goto
A_mayor_B ;Si
A_menor_B movf Dato_A,W
;No, A es menor que B
addwf Dato_B,W
;Suma a más B
movwf Resultado
;Guarda el resultado
goto
Stop
A_mayor_B movwf Resultado
goto
;
Stop
56
CAPITULO IV CIRCUITERIA Y EQUIPO ELECTRÓNICO USADO
4.1 Señales de entrada al sistema
Con formato: Fuente: Negrita
Con formato: Fuente: Negrita
ETIQUETA
DIRECCION
TIPO
FUNCION
De bo hasta b7
teclado matricial
Sirve para activar y
D7 y d6
4x4teclas modelo
desactivar el sistema
s310119
mediante contraseña
Sensor de humo
Sirve para detectar
fotoeléctrico mod.
partículas de humo
4W-B
en el aire
Sensor magnético
Detecta cuando
UL Y1205 TR
alguna ventana o
Teclado
Humo
Magnético
A1
A4
puerta esta abierta
Movimiento
A3
Sensor de
Detecta movimiento
Movimiento Pasivo
en un área especifica
Infrarrojo mod. RX40PI
Temperatura
A0
Sensor de
Detecta variaciones
temperatura LM35
de temperatura en un
área especifica
Cristal
A2
Sensor de impacto
Detecta el
para cristales mod.
rompimiento de
DG-50
cristales
Monitorean un
Cámara
Reloj en
tiempo real
espacio determinado
A0
E1 y E2
reloj
Es el que permite
tener la hora para la
alarma
Tabla 4.1 en esta figura observamos las entradas al sistema las cuales se controlan
mediante las entrada al PIC
57
En el caso del reloj se comenta que el protocolo de comunicación es I2C que utilizan SDA
(que significa dato serial o serial data). Y SCL(serial clock) las características más salientes
del bus I2C son:
Se necesitan solamente dos líneas, la de datos (SDA) y la de reloj (SCL). Cada dispositivo
conectado al bus tiene un código de dirección seleccionable mediante software. Habiendo
permanentemente una relación Master/ Slave entre el micro y los dispositivos conectados el
bus permite la conexión de varios Masters, ya que incluye un detector de colisiones.
El protocolo de transferencia de datos y direcciones posibilita diseñar sistemas
completamente definidos por software. Los datos y direcciones se transmiten con palabras
de 8 bits.
4.2 Señales de salida al sistema
ETIQUETA DIRECCION
TIPO
FUNCION
V
I
P
mA
Chapa
C1
Sirena
C3
Chapa
Abre y cierra
eléctrica Mod.
permitiendo el
SK-990ª
acceso
Sirena para
Produce un sonido
exterior
de sirena cuando se
Mod. 748
activa la alarma y
12 - 14
800
9.6
24
140
16.8
6 - 12
300
36
5
1.1
5.5
también enciende
una luz
estroboscopia
Torreta
Luz Estrobo
EST-75AM
C2
Son las
Luz de aviso de
emergencia
Display LCD
Muestra función de
de 16x2
acceso al sistema
mW
58
Display
mismas del
teclado
iluminado
Mod.
TM162AAC62
Monitor
Monitor LCD
Muestra las señales
de 19” marca
de cámaras de
LG
video
C5
Succionar aire y
Ventilador
120
120
140
16.8
enfriar la sala
Dar aviso de un
Buffer y led
12
problema en la
alarma
C7
12v cd 10ª
Puerto 1
máx.
C6
Puerto2
12v cd 10ª
máx.
Tabla 4.2 En esta figura encontramos las señales de salida del sistema las cuales son las
salidas al PIC
59
VCC
RD3
RD2
RD1
330
R5
LED4
VCC1
jumper
330
R4
LED3
330
R2
LED1
PD1
C3
330
R3
LED2
Buzzer
1000uF 0.33uF
C5
Vout
GND
Vin
VR1
C1
C2
22pF
NA
R1 10K
22pF
S1
jumper
0.1uF
C4
VCC1
1
RD0
3
2
1
VCC
selector de fuente
2
1
entrada 5 VCC
2
1
entrada de alterna
XT1
A5
A4
A3
A2
A1
A0
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
12
31
1
13
14
2
3
4
5
6
7
33
34
35
36
37
38
39
40
7
6
5
4
3
2
OSC1/CLKIN
OSC2/CLKOUT
MCLR/VPP
RD6
RB0
RD7
19
20
21
22
27
28
29
30
VDD
VDD
11
32
8
RE0/RD/AN5
9
RE1/WR/AN6
10
RE2/CS/AN7
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
15
RC0/T1OSO/T1CKI
16
RC1/T1OSI/CCP2
17
RC2/CCP1
18
RC3/SCK/SCL
23
RC4/SDI/SDA
24
RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
VSS
VSS
8
9
10
11
12
13
14
DIP14
1
PIC16F877-04/P
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
u1
RB1
RB2
RB3
RB4
RB5
RB6
RB7
E1
E0
E2
jumper
E2
D0
E1
RD7
RD6
D1
D2
D3
D4
D5
C0
C1
C2
C3
C4
C5
C6
C7
A0
A1
A2
A3
A4
A5
jumper
E0
D5
D4
D3
D2
D1
D0
C7
C6
C5
C4
C3
C2
C1
C0
jumper
1
2
3
1
2
3
4
5
6
1
2
3
4
5
6
7
8
1
2
3
4
5
6
1
2
puerto E
puerto D
puerto C
puerto A
salida voltaje 5V
4.3 circuiteria adicional
Tarjeta principal del PIC16F877A
2
60
Figura 4.1 tarjeta del pic
Observamos la tarjeta en la cual contiene el PIC la cual es una tarjeta individual con los
conectores, para que salgan a los módulos de entradas, salidas, display y teclado para así
evitar ruidos y posibles daños al PIC en caso de algún corto
Modulo de Display 16x2 y Teclado Matricial 4x4
L1
T1
4
5
6
7
8
R1
R2
R3
R4
4.7K
4.7K
4.7K
4.7K
VCC
VCC
VCC
VCC
16
D
15
#
14
*
0
13
3
12
C
11
9
10
8
9
7
8
B
7
6
6
5
LCD 2x 16
Display deCristal Liquido
5
4
2
4
A
3
3
16
2
2
1
1
1
1
R5
15
RV1
10K
VCC
VCC
B1
10
GND
9 A8
8
7 A7
A6
6 A5
5 A4
4
3 A3
A2
2 A1
19
1
VCC
Y8
Y7
Y6
Y5
Y4
Y3
Y2
Y1
11
12
13
14
15
16
17
18
OE2
OE1 VCC
20
RB7
1
RB6
2
RB5
3
14
13
12
4
RB3
5
RB2
6
RB1
7
D1
11
10
9
8
RB4
VCC
VCC
GND
RD6
RD7
RB0
Options|CenterHorizontal=True|CenterVertical=True|PrintScale=0.98|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PaperKind=A4 (210x297 mm)|PrintScaleMode=1
Figura 4.2 Display y teclado
En esta imagen observamos el diagrama de la tarjeta que contiene el display y el teclado
con el cual se va a manejar la alarma ya que en esta se podrán hacer los ajustes a la alarma
como es introducir la clave organizar eventos para que active alguna carga y es en donde el
usuario da la señal de activar la alarma y desactivarla, también en esta tarjeta se podrán
poner hora y fecha.
61
5Vcd
R3
220
R2
15K
R1
220
Tx
conector2
1N4148
Relay
MD-5
1
2
LED
conector1
5Vcd
GND 1
2
Q1
BC548
Rx
Figura 4.3 Sensor infrarrojo
En este diagrama observamos un sensor infrarrojo el cual será para evitar la intromisión
externa o sea este será en las paredes del perímetro del museo de ciencias
VCC
C1
27pF
1
XT
32768Hz
2
Conector1
2
1
VCC
VCC
VCC
R1
4.7K
8583
1
2
3
4
8
7
6
5
PCF8583
R2
4.7K
INT
SCL
SDA
SCL
SDA
INT
VCC
Conector2
1
2
3
R3
4.7K
Figura 4.4 Reloj en tiempo real
En este diagrama observamos el reloj en tiempo real el cual conectado al PIC es el que nos
ayuda a mantener la fecha y hora de la alarma externamente al PIC lo cual no beneficia en
que el PIC solo hace procesos importantes y no se pierden pines en hacerlo internamente
Modulo de entradas
62
JP15
2
1
JP16
GND
Vout Vin
3
2
1
L5
R19
330
R17
1
R20
1K
U5
Optoisolator1
GND5
VR5
0.01uF
R18
80K
1
2
0.01uF
JP14
Figura 4.5 Este modulo de entradas optoacopladas
es optó acoplada para que las conexiones con el PIC sean solo con el moc, lo cual mejora
en que no hay conexión física y en caso de un corto o algún desperfecto solo se quemaría la
entrada, además que se pueden conectar directamente los componentes ya que esta ya tiene
su etapa de potencia
TIP3055 no.1
12vcd
NPN
LM7812
conector1
T1
LED1
Vin Vout
GND
PD1
2
1
C1
4700uF
C2
C3
0.22uF
0.1uF
R3
470
conector2
12vcd
GND121
2
GND12
TIP3055 no.2
5vcd
NPN
PD2
LM7805
Vin Vout
GND
C6
4700uF
LED2
C4
C5
0.22uF
0.1uF
conector3
5vcd 1
GND5 2
R4
82
GND5
Figura 4.6 Fuente de alimentación regulada +5 y +12 volts
En este diagrama observamos el diseño de una fuente de 12 y 5 volts de corriente directa la
cual será usada para la alimentación de la alarma
63
R2
470
JP2
2
1
R3
1K
Triac 1
L1
1
2
R1
330
JP1
C1
100pF
U1
Optoisolator1
Figura 4.7 Modulo de salidas corriente directa
Es necesario aislar eléctricamente la etapa de potencia y la etapa digital del circuito ya que
si existe una falla en cualquiera de las dos etapas la otra no se ve afectada. Para este
propósito, se utiliza el optó acoplador MOC3011, que cuenta con salida a TRIAC y maneja
voltajes de 120 Vca.
JP4
3
2
1
R6
470
1
2
R5
U2 10K
Optoisolator1
TIP31- 1
L2
R4
330
JP3
R7
5.2K
Figura 4.8 Modulo de salidas alterna
En este caso como en el ejemplo de arriba tenemos un modulo de salidas optó acoplado
también el cual es de corriente alterna que como en los casos pasado tiene las mismas
características, y es la encargada de la activación y desactivación de la cerradura.
Utilizamos un optó aislador 4n35 para aislar la etapa digital de la etapa de potencia, ya que
64
además de evitar ruido, tenemos la seguridad de que si existiese alguna falla en alguna de
ellas no se daña la otra
conector2
DS1
1
2
U1
conector1
LED0
2
1
R1
R2
Optoisolator1
330
Q1
NPN
470
5.7K
K1
R3
4
D1
1N4002
2
1
3
conector3
1
2
Header2H
5
Relay
Figura 4.9 Modulo de salidas con reelevador
En este caso como en el ejemplo de arriba tenemos un modulo de salidas optó acoplado
también el cual tiene la ventaja que se tiene con relays lo cual beneficia en que se pueden
conectar corriente directa (CD) con hasta 10 A como máximo y en corriente alterna (CA)
igualmente con 10 A máximo. La ventaja es que se pueden conectar cargas como en el caso
actual se conectara el ventilador extractor que en el caso es de corriente alterna.
VCC
5Vpos
VSRC
VCC
10K
10K
4
VCC
3
2
+VS VOUT
GND
2
IN
3
11
1
LM35DZ
A
LM324N
1
OUT
VCC JP?
1
OUT 2
3
Header 3
Figura 4.10 Sensor de temperatura
Esta etapa utiliza el sensor de temperatura LM35, el cual entrega una tensión de 10mV\ºC.
Sin embargo, para introducir esta señal analógica al PIC necesitamos acondicionar esta
65
señal para así obtener un nivel de cuantizacion para cada ºC, de acuerdo al convertidor A\D
que se este utilizando.
En este caso, el convertidor que tiene integrado el PIC, emplea una conversión de 10 bits,
con lo que tenemos 1024 niveles de cuantizacion. El acondicionamiento de la señal se hace
con LM324, bajo una configuración de amplificador no inversor, esta configuración es de
las más utilizadas ya que tiene una mejor estabilidad a la frecuencia
4.4 Caracteristicas del sistema
Las características del sistema constan de de un display y un teclado con opciones el cual
podrá activar la alarma así como activar y desactivar todos los sensores, la cual tendrá en
pantalla los acontecimientos como en caso de que se active la alarma dará en caso de ser
violada la seguridad activara una sirena, un estrobo en la sala y en el display un mensaje de
que a sido violada , un buzzer y un led de destellara como alarma visual, como dato extra se
menciona que es una alarma muy segura ya que sus combinaciones de la contraseña son
16x10 a la 4ª potencia lo cual nos da una gran cantidad de caracteres posibles por lo cual
nos da una gran seguridad ya que la mayoría de las alarmas solo utilizan código numérico .
66
CAPITULO V. MANUAL DEL SISTEMA DE ALARMA Y DEL NIPLE
5.1 Manual del sistema de alarma
Manual de usuario para la alarma
LA PRMERA VEZ QUE SE ENCIENDE LA ALRMA APARECE LA SIGUIENTE
PANTALLA
Y AL PRECIONAR LA TECLA ENTER (# ) APARECERA LA PANTALLA DE LA
SIGUIENTE MANERA
EN LA CUAL POR DE FAULT TENDREMOS QUE INGRESAR LA CLAVE OOOO
67
Y APARECE LA SIGUIENTE PANTALLA
PO 3 SEGUNDOS Y DE AHÍ AUTOMATICAMENTE PASA A LA SIGUIENTE
PANTALLA
POR 3 SEGUDOS Y AUTOMATICAMENTE PASA A LA SIGUIENTE PANTALLA
EN LA CUAL PONDREMOS LA CLAVE UTILIZANDO LAS 16 TECLAS DEL
TECLADO CON UNA CONVINACION DE 4 DIGITOS (TAMBIEN SE PUEDEN
68
UTILIZAR LAS FLECHAS) AL INTRODUCIR LOS 4 DIGITOS NOS DA LA
SIGUIENTE PANTALLA
AQUÍ AHÍ QUE VERIFICAR LA CLAVE PARA QUE EN CASO DE EQUIVOCARSE
PONGA UNA CLAVE CORRECTA, SI LA CLAVE ES CORRECTA PASA A LA
SIGUIENTE PANTALLA
DURANTE 3 SEGUNDOS
Y PASA A LA SIGUIENTE PANTALLA
69
QUE ESTA PANTALLA ES LA DE INICIO DE AQUÍ EN ADELANTE DESPUES DE
HABER SIDO MODIFICADA LA CLAVE POR PRIMERA VES POR LO TANTO
ESTE PASO NUNCA VOLVERA A REPETIRSE
Y SI EL DATO ES INCORRECTO APARECERA LA SIGUIENTE PANTALLA
ESTA PATALLA APARECE POR 3 SEGUNDOS APROX Y REGRESARA AL PUNTO
DE PARTIDA QUE EN ESTE CASO ES
Y ASI SE TENDRA QUE REPETIR LA SECUENCIA DESDE EL PRINCIPIO
PRESIONANDO LAS FLECHAS DEL MENÚ TENEMOS QUE NOS MUESTRA EL
MENÚ EN EL ORDEN DE
70
71
EN ESTE CASO SALE LA PANTALLA 6 SOLO SI ESTA NO HA SIDO
CONFIGURADA EN EL CASO DE YA HABER SIDO CONFIGURADA ESTA
PANTALLA SE OMITE Y APARECE LA SIGUIENTE PANTALLA
AL ENTRAR AL MENU 1 QUE ES ACTIVAR O DESACTIVAR EL SISTEMA
TENEMOS LA SIGUIENTE PANTALLA
AL INTRODUCIR LA CLAVE SE OBSERVARA DE LA SIGUIENTE MANERA
EN CASO DE QUE LA CLAVE SEA CORRECTA PONDRA EN PANTALLA LA
SIGUIENTES PANTALLAS
72
(3 SEGUNDOS)
Y PASA A PONER EL SIGUIENTE MENSAJE
EN ESE MOMENTO EL SISTEMA DE ALARMA ESTARA ACTIVADO Y LA SEñAL
ES QUE SE OIRA POR 3 SEGUNDOS EL BUZZER Y EL ESTROBO TAMBIEN
ENCENDERA.
PARA DESACTIVAR EL SISTEMA ES NECESARIO PRESIONAR LA TECLA
ENTER QUE EN EL CASO DE EL TECLADO SERA LA TECLA INDICADA CON LA
EL SIMBOLO DE (#) EN ESE MOMENTO MOSTRARA LA SIGUIENTE PANTALLA
DESPUES CUANDO LA CLAVE ES INTRODUCIDA SE VERA DE LA SIGUENTE
MANERA
73
ENTONCES MUESTRA
(3 SEGUNDOS)
DESPUES MOSTRARA LA SIGUIENTE PANTALLA
SISTEMA DESACTIVADO DURA APROX 30 SEG MIENTRAS EL ESTROBO
PERMANECE ENCENDIDO ESTO INDICARA QUE LA CHAPA ELECTRICA
ESTARA ABIERTA
DESPUES DE ESO SE MOSTRARA LA PANTALLA NUMERO 1 DEL MENU
AL SELECCIONAR LA PANTALLA NUMERO DOS QUE ES HORA/FECHA
TENDREMOS LA SIGUIENTE PANTALLA
74
EN ESTE CASO CON LAS FLECHAS QUE TIENEN EN UN COSTADO
FECHA/HORA SE PODRA SELECCIONAR EL DIA DESEADO, YA QUE
HALLAMOS INTRODUCIDO EL DATO CORRECTO PRECIONAMOS LA TECLA
CON EL SIMBOLO DE # QUE NOS HARA IR A LA SIGUIENTE PANTALLA
EN ESTE CASO SE REPITEN PARA EL PUNTO ANTERIOR APARECIENDO EN
PANTALLA LOS MESES DEL AñO
Y EN ESTE CASO SE REPITE EL CASO ANTERIOR Y LA SIGUIENTE PANTALLA
ES
Y SE REPITE EL PASO ANTERIOR
75
Y LA SIGUIENTE PANTALLA ES
AL TERMINAR DE INGRESAR LOS SEGUNDOS NOS REGRESARA AL MENU AN
LA PANTALLA NUMERO 2
EL SISTEMA TRAE POR DE FAULT UNA TEMPERATURA DE 27 GRADOS
CENTIGRADOS COMO MAXIMO Y A 25 SE DESACTIVA EL VENTILADOR EN
EL CASO DE SER NECESARIO LA CONFIGURACION DE OTRA TEMPERATURA
SE SELECIONA LA PANTALLA NUMERO 3 Y APARECERA LA SIGUIENTE
PANTALLA
LA CUAL INDICA LA TEMPERATURA ALA DERECHA A LA HORA COMO SE
DECIA EN EL PARRAFO ANTERIOR QUE A LOS 27°C SE VA ACTIVAR EL
VENTILADOR Y A LOS 25°C SE DESACTIVARA EN ESTA MISMA PANTALLA SE
76
PODRAN HACER LOS CAMBIOS DE TEMPERATURA DESEADA LA CUAL SE
PODRA HACER CON LAS FLECHAS DEL LADO DERECHO DE MENU Y SE
PODRA MOVER LOS GRADOS DE DOS EN DOS COMENZANDO DESDE
LA CUAL PDREMOS IR INCREMENTANDO SEGUN LAS NESESIDADES HASTA
LA TEMPERATURA DE
AL TENER LA TEMPERATURA DESEADA PRECIONAMOS LA TECLA # Y
APRARECERA LA PANTALLA NUMERO 3 DE AHÍ PASAMOS A LA SIGUIENTE
PANTALLA QUE SERA LA NUMERO 4 LA CUAL SERA PARA PROGRAMAR UN
EVENTO DIARIO AL ENTRAR A ESTA APARECERA LA SIGUIENTE PANTALLA
77
EL CUAL NOS INDICA QUE ES LA CONFIGURACION DE EL PUERO EXTRA
NUMERO 1 EN EL CUAL PODREMOS CONFIGURAR UNA CARGA A
DETERMINADA HORA DE INICIOP Y FIN.
AL PRECIONAR ENTER (#) APARECERA EN PANTALLA POR UNOS 2
SEGUNDOS LA SIGUIENTE PANTALLA
Y DESPUES APARECERA LA SIGUIENTE PANTALLA AUTOMATICAMENTE
Y SE PODRA CONFIGURAR LA HORA MEDIANTE LAS FLECHAS DE
FECHA/HORA AL PONER LA HORA LE DAMOS ENTER (#) PASAREMOS A LA
SIGUIENTE PANTALLA
78
AL PRECIONAR ENTER APARECERA POR UNOS 2 SEGURNDOS LA PANTALLA
Y AUTOMATICAMENTE DESPUES APARECERA LA SIGUIENTE PANTALLA
AL SELECCIONAR CON LAS FLECHAS DEL HORA /FECHA LA HORA DESEADA
Y PRECIONAR ENTER PASAREMOS A LA SIGUIENTE PANTALLA
Y AL DARLE ENTER TENDREMOS CONFIGURADO EL PUERO 1 PARA
CONFIGURAR EL PUERTO DOS EN LA PANTALLA DEL MENU NUMERO 4 Y
QUE AL DARLE ENTER ENTRAMOS AL MENU
79
PODRA SELECCIONAR ENTRE EL PUERTO 1 O 2 SEGÚN SEA NECESARIO O LOS
DOS CONFIGURANDO DE UNO EN UNO Y PARA SELECCIONAR EL PUERO DOS
EN ESTA PANTALLA SOLO ES NECESARIO UTILIZAR LAS FLECHAS DE MENU
PARA SELECCIONAR EL PUERO NECESARIO, LA FORMA DE CONFIGURAR EL
PUERTO DOS ES COMPLETAMENTE IGUAL A LA DEL PUERTO 1Y AL
CONFIGURARLOS Y DARLE ENTER (#) SE SALE DE LA CONFIGURACION Y
LLEGA NUEVAMNTE A LA PANTALLA 4 DE AHÍ PASAMOS A LA PANTALLA 5
AL PASAR ALA PANTALLA NUMERO 5 DEL MENU QUE ES LA SIGUIENTE
Y AL DARLE ENTER (#) APARECERA LA SIGUIENTE PANTALLA
80
AL PRECIONAR LA CLAVE ACTUAL APARECERA DE LA SIGUIENTE MANERA
AL DAR LOS 4 NUMERO POR UNOS BREBES SEGUNDOS APRROX 2 SEGUNDOS
Y DESPUES AUTOMATICAMENTE APARECERA LA SIGUIENTE PANTALLA
AL PONER LA NUEVA CLAVE APARECERA DE LA SIGUIENTE MANERA
AUTOMATICAMENTE
AL INTRODUCIR LA CLAVE ESTA APARECERA LA PANTALLA
81
POR UNOS SEGUNDOS APROX 2 SEGUNDOS Y REGRESARA A LA PANTALLA
DEL MENU PRICIPAL NUMERO 5 Y YA ESTA CONFIGURADO, DE AHÍ
PASAMOS A MENU 6 EN EL CUAL PARECERA LA SIGUIENTE PANTALLA
ESTO SOLO COMO RECORDATORIO DE QUE NO HA SIDO CONFIGURADA LA
FECHA Y LA HORA EN CASO CONTRARIO OSEA QUE ESTA HALLA SIDO
CONFIGURADO SERA LA SIGUIENTE PANTALLA
EN LA CUAL NOS INDICARA LA FECHA ARRIBA, ABAJO LA TEMPERATURA
ACTUAL DE LA LECTURA DEL SENSOR DE TEMPERATURA Y ENSEGUIDA DE
LA TEMPERATURA LA HORA ACTUAL TENIENDO HORAS, MINUTOS Y
SEGUNDOS
5.2 Mmanualanual del niple
La programación de los microcontroladores resulta una tarea muy compleja dado que el
usuario debe conocer la arquitectura del procesador y además debe dominar el lenguaje de
programación “Ensamblador” . Si bien existen distintas versiones del lenguaje C o Basic
Adaptadas a la programación de microcontroladores, todavía la programación resulta muy
compleja por el alto grado de abstracción que implica.
82
Niple es un entorno de desarrollo visual para programación de microcontroladores PIC.
Con Niple, el usuario sólo diseña un diagrama de flujo de manera totalmente visual y en
alto nivel de programación, en lenguaje humano, y el software genera el código Assembler
de manera automática. Además, el software controla y supervisa todo el proceso de diseño,
advirtiendo al usuario sobre posibles errores en la lógica del programa que se está
diseñando. Esta ventaja no la tiene ningún otro lenguaje de programación.
Figura 5.1 comparaciones de lenguajes de programación
En esta imagen se pretende mostrar las ventajas que ofrece nicle en comparación con otras
formas de programar el PIC
De ésta manera Niple ofrece la posibilidad de realizar desarrollos con microcontroladores
con un mínimo de esfuerzo.
El principal objetivo de Niple es facilitar al máximo la programación de los
microcontroladores. Para esto, el software ofrece un entorno totalmente visual, donde todo
el sistema se adapta a las características del modelo de microcontrolador seleccionado; es
decir que; carga el mapa de memoria con sus respectivos nombres de registros y bits, asigna
las funciones correspondientes a cada Registro y Bit dentro del sistema, ajusta el tamaño de
83
la memoria EEPROM, activa los módulos correspondientes, etc. Es decir que, Ud. Tendrá
disponible sólo las características que corresponden al modelo de micro en uso.
El concepto de la programación es que el usuario se concentre en “qué es lo que quiere
hacer”, y Nicle “sabe cómo hacerlo”. Es decir que el usuario sólo se dedica a diseñar la
estructura lógica del proceso que desea realizar y el software se encarga de resolver todo el
desarrollo del código Assembler , controlando hasta el más mínimo detalle.
5.3 Introducción al Niple
Niple es un “Entorno Visual de Desarrollo para p programación de Microcontroladores
PIC”.
Con Niple podrá programar los PIC a través del diseño de un diagrama de flujo de manera
gráfica y de alto nivel de programación, sin necesidad de escribir código Assembler, o
escribiendo la menor cantidad de código, convirtiéndose en la forma más rápida, sencilla y
productiva de desarrollar proyectos con microcontroladores PIC.
Diseñe un diagrama de flujo de manera gráfica y en “lenguaje humano” mientras Niple
realiza el trabajo pesado por Ud., controlando errores lógicos o de configuración,
realizando cálculos, coordinando la interacción entre las distintas partes del proyecto y
generando de manera automática el código Assembler
Estas características, hacen de Niple la herramienta ideal tanto para quienes se inician en el
mundo de los microcontroladores como para aquellos usuarios más experimentados que
quieran aumentar su productividad.
Entre las principales prestaciones que Niple ofrece podemos destacar:
Entono Visual de Alto Nivel de programación:
· Niple ofrece una metodología de programación totalmente visual y en lenguaje humano.
· Bloques estandarizados, lo cual facilita la interpretación del proyecto.
· Ud. se concentra en “Que Hacer“y Niple se encarga de “Como Hacerlo”.
· Control automático de errores lógicos.
· Supervisa el ingreso de datos.
84
Control automático de registros y bits:
· Controla la existencia de todos los registros y bits necesarios para el correcto
funcionamiento
del proyecto en el momento de generar el código Assembler.
· Controla que no existan nombres de registros y bits duplicados.
· Valida los nombres de los registros y los bits en el momento de ser declarados.
. Corrección automática de errores lógicos
· Controla la correcta configuración de los puertos.
· Controla la configuración y activación de las interrupciones.
· Supervisa la creación de vínculos entre bloques.
. Generación del Código Assembler:
· Control automático de la sintaxis del código generado.
· Control automático del cambio de página.
· Generación automática de etiquetas.
. Modelos de PIC soportados por Niple:
· Niple para PIC 12F6xx
. 12F629
. 12F675
· Niple para PIC 16F84
. 16F84
· Niple para PIC 16F6xx
. 16F627
. 16F628
. 16F648
· Niple para PIC 16F87x
. 16F870
. 16F873
. 16F874
. 16F876
. 16F877
· Velocidades de reloj soportadas: 4 Mhz, 10 Mhz, 20 Mhz.
85
5.4 Funciones disponibles
Las funciones disponibles dependen del modelo de microcontrolador utilizado pero en
general podemos mencionar:
. Selección del cristal utilizado (4, 10 o 20 Mhz)
. Asignación de valores a registros y bits
. Configuración y manejo de interrupciones
. Manejo de rutinas de usuario
. Configuración, Lectura y Escritura de puertos
. Lectura / Escritura de EEPROM interna del PIC
. Funciones de comparación de registros y bits (condiciones =, >, <, >=, <=, <>)
. Manejo automático de tablas
. Temporizadores por bucle (de tiempo fijo o variable)
. Visualización de datos en dígitos 7 segmentos (Ánodo común y Cátodo común)
. Ingreso de datos por teclado matricial (3x3 y 3x4)
. Visualización de datos en pantallas LCD (16x2, 20x2 y 20x4)
. Manejo de memorias EEPROM 24Cxxx por comunicación I2C
. Manejo de memorias RAM PCF8570 por comunicación I2C.
. Manejo de reloj/calendario de tiempo real PCF8583, con control de alarmas por fecha.
. Configuración y manejo de temporizadores internos (TMR0, TMR1 y TMR2)
. Comunicaciones RS232 por código y por USART
. Comunicaciones RS485
. Comparadores analógicos
. Conversión A/D. La cantidad de canales depende del modelo de micro
. Módulos CCP (Compara, Captura y PWM)
. Cálculos matemáticos: (+, - , / , *, en 8 o 16 bits), conversión a BCD
. Escalado de valores de un rango a otro (a 8 y 16 bits)
. Manejo de registros de desplazamiento
86
Conclusiones generales
El objetivo planteado al inicio de esta tesis se cumplió satisfactoriamente al lograr el
optimo funcionamiento de cada modulo diseñado.
Nosotros llegamos a la conclusión que la realización de una tesis te ayuda a la vida laboral
ya que se reafirman situaciones y necesidades que no siempre tenemos oportunidad de
realizar, además
aprendimos mas sobre un dispositivo muy importante y que puede
ayudarnos a realizar un sinfín de tareas que es el PIC16F877.
Con la realización de este proyecto se aprendió a utilizar las herramientas de software
aplicables al área de electrónica como son:
NIPLE. Software de programación de pics mediante diagramas de flujo.
ALTIUM DXP 2004. Software de diseño y simulación de esquemáticos y PCB.
PROTEUS. Software de diseño y simulación de circuitos.
COREL DRAW 13. software de diseño grafico
Trabajo a futuro
Las propuestas a futuro se pueden resumir en los siguientes puntos:
. Aumento de sensores infrarrojos de presencia externos.
. Cerca electrificada.
. Alarma manual de incendio.
. Aspersores antiincendio controlados con la misma alarma.
. Control GSM.
. Monitoreo por internet.
87
CAPITULO VI PROGRAMACION
Iniciar
6.1 diagrama general de flujo
E/A = SSE/XXEEEEEA
B = SSSSSSSS
C = SSSSSSSS
Programa
D = SSSSSSSS
principal
A/D=Activado,
tecla2 = 0x00
RD0 = 0
hora_evento2 =
0xFF
RD3 = 0
RD1 = 0
hora_evento1 =
0xFF
hora_evento2fin =
0xFF
RD2 = 0
hora_evento1fin =
0xFF
reloj = 0x00
tecla3 = 0x00
tecla4 = 0x00
nuevo = 0x00
aster3 = 0xFA
grados = 0xAF
tecla = 0xF0
aster4 = 0xFA
aster1 = 0xFA
tecla1 = 0x00
enie = 0xBE
aster2 = 0xFA
evento1 = 0x00
evento2 = 0x00
temperatura_off =
D'25'
temperatura_on =
D'27'
Reg alarma =
0x01
SI
LCD(1)=Activo,
alarma =
EEPROM,06
nuevo2 =
EEPROM,00
LCD(1)=Config,
LCD_BUS=B(4-7),
LCD_RS=B(3),
LCD_RW=B(2),
LCD_Buffer=D(6),
LCD_E=D(7),
GIE=Activado,
RBIE=Activado,
NO
estado =
EEPROM,05
usr_lcd_armando_sistema
Reg estado =
0x02
NO
LCD(1)=Activo,
10_seg
usr_lcd_Bienvenida
NO
SI
usr_sistema_de_seguridad
usr_menu
Reg tecla = 0x14
SI
estado = 0x02
usr_default
usr_compara_clave
88
Rutina de interrupción
lectura del teclado
Interrupción por
RB4 a 7
Teclado(4x4),
tecla=Tecla_Pulsada,
Fila_1=B0, Fila_2=B1,
Fila_3=B2, Fila_4=B3,
Col_1=B4, Col_2=B5,
Col_3=B6, Col_4=B7,
tecla = _np_tabla_teclado(tecla),
0=0x00 - 0, 1=0x01 - 1, 2=0x02 -
Fin de la
interrupción
89
Rutina de inicio por
primera vez.
Pide clave 0000
Rutina de usuario
usr_default
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
aster1 = 0xF0
contador_tecla =
D'0'
aster2 = 0xF0
aster4 = 0xF0
aster3 = 0xF0
tecla = 0xF0
NO
LCD(1)=Activo,
usr_lcd_clave
Reg tecla <> 0xF0
SI
contador_tecla =
contador_tecla +
D'01'
Reg
contador_tecla =
D'1'
NO
Reg
contador_tecla =
NO
D'2'
Reg
NO contador_tecla =
D'3'
Reg
contador_tecla =
NO
D'4'
SI
SI
SI
SI
tecla1 = tecla
tecla2 = tecla
tecla3 = tecla
tecla4 = tecla
aster1 = 0xFA
aster2 = 0xFA
aster3 = 0xFA
aster4 = 0xFA
NO
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD(2,11)=ASCII(aster1),
LCD(2,12)=ASCII(aster2),
LCD(2,13)=ASCII(aster3), LCD(2,14)=ASCII(aster4),
Reg
contador_tecla =
D'4'
SI
500_mse
LCD_CAR, LCD=16x2,
LCD(1,11)='.',
500_mse
500_mse
LCD_CAR, LCD=16x2,
LCD(1,12)='.',
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
LCD_CAR, LCD=16x2,
LCD(1,10)='.',
500_mse
LCD_CAR, LCD=16x2,
LCD(1,03)='ESPERE.',
500_mse
Fin de rutina
90
Rutina de usuario
Rutina de comparación de
Clave, y cambio de clave
En caso de que sea la primera
Vez de funcionamiento
Del circuito
usr_compara_clave
Reg nuevo = 0x00
NO
SI
Reg nuevo2 <>
0x01
NO
key1 =
EEPROM,01
key2 =
EEPROM,02
SI
NO
Reg tecla1 = 0x00
key4 =
EEPROM,04
key3 =
EEPROM,03
SI
NO
Reg tecla2 = 0x00
Reg tecla1 = key1
NO
SI
SI
NO
Reg tecla3 = 0x00
SI
NO
Reg tecla2 = key2
Reg tecla4 = 0x00
SI
SI
Reg tecla3 = key3
nuevo = 0x01
EEPROM,00 =
0x01
NO
NO
SI
Reg tecla4 = key4
NO
LCD(1)=Activo,
LCD(1)=Activo,
SI
LCD(1)=Activo,
LCD(1)=Activo,
usr_lcd_clave_incorrecta
usr_lcd_clave_primera_vez
usr_lcd_clave_primera_vez
usr_lcd_clave_incorrecta
3_seg
3_seg
3_seg
usr_cambio_de_clave
Fin de rutina
91
Rutina para el cambio de clave
Rutina de usuario
usr_cambio_de_clave
Reg estado =
0x02
SI
contador_tecla =
0x00
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
tecla = 0xF0
NO
LCD(1)=Activo,
Reg nuevo = 0x01
usr_lcd_Clave_Actual
NO
SI
Reg nuevo2 <>
0x00
NO
Reg tecla <> 0xF0
SI
SI
contador_tecla =
contador_tecla +
D'01'
contador_tecla =
0x00
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
Reg
Reg
Reg
Reg
contador_tecla = contador_tecla =
= contador_tecla =
NO
NO contador_tecla NO
D'1'
D'2'
D'4'
D'3'
tecla = 0xF0
SI
SI
SI
LCD(1)=Activo,
tecla1 = tecla
NO
tecla2 = tecla
tecla3 = tecla
SI
tecla4 = tecla
usr_lcd_nueva_clave
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD(1,14)=ASCII(aster2),
LCD(1,16)=ASCII(aster4),
LCD(1,13)=ASCII(aster1),
LCD(1,15)=ASCII(aster3),
Reg tecla <> 0xF0
NO
NO
Reg
contador_tecla =
D'4'
SI
SI
contador_tecla =
contador_tecla +
D'01'
1_seg
Reg
Reg
NO = contador_tecla =
contador_tecla
NO
D'2'
D'1'
SI
SI
tecla1 = tecla
tecla2 = tecla
Reg
contador_tecla =
NO
D'3'
SI
tecla3 = tecla
Reg
contador_tecla =
SI
D'4'
SI
key2 =
EEPROM,02
tecla4 = tecla
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD(2,13)=ASCII(aster2),
LCD(2,12)=ASCII(aster1),
LCD(2,14)=ASCII(aster3),
LCD(2,15)=ASCII(aster4),
NO
key1 =
EEPROM,01
key3 =
EEPROM,03
key4 =
EEPROM,04
Reg
contador_tecla =
D'4'
SI
1_seg
Reg key1 = tecla1
SI
NO
Reg key2 = tecla2
contador_tecla =
D'0'
SI
NO
Reg key3 = tecla3
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
SI
tecla = 0xF0
LCD(1)=Activo,
NO
usr_lcd_verificar_clave
92
NO
Reg key4 = tecla4
NO
NO
contador_tecla
=
D'1'
contador_tecla =
NO
D'2'
contador_tecla =
NO
D'3'
contador_tecla =
D'4'
SI
SI
SI
SI
tecla1 = tecla
tecla2 = tecla
tecla3 = tecla
tecla4 = tecla
SI
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD(2,13)=ASCII(aster2),
LCD(2,12)=ASCII(aster1),
LCD(2,14)=ASCII(aster3),
LCD(2,15)=ASCII(aster4),
NO
key2 =
EEPROM,02
key3 =
EEPROM,03
key4 =
EEPROM,04
Reg
contador_tecla =
D'4'
Reg key1 = tecla1
SI
SI
1_seg
NO
Reg key2 = tecla2
contador_tecla =
D'0'
SI
NO
Reg key3 = tecla3
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
SI
Reg key4 = tecla4
tecla = 0xF0
NO
LCD(1)=Activo,
NO
NO
usr_lcd_verificar_clave
NO
Reg tecla <> 0xF0
SI
contador_tecla =
contador_tecla +
D'01'
NO
NO
Reg
Reg
Reg
Reg
contador_tecla =
contador_tecla =
NO contador_tecla = NO contador_tecla = NO
D'1'
D'4'
D'2'
D'3'
SI
key1 = tecla
SI
SI
SI
key2 = tecla
key3 = tecla
key4 = tecla
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD(2,12)=ASCII(aster1),
LCD(2,13)=ASCII(aster2),
LCD(2,14)=ASCII(aster3),
LCD(2,15)=ASCII(aster4),
NO
Reg
contador_tecla =
D'4'
SI
1_seg
Reg key4 = tecla4
NO
SI
Reg key3 = tecla3
NO
SI
Reg key2 = tecla2
NO
SI
Reg key1 = tecla1
NO
SI
EEPROM,01 =
tecla1
nuevo = 0x00
EEPROM,02 =
tecla2
EEPROM,00 =
0x00
EEPROM,03 =
tecla3
LCD(1)=Activo,
EEPROM,04 =
tecla4
EEPROM,00 =
0x01
EEPROM,05 =
0x02
LCD(1)=Activo,
usr_lcd_clave_cambiada
3_seg
usr_lcd_clave_incorrecta
93
SI
Reg key2 = tecla2
NO
SI
Reg key1 = tecla1
NO
SI
EEPROM,01 =
tecla1
nuevo = 0x00
EEPROM,02 =
tecla2
EEPROM,00 =
0x00
EEPROM,03 =
tecla3
LCD(1)=Activo,
EEPROM,04 =
tecla4
usr_lcd_clave_incorrecta
EEPROM,00 =
0x01
EEPROM,05 =
0x02
LCD(1)=Activo,
usr_lcd_clave_cambiada
3_seg
Fin de rutina
94
Rutina del menú principal
Rutina de usuario
usr_menu
tecla = 0xF0
flecha_a = 0x4E
flecha_b = 0x4F
NO
LCD(1)=Activo,
usr_lcd_MENU
Reg tecla = 0xF2
Reg tecla = 0xF1
NO
SI
tecla = 0xF0
LCD(1)=Activo,
usr_sistema_de_seguridad
usr_lcd_on_off_alarma
NO
Reg tecla = 0x14
SI
NO
Reg tecla = 0xF2
NO
Reg tecla = 0xF1
SI
tecla = 0xF0
LCD(1)=Activo,
usr_ajustar_fecha_y_hora
usr_lcd_ajustar_Fecha_y_Hora
Reg tecla = 0x14
SI
SI
NO
NO
Reg tecla = 0xF1
NO
Reg tecla = 0xF2
SI
tecla = 0xF0
95
LCD(1)=Activo,
usr_ajustar_temperatura
usr_lcd_ajustar_temperatura
Reg tecla = 0x14
SI
SI
NO
NO
LCD(1)=Activo,
usr_ajustar_fecha_y_hora
usr_lcd_ajustar_Fecha_y_Hora
Reg tecla = 0x14
SI
NO
SI
NO
Reg tecla = 0xF1
NO
Reg tecla = 0xF2
SI
tecla = 0xF0
LCD(1)=Activo,
usr_ajustar_temperatura
usr_lcd_ajustar_temperatura
Reg tecla = 0x14
NO
NO
SI
SI
SI
Reg tecla = 0xF1
NO
Reg tecla = 0xF2
SI
SI
SI
tecla = 0xF0
LCD(1)=Activo,
usr_programar_evento
usr_lcd_programar_evento
Reg tecla = 0x14
SI
NO
SI
Reg tecla = 0xF1
NO
NO
Reg tecla = 0xF2
SI
tecla = 0xF0
LCD(1)=Activo,
usr_cambio_de_clave
usr_lcd_Cambiar_CLAVE
Reg tecla = 0x14
SI
NO
NO
SI
Reg tecla = 0xF1
NO
Reg tecla = 0xF2
SI
tecla = 0xF0
SI
96
Reg reloj <> 0x01
SI
NO
usr_lcd_fech_y_ora_no_config
GIE=Desactivado,
RBIE=Desactivado,
PCF8583,
Reg tecla = 0x14
SI
NO
NO
SI
Reg tecla = 0xF1
NO
Reg tecla = 0xF2
SI
tecla = 0xF0
Reg reloj <> 0x01
SI
SI
NO
usr_lcd_fech_y_ora_no_config
GIE=Desactivado,
RBIE=Desactivado,
PCF8583,
Señal_Reloj=RE2,
Señal_Datos=RE1,
Nro_Disp=0, dia=Día,
mes=Mes, anio=Año,
horas=Horas,
minutos=Minutos,
segundos=Segundos,
usr_fecha_hora_y_tempe
NO
usr_lcd_tempe_fecha_y_hora
usr_eventos_externos
usr_leer_temperatura
GIE=Activado,
RBIE=Activado,
Reg tecla = 0xF1
NO
Reg tecla = 0xF2
NO
Reg tecla = 0x14
SI
Fin de rutina
97
Rutina de sistema de seguridad
Rutina de usuario
usr_sistema_de_seguridad
Reg alarma =
0x01
SI
NO
usr_activar_sist_clave
Reg alarma =
0x01
SI
RC0 = 1
LCD(1)=Activo,
NO
Fin de rutina
Bit RA5 = 0
SI
Bit RA4_T0CKI =
SI
1
NO
RD1 = 1
NO
usr_lcd_sistema_activado
Bit RA3 = 1 SI
NO
NO
Bit RA2 = 1
SI
Bit RA1 = 0
NO
NO
NO
RD0 = 1
SI
RC2 = 1
RC3 = 1
Reg tecla = 0x14
SI
usr_desact_sist_clave
Reg alarma =
0x00
SI
Fin de rutina
98
rutina para activar el sistema
de seguridad
Rutina de usuario
usr_activar_sist_clave
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
contador_tecla =
0x00
tecla = 0xF0
LCD_CAR, LCD=16x2,
LCD(1,01)='INTRODUCIR
CLAVE',
NO
NO
contador_tecla =
contador_tecla +
D'01'
SI
Reg
contador_tecla =
D'1'
NO
Reg tecla <> 0xF0
Reg
contador_tecla =
D'2'
LCD_CAR,
LCD=16x2,
LCD(2,07)=ASCII(aster1),
Reg
contador_tecla =
D'3'
NO
tecla3 = tecla
tecla2 = tecla
Reg
contador_tecla =
D'4'
SI
SI
SI
SI
tecla1 = tecla
NO
LCD_CAR,
LCD_CAR,
LCD=16x2,
LCD=16x2,
LCD(2,08)=ASCII(aster2), LCD(2,09)=ASCII(aster3),
tecla4 = tecla
LCD_CAR,
LCD=16x2,
LCD(2,10)=ASCII(aster4),
NO
Reg
contador_tecla =
D'4'
SI
tecla = 0xF0
key1 =
EEPROM,01
1_seg
key2 =
EEPROM,02
key3 =
EEPROM,03
key4 =
EEPROM,04
Reg key1 = tecla1
NO
SI
Reg key2 = tecla2
Fin de rutina
NO
RC2 = 0
SI
Reg key3 = tecla3
NO
RD0 = 0
SI
Reg key4 = tecla4
NO
RD1 = 0
SI
RC2 = 1
LCD(1)=Activo,
LCD(1)=Activo,
3_seg
usr_lcd_clave_incorrecta
RD1 = 1
usr_lcd_clave_correcta
3_seg
EEPROM,06 =
0x01
alarma = 0x01
RD0 = 1
RC3 = 1
10_mse
RC3 = 0
99
rutina para desactivar
el sistema de seguridad
Rutina de usuario
usr_desact_sist_clave
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
contador_tecla =
0x00
tecla = 0xF0
NO
Reg tecla <> 0xF0
SI
contador_tecla =
contador_tecla +
D'01'
LCD_CAR, LCD=16x2,
LCD(1,01)='INTRODUCIR
CLAVE',
Reg
contador_tecla =
D'1'
NO
NO
Reg
contador_tecla =
D'2'
NO
Reg
contador_tecla =
D'3'
NO
Reg
contador_tecla =
D'4'
SI
SI
SI
tecla2 = tecla
tecla3 = tecla
tecla4 = tecla
SI
tecla1 = tecla
NO
LCD_CAR,
LCD_CAR,
LCD_CAR,
LCD=16x2,
LCD=16x2,
LCD=16x2,
LCD(2,07)=ASCII(aster1),LCD(2,08)=ASCII(aster2), LCD(2,09)=ASCII(aster3),
LCD_CAR,
LCD=16x2,
LCD(2,10)=ASCII(aster4),
Reg
contador_tecla =
D'4'
SI
key2 =
EEPROM,02
key1 =
EEPROM,01
1_seg
tecla = 0xF0
key4 =
EEPROM,04
Reg key1 = tecla1
SI
Reg key2 = tecla2
NO
SI
NO
Reg key3 = tecla3
NO
SI
Reg key4 = tecla4
key3 =
EEPROM,03
SI
NO
RD1 = 0
EEPROM,06 =
0x00
alarma = 0x00
LCD(1)=Activo,
RD0 = 0
usr_lcd_clave_incorrecta
RC0 = 0
3_seg
RC1 = 1
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
3_seg
RD1 = 1
RC2 = 1
LCD_CAR, LCD=16x2,
LCD(1,05)='SISTEMA',
RD0 = 1
RC3 = 1
Fin de rutina
RC2 = 0
RC1 = 0
LCD_CAR, LCD=16x2,
LCD(2,03)='DESACTIVADO',
RC3 = 0
15_seg
10_mse
LCD(1)=Activo,
usr_lcd_clave_correcta
100
Rutina del sistema de ventilacion
Rutina de usuario
usr_leer_temperatura
A/D=Activado,
Conv_AD,
Resolución=8_Bits,
Canal=0,
Resultado=temperatura1,
Reg temperatura1
NO
>= temperatura_on
Reg temperatura1
<= temperatura_off
SI
SI
RC5 = 1
RC5 = 0
NO
Fin de rutina
101
Rutina para programar los eventos externos
En el puerto 1 y 2
Rutina de usuario
usr_programar_evento
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
LCD_CAR, LCD=16x2,
LCD(2,02)='EXTERNO No. 1',
LCD_CAR, LCD=16x2,
LCD(1,01)='PUERTO DE
SALIDA',
tecla = 0xF0
NO
Reg tecla = 0x14
Reg tecla = 0xF1 NO
NO
SI
SI
Reg tecla = 0xF2
NO
Reg tecla = 0x13
SI
SI
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
tecla = 0xF0
LCD_CAR, LCD=16x2,
LCD(1,01)='HORA DE INICIO',
LCD_CAR, LCD=16x2,
LCD(2,02)='EXTERNO No. 2',
Reg tecla = 0x13
NO
NO
Reg tecla = 0x14
SI
Reg tecla = 0xF2
SI
3_seg
usr_minutos
usr_horas
minutos_evento1
= minutos
hora_evento1 =
horas
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
LCD_CMD, LCD=16x2,
NO
LCD_CMD=Limpiar_Pantalla,
NO
SI
3_seg
usr_horas
minutos_evento1fin
= minutos
LCD_CAR, LCD=16x2,
LCD(1,01)='HORA D
FINALIZAR',
hora_evento1fin =
horas
usr_minutos
LCD_CAR, LCD=16x2,
LCD(1,01)='HORA DE INICIO',
3_seg
usr_minutos
minutos_evento2
= minutos
3_seg
usr_horas
minutos_evento2fin
= minutos
Reg tecla = 0xF1
usr_horas
hora_evento2 =
horas
SI
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
LCD_CAR, LCD=16x2,
LCD(1,01)='HORA D
FINALIZAR',
hora_evento2fin =
horas
usr_minutos
Fin de rutina
102
Rutina para el control de cargas en los puertos externos 1 y 2
Rutina de usuario
usr_eventos_externos
SI
Reg
hora_evento1 =
horas
Reg
minutos_evento1 SI
= minutos
evento1 = 0x01
Reg
hora_evento1fin =
horas
NO
NO
evento1 = 0x00
SI
Reg
minutos_evento1fin
SI
= minutos
Fin de rutina
NO
NO
Reg
hora_evento2 =
horas
NO
Reg
hora_evento2fin =
horas
Reg
minutos_evento2fin
= minutos
NO
SI
NO
Reg
minutos_evento2
= minutos
SI
SI
RD3 = 1
RD3 = 0
evento2 = 0x01
RC6 = 1
SI
NO
evento2 = 0x00
Reg evento1 =
0x01
RD2 = 0
NO
NO
RC7 = 0
Reg evento2 =
0x01
SI
RC7 = 1
RC6 = 0
SI
RD2 = 1
103
Rutina para ajustar
la temperatura
Rutina de usuario
usr_ajustar_temperatura
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla, contador = D'20'
LCD_CAR, LCD=16x2,
LCD(2,11)=ASCII(grados),
decontador =
D'40'
LCD_CAR, LCD=16x2,
LCD(2,06)=ASCII(grados),
LCD_CAR, LCD=16x2,
LCD(2,01)='on 27.C-25.C off',
tecla = 0xF0
LCD_CAR, LCD=16x2,
LCD(1,01)='SELECCIONE
TEMP.',
Reg tecla = 0xF1
NO
SI
contador =
contador + D'2'
NO
contador = D'20'
NO
NO
Reg tecla = 0xF2 Reg tecla = 0x14
NO
SI
decontador =
decontador - D'2'
decontador =
contador
contador =
decontador
Reg contador >=
D'20'
Reg decontador
<= D'40'
SI
Reg contador <=
D'40'
SI
Fin de rutina
NO
SI
Reg decontador
>= D'20'
NO
decontador =
D'40'
SI
SI
Reg(8)_->_BCD,
Reg(8)_->_BCD,
(contador),
(decontador),
Unidad=tempe_unidad,
Unidad=tempe_unidad,
LCD_CAR, LCD=16x2,
LCD(2,04)=ASCII(tempe_decena),
LCD_CAR, LCD=16x2,
LCD(2,10)=ASCII(tempe_unidad),
LCD_CAR, LCD=16x2,
LCD(2,05)=ASCII(tempe_unidad),
LCD_CAR, LCD=16x2,
LCD(2,09)=ASCII(tempe_decena),
temperatura_on =
contador
temperatura_off =
contador - D'2'
Reg(8)_->_BCD,
(temperatura_off),
Unidad=tempe_unidad,
104
Rutina para ajustar
Fecha y Hora
Rutina de usuario
usr_ajustar_fecha_y_hora
usr_dia_del_mes
usr_mes
usr_anio
usr_horas
usr_minutos
usr_segundos
PCF8583,
Señal_Reloj=RE2,
Señal_Datos=RE1,
Nro_Disp=0,
Modo=32768_Khz,
Iniciar=SI,
Formato=24_Horas,
Día=dia, Mes=mes,
Año=anio, Horas=horas,
Minutos=minutos,
Segundos=segundos,
Apagar_Alarma,
Reiniciar_Timer,
reloj = 0x01
Fin de rutina
105
Rutina para el dia del mes
Rutina de usuario
usr_dia_del_mes
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
LCD_CAR, LCD=16x2,
LCD(1,01)='SELECCIONE',
contador = D'0'
LCD_CAR, LCD=16x2,
LCD(2,14)='--',
decontador =
D'32'
tecla = 0xF0
LCD_CAR, LCD=16x2,
LCD(2,01)='DIA DEL MES:',
Reg tecla = 0xF3
NO
Reg tecla = 0xF4
NO
Reg tecla = 0x14
SI
SI
SI
contador =
contador + D'01'
decontador =
decontador - D'1'
Fin de rutina
decontador =
contador
contador =
decontador
Reg contador >=
D'1'
Reg decontador
<= D'31'
SI
NO
NO
NO
Reg contador <=
D'31'
NO
decontador =
D'32'
SI
Reg decontador
>= D'1'
NO
SI
SI
Reg(8)_->_BCD,
Reg(8)_->_BCD,
(contador),
(decontador),
Unidad=dias_unidad, Unidad=dias_unidad,
contador = D'0'
dia = contador
LCD_CAR, LCD=16x2,
LCD(2,14)=ASCII(dia_decena),
LCD_CAR, LCD=16x2,
LCD(2,15)=ASCII(dias_unidad),
106
Rutina para el mes
Rutina de usuario
usr_mes
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
LCD_CAR, LCD=16x2,
LCD(2,01)='-- ----------',
contador = D'0'
decontador =
D'13'
tecla = 0xF0
NO
contador = D'0'
NO
LCD_CAR, LCD=16x2,
LCD(1,02)='SELEC. EL MES',
NO
Reg tecla = 0xF3
Reg tecla = 0x14
NO Reg tecla = 0xF4 NO
SI
SI
SI
contador =
contador + D'01'
decontador =
decontador - D'1'
Fin de rutina
decontador =
contador
contador =
decontador
Reg contador >=
D'1'
Reg decontador
<= D'12'
SI
SI
Reg contador <=
D'12'
Reg decontador
>= D'1'
NO
decontador =
D'13'
NO
SI
SI
Reg(8)_->_BCD,
Reg(8)_->_BCD,
(contador),
(decontador),
Unidad=mes_unidad, Unidad=mes_unidad,
LCD_CAR, LCD=16x2,
LCD_CAR, LCD=16x2,
LCD(2,16)=ASCII(mes_unidad), LCD(2,15)=ASCII(mes_decena),
mes = contador
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
Reg mes = D'1'
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='01 ENERO',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='02 FEBRERO',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='03 MARZO',
NO
Reg mes = D'2'
NO
NO
Reg mes = D'3'
NO
LCD_CAR, LCD=16x2,
107
NO
contador = D'0'
NO
D'1'
SI
SI
Reg contador <=
D'12'
Reg decontador
>= D'1'
decontador =
D'13'
NO
SI
SI
Reg(8)_->_BCD,
Reg(8)_->_BCD,
(contador),
(decontador),
Unidad=mes_unidad, Unidad=mes_unidad,
LCD_CAR, LCD=16x2,
LCD_CAR, LCD=16x2,
LCD(2,16)=ASCII(mes_unidad), LCD(2,15)=ASCII(mes_decena),
mes = contador
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
Reg mes = D'1'
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='01 ENERO',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='02 FEBRERO',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='03 MARZO',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='04 ABRIL',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='05 MAYO',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='06 JUNIO',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='07 JULIO',
NO
Reg mes = D'2'
NO
NO
Reg mes = D'3'
NO
Reg mes = D'4'
NO
Reg mes = D'5'
NO
Reg mes = D'6'
NO
Reg mes = D'7'
NO
Reg mes = D'8'
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='08 AGOSTO',
NO
Reg mes = D'9'
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='09
SEPTIEMBRE',
NO
Reg mes = D'10'
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='10 OCTUBRE',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='11 NOVIEMBRE',
SI
LCD_CAR, LCD=16x2,
LCD(2,01)='12 DICIEMBRE',
NO
Reg mes = D'11'
NO
Reg mes = D'12'
108
Rutina para el año
Rutina de usuario
usr_anio
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
decontador = D'4'
contador = 0xFF
LCD_CAR, LCD=16x2,
LCD(2,06)='20XX',
LCD_CAR, LCD=16x2,
LCD(1,01)='SELEC. EL A O',
tecla = 0xF0
LCD_CAR, LCD=16x2,
LCD(1,12)=ASCII(enie),
Reg tecla = 0xF3
contador = 0xFF
NO
NO
NO
NO
Reg tecla = 0xF4
Reg tecla = 0x14
NO
SI
SI
SI
contador =
contador + D'01'
decontador =
decontador D'01'
Fin de rutina
decontador =
contador
contador =
decontador
Reg contador <=
D'3'
Reg decontador
<= D'3'
SI
anio = contador
Reg anio = 0x00
NO
decontador = D'4'
SI
SI
LCD_CAR, LCD=16x2,
LCD(2,08)='08',
SI
LCD_CAR, LCD=16x2,
LCD(2,08)='09',
SI
LCD_CAR, LCD=16x2,
LCD(2,08)='10',
SI
LCD_CAR, LCD=16x2,
LCD(2,08)='07',
NO
Reg anio = 0x01
NO
Reg anio = 0x02
NO
Reg anio = 0x03
109
Rutina para convertir el año
Rutina de usuario
usr_convertir_anio
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla,
Reg anio = 0x00 SI
LCD_CAR, LCD=16x2,
LCD(1,15)='08',
NO
Reg anio = 0x01 SI
LCD_CAR, LCD=16x2,
LCD(1,15)='09',
NO
Reg anio = 0x02 SI
LCD_CAR, LCD=16x2,
LCD(1,15)='10',
NO
Reg anio = 0x03 SI
LCD_CAR, LCD=16x2,
LCD(1,15)='07',
NO
Fin de rutina
110
rutina para ajustar las horas
Rutina de usuario
usr_horas
LCD_CMD, LCD=16x2,
LCD_CMD=Limpiar_Pantalla, contador = 0xFF
decontador =
D'24'
LCD_CAR, LCD=16x2,
LCD(1,01)='AJUSTE --:--:--',
tecla = 0xF0
LCD_CAR, LCD=16x2,
LCD(2,01)=' HORA',
NO
Reg tecla = 0xF4
Reg tecla = 0xF3
NO
NO Reg tecla = 0x14
SI
contador = 0x00
NO
contador =
contador + D'01'
decontador =
contador
contador =
decontador
Reg contador <=
D'23'
SI
SI
SI
decontador =
decontador - D'1'
Fin de rutina
Reg decontador
<= D'23'
NO
decontador =
D'24'
SI
Reg(8)_->_BCD,
Reg(8)_->_BCD,
(decontador),
(contador),
Unidad=hora_unidad,
Unidad=hora_unidad,
LCD_CAR, LCD=16x2,
LCD(1,09)=ASCII(hora_decena),
LCD_CAR, LCD=16x2,
LCD(1,10)=ASCII(hora_unidad),
horas = contador
111
rutina para ajustar los minutos
Rutina de usuario
usr_minutos
decontador =
D'60'
contador = 0xFF
tecla = 0xF0
LCD_CAR, LCD=16x2,
LCD(2,01)='MINUTOS',
NO
Reg tecla = 0xF4 Reg tecla = 0x14
Reg tecla = 0xF3
NO
NO
SI
contador =
contador + D'01'
decontador =
contador
contador = 0x00
NO
minutos =
contador
Reg contador <=
D'59'
SI
decontador =
decontador - D'1'
SI
Fin de rutina
contador =
decontador
Reg contador <=
NO
D'59'
decontador =
D'60'
SI
SI
Reg(8)_->_BCD, Reg(8)_->_BCD,
(decontador),
(contador),
Unidad=minutos_unidad,
Unidad=minutos_unidad,
LCD_CAR, LCD=16x2,
LCD_CAR, LCD=16x2,
LCD(1,12)=ASCII(minutos_decenas),
LCD(1,13)=ASCII(minutos_unidad),
112
Rutina para ajustar los segundos
Rutina de usuario
usr_segundos
decontador =
D'60'
contador = 0xFF
tecla = 0xF0
LCD_CAR, LCD=16x2,
LCD(2,01)='SEGUNDOS',
NO
Reg tecla = 0xF3NO Reg tecla = 0xF4NO Reg tecla = 0x14
SI
contador =
contador + D'01'
SI
decontador =
decontador - D'1'
SI
Fin de rutina
decontador =
contador
contador = 0x00
NO
segundos =
contador
Reg contador <=
D'59'
contador =
decontador
Reg contador <=
D'59'
NO
decontador =
D'60'
SI
SI
Reg(8)_->_BCD,
Reg(8)_->_BCD,
(contador),
(decontador),
Unidad=segundos_unidad,
Unidad=segundos_unidad,
LCD_CAR, LCD=16x2,
LCD_CAR, LCD=16x2,
LCD(1,16)=ASCII(segundos_unidad),
LCD(1,15)=ASCII(segundos_decenas),
113
rutina para convertir los datos a BCD y mostrar en pantalla
Reg(8)_->_BCD,
(temperatura1),
usr_convertir_anio
Unidad=tempe_unidad,
usr_fecha_hora_y_tempe
Rutina de usuario
Reg(8)_->_BCD,Reg(8)_->_BCD,
Reg(8)_->_BCD,
Reg(8)_->_BCD,
(horas),
(mes),
(dia),
(minutos),
Unidad=horas_unidad,
Unidad=mes_unidad,
Unidad=dia_unidad,
Unidad=minutos_unidad,
Reg(8)_->_BCD,
(segundos),
Fin de rutina
Unidad=segundos_unidad,
Decena=segundos_decenas,
Algunas rutinas se omitieron por no mostrar ningun contenido de importancia.
114
REFERENCIAS:
I.
Automatización de procesos con microcontroladores de la familia
PIC16F8XX de microchip.
Tesis Profesional #213
II.
http://www.niplesoft.net/ A partir de el 20 de marzo de 2007 a mayo 2007
aquí se consulto todo sobre la programación y algunos detalles del PIC
III.
http://www.todopic.com.ar/ A partir de septiembre 2006 a enero 2007 y
en esta pagina se consutaron detalles sobre el pic que se utilizo en la tesis
IV.
http://www.datasheetcatalog.net/ A partir de septiembre 2006 a mayo 2007
y en esta pagina se consultaron las hojas de datos de los circuitos utilizados
en la tesis
V.
http://www.electronicafacil.net/circuitos/menu7.html
A
partir
de
septiembre 2006 a mayo 2007 en esta pagina se consutaron algunas
configuraciones y circuitos usados en la tesis
115
Descargar