INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
UNIVERSIDAD MAYOR DE SAN ANDRES
FACULTAD DE INGENIERIA
CARRERA DE INGENIERIA ELECTRONICA
Proyecto final
RELOJ DIGITAL con fecha y cronometro
PROGRAMACION
(ETN-307)
Docente: ING. CARLOS
AVILES CORTEZ
Estudiante: CABRERA
MENDOZA MILTON
Fecha de entrega: 03/10/2012
1
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
INDICE
RESUMEN
INDICE
LISTA DE FIGURAS
I INTRODUCCION ------------------------------------------------------- PAG.3
II MARCO TEORICO ------------------------------------------------------- PAG.4
III DESARROLLO DE PROYECTO ----------------------------------- PAG.6
IV ANALISIS DE RESULTADO ----------------------------------- PAG.12
V COSTOS ------------------------------------------------------- PAG.16
VI CONCLUSIONES Y RECOMENDACIONES ------------------------ PAG.16
VII BIBLIOGRAFIA ----------------------------- PAG.16
ANEXOS
LISTA DE FIGURAS
Fig.1 ------------------------------------------------------------------------ pag.5
Fig.2 ------------------------------------------------------------------------ pag7
Fig.3 ------------------------------------------------------------------------ pag.8
Fig.4 ------------------------------------------------------------------------ pag.8
Fig.5 ------------------------------------------------------------------------ pag.11
Fig.6 ------------------------------------------------------------------------ pag.11
Fig.7 ------------------------------------------------------------------------ pag.12
Fig.8 ------------------------------------------------------------------------ pag.17
RELOJ DIGITAL CON FECHA Y CRONOMETRO
2
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
I. INTRODUCCION:
1.1 ANTECEDENTES:
En los tiempos se masiva la utilización de Sistemas Digitales ya que proporcionan una
serie de ventajas con respecto a la electrónica analógica, y ha sido utilizada incluso en
dispositivos pequeños como un reloj, el cual ha pasado del uso de las manecillas para la
indicación de la hora a proporcionar una visualización numérica de la misma gracias a la
electrónica digital.
El reloj digital es un proyecto ampliamente conocido y realizado en diferentes cursos
básicos de de la electrónica. En nuestro caso en la materia de programación lógica, con
este proyecto se pretende demostrar todo lo aprendido en dicho curso.
1.2. OBJETIVOS Y METAS:
1.2.1 OBJETIVO GENERAL:
Implementación de un reloj digital utilizando el lenguaje de programación C y
aplicando compiladores de uso en este curso del dev c++, turbo c++ y otros.
1.2.2 OBJETIVOS ESPECIFICOS:
Descripción y aplicación de diferentes funciones y librerías del lenguaje c, para la
utilización de segundos, minutos y horas, y fechas.
Manejo del compilador en el cual se realizara el proyecto.
Descripción en un solo modulo, para representar el reloj.
1.3 ALCANCES Y LIMITES
Para el desarrollo de los objetivos que trazamos a un inicio se requiere de los consignados en la
propuesta del proyecto se ha decidido utilizar el compilador dev c++ para la implementación de este
proyecto.
Los alcances que se desean llegar es simple, de demostrar la simulación de un reloj
digital que consta de fecha y un cronometro.
Las limitaciones que se dan son de no poderse implementar el diseño en un circuito
integrado, también se limita en que solo muestre todo las características de la fecha en
3
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
formato de numero y no así representada en letras de los 7 días de la semana que
existen.
II. MARCO TEORICO:
2.1 EL RELOJ:
Aspecto Histórico-Social
En la antigüedad se conocieron varias especies de relojes, Vitrubio habla del reloj
de a g u a o c l e p s i d r a , d e l d e a i r e , d e l d e s o l y d e o t r a s e s p e c i e s
q u e n o s s o n desconocidas. Los egipcios medían con la clepsidra los movimientos del
sol y de igual medio se valía el ilustre astrónomo Tycho - Brae para sus
observaciones. Las clepsidras y los relojes de sol fueron inventados en Egipto
en tiempos de los Tolomeo; las clepsidras fueron después perfeccionadas por Escipión
Nasica o según otros por Ctesiboy los oradores romanos medían con ellas la duración de
sus discursos. S e c r e e q u e l o s g r a n d e s r e l o j e s d e p e s a s y r u e d a s
f u e r o n i n v e n t a d o s e n Occidente por el monje benedictino Gerberto (Papa,
con el nombre de Silvestre II, hacia finales del siglo X) aunque ya con alguna
anterioridad se conocían en el Imperio bizantino.
Se denomina reloj a un instrumento que permite medir el tiempo, existe diversos tipos que
se adecuan según los propósitos.
Conocer la hora actual
Medir la duración de un suceso
Activar un a alarma en cierta hora especificada.
O de tener un cronometro en mano para un determinado uso.
Saber que día, mes o año en que uno se encuentra.
La cuenta de números se lo realizara en binario de 4 bits, no obstante este numero de
base 2 no representa números decimales.
Un reloj digital es un tipo de reloj que basa su funcionamiento en la electrónica digital para
marcar el tiempo. Este tipo de reloj está diseñado en su interior por pequeños dispositivos
electrónicos, y por ser este el caso, funcionan con un voltaje de 5 voltios.
Los relojes digitales son empleados mucho actualmente, en la mayoría de
electrodomésticos que tenemos en nuestro hogar.
4
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
2.2 Descripción y funcionamiento de herramientas:
Como parte importante para comprender como es que se implemento el reloj digital,
tenemos que comprender el funcionamiento, la forma de instalación, el rango de trabajo y
las peculiaridades de cada uno de los elementos y dispositivos que se emplearon en su
implementación, para tal fin hemos agregado las características de todos los
componentes que se emplearon en este circuito.
Case recordarle al lector que su conocimiento es importante, tal vez la parte mas
importante de toda la obra, ya que se esto dependerá el máximo aprovechamiento que le
demos a esta obra.
El programa propuesto para el desarrollo de este proyecto es el dev c++ a continuación
mostraremos alguna de las características del mismo.
1
2
Fig.1
5
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
En general la descripción que podemos hacer del programa a utilizarse, del cual
citaremos los mas importantes son:
1. En la figura (1) uno se puede observar que es la pantalla donde se desarrolla la
codificación en c.
2. Es el cuadro en donde se crea el proyecto.
3. Son las barras de herramientas que se utilizaran.
4. Es una venta donde se muestran los errores que se cometen en el desarrollo del
programa, donde nos muestra el numero de fila en donde existe el erro con un
mensaje.
III. DESARROLLO DEL PROYECTO:
Las librerías que se utilizaran para el diseño y simulación del programa son.
#include <stdlib> /* Declaramos las librerías iniciales */
#include <iostream>
#include <conio.h>
#include <stidio.h>
#include <string.h>
Por otro lado para desarrollar el programa necesitamos crear un programa para que nos
muestre la hora, los minutos y los segundos.
El código fuente es:
int main()
{
int a, b, c, d, e, f;
system("title **Hora y Fecha por HackerPasivo**");
system("color 0c");
cout << "\t\t\t**Hora y Fecha por HackerPasivo**\t\t\t\n\n" <<
endl;
printf("Pon la hora que es(solo la hora, no los minutos)\n");
scanf("%i", &c);
system("cls");
printf("Pon los minutos\n");
scanf("%i", &d);
system("cls");
printf("Pon el numero de el dia\n");
scanf("%i", &a);
system("cls");
printf("Pon el numero del mes\n");
6
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
scanf("%i", &b);
system("cls");
for(b=b; b<=12; b++)
{
for(a=a; a<=31; a++)
{
for(c=c; c<=24; c++)
{
for(d=d; d<=60; d++)
{
for(e=0; e<=60; e++)
{
for(f=0; f<=50; f+
+)
{
printf("%i.%i.%i Hs.\n\n", c, d ,e);
printf("Fecha
%i/%i\n\n", a, b);
system("cls");
}
}
}
}
}
}
}
donde al compilarlo nos pide primeramente la hora como en la figura:
Fig.2
7
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
Seguidamente los minutos:
Fig.3
Y finalmente los segundos.
Fig.4
PARA MOSTRAR LA FECHA:
8
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
También creamos otro programa:
Diagrama de bloque.
Leer
Dia,mes,año
mes
d= d=3 d= d= d= d= d= d= d= d=
31 1 30 31 30 31 31 30 31 30
Año=bisiesto
d=
d= d=
31
28 29
FALSO
dia<=d
d=1 d = d+1
mes=12
mes=mes+ mes= 1
1 año=año+
1
9
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
Imp
Dia,mes,año
cout << "\n\n\n\n\t\t\t Escriba el dia actual?\n";
cout <<"\n\n\n\n\t\t\t ";
cin >> dia;
cout << "\n\n\n\n\t\t\t Escriba el mes actual?\n";
cout <<"\n\n\n\n\t\t\t ";
cin >> mes;
system("cls");
cout << "\n\n\n\n\t\t\t Escriba el anio actual?\n";
cout <<"\n\n\n\n\t\t\t ";
cin >> anio;
system("cls");
while (a == 0)
{
switch (mes)
{
case 4:d=30;
case 7:d=30;
case 9:d=30;
case 11:d=30;
break;
case 1:d=31;
case 3:d=31;
case 5:d=31;
case 6:d=31;
case 8:d=31;
case 10:d=31;
10
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
case 12:d=31;
break;
case 2: d=29;
break;
default: return FALSE;
y como resultado nos muestra como en las siguientes figuras.
Fig.5
Fig.6
11
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
Fig.7
De igual forma un programa para el cronometro:
Cronometro
#include <cstdlib> /* Declaramos las librerías iniciales */
#include <iostream>
using namespace std;
int main()
{
system("title Cronometro 9999 - by Erik");
int h, m, s, ml;
for(h=0; h<9999; h++)
{
for(m=0; m<60; m++)
{
for(s=0; s<60; s++)
{
for(ml=0; ml<18.5; ml++)
{
cout << "Cronometro:";
cout << h << ":" << m <<":"<< s << "." << ml << "\n";
system("cls");
}
}
}
cout << "Ha llegado a las 9999 horas";
system("PAUSE>NUL");
}
IV. ANALISIS DE RESULTADOS:
Por ultimo y para concluir con el diseño unimos los tres programas en uno y nos dará
como resultado que se muestra a continuación.
12
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
//hora, fecha y cronometro
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
bool e;
int main()
{
int a = 0;
int h;
int m;
int s;
int dia;
int mes;
int anio;
int d;
int hr;
int min;
int seg;
int ml;
char c;
mistake:
system ("color 39");
cout <<"\n\t PARA INICIAR CRONOMETRO PRESIONE SPACE:\n\n\t";
cout <<" PARA INICIAR RELOJ PRESIONE ENTER:\n";
c=getch();
hr=0;
min=0;
seg=0,
ml=0;
e=0;
a=0;
if (c==32)
{
while (!e)
{
system ("color 12");
do
{
{system ("color 12");
system("Cronometro 9999 ");
for(hr=0; hr<9999; hr++)
13
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
{
for(min=0; min<60; min++)
{
for(seg=0; seg<60; seg++)
{
for(ml=0; ml<50; ml++)
{
cout << "\n\n\n\t\t\t CRONOMETRO:\n\n\n\t\t\t\t";
cout << hr << ":" << min <<":"<< seg << ":" << ml << "\n";
system("cls");
if(GetAsyncKeyState(VK_LSHIFT))
{
cout << "\n\n\n\t\t\t CRONOMETRO:\n\n\n\t\t\t\t";
cout << hr << ":" << min <<":"<< seg << ":" << ml << "\n"<<endl;
getchar();
}
if(GetAsyncKeyState(VK_ESCAPE))
{ hr=0;
min=0;
seg=0,
ml=0;
cout << "\n\n\n\t\t\t CRONOMETRO:\n\n\n\t\t\t\t";
cout << hr << ":" << min <<":"<< seg << ":" << ml << "\n"<<endl;
getch();}
}
}
}
}
cout << "Ha llegado a las 9999 horas";
system("PAUSE>NUL");
}
}while(a!=32);
if(GetAsyncKeyState(VK_LSHIFT))
{
e=1;
hr=0 ; min=0; seg=0; ml=0;
cout << "\n\n\n\t\t\t CRONOMETRO:\n\n\n\t\t\t\t";
cout << hr << ":" << min <<":"<< seg << ":" << ml << "\n";
14
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
}
else
cout << "\n\n\n\t\t\t Que hora es?\n";
cout <<"\n\n\n\n\t\t\t ";
cin >> h;
system("cls");
if (h > 24 )
{
cout << "\n\n\n\n\t\t\t Por favor, vuelve a intentarlo!\n\n";
system("cls");
goto mistake;
}
cout << "\n\n\n\n\t\t\t Escriba el minuto actual?\n";
cout <<"\n\n\n\n\t\t\t ";
cin >> m;
system("cls");
if ( m > 60 )
{
cout << "\n\n\n\n\t\t\t Por favor, vuelve a intentarlo!\n\n";
system("cls");
goto mistake;
}
cout << "\n\n\n\n\t\t\t Escriba el segundo actual?\n";
cout <<"\n\n\n\n\t\t\t ";
cin >> s;
system("cls");
if ( s > 60)
{
cout << "\n\n\n\n\t\t\t Por favor, vuelve a intentarlo!\n\n";
system("cls");
goto mistake;
}
cout << "\n\n\n\n\t\t\t Escriba el dia actual?\n";
cout <<"\n\n\n\n\t\t\t ";
cin >> dia;
system("cls");
if (dia > 31)
{
cout << "\n\n\n\n\t\t\t Por favor, vuelve a intentarlo!\n\n";
system("cls");
goto mistake;
}
cout << "\n\n\n\n\t\t\t Escriba el mes actual?\n";
cout <<"\n\n\n\n\t\t\t ";
cin >> mes;
system("cls");
if ( mes > 12)
{
cout << "\n\n\n\n\t\t\t Por favor, vuelve a intentarlo!\n\n";
system("cls");
goto mistake;
}
cout << "\n\n\n\n\t\t\t Escriba el anio actual?\n";
15
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
cout <<"\n\n\n\n\t\t\t ";
cin >> anio;
system("cls");
if (anio < 0)
{
cout << "\n\n\n\n\t\t\t Por favor, vuelve a intentarlo!\n\n";
system("cls");
goto mistake;
}
while (a == 0)
{
switch (mes)
{
case 4:d=30;
case 7:d=30;
case 9:d=30;
case 11:d=30;
break;
case 1:d=31;
case 3:d=31;
case 5:d=31;
case 6:d=31;
case 8:d=31;
case 10:d=31;
case 12:d=31;
break;
case 2: d=29;
break;
default: return FALSE;
}
while (dia<=d)
{ cout <<"\n\n\n\n\t\t\t ";
cout <<" HORA Y FECHA";
cout <<"\n\n\n\n\t\t\t ";
cout << h << ":" << m << ":" << s <<"\n\n";
cout <<"\n\n\t\t\t ";
cout << dia << ":" << mes << ":" << anio <<"\n\n" ;
cout <<"\n\n\t\t\t ";
cout << hr << ":" << min << ":" << seg <<":" << ml;
Sleep(1000);
system("cls");
s++;
if (s > 59)
{
s = 0;
m++;
if (m > 59)
{
m = 0;
16
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
h++;
if (h > 23)
{
h = 0;
dia++;
}
}
}
}
dia=1;
mes++;
if (mes > 12)
{
mes=1;
anio++;
}
}
getch ();
}
Como resultado se obtiene lo siguiente:
Fig.8
17
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
V. COSTOS:
El costo este proyecto solo se hace referencia al tiempo invertido en el diseño del
simulador, en la impresión de las hojas el uso de internet para algunas consultas que se
realizaron durante el proceso.
También cabe mencionar que de haberse relazado la implementación de la parte del
hardware los costos serian mucho mayores debido a los materiales que se hubiesen
empleado.
VI. CONCLUSIONES Y RECOMENDACIONES:
Para concluir con este proyecto aremos referencia a algunos aspectos.
El formato de la hora se da con un siglo de 24, los minutos y segundos da hasta 60
La frecuencia de transición el ancho de un segundo a otro es de Sleep(1000).
La fecha esta en formato numérico pero se podría modificarlo mostrando en forma
literal los días, el mes solo en cuestión de diseño.
Para terminar se recomienda a todo los lectores que el presente proyecto se implemente
el diseño de la parte de hardware, es decir con un circuito integrado para su mejor
apreciación del objetivo de este proyecto.
VII. BIBLIOGRAFIA:
PROGRAMACION EN C++ PARA INGENIEROS- XHAFA ,PERE PAU VÁZQUEZ
The C Programming Language (2nd Edition), Prentice Hall, 1988.
[Link]/
[Link]/.../el-rincon-del-programador-5
18
INGENIERIA ELECTRONICA
PROGRAMACION ETN-307
CABRERA MENDOZA MILTON
19