Está en la página 1de 62

INSTITUTO POLITÉCNICO NACIONAL

CENTRO DE ESTUDIOS CIENTÍFICOS Y TECNOLÓGICOS NÚMERO 9 “JUAN


DE DIOS BATIZ”

UNIDAD DE APRENDIZAJE: ARQUITECTURA DE MICROPROCESADORES Y


MICROCONTROLADORES

PROFESOR: ING. OLIVARES VARGAS JESUS ALBERTO

GRUPO: 5IM2

TURNO: MATUTINO

ALUMNA: GUTIÉRREZ RAMÍREZ ALANA SOFIA

PRACTICA 2. MANIPULACIÓN DE DISPLAYS CON EL PIC16F877A (MANEJO


DE DISPLAYS “MANEJO DEL IDE MPLAB”)

Página 1 de 62
Índice
Índice
Objetivo
Teoría vista en clase
1. Desarrollo teórico “MOSTRAR MENSAJES”
1.1 Microcontroladores
1.1.1 MICROCONTROLADORES PIC
1.1.1.1 Set de instrucciones PIC
1.1.1.2 Características de los PIC
1.2 Descripción de los componentes
1.2.1 PIC16F877A
1.2.1.1 Logo
1.2.1.2 Hojas de datos
1.2.1.3 Diagrama de bloque
1.2.1.4 Descripción de los bloques del PIC16F877A
1.2.2 DISPLAY 7 SEGMENTOS
1.2.2.1 Funcionamiento
1.2.2.2 Segmentos e identificación
1.2.2.3 Ánodo común
1.2.2.4 Cátodo común
1.2.2.5 Caracteres
1.2.2.6 Hojas de Datos
2. Desarrollo teorico de la práctica
2.1 Análisis de circuitos
2.1.1 Bus de direcciones
2.1.2 Bus de control
2.2 Pasos para crear un proyecto en MPLAB
Diagrama
Diagrama Esquemático
Esquemático
Desarrollo
Desarrollo Práctico
Práctico
3. Programa fuente del desplegado de mensajes
4. Simulaciones de los circuitos
5. Mediciones del circuito
5.1 Mediciones con Voltímetro
5.2 Mediciones con Osciloscopio
Conclusiones
Conclusiones

Página 2 de 62
Objetivo
El alumno comprende la operación de los puertosde salida asi
como su manejo en el despliegue de mesajes, mediante el uso de
recursos como lo es el programa MPLAB, realizando su
construcción por medio de un código para lograr la optimización y
ejecutación del mismo dentro de la práctica, identifica y
comprende la entrada y salida de datos en su simulación poniendo
en a prueba los conocimientos previos vistos en clase

Página 3 de 62
Teoría Vista
Teoría Vista en
en Clase
Clase
1. Desarrollo teórico “MOSTRAR MENSAJES”
1.1 Microcontroladores
Un microcontrolador (abreviado µC, UC o mCU) es un circuito integrado
programable, capaz de ejecutar las órdenes grabadas en su memoria. Está
compuesto de varios bloques funcionales que cumplen una tarea específica.
Un microcontrolador incluye en su interior las tres principales unidades
funcionales de una computadora: unidad central de procesamiento, memoria
y periféricos de entrada/salida.

Algunos microcontroladores pueden utilizar palabras de cuatro bits y


funcionan a velocidad de reloj con frecuencias tan bajas como 4 kHz, con un
consumo de baja potencia (mW o micro watts). Por lo general, tendrá la
capacidad de mantenerse a la espera de un evento como pulsar un botón o
de otra interrupción; así, el consumo de energía durante el estado de reposo
(reloj de la CPU y los periféricos de la mayoría) puede ser solo de nano watts,
lo que hace que muchos de ellos sean muy adecuados para aplicaciones con
batería de larga duración. Otros microcontroladores pueden servir para roles
de rendimiento crítico, donde sea necesario actuar más como un procesador
digital de señal (DSP), con velocidades de reloj y consumo de energía más
altos.

Cuando es fabricado el
microcontrolador, no contiene
datos en la memoria ROM. Para
que pueda controlar algún
proceso es necesario generar o
crear y luego grabar en la
EPROM o equivalente del
microcontrolador algún
programa, el cual puede ser
escrito en lenguaje ensamblador
u otro lenguaje para
microcontroladores; sin
embargo, para que el programa
pueda ser grabado en la memoria del microcontrolador, debe ser codificado
en sistema numérico hexadecimal que es finalmente el sistema que hace
trabajar al microcontrolador cuando este es alimentado con el voltaje
adecuado y asociado a dispositivos analógicos y discretos para su
funcionamiento.
Los microcontroladores están diseñados para reducir el costo económico y
el consumo de energía de un sistema en particular. Por eso el tamaño de la
unidad central de procesamiento,
Página 4 de 62
la cantidad de memoria y los periféricos incluidos dependerán de la
aplicación. El control de un electrodoméstico sencillo como una batidora
utilizará un procesador muy pequeño (4 u 8 bits) porque sustituirá a un
autómata finito. En cambio, un reproductor de música o vídeo digital (MP3 o
MP4) requerirá de un procesador de 32 bits o de 64 bits y de uno o más
códecs de señal digital (audio o vídeo). El control de un sistema de frenos
ABS (Antilock Brake System) se basa normalmente en un microcontrolador
de 16 bits, al igual que el sistema de control electrónico del motor en un
automóvil.

Los microcontroladores representan la inmensa mayoría de los chips de


computadoras vendidos, sobre un 50% son controladores "simples" y el
restante corresponde a DSP más especializados. Mientras se pueden tener
uno o dos microprocesadores de propósito general en casa (Ud. está usando
uno para esto), usted tiene distribuidos seguramente entre los
electrodomésticos de su hogar una o dos docenas de microcontroladores.
Pueden encontrarse en casi cualquier dispositivo electrónico como
automóviles, lavadoras, hornos microondas, teléfonos, etc.

Un microcontrolador difiere de una unidad central de procesamiento normal,


debido a que es más fácil convertirla en una computadora en funcionamiento,
con un mínimo de circuitos integrados externos de apoyo. La idea es que el
circuito integrado se coloque en el dispositivo, enganchado a la fuente de
energía y de información que necesite, y eso es todo. Un microprocesador
tradicional no le permitirá hacer esto, ya que espera que todas estas tareas
sean manejadas por otros chips. Hay que agregarle los módulos de entrada
y salida (puertos) y la memoria para almacenamiento de información.

Un microcontrolador típico tendrá un


generador de reloj integrado y una
pequeña cantidad de memoria de
acceso aleatorio o
ROM/EPROM/EEPROM/flash, con lo
que para hacerlo funcionar todo lo que
se necesita son unos pocos programas
de control y un cristal de sincronización.
Los microcontroladores disponen
generalmente también de una gran
variedad de dispositivos de
entrada/salida, como convertidor
analógico digital, temporizadores, UARTs y buses de interfaz serie
especializados, como I2C y CAN. Frecuentemente, estos dispositivos
integrados pueden ser controlados por instrucciones de procesadores
especializados. Los modernos microcontroladores frecuentemente incluyen
un lenguaje de programación integrado, como el lenguaje de programación
BASIC que se utiliza bastante con este propósito.
Página 5 de 62
Los microcontroladores negocian la velocidad y la flexibilidad para facilitar su
uso. Debido a que se utiliza bastante sitio en el chip para incluir funcionalidad,
como los dispositivos de entrada/salida o la memoria que incluye el
microcontrolador, se ha de prescindir de cualquier otra circuitería.

1.1.1 MICROCONTROLADORES PIC


Un PIC es un circuito integrado programable (Programmable Integrated
Circuited), el cual contiene todos los componentes para poder realizar y
controlar una tarea, por lo que se denomina un microcontrolador. Los PIC
son una familia de microcontroladores tipo RISC fabricados por Microchip
Technology Inc. y derivados del PIC1650, originalmente desarrollado por
la división de microelectrónica de General Instrument.

El nombre actual no es un acrónimo. En realidad, el nombre completo es


PICmicro, aunque generalmente se utiliza como Peripheral Interface
Controller (controlador de interfaz periférico).

El PIC original se diseñó para ser usado con la nueva CPU de 16 bits
CP16000. Siendo en general una buena CPU, ésta tenía malas
prestaciones de entrada y salida, y el PIC de 8 bits se desarrolló en 1975
para mejorar el rendimiento del sistema quitando peso de entrada/salida
a la CPU. El PIC utilizaba microcódigo simple almacenado en ROM para
realizar estas tareas; y aunque el término no se usaba por aquel entonces,
se trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos del
oscilador.

En 1985 la división de microelectrónica de General Instrument se separa


como compañía independiente que es incorporada como filial (el 14 de
diciembre de 1987 cambia el nombre a Microchip Technology y en 1989
es adquirida por un grupo de inversores) y el nuevo propietario canceló

Página 6 de 62
casi todos los desarrollos, que para esas fechas la mayoría estaban
obsoletos. El PIC, sin embargo, se mejoró con EPROM para conseguir un
controlador de canal programable. Hoy en día multitud de PIC vienen con
varios periféricos incluidos (módulos de comunicación serie, UART,
núcleos de control de motores, etc.) y con memoria de programa desde
512 a 32 000 palabras (una palabra corresponde a una instrucción en
lenguaje ensamblador, y puede ser de 12, 14, 16 o 32 bits, dependiendo
de la familia específica de PICmicro).

El PIC usa un juego de instrucciones, cuyo número puede variar desde


35 para PIC de gama baja a 70 para los de gama alta. Las instrucciones
se clasifican entre las que realizan operaciones entre el acumulador y una
constante, entre el acumulador y una posición de memoria, instrucciones
de condicionamiento y de salto/retorno, implementación de interrupciones
y una para pasar a modo de bajo consumo llamada sleep.

Microchip proporciona un entorno de desarrollo freeware llamado MPLAB


que incluye un simulador software y un ensamblador. Otras empresas
desarrollan compiladores C y BASIC. Microchip también vende
compiladores para los PIC de gama alta ("C18" para la serie F18 y "C30"
para los dsPIC) y se puede descargar una edición para estudiantes del
C18 que inhabilita algunas opciones después de un tiempo de evaluación.

Para el lenguaje de
programación Pascal existe un
compilador de código abierto,
JAL, lo mismo que PicForth
para el lenguaje Forth.
GPUTILS es una colección de
herramientas distribuidas bajo
licencia GPL que incluye
ensamblador y enlazador, y
funciona en Linux, MacOS y
Microsoft Windows. GPSIM es otra herramienta libre que permite simular
diversos dispositivos hardware conectados al PIC.

Uno de los más modernos y completos compiladores para lenguaje C es


[mikroC], que es un ambiente de desarrollo con editor de texto, bibliotecas
con múltiples funciones para todos los módulos y herramientas
incorporadas para facilitar enormemente el proceso de programación.

Página 7 de 62
1.1.1.1 Set de Instrucciones PIC

Mnemónico, Operandos Ejemplo


ADDWF f, d Sumar W con Registro. Addwf contador,1;
ANDWF f, d Función lógica and entre w y registro. Andwf contador,1;
CLRF f Borra registro. Clrf contador;
CLRW Borra W. Clrw;
COMF f, d Complemento a 1 del registro. Comf contador,1;
DECF f, d Decrementa en uno registro. Decf contador,1;
DECFSZ f, d Decrementa y brinca si resultado es 0. Decfsz contador,1;
INCF f, d Incrementa en uno registro. Incf contador,1;
INCFSZ f, d Incrementa en uno registro y brinca si el Incfsz contador,1;
Resultado es 0.
IORWF f, d Función lógica or entre w y registro. Iorwf contador,1;
MOVF f, d Carga W con registro. Movf contador,1;
MOVWF f Carga registro con W. Movwf contador;
NOP No operación solo pierde tiempo. Nop;
RLF f, d Rota un bit a la izquierda el contenido del Rlf contador,1;
Registro atraves de la bandera de carry.
RRF f, d Rota un bit a la derecha el contenido del Rrf contador,1;
Registro atraves de la bandera de carry.
SUBWF f, d Resta el contenido de W con registro. Subwf contador,1;
SWAPF f, d Intercambia nibbles en registro Swapf contador,1;
XORWF f, d Función lógica or exclusiva entre w y registro. Xorwf contador,1;
Mnemónico, Operandos Ejemplo
BCF f, b Pon en cero el bit del registro Bcf porta,.3;
BSF f, b Pon en uno el bit del registro Bsf porta,.3;
BTFSC f, b Prueba el bit del registro y brinca Btfsc porte,.0;
Si está en cero.
BTFSS f, b Prueba el bit del registro y brinca Btfss porte,.0;
Si está en uno.
Mnemónico, Operandos Ejemplo
ADDLW k Suma la literal con el contenido de W. Addlw 25h;
ANDLW k Función lógica and entre W y literal. Andlw 0fh;
CALL k Llamada a subrutina. Call retardo,
CLRWDT - Reinicializa el perro guardián. Clrwdt;
GOTO k Brinca a etiqueta “Dirección”. Goto prog_prin;
IORLW k Función lógica or entre W y literal. Iorlw 0fh;
MOVLW k Carga w con literal. Movlw 25h;
RETFIE - Regresa de la subrutina de interrupción. Retfie;
RETLW k Regresa literal en W. Retlw 34h;
RETURN - Regresa de la subrutina. Return;
SLEEP - Coloca al microcontrolador en modo dormir. Sleep;
SUBLW k Resta la literal con el contenido de W. Sublw 10h;
XORLW k Función lógica or exclusiva entre W y literal. Xorlw 34h;
Página 8 de 62
1.1.1.2 Características de los PIC
Los PIC actuales vienen con una amplia gama de mejoras hardware
incorporadas:

Þ Núcleos de CPU de 8/16 bits con Arquitectura Harvard modificada


Þ Memoria Flash y ROM disponible desde 256 bytes a 256 kilobytes
Þ Puertos de entrada/salida (típicamente 0 a 5.5 voltios)
Þ Temporizadores de 8/16/32 bits
Þ Tecnología Nano watt para modos de control de energía
Þ Periféricos serie síncronos y asíncronos: USART, AUSART,
EUSART
Þ Conversores analógicos/digital de 8-10-12 bits
Þ Comparadores de tensión
Þ Módulos de captura y comparación PWM
Þ Controladores LCD
Þ Periférico MSSP para comunicaciones I²C, SPI, y I²S
Þ Memoria EEPROM interna con duración de hasta un millón de
ciclos de lectura/escritura
Þ Periféricos de control de motores
Þ Soporte de interfaz USB
Þ Soporte de controlador Ethernet
Þ Soporte de controlador CAN
Þ Soporte de controlador LIN
Þ Soporte de controlador Irda

Página 9 de 62
1.2 Descripción de los componentes
1.2.1 PIC16F877A
Los PIC16F87X forman una subfamilia de microcontroladores PIC
(PeripheralInterface Controller) de gama media de 8 bits, fabricados por
Microchip Technology Inc.

Cuentan con memoria de programa de tipo EEPROM Flash mejorada, lo


que permite programarlos fácilmente usando un dispositivo programador
de PIC. Esta característica facilita sustancialmente el diseño de
proyectos, minimizando el tiempo empleado en programar los
microcontroladores (µC).

Esta subfamilia consta de los siguientes modelos que varían de acuerdo


conprestaciones, cantidad de terminales y encapsulados:
§ PIC16F870
§ PIC16F871
§ PIC16F872
§ PIC16F873A
§ PIC16F874A
§ PIC16F876A
§ PIC16F877A

La "A" final de los modelos PIC16F873A, PIC16F874A, PIC16F876A y


PIC16F877A indica que estos modelos cuentan con módulos de
comparaciónanalógicos.1

El hecho de que se clasifiquen como microcontroladores (MCU) de 8 bits


hacereferencia a la longitud de los datos que manejan las instrucciones,
y que se corresponde con el tamaño del bus de datos y el de los registros
de la CPU.
Se trata de versiones mejoradas del caballo de batalla PIC16F84, muy
empleadoen proyectos sencillos, de educación y de entrenamiento.

1.2.1.1 Logo

Página 10 de 62
1.2.1.2 Hojas de datos

Página 11 de 62
Página 12 de 62
+234pgs

Página 13 de 62
1.2.1.3 Diagrama de bloque

Página 14 de 62
1.2.1.4 Descripción diagrama de bloque PIC16F877A
a) Flash Program Memory: Memoria de programa con tecnología
flash,esta contiene el programa de nuestra aplicación.
b) Program Counter: Registro de 13 bits utilizado para seleccionar la
instrucción que se ejecuta en la CPU en ese instante.
c) 8 Level stack: El microcontrolador posee 8 niveles de pila para el
manejo de subrutinas.
d) RAM Files Registers: RAM utilizada para el almacenamiento
dinámicode variables.
e) Instruction regs: Registro de 14 bits utilizado para almacenar
temporalmente el código de operación de la instrucción a ejecutar.
f) Instruction decode & Control: Bloque utilizado para decodificar las
instrucciones y general todas las señales de control requeridas
tantointernas como externas para la ejecución del programa.
g) FSR reg.: Registro utilizado para el direccionamiento indirecto
sobrelos registros de la memoria de datos (RAM).
h) STATUS reg.: Registro utilizado para la toma de decisiones, este
posee los bits de banderas (Z) Zero, (C) carry, (DC) Digit carry.
i) ALU, W reg.: La unidad aritmeticológica “ALU” es donde se realizan
las instrucciones tanto aritmético como lógicas de la CPU y el
primeroperando hacia la ALU es colocado en el registro de trabajo
W.
j) El PIC16F877A contiene 5 puertos de entrada/salida los cuales
son: PORTA (RA0….RA5) 6 bits, PORTB (RB0……RB7) 8 bits,
PORTC (RC0….RC7) 8 bits, PORTD (RD0….RD7) 8 bits y PORTE
(RE0….RE2) 3 bits.
k) Parallel Slave Port: Puerto paralelo esclavo utilizado para el
manejo de memorias paralelas externas (EEPROM, EPROM,
E2PROM).
l) Timer0, 1 y 2: Temporizadores contadores utilizados para controlar
procesos temporizados y uno de ellos utilizado como reloj de tiempo
real.
m) 10 bit A/D: Modulo utilizado para la conversión de señales análogas
a digitales.
n) D ata EEPROM: Memoria utilizada para guardar información y
queesta se conserve aun quitándole la energía al microcontrolador.
o) CCP1, 2: Módulos comparadores utilizados
para conteo y comparación de eventos así como
comparadores de nivel de señal.
p) Synchronous Serial Port y USART: Módulos utilizados para
comunicarvía serial al microcontrolador con otros dispositivos.

1.2.2 DISPLAY 7 SEGMENTOS


El visualizador de 7 segmentos es un componente que se utiliza para la
representación de caracteres (normalmente números) en muchos

Página 15 de 62
dispositivos electrónicos, debido en gran medida a su simplicidad. Aunque
externamente su forma difiere considerablemente de un led típico,
internamente están constituidos por una serie de leds con unas
determinadas conexiones internas, estratégicamente ubicados de tal
forma que forme un número '8'.

1.2.2.1 Funcionamiento
El visualizador de 7 segmentos es un componente que se utiliza para
la representación de caracteres (normalmente números) en muchos
dispositivos electrónicos, debido en gran medida a su simplicidad.
Aunque externamente su forma difiere considerablemente de
un led típico, internamente están constituidos por una serie de leds
con unas determinadas conexiones internas, estratégicamente
ubicados de tal forma que forme un número '8'

1.2.2.1.1 Segmentos e identificación


Cada uno de los segmentos que forman la pantalla están marcados
con siete primeras letras del alfabeto ('a'-'g'), y se montan de forma
que permiten activar cada segmento por separado, consiguiendo
formar cualquier dígito numérico. A continuación se muestran algunos
ejemplos:

Þ Si se activan o encienden todos los segmentos se forma el


número "8".
Þ Si se activan sólo los segmentos: "a, b, c, d, e, f," se forma el
número "0".
Þ Si se activan sólo los segmentos: "a, b, g, e, d," se forma el
número "2".
Þ Si se activan sólo los segmentos: "b, c, f, g," se forma el número
"4".

En algunos casos aparece un octavo segmento denominado dp. (del


inglés decimal point, punto decimal
Los ledes trabajan a baja tensión y con pequeña potencia, por tanto,
podrán excitarse directamente con puertas lógicas. Normalmente se
utiliza un codificador (en nuestro caso decimal/BCD) que activando
una sola pata de la entrada del codificador, activa las salidas
correspondientes mostrando el número deseado. Hay que recordar
también que existen pantallas alfanuméricas de 16 segmentos e
incluso de una matriz de 7*5 (35 bits).

Página 16 de 62
1.2.2.2 Ánodo común
En los de tipo de ánodo común, todos los ánodos de los ledes o
segmentos están unidos internamente a una patilla común que debe
ser conectada a potencial positivo (nivel “1”). El encendido de cada
segmento individual se realiza aplicando potencial negativo (nivel “0”)
por la patilla correspondiente a través de una resistencia que limite el
paso de la corriente.

1.2.2.3 Cátodo común


En los de tipo de cátodo común, todos los cátodos de los ledes o
segmentos están unidos internamente a una patilla común que debe
ser conectada a potencial negativo (nivel “0”). El encendido de cada
segmento individual se realiza aplicando potencial positivo (nivel “1”)
por la patilla correspondiente a través de una resistencia que limite el
paso de la corriente.

Página 17 de 62
Los segmentos pueden ser de diversos colores, aunque el visualizador
más comúnmente utilizado es el de color rojo, por su facilidad de
visualización.

También existen pantallas alfanuméricas de 14 segmentos que


permiten representar tanto letras como números. El visualizador de 14
segmentos tuvo éxito reducido y solo existe de forma marginal debido
a la competencia de la matriz de 5 x 7 puntos.

Si bien hoy este tipo de visualizadores parecen antiguos u obsoletos,


ya que en la actualidad es muy común el uso de pantallas gráficas
basadas en píxeles, el visualizador de 7 segmentos sigue siendo una
excelente opción en ciertas situaciones en las que se requiera mayor
poder lumínico y trabajo en áreas hostiles, donde las pantallas de
píxeles podrían verse afectadas por condiciones ambientales
adversas. Aún no se ha creado otro dispositivo de señalización que
reúna características como este en cuanto a potencia lumínica,
visualización a distancia, facilidad de implementación, bajo costo y
robustez.
Para controlar un visualizador de siete segmentos normalmente se
emplean circuitos integrados especialmente diseñados para este fin y
que simplifican mucho el diseño del circuito. Un ejemplo de ellos es el
circuito integrado 74LS47; con este circuito integrado podemos formar
los números del 0 al 9 según conectemos las cuatro patas principales
al polo positivo o negativo de nuestra fuente de alimentación. Para
saber el código para

1.2.2.4 Caracteres
El sistema de siete segmentos está diseñado para números, pero no
para letras, por eso algunas no son compatibles y hacen confundir a
un número y a veces, no se puede distinguir. Aquí tenemos los
números y las letras del alfabeto latino.

Página 18 de 62
Cero Uno Dos Tres Cuatro Cinco Seis Siete Ocho Nueve

Alfabeto latino

A, a; @ B, b C, c D, d E, e F, f G, g H, h I, i

J, j K, k L, l M, m N, n Ñ, ñ O, o P, p Q, q

Página 19 de 62
Cómo se puede observar el uso de display para la señalización de mensajes es muy
útil, pero consume muchos bits, por eso se le agrega un registro 74ls394. Debido a
que como vimos en las prácticas anteriores es la capacidad de guardar un dato
solamente al darle un pulso lógico. con esto conseguimos que por medio de menos
entradas y salidas podamos manejar un gran número de display al mismo tiempo
simplemente utilizando un canal de comunicaciones entre registros como vimos la
práctica anterior, por el cual se conecten todos los registros, y por el cual pase los
datos de los segmentos que se iluminan y cuáles no en los display.

Página 20 de 62
1.2.2.5 Hojas de Datos

Página 21 de 62
Página 22 de 62
2. Desarrollo teorico de la práctica
2.1 Análisis de circuitos
Del PIC16F877A podemos resaltar que contiene 5 puertos de entrada/salida
los cuales son: PORTA (RA0….RA5) 6 bits, PORTB (RB0……RB7) 8 bits,
PORTC (RC0….RC7) 8 bits, PORTD (RD0….RD7) 8 bits y PORTE
(RE0….RE2) 3 bits.
• El puerto B mandará las combinaciones en binario al canal de entrada
de los registros
• Dependiendo de los tiempos se mostrará en el display, pero el CLK
hace que solo se capture en el registro de nuestra preferencia a una
velocidad muy baja

Y un Timer0, 1 y 2, Temporizadores
contadores utilizados para controlar
procesos temporizados y uno de ellos
utilizado como reloj de tiempo real, de
igual forma un modulo utilizado para la
conversión de señales análogas a
digitales. Tiene salida al canal de
Salida clk datos y de un clk, cada una de estas
señales captura la información que
aparezca en la entrada, conectado a
cada uno de los SN74LS374N,

El controlador de alta impedancia de 3 estados y alto nivel lógico


proporciona a este registro la capacidad de conectarse directamente a
las líneas de bus y conducirlas en un sistema organizado por bus sin
necesidad de una interfaz o componentes de pull-up.

En cuanto a las líneas de bus, sabemos que transportan datos e


información relevante. es una serie de cables que funcionan cargando
datos en la memoria para transportarlos a la Unidad Central de
Página 23 de 62
Procesamiento (canal de transmisión de información) comunica a los
componentes de dicho sistema con el microprocesador. el propósito
es disminuir el número de vías necesarias para la comunicación entre
los componentes a través de un canal de datos y se caracteriza por la
cantidad de información que puede transmitir a la vez.

2.1.1 BUS DE DIRECCIONES


Este bus se utiliza para direccionar las zonas de memoria y
los dispositivos (que recordemos son tratados como si de
posiciones de memoria se tratasen), de forma que, al escribir
una dirección en el bus, cierto dispositivo quede activado y
sea quien reciba-envíe los datos en el ciclo de bus así
empezado.

Es un bus triestado unidireccional, por lo que puede ponerse


en alta impedancia e ignorar lo que ocurre en el exterior (al
tiempo que no influir en el estado de las líneas), pero solo
permite la escritura del bus.

2.1.2 BUS DE CONTROL


Un bus de control es lo que utiliza la unidad central de
procesamiento (CPU) de una computadora para comunicarse
con otros dispositivos dentro de la máquina a través de un
conjunto de conexiones físicas como cables o circuitos
impresos. Es una colección diversa de señales, que incluye
lectura, escritura e interrupción, que permiten a la CPU dirigir
y monitorear lo que están haciendo las diferentes partes de la
computadora. Este es uno de los tres tipos de autobuses que
conforman el sistema o el bus de computadora. Su
composición exacta varía entre procesadores.

Conjunto de bus

Página 24 de 62
Finalmente para el OE el cual está a tierra, es decir en cero, lo que va
a hacer que tan pronto nosotros capturemos la información, esta va a
pasar, haciendo la función de un puente, pero como siempre está
cerrado permite el paso de la información siempre y cuando se
capture, para entrar directo a la línea que le corresponde.

Página 25 de 62
2.2 Pasos para crear un proyecto en MPLAB
Cuando se instala el MPLAB en nuestra maquina en el escritorio se colocará
elicono de la aplicación como se muestra en la siguiente imagen.

3.

1. Daremos dos clics con el mouse sobre el icono MPLAB IDE


v8.30 yEsperaremos a que se ejecute.

2. Se mostrará el siguiente aspecto del MPLAB donde empezaremos a


crear Nuestro primer programa. Seleccionando en la barra de
herramientas la Opción File.

Página 26 de 62
3. En esta nueva ventana seleccionamos la opción New para crear nuestro
Programa fuente.

4. En la ventana Untitled “Sin Título” es una ventana de edición de textos en


La cual empezaremos a escribir nuestro primer programa en lenguaje
Ensamblador y tomara el siguiente aspec

Página 27 de 62
5. Ya ingresado el programa comenzaremos a crear las demás partes del
Proyecto, en seguida guardaremos el programa con un nombre y con una
Extensión por ejemplo proled.asm, para esto iremos a la barra de
Herramientas y seleccionaremos File, en la siguiente ventana
Seleccionaremos Save As ”Guardar Como”.

Página 28 de 62
En esta ventana colocaremos el nombre de nuestra aplicación con su
extensiónque en este caso la llamaremos led, y sus extensión es asm, que
significa que es un archivo de texto que contiene un programa escrito en
lenguaje ensamblador. Este se colocará en la casilla definida como Nombre.

Ya colocado el nombre le daremos al botón Guardar, y el programa tomara


elsiguiente aspecto.
4.

6. Ya teniendo el programa guardado sigamos creando el proyecto, en la


Barra de herramientas seleccionaremos la opción Project, y se tendrá el
Siguiente aspecto en el IDE de microchip.

Página 29 de 62
En esta ventana seleccionaremos la opción New para crear el proyecto, y el
IDE nos mostrara la siguiente imagen.

Aquí en esta nueva ventana colocaremos en la caja con nombre Project


Name, el nombre de nuestro proyecto que se sugiere que sea el mismo que
colocamos cuando salvamos nuestro programa fuente, en la caja Project
Directory colocaremos el path la ruta “Carpeta” donde dejaremos nuestro
proyecto, la siguiente imagen muestra este paso.

Página 30 de 62
Ya teniendo el nombre del proyecto y la ruta donde esté se alojará, le daremos
click al botón OK. En el IDE nos daremos cuenta de que toma el siguiente
aspecto.

No nos preocupemos es un paso más de la creación del proyecto.

7. Seleccionemos ahora en la barra de herramientas la opción Project


nuevamente pero ahora, seleccionaremos la opción Add Files to Project.

Página 31 de 62
Seleccionando esta opción tendremos el siguiente aspecto en el IDE.

Aquí le daremos un click al archivo led y se iluminará, y de inmediato este


aparecerá en la caja Nombre: como se muestra en la imagen anterior, para
terminar con este paso le damos un click al botón Abrir., en el IDE regresamos
a no tener ninguna ventana activa.

8. Seleccionamos nuevamente la opción Project en la barra de herramientas


pero ahora en la ventana seleccionamos la opción Build Options y le
damos un click en la ventana emergente al nombre de nuestro archivo
fuente.

Página 32 de 62
En seguida nos aparecerá la siguiente información en el IDE.

Aquí en esta ventana seleccionaremos la opción Disable case sensitivity, la


cualsirve para desactivar la sensibilidad del ensamblador para no reconocer
letras mayúsculas y minúsculas en el programa fuente, ya teniendo esta
opción habilitada le damos un click al botón Aceptar.
Con esto prácticamente terminamos de hacer nuestro proyecto.

9. Finalmente abriremos la ventana de edición donde se encuentra nuestro


programa fuente, para esto en la barra de herramientas seleccionamos la
opción file y en la nueva ventana seleccionamos la opción Open y se nos
mostrara el siguiente aspecto en el IDE.

Página 33 de 62
10. Para terminar le damos un click al botón abrir, y tendremos las
siguienteimagen en el IDE.

11. Finalmente tenemos que ensamblar el programa dando un click al icono

El cual se encuentra en la parte superior del IDE debajo de la barra de


herramientas.
Si no hay errores al ensamblar este será el aspecto del final de nuestro
proyecto.

Página 34 de 62
12. Bien esto significa que ya podemos programar nuestro PIC16F877A, o
elprograma generado en hexadecimal lo podemos cargar en nuestro
simulador“Proteus.

13. Seleccionamos el archivo donde los guardamos y corremos la


simulación

Página 35 de 62
Diagrama Esquemático
Diagrama Esquemático

Página 36 de 62
Desarrollo práctico
Desarrollo práctico
3. Programa fuente del desplegado de mensajes

;INSTITUTO POLITÉCNICO NACIONAL


;CECYT 9 JUAN DE DIOS BATIZ
;PRÁCTICA 3
;MANIPULACIÓN DE DISPLAYS CON EL PIC16F877A
;MANEJO DE DISPLAYS "MANEJO DEL IDE MPLAB"
;
;GRUPO: 5IM2
;
;NOMBRE:
;GUTIÉRREZ RAMÍREZ ALANA SOFIA.
;
;COMENTARIO DE LO QUE EL PROGRAMA EJECUTARA: EL
MICROCONTROLADOR PIC16F877A MANEJA UNA SERIE DE 8 DISPLAYS PARA
MOSTRAR EN ELLOS
;LAS SIGUIENTES PALABRAS "INSTITUTO POLITÉCNICO NACIONAL / CECYT 9
/ JUAN DE DIOS BATIZ / GUTIERREZ RAMIREZ ALANA SOFIA" EN ESE ORDEN
;-------------------------------------------------------------------------------------------------------------
--------------------------------

list p=16f877A;

#include "c:\program files (x86)\microchip\mpasm suite\p16f877a.inc";

;Bits de configuración
__config _XT_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF &
_CP_OFF; ALL
;-------------------------------------------------------------------------------------------------------------
--------------------------------
;
;fosc = 4 MHz.
;Ciclo de trabajo del PIC = (1/fosc)*4 = 1 us.
;-------------------------------------------------------------------------------------------------------------
--------------------------------
;
; Registros de propósito general Banco 0 de memoria RAM.
;

Página 37 de 62
; Registros propios de estructura del programa
; Variables
Contador1 equ 0x20; //
Contador2 equ 0x21; //
Contador3 equ 0x22; //

;-------------------------------------------------------------------------------------------------------------
--------------------------------
;
; Constantes
M equ .14;
N equ .125;
L equ .125;

; Constantes de caracteres en siete segmentos

; dpgfedcba
Car_A equ b'01110111'; Caracter A en siete segmentos.
Car_b equ b'01111100'; Caracter b en siete segmentos.
Car_C equ b'00111001'; Caracter C en siete segmentos.
Car_cc equ b'01011000'; Caracter c en siete segmentos.
Car_d equ b'01011110'; Caracter d en siete segmentos.
Car_E equ b'01111001'; Caracter E en siete segmentos.
Car_F equ b'01110001'; Caracter F en siete segmentos.
Car_G equ b'00111101'; Caracter G en siete segmentos.
Car_gg equ b'01101111'; Caracter g en siete segmentos.
Car_H equ b'01110110'; Caracter H en siete segmentos.
Car_hh equ b'01110100'; Caracter h en siete segmentos.
Car_i equ b'00000100'; Caracter i en siete segmentos.
Car_J equ b'00011110'; Caracter J en siete segmentos.
Car_L equ b'00111000'; Caracter L en siete segmentos.
Car_M equ b'01001101'; Caracter M en siete segmentos.
Car_n equ b'01010100'; Caracter n en siete segmentos.
Car_o equ b'01011100'; Caracter o en siete segmentos.
Car_P equ b'01110011'; Caracter P en siete segmentos.
Car_q equ b'01100111'; Caracter q en siete segmentos.
Car_r equ b'01010000'; Caracter r en siete segmentos.
Car_S equ b'01101101'; Caracter S en siete segmentos.
Car_t equ b'01111000'; Caracter t en siete segmentos.
Car_U equ b'00111110'; Caracter U en siete segmentos.
Car_uu equ b'00111100'; Caracter u en siete segmentos.
Car_Y equ b'01101110'; Caracter Y en siete segmentos.
Página 38 de 62
Car_Z equ b'01011011'; Caracter Z en siete segmentos.
Car_0 equ b'00111111'; Caracter 0 en siete segmentos.
Car_1 equ b'00000110'; Caracter 1 en siete segmentos.
Car_2 equ b'01011011'; Caracter 2 en siete segmentos.
Car_3 equ b'01110110'; Caracter 3 en siete segmentos.
Car_4 equ b'01110110'; Caracter 4 en siete segmentos.
Car_5 equ b'01101101'; Caracter 5 en siete segmentos.
Car_6 equ b'01111101'; Caracter 6 en siete segmentos.
Car_7 equ b'00000111'; Caracter 7 en siete segmentos.
Car_8 equ b'01111111'; Caracter 8 en siete segmentos.
Car_9 equ b'01100111'; Caracter 9 en siete segmentos.

Car_ equ b'00001000'; Caracter _ en siete segmentos.


Car_null equ b'00000000'; Caracter nulo en siete segmentos.
;-------------------------------------------------------------------------------------------------------------
--------------------------------
;
;Asignación de los bits de los puertos de I/O.
;
;Puerto A
Sin_UsoRA0 equ .0; // Sin Uso RA0.
Sin_UsoRA1 equ .1; // Sin Uso RA1.
Sin_UsoRA2 equ .2; // Sin Uso RA2.
Sin_UsoRA3 equ .3; // Sin Uso RA3.
Sin_UsoRA4 equ .4; // Sin Uso RA4.
Sin_UsoRA5 equ .5; // Sin Uso RA5.

proga equ b'111111'; // Programación inicial del puerto A.

;Puerto B
Dato_B0 equ .0; // Bit 0 del codigo en 7 segmentos.
Dato_B1 equ .1; // Bit 1 del codigo en 7 segmentos.
Dato_B2 equ .2; // Bit 2 de datos.
Dato_B3 equ .3; // Bit 3 de datos.
Dato_B4 equ .4; // Bit 4 de datos.
Dato_B5 equ .5; // Bit 5 de datos.
Dato_B6 equ .6; // Bit 6 de datos.
Dato_B7 equ .7; // Bit 7 de datos.

progb equ b'00000000'; // Programación inicial del puerto B.

;Puerto C
Página 39 de 62
CLK_pto0 equ .0; // Bit que controla el CLK del display 1.
CLK_pto1 equ .1; // Bit que controla el CLK del display 2.
CLK_pto2 equ .2; // Bit que controla el CLK del display 3.
CLK_pto3 equ .3; // Bit que controla el CLK del display 4.
CLK_pto4 equ .4; // Bit que controla el CLK del display 5.
CLK_pto5 equ .5; // Bit que controla el CLK del display 6.
CLK_pto6 equ .6; // Bit que controla el CLK del display 7.
CLK_pto7 equ .7; // Bit que controla el CLK del display 8.

progc equ b'00000000'; // Programación inicial del puerto C como


entradas.

;Puerto D
Sin_UsoRD0 equ .0; // Sin Uso RD0.
Sin_UsoRD1 equ .1; // Sin Uso RD1.
Sin_UsoRD2 equ .2; // Sin Uso RD2.
Sin_UsoRD3 equ .3; // Sin Uso RD3.
Sin_UsoRD4 equ .4; // Sin Uso RD4.
Sin_UsoRD5 equ .5; // Sin Uso RD5.
Sin_UsoRD6 equ .6; // Sin Uso RD6.
Sin_UsoRD7 equ .7; // Sin Uso RD7.

progd equ b'11111111'; // Programación inicial del puerto D como


entradas.

;Puerto E
Sin_UsoRE0 equ .0; // Sin Uso RE0.
Sin_UsoRE1 equ .1; // Sin Uso RE1.
Sin_UsoRE2 equ .2; // Sin Uso RE2.

proge equ b'111'; // Programación inicial del puerto E.


;-------------------------------------------------------------------------------------------------------------
--------------------------------
;===========================
;==== Vector reset ====
;===========================
org 0x0000;
vec_reset clrf pclath;
goto prog_prin;
;-------------------------------------------------------------------------------------------------------------
--------------------------------
;============================
Página 40 de 62
;== Vector de interrupcion ==
;============================
org 0x0004;
vec_int nop;

retfie;
;-------------------------------------------------------------------------------------------------------------
--------------------------------
;===========================
;=== Subrutina de inicio ===
;===========================
prog_ini bsf status, rp0; colocate en el bco. 1 de ram
movlw 0x81;
movwf option_reg ^0x80;
movlw proga;
movwf trisa ^0x80;
movlw progb;
movwf trisb ^0x80;
movlw progc;
movwf trisc ^0x80;
movlw progd;
movwf trisd ^0x80;
movlw proge;
movwf trise ^0x80;
movlw 0x06;
movwf adcon1 ^0x80;
bcf status, rp0; regresa al bco. 0 de ram

clrf portb; portb <-- 00h


movlw b'11111111'; w <-- ffh
movwf portc; portc <-- w

return;
;-------------------------------------------------------------------------------------------------------------
--------------------------------
;============================
;=== Programa principal ===
;============================
;En el se meteran los caracteres para formar lo siguiente:

;"InStitut/PoLitEccn/nACionAL/nACionAL/JUAn/dE/dIoS/BAtiZ/GutiErrE/rAnirEZ/ALA
nA/SoFiA"
Página 41 de 62
prog_prin call prog_ini;

loop_prin
;InStitut
movlw Car_I; Dígito 8: I
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_n; Dígito 7: n
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_S; Dígito 6: S
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_t; Dígito 5: t
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_i; Dígito 4: i
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_t; Dígito 3: t
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
movlw Car_u; Dígito 2: u
movwf portb;
bcf portc, CLK_pto1;
nop;
bsf portc, CLK_pto1;
movlw Car_t; Dígito 1: t
movwf portb;
bcf portc, CLK_pto0;
Página 42 de 62
nop;
bsf portc, CLK_pto0;
call retardo;

;PoLitEccn
movlw Car_P; Dígito 8: P
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_o; Dígito 7: o
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_L; Dígito 6: L
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_i; Dígito 5: i
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_t; Dígito 4: t
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_E; Dígito 3: E
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
movlw Car_cc; Dígito 2: cc
movwf portb;
bcf portc, CLK_pto1;
nop;
bsf portc, CLK_pto1;
movlw Car_n; Dígito 1: n
movwf portb;
Página 43 de 62
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

;nACionAL
movlw Car_N; Dígito 8: N
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_A; Dígito 7: A
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_cc; Dígito 6: cc
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_i; Dígito 5: i
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_o; Dígito 4: o
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_n; Dígito 3: n
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
movlw Car_A; Dígito 2: A
movwf portb;
bcf portc, CLK_pto1;
nop;
bsf portc, CLK_pto1;
movlw Car_L; Dígito 1: L
Página 44 de 62
movwf portb;
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

;JUAn/dE/
movlw Car_J; Dígito 8: J
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_U; Dígito 7: U
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_A; Dígito 6: A
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_n; Dígito 5: n
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_null; Dígito 4: /
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_d; Dígito 3: d
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
movlw Car_E; Dígito 2: E
movwf portb;
bcf portc, CLK_pto1;
nop;
bsf portc, CLK_pto1;
Página 45 de 62
movlw Car_null; Dígito 1: /
movwf portb;
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

;//dIoS//
movlw Car_null; Dígito 8: /
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_null; Dígito 7: /
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_d; Dígito 6: d
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_I; Dígito 5: I
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_o; Dígito 4: o
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_S; Dígito 3: S
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
movlw Car_null; Dígito 2: /
movwf portb;
bcf portc, CLK_pto1;
nop;
Página 46 de 62
bsf portc, CLK_pto1;
movlw Car_null; Dígito 1: /
movwf portb;
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

;/BAtiZ//
movlw Car_null; Dígito 8: /
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_null; Dígito 7: /
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_B; Dígito 6: B
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_A; Dígito 5: A
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_t; Dígito 4: t
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_i; Dígito 3: i
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
movlw Car_z; Dígito 2: z
movwf portb;
bcf portc, CLK_pto1;
Página 47 de 62
nop;
bsf portc, CLK_pto1;
movlw Car_null; Dígito 1: /
movwf portb;
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

;GutiErrE
movlw Car_G; Dígito 8: G
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_uu; Dígito 7: u
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_t; Dígito 6: t
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_i; Dígito 5: i
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_E; Dígito 4: E
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_r; Dígito 3: r
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
movlw Car_r; Dígito 2: r
movwf portb;
Página 48 de 62
bcf portc, CLK_pto1;
nop;
bsf portc, CLK_pto1;
movlw Car_E; Dígito 1: E
movwf portb;
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

;rAnirEZ/
movlw Car_r; Dígito 8: r
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_A; Dígito 7: A
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_n; Dígito 6: n
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_i; Dígito 5: i
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_r; Dígito 4: r
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_E; Dígito 3: E
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
movlw Car_Z; Dígito 2: Z
Página 49 de 62
movwf portb;
bcf portc, CLK_pto1;
nop;
bsf portc, CLK_pto1;
movlw Car_null; Dígito 1: /
movwf portb;
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

;//ALAnA/
movlw Car_null; Dígito 8: /
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_null; Dígito 7: /
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_A; Dígito 6: A
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_L; Dígito 5: L
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_A; Dígito 4: A
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_n; Dígito 3: n
movwf portb;
bcf portc, CLK_pto2;
nop;
bsf portc, CLK_pto2;
Página 50 de 62
movlw Car_A; Dígito 2: A
movwf portb;
bcf portc, CLK_pto1;
nop;
bsf portc, CLK_pto1;
movlw Car_null; Dígito 1: /
movwf portb;
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

;//SoFiA/
movlw Car_null; Dígito 8: /
movwf portb;
bcf portc, CLK_pto7;
nop;
bsf portc, CLK_pto7;
movlw Car_null; Dígito 7: /
movwf portb;
bcf portc, CLK_pto6;
nop;
bsf portc, CLK_pto6;
movlw Car_S; Dígito 6: S
movwf portb;
bcf portc, CLK_pto5;
nop;
bsf portc, CLK_pto5;
movlw Car_o; Dígito 5: o
movwf portb;
bcf portc, CLK_pto4;
nop;
bsf portc, CLK_pto4;
movlw Car_F; Dígito 4: F
movwf portb;
bcf portc, CLK_pto3;
nop;
bsf portc, CLK_pto3;
movlw Car_i; Dígito 3: i
movwf portb;
bcf portc, CLK_pto2;
nop;
Página 51 de 62
bsf portc, CLK_pto2;
movlw Car_A; Dígito 2: A
movwf portb;
bcf portc, CLK_pto1;
nop;
bsf portc, CLK_pto1;
movlw Car_null; Dígito 1: /
movwf portb;
bcf portc, CLK_pto0;
nop;
bsf portc, CLK_pto0;
call retardo;

goto loop_prin;
;-------------------------------------------------------------------------------------------------------------
--------------------------------
;============================================
;=== Subrutina de retardo de 5 segundos ===
;============================================
;Dirige el programa principal para que las palabras mostradas en los displays se
muestren cada 5 segundos
retardo movlw M;
movwf Contador3;
Loop3 movlw N;
movwf Contador2;
Loop2 movlw L;
movwf Contador1;
Loop1 decfsz Contador1,f;
goto Loop1;
decfsz Contador2,f;
goto Loop2;
decfsz Contador3,f;
goto Loop3;

return;
;-------------------------------------------------------------------------------------------------------------
--------------------------------

End

Página 52 de 62
4. Simulaciones de los circuitos
Una vez capturados los caracteres de acuerdo a las indicaciones,
simulamos el programa para poder observar la salida de los displays,
estos mismos muestran en el siguiente orden las palabras:

Página 53 de 62
Página 54 de 62
Página 55 de 62
Página 56 de 62
Página 57 de 62
5. Mediciones del circuito
5.1 Medición con Voltímetro
Medición de voltaje en una de las salidas de un registro al cual si le
aplicó un pulso en la entrada clk, en el momento en el que el
segmento del display estáiluminado

Medición de voltaje en una de las salidas de un registro al cual si le aplicó


un pulso en la entrada clk, en el momento en el que el segmento del
display no debe estar iluminado

Página 58 de 62
Salida del microcontrolador conectado a 1 de los registros de entrada
del display, cuya salida debe de estar en alto

Salida del microcontrolador conectado a 1 de los registros de entrada


del display, cuya salida debe de estar en bajo

Página 59 de 62
5.2 Medición con Osciloscopio
Esta medición se puede aplicar a todos los bits de todos los registros de
todos los display de esta practica

Salida del Registro


del Display

OC del
Registro del
display
Salida del
Salida del
Microcontrolador al
Microcontrolador al
display de 7
CLK del registro del
segmentos
Display

Página 60 de 62
Salidas del microcontrolador a las entradas de CLK del
registro 0 al registro 3

Salidas del microcontrolador a las entradas de CLK del


registro 4 al registro 7

Página 61 de 62
Conclusiones
Conclusiones
o Conforme a lo que pudimos observar en el desarrollo teórico de la
página 1 a la página 5 y lo que pudimos observar en todo el desarrollo
práctico es decir de la página 51 a la página 55, el uso de display
facilita en gran medida la visualización de datos debido a que se puede
representar una cantidad enorme de datos en él, dado que permite la
visualización con facilidad del dato que se quiere representar con la
limitante de que consume muchos recursos el hardware, y por lo tanto
es difícil su manejo a nivel práctico.
o Cómo podemos observar en la página 5 qué habla en el desarrollo
teórico y en la página 51 a 55 del desarrollo práctico, el uso de un
registro facilita en gran medida el manejo de los datos que se
visualizan en un display de 7 segmentos, otorgándonos la capacidad
desconectar todos los registros en un canal de comunicaciones qué
podemos definir nosotros, además de que solamente requiere n
número de conexiones adicionales, siendo n el número de caracteres
que queremos mostrar.
o Cómo podemos observar a lo largo de todo el desarrollo práctico de
esta práctica, el uso de microcontrolador reduce en gran medida el
hardware que se utiliza para realizar cualquier sistema, pero hasta
cierto punto aumenta la dificultad con respecto a lo que se refiere a la
planeación de la práctica debido a que se requiere más pasos antes
de empezar a construir nuestro sistema.

Página 62 de 62

También podría gustarte