Académique Documents
Professionnel Documents
Culture Documents
ASIGNATURA MICROCONTROLADORES
TEMA: CRONOMETRO
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
TRISD = .0
TRISE=.0
INTCON = 0b10010000
Diagrama de flujo:
PIC (DECODIFICADOR)
5. Diagrama electrnico.
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
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