Vous êtes sur la page 1sur 8

DEPARTAMENTO DE ELCTRICA Y ELECTRNICA

CARRERA DE INGENIERA ELECTRNICA Y


TELECOMUNICACIONES

ASIGNATURA MICROCONTROLADORES

INFORME DE LABORATORIO No 3.2

TEMA: CRONOMETRO

Profesor: Ing. Danny Sotomayor

EQUIPO No5:
ANGELO RODRIGUEZ
SEBASTIAN SANDOVAL
GUILLERMO RODRIGUEZ

SANGOLQU 18-07-2014

1. Tema: CRONOMETRO
2. Objetivo(s)
2.1.
General
2.2.
Realizar un circuito con la utilizacin de del pic16f877a y el pic16f628 con el cual permita
visualizar en LCD los segundos , minutos y horas al igual que un cronometro
2.3.
Especficos
Realizar un programa que contenga tres botones con los cuales se va a poder
iniciar, parar y reanudar el cronmetro.
Mediante la herramienta HI-TECH realizar un programa que muestre valores en
un lcd ingresado un teclado.
Aplicando las conocimientos de lenguaje en C utilizar funciones para la realizacin
de esta prctica.
3. Diagrama de bloques

4. Valor de los registros de configuracin:


PIC 16F628:
TRISA=.0
ADCON1=.6
TRISC=.0
TRISB=0XF0H
OPTION_REG<7>=1 (RESISTENCIAS PULL-UP)
PIC 16F877A:
ADCON1=0X0EH
TRISB = 0b11111111
TRISC = 0b11111111

TRISD = .0
TRISE=.0
INTCON = 0b10010000
Diagrama de flujo:
PIC (DECODIFICADOR)

5. Diagrama electrnico.

6. TABLA DE ASIGNACION DE VARIBALES


VARIABLE

Cod
Valor
Ban
caracter
seg, min, hor
LCD_RS RE2
LCD_EN RE1
LCD_DATA

TIPO

int
int
int
char
int
Variables globales
Variables globales
Variables globales

FUNCION

variable que se utiliza para enviar los datos para el LCD


variable la cual se utilza para salir de la interrupcin INT
varible utilizada obtener el valor del teclado
cadena utilizada para la impresin en el LCD
para el incremento en segundos, minutos y horas
Utilizada para el manejdel lcd
Utilizada la activacion del LCD
Utilizada para enviar los dato al LCD por el pueto C

7. PROGRAMA

PROGRAMA PRINCIPAL
#include <htc.h>
#include <stdio.h>
#include "delay.h"
#include "lcd.h"

int ban=1,cont=0,seg=0,min=0,hor=0,cod=0;
char caracter[20];
void main(){
TRISD = 0x00; //LCD
TRISB = 0x01;
//interupcion Rb0
TRISC = 0xFF; //Teclado
INTCON = 0b11010000; //configuracion interrupcion int
PIE1 = 0b00000001; //configuracion interrupcion TMR10
T1CON= 0b00110000;
//configuracion timer 1 preescalador 8
lcd_init();
// inicializacin LCD
lcd_clear();
// borra LCD
DelayMs(5);
lcd_goto(0x00);
lcd_puts(" CRONOMETRO");
while(1){
if (ban==1)
{
sprintf(caracter," %d :%d :%d ",hor,min,seg);
lcd_goto(0x40);
lcd_puts(" ");
lcd_goto(0x40);
lcd_puts(caracter);
}
}

}
static void interrupt INT (void)
{
if(TMR1IF == 1){
if(cont==0)
{
cont=cont+1;
}else if (cont==1)
{
if(seg<59)
{
seg=seg+1;
cont=0;
}
else if(min<59)
{
seg=0;
min=min+1;
}
else if(hor<23)
{
seg=0;
min=0;
hor=hor+1;
}
cont=0;
}
TMR1IF=0;
TMR1H=0b00001011;
TMR1L=0b11011011;
}
if (INTF==1)
{
cod=PORTC;
if(cod==1){

//encender cronometro

TMR1ON=1;
TMR1H=0b00001011;
TMR1L=0b11011011;
}
if(cod==2){
//detener cronometro
TMR1ON=0;
}
if(cod==3){
//reiniciar
seg=0;
min=0;
hor=0;
ban=1;
}
INTF=0;
}
}
8. Calculos del TIMER 1 con un T = 500 ms

62500 = 65536-1 TMR1


TMR1 = 3035
TMR1H =0B
TMR1L =DB
9. Calculo del error:
Despus de estar encendido el cronometro por 10 horas, hemos notado que hay una diferencia de 4
segundos con respecto a un cronometro comn.

10. Conclusiones y recomendaciones:

Se logr realizar la decodificacin con el pic 16f628 utilizando el teclado.


Se recomienda utilizar un cristal de 4 Mhz para la utilizacin del pic 16f84a.
Se recomienda activar el clock interno del pic 16f628 para que la decodificacin se realice
de la mejor manera.

Vous aimerez peut-être aussi