Está en la página 1de 6

#include <stdio.

h>
#include <stdlib.h>

int main(int argc, char *argv[])


{
int hr,min,seg;
printf("Reloj Digital\n");
//bucle para controlar los segundos
for(seg=0;seg<=60;seg++)
{
if(seg==60)
//si los segundos llegan a 60
{
min++;
//minutos aumentan a 1
seg=0;
//segundos se reinicia a 0
}
if(min==60)
//si los minutos llegan a 60
{
hr++;
//horas aumentan a 1
min=0;
//minutos se reinicia a 0
}
if(hr==24)
{
seg=0;
//segundos se reinicia a 0
min=0;
//minutos se reinicia a 0
hr=0;
//horas se reinicia a 0
}
}
printf("%d:%d:%d\n",hr,min,seg);
system("PAUSE");
return 0;
}
#include<iostream>
#include<cstdlib>
#include<windows.h>
using namespace std;

const int h=24;


const int m=60;
const int s=60;

class reloj
{
private:
int hora;
int minutos;
int segundos;
int formato;

public:
reloj(){};
reloj(int &, int &, int &);
void mostrar_hora();
friend void ajustar_hora(reloj &);
};

int menu();

int main()
{
int opc;
reloj tiempo;

do{
opc=menu();

switch(opc)
{
case 1:
{
ajustar_hora(tiempo);

system("cls");
break;
}

case 2:
{
tiempo.mostrar_hora();

break;
}

case 3:
{
exit(0);
break;
}
default:
{
cout<<"\n\n\t Opcion invalida"<<endl;
cin.get(); cin.get();
system("cls");
break;
}
}
}while(opc!=3);

cin.get(); cin.get();
return 0;
}

reloj::reloj(int &hr, int &min, int &seg)


{
hora=hr;
minutos=min;
segundos=seg;
}

int menu()
{
int opc;

cout<<"\n\n\t 1.- Ajustar hora"<<endl;


cout<<"\t 2.- Mostrar hora"<<endl;
cout<<"\t 3.- Salir"<<endl;
cout<<"\t indique opcion: ";
cin>>opc;

system("cls");
return opc;
}

void reloj::mostrar_hora()
{
while(1)
{
while (hora<h)
{
while (minutos<m)
{
while(segundos<s)
{
cout<<"\n\n\t"<<hora<<":"<<minutos<<":"<<segundos;

Sleep(1000);
system("cls");
segundos+=1;
}
segundos=0;
minutos+=1;
}
minutos=0;
hora+=1;
}
hora=0;
}
}

void ajustar_hora(reloj &tiempo)


{
int hr, min, seg;

do{
cout<<"\n\t Hora: ";
cin>>hr;

if(((hr<0)||(hr>h)))
{
cout<<"\n\t Hora invalida"<<endl;
cin.get(); cin.get();
system("cls");
}
}while((hr<0)||(hr>h));

do{
cout<<"\t Minutos: ";
cin>>min;

if(((min<0)||(min>m)))
{
cout<<"\n\t Minuto invalido"<<endl;
cin.get(); cin.get();
system("cls");
}
}while((min<0)||(min>m));

do{
cout<<"\t Segundos: ";
cin>>seg;

if(((seg<0)||(seg>s)))
{
cout<<"\n\t Segundoo invalido"<<endl;
cin.get(); cin.get();
system("cls");
}
}while((seg<0)||(seg>s));

reloj temp(hr, min, seg);


tiempo=temp;
}
#include <16f84a.h> //pic a utilizar
#use delay (clock=4000000) //Fosc=4Mhz
#fuses XT,NOWDT,NOPROTECT,PUT //ordenes para el programador
// XT es el tipo de oscilador a utilizar.
//NOWDT desactiva el perro guardian.
//NOPROTECT desactiva proteccion del codigo.
#include <math.h> // libreria para hacer operaciones matematicas
void main (void){
//Declaración de variables.
int seg=0, min1=0,min2=0, hora1=0,hora2=0;
int16 i=0; // entero de 16 Bit ya que con 8 bit solo llega hasta 255 y debe llegar a 1000
//Tabla con los datos correspondientes 0,1,2,3,4,5,6,7,8,9. en Hexadecimal
int tab7seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
//Configuración de puertos.
set_tris_b(0b10000000); //RB7 como entrada y el resto del puerto b como salida
set_tris_a(0x11110000); //RA4 como entrada y el resto del puesto a como salida
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas

while(TRUE)
{
seg++; //incrementa Segundos
if (seg==60) { //condicion para incrementar el primer digito de los minutos
min1++;
seg=0;
}
if (min1==10) { //condicion para incrementar el segundo digito de los minutos
min2++;
min1=0;
}
if (min2==6) { //condicion para incrementar el primer digito de las horas
min2=0;
min1=0;
hora1++;
}
if (hora1==10) {//condicion para incrementar el segundo digito de las horas
hora2++;
hora1=0;
}
if ((hora1==4)&&(hora2==2)) {// reinicia el conteo al cumplir 24 horas
hora1=0;
hora2=0;
}
//esta parte es para programar la hora
if (input(pin_A4)==0){ // al pulsar el boton conectado a RA4 incrementa las horas
delay_ms(250); //retardo para el rebote del pulsador
hora1++;
if (hora1==10) {
hora2++;
hora1=0;
}
if ((hora1==4)&&(hora2==2)) {
hora1=0;
hora2=0;
}
seg=0;
}
if (input(pin_B7)==0){//al pulsar el boton conectado a RB7 incrementa los min
delay_ms(250); //retardo para el rebote del pulsador
min1++;

if (min1==10) {
min2++;
min1=0;
}
if (min2==6) {
min2=0;
min1=0;
}
seg=0;
}
// ciclo para la visualizacion de los displays
for (i=1;i<=1000;i=i+20){
output_b(tab7seg[min1]); //muestra por portb digito 7 segmentos
output_a(0b00001110); //enciende 4 display
delay_ms(5);
output_b(tab7seg[min2]); //muestra por portb digito 7 segmentos
output_a(0b00001101); //enciende 3 display
delay_ms(5);
output_b(tab7seg[hora1]); //muestra por portb digito 7 segmentos
output_a(0b00001011); //enciende 2 display
delay_ms(5);
output_b(tab7seg[hora2]); //muestra por portb digito 7 segmentos
output_a(0b00000111); //enciende 1 display
delay_ms(5);
}
}
}

También podría gustarte