You are on page 1of 8

INSTITUTO TECNOLOGICO DE ZACATEPEC

DEPARTAMENTO DE METAL MECANICA


INGENIERIA ELECTROMECANICA
MICROCONTROLADORES
PRÁCTICA 2 RELOJ DIGITAL CON DISPLAY DE 7 SEGMENTOS.
OBJETIVO
Realizar un reloj digital con el PIC16F887 y 4 display con el Lenguaje Ensamblador.
MARCO TEÓRICO
a) Lenguaje Ensamblador
Es un lenguaje de programación de bajo nivel, y constituye la representación más directa del
código máquina específico para cada arquitectura de computadoras legible por un
programador. Este es el lenguaje utilizado para crear el código utilizado en esta práctica.
b) Proteus 8
Proteus es una aplicación para la ejecución de proyectos de construcción de equipos
electrónicos en todas sus etapas: diseño del esquema electrónico, programación del software,
construcción de la placa de circuito impreso, simulación de todo el conjunto, depuración de
errores, documentación y construcción.
c) PIC16F887
La mayoría de los pines del microcontrolador PIC16F887 son multipropósito como se
muestra en la figura anterior. Por ejemplo, la asignación RA3/AN3/Vref+/C1IN+ para el
quinto pin del microcontrolador indica que éste dispone de las siguientes funciones:
RA3 Tercera entrada/salida digital del puerto A
AN3 Tercera entrada analógica
Vref+ Referencia positiva de voltaje
C1IN+ Entrada positiva del comparador C1
La funcionalidad de los pines presentados anteriormente es muy útil puesto que permite un
mejor aprovechamiento de los recursos del microcontrolador sin afectar a su funcionamiento.
Estas funciones de los pines no se pueden utilizar simultáneamente, sin embargo se pueden
cambiar en cualquier instante durante el funcionamiento.

Frecuencia de operación 0-20 MHz


Oscilador interno de alta precisión (Calibrado de fábrica)
Rango de frecuencia de 8MHz a 31KHz seleccionado por software

Voltaje de la fuente de alimentación de 2.0V a 5.5V


Consumo: 220uA (2.0V, 4MHz), 11uA (2.0 V, 32 KHz) 50nA (en modo de espera)

Ahorro de energía en el Modo de suspensión


35 pines de entrada/salida
alta corriente de fuente y de drenador para manejo de LED
resistencias pull-up programables individualmente por software
interrupción al cambiar el estado del pin
memoria ROM de 8K con tecnología FLASH (El chip se puede re-programar hasta
100.000 veces)

368 bytes de memoria RAM


Convertidor A/D:
Canales (resolución de 10 bits)

3 temporizadores/contadores independientes
Temporizador perro guardián
Módulo PWM incorporado

Figura 1. Esquema del PIC16F887.

DESARROLLO
Para la construcción de nuestro reloj seguimos la siguiente metodología:
a) Realizar el código en lenguaje Ensamblador utilizando el compilador MPLAB.
; Configuracion de los INCLUDE <P16F887.INC>
Fuses ORG 0
__CONFIG
_WDT_OFF&_PWRTE_ON&_XT_ CBLOCK 0X21
OSC&_LVP_OFF&_CP_OFF u1
u2
LIST P=16F887 u3
seg CLRF min
min BTFSS hrs,1
hrs GOTO sighrs
hrs2 BTFSS hrs,3
tiseg GOTO sighrs
timin INCF hrs2
tihrs CLRF hrs
tihrs1 BTFSS hrs,1
tihrs2 GOTO sighrs
ENDC
CLRF seg
BSF STATUS,5 CLRF min
CLRF TRISC ; Controla CLRF hrs2
los segmenos de los CLRF hrs
Display MOVLW b'00000101'
CLRF TRISD ; Controla el MOVWF timin
encendido de los MOVLW b'00001100'
display MOVWF tihrs
BCF STATUS,5
sigmin
MOVLW b'00000111'
MOVWF CMCON MOVLW B'00100000'
CLRF seg ;encendido del 2do
CLRF min display
CLRF hrs2 MOVWF PORTD
CLRF hrs MOVF min,W
MOVLW b'0000101' CALL dismin
MOVWF timin MOVWF PORTC
MOVLW b'0000110' CALL delay
MOVWF tihrs
MOVLW B'00010000'
welcome ;encendido del 1er
MOVLW b'00001010' display
MOVWF tiseg MOVWF PORTD
BTFSS seg,1 MOVF seg,W
GOTO sigmin CALL dicseg
BTFSS seg,3 MOVWF PORTC
GOTO sigmin CALL delay
INCF min,F
CLRF seg MOVLW B'10000000'
BTFSS min,1 ;encendido del 4to
GOTO sigmin display
BTFSS min,2 MOVWF PORTD
GOTO sigmin MOVF hrs2,W
CALL dichrs2
INCF hrs,F MOVWF PORTC
CLRF seg CALL delay
MOVF seg,W
MOVLW B'01000000' CALL dicseg
;encendido del 3ro MOVWF PORTC
display CALL delay
MOVWF PORTD
MOVF hrs,W DECFSZ tihrs,F
CALL dichrs1 GOTO welcome
MOVWF PORTC GOTO welcome
CALL delay ; tabla de datos que
contiene los digitos
INCF seg,F (0, 1 ,2 ,3 ,4 ,5 ,6 ,7
DECFSZ tiseg,F ,8 ,9)
GOTO sigmin
GOTO welcome dicseg
ADDWF PCL,1
sighrs RETLW B'00111111'
MOVLW B'10000000' RETLW B'00000110'
;encendido del 4to RETLW B'01011011'
display RETLW B'01001111'
MOVWF PORTD RETLW B'01100110'
MOVF hrs2,W RETLW B'01101101'
CALL dichrs2 RETLW B'01111101'
MOVWF PORTC RETLW B'00000111'
CALL delay RETLW B'01111111'
RETLW B'01101111'
MOVLW B'01000000' RETURN
;encendido del 3ro
display dismin
MOVWF PORTD ADDWF PCL,1
MOVF hrs,W RETLW B'00111111'
CALL dichrs1 RETLW B'00000110'
MOVWF PORTC RETLW B'01011011'
CALL delay RETLW B'01001111'
RETLW B'01100110'
MOVLW B'00100000' RETLW B'01101101'
;encendido del 2do
display RETURN
MOVWF PORTD
MOVF min,W dichrs1
CALL dismin ADDWF PCL,1
MOVWF PORTC RETLW B'00111111'
CALL delay RETLW B'00000110'
RETLW B'01011011'
MOVLW B'00010000' RETLW B'01001111'
;encendido del 1er RETLW B'01100110'
display RETLW B'01101101'
MOVWF PORTD RETLW B'01111101'
RETLW B'00000111' Y3
RETLW B'01111111' MOVLW b'00001101'
RETLW B'01101111' MOVWF u1
RETLW B'00111111'
RETLW B'00000110' Y2
RETLW B'01011011' MOVLW b'00011110'
MOVWF u2
RETURN
Y1
dichrs2 NOP
ADDWF PCL,1 NOP
RETLW B'00111111' DECFSZ u2,1
RETLW B'00000110' GOTO Y1
RETURN DECFSZ u1,1
GOTO Y2
delay DECFSZ u3,1
MOVLW b'00000101' GOTO Y3
MOVWF P RETURN
END
b) Realizar el circuito en Proteus y cargar el código con la extensión .hex modificar el
oscilador interno a 8 MHz del pic en la simulación.

Figura 2. Simulación del programa en el software Proteus

c) Comprobar el circuito en la simulación realizar el circuito en protoboard.


Figura 3. Prueba del programa en el PIC

Figura 4. Prueba del programa en el PIC

Figura 5. Prueba del programa en el PIC


RESULTADOS
Como se puede observar en las últimas tres imágenes, logramos construir un reloj digital el
cual principalmente funcionaba en base una tabla de datos previamente escritos y
básicamente el programa brincaba entre cada sentencia y manda una señal en binario a través
del puerto C que contiene la codificación de los números mientras que el puerto D servía
para poder colocar cada número en el orden correspondiente.

You might also like