Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GRUPO: 5IM2
TURNO: MATUTINO
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.
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.
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.
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).
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.
Página 7 de 62
1.1.1.1 Set de Instrucciones PIC
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.
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.
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'
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.
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.
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,
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.
Página 26 de 62
3. En esta nueva ventana seleccionamos la opción New para crear nuestro
Programa fuente.
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.
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.
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.
Página 31 de 62
Seleccionando esta opción tendremos el siguiente aspecto en el IDE.
Página 32 de 62
En seguida nos aparecerá la siguiente información 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.
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.
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
list p=16f877A;
;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;
; 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.
;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.
;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.
;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.
;Puerto E
Sin_UsoRE0 equ .0; // Sin Uso RE0.
Sin_UsoRE1 equ .1; // Sin Uso RE1.
Sin_UsoRE2 equ .2; // Sin Uso RE2.
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
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
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
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
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
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