Cómo hacer un kit de reloj digital basado en Atmel (3 / 3 paso)

Paso 3: Una muestra del código fuente (lenguaje C)

#include < REG2051. H >
código senen_seg [10] = {0x81, 0xe7, 0x92, 0xa2, 0xe4, 0xa8, 0x88, 0xe3, 0 x 80, 0xa0};
bit key1_enter = 0, key2_enter = 0, key3_enter = 0, countdown_mark = 0, stopwatch_mark = 0, count_mark = 0, bell_mark = 0;
Programa char sin signo = 0, program_variable = 0, count_bit = 0, cuenta = 0;
hora de unsigned char = 10, minutos = 10, segundo = 0;
unsigned char delayed_hour = 22, delayed_minute = 10, delayed_second = 0;
unsigned char count_hour = 0, count_minute = 0, count_second = 0;
unsigned int count_time = 0, count_count = 0;
retardo de vacío (unsigned int t)
{
unsigned int i, j;
para (i = 0; i < t; i ++)
para (j = 0; j < 10; j ++)
;
}
void time0_init(void) {}
EA = 0;
TR0 = 0;
TMOD = 0 X 02;
TH0 = 0X4;
TL0 = 0X4;
ET0 = 1;
TR0 = 1;
EA = 1;
}

Static void timer0_isr(void) interrupción TF0_VECTOR con 1
{
count_time ++;
Si (count_time > = 4020) {}
count_time = 0;
segundo ++;
Si (segundo > = 60) {}
segundo = 0;
minuto ++;
Si (minuto > = 60) {}
minuto = 0;
hora ++;
Si (hora > = 24) hora = 0;
}
}
}
Si (delayed_hour == hora & & delayed_minute == minuto & & segundo < 4) P3_7 = 0;
Else P3_7 = 1;
{if(countdown_mark==1)}
count_count ++;
Si (count_count > = 4000 & & (count_second! = 0|count_minute! = 0|count_hour! = 0)) {}
count_count = 0;
count_second--;
Si (count_second > = 60) {}
count_second = 59;
count_minute--;
Si (count_minute > = 60) {}
count_minute = 59;
count_hour--;
Si (count_hour > = 100) count_hour = 99;
}
}
}
Si (count_second == 0 & & count_minute == 0 & & count_hour == 0 & & count_count < = 12000) P3_7 = 0;
Else P3_7 = 1;
Si (count_count > = 15000) count_count = 14000;
}
if(stopwatch_mark==1) {count_count ++;
Si (count_count > = 40) {}
count_count = 0;
count_second ++;
Si (count_second > = 100) {}
count_second = 0;
count_minute ++;
Si (count_minute > = 60) {}
count_minute = 0;
count_hour ++;
Si (count_hour > = 60) count_hour = 0;
}
}
}
}
}
unsigned char show_key (void) {}
sin firmar char x = 0, y = 0;
interruptor (programa) {}
caso 0: P1 & = senen_seg [segunda % 10];
rotura;
caso 1: Si (count_time > = 2000) P1 & = senen_seg [segunda % 10];
rotura;
caso 2: if(delayed_hour==24) P1 = 0xfe;
persona P1 & = senen_seg [delayed_second % 10];
rotura;
caso 3: Si (count_bit > = 0) P1 & = senen_seg [count_second % 10];
persona P1 = 0xff;
rotura;
caso 4: P1 & = senen_seg [count_second % 10];
rotura;
caso 5: P1 & = senen_seg [count_second % 10];
rotura;
}
P3_3 = 0;
Delay(10);
{if(P3_5==0)}
key1_enter = 1;
Si (cuenta < = 254) count ++;
}
if(P3_4==0) key2_enter = 1;
if(P3_2==0) key3_enter = 1;
P3_3 = 1;
P1| = 0XFF;
interruptor (programa) {}
caso 0: P1 & = senen_seg [segundo/10];
rotura;
caso 1: Si (count_time > = 2000) P1 & = senen_seg [segundo/10];
rotura;
caso 2: if(delayed_hour==24) P1 = 0xfe;
persona P1 & = senen_seg [delayed_second/10];
rotura;
caso 3: Si (count_bit > = 1) P1 & = senen_seg [count_second/10];
persona P1 = 0xff;
rotura;
caso 4: P1 & = senen_seg [count_second/10];
rotura;
caso 5: P1 & = senen_seg [count_second/10];
rotura;
}
P3_1 = 0;
Delay(10);
P3_1 = 1;
P1| = 0XFF;
interruptor (programa) {}
caso 0: P1 & = senen_seg [minuto % 10];
rotura;
caso 1: Si (count_time > = 2000) P1 & = senen_seg [minuto % 10];
rotura;
caso 2: if(delayed_hour==24) P1 = 0xfe;
persona P1 & = senen_seg [delayed_minute % 10];
rotura;
caso 3: Si (count_bit > = 2) P1 & = senen_seg [count_minute % 10];
persona P1 = 0xff;
rotura;
caso 4: P1 & = senen_seg [count_minute % 10];
rotura;
caso 5: P1 & = senen_seg [count_minute % 10];
rotura;
}
P3_2 = 0;
Delay(10);
P3_2 = 1;
P1| = 0XFF;
interruptor (programa) {}
caso 0: P1 & = senen_seg [minuto/10];
rotura;
caso 1: Si (count_time > = 2000) P1 & = senen_seg [minuto/10];
rotura;
caso 2: if(delayed_hour==24) P1 = 0xfe;
persona P1 & = senen_seg [delayed_minute/10];
rotura;
caso 3: Si (count_bit > = 3) P1 & = senen_seg [count_minute/10];
persona P1 = 0xff;
rotura;
caso 4: P1 & = senen_seg [count_minute/10];
rotura;
caso 5: P1 & = senen_seg [count_minute/10];
rotura;
}
P3_5 = 0;
Delay(10);
P3_5 = 1;
P1| = 0XFF;
interruptor (programa) {}
caso 0: P1 & = senen_seg [hora % 10];
rotura;
caso 1: Si (count_time > = 2000) P1 & = senen_seg [hora % 10];
rotura;
caso 2: if(delayed_hour==24) P1 = 0xfe;
persona P1 & = senen_seg [delayed_hour % 10];
rotura;
caso 3: Si (count_bit > = 4) P1 & = senen_seg [count_hour % 10];
persona P1 = 0xff;
rotura;
caso 4: P1 & = senen_seg [count_hour % 10]; rotura;
caso 5: P1 & = senen_seg [count_hour % 10];
rotura;
}
P3_0 = 0;
Delay(10);
Si (P3_4 == 1 & & key2_enter == 1) {}
x = 3; key2_enter = 0;
}
P3_0 = 1;
P1| = 0XFF;
interruptor (programa) {}
caso 0: P1 & = senen_seg [horas/10]; rotura;
caso 1: Si (count_time > = 2000) P1 & = senen_seg [horas/10]; rotura;
caso 2: if(delayed_hour==24) P1 = 0xfe; persona P1 & = senen_seg [delayed_hour/10];
rotura;
caso 3: Si (count_bit > = 5) P1 & = senen_seg [count_hour/10]; persona P1 = 0xff;
rotura;
caso 4: P1 & = senen_seg [count_hour/10];
rotura;
caso 5: P1 & = senen_seg [count_hour/10]; rotura;
}
P3_4 = 0;
Delay(10);
Si (P3_5 == 1 & & key1_enter == 1) {}
Si (cuenta > = 127) x = 1; Else x = 2; key1_enter = 0;
cuenta = 0;
}
Si (P3_2 == 1 & & key3_enter == 1) {}
x = 4;
key3_enter = 0;
}
P3_4 = 1;
P1| = 0XFF;
Si (programa < = 1 & & count_time > = 2000) P1 & = 0xff;
Si (programa < = 1 & & count_time < = 2000) P1 & = 0x7f;
if(Program==2) P1 & = 0x7f;
if(Program==3) P1 & = 0xff;
if(Program==4) P1 & = 0x7f;
if(Program==5) P1 & = 0xff;
y = x;
x = 0;
volver y;
}
void main() {}
P1 = 0XFF;
P3 = 0XFF;
time0_init();
{while(1)}
{Switch(Program)}
caso 0: {while(program==0)}
{Switch(show_key())}
caso 0: romper;
caso 1: programa = 0;
rotura;
caso 2: programa = 1;
rotura;
}
}
rotura;
caso 1: {while(program==1)}
{Switch(show_key())}
caso 0: romper;
caso 1: programa = 0;
rotura;
caso 2: programa = 2;
rotura;
caso 3: hora ++;
Si (hora > = 24) hora = 0;
rotura;
caso 4: minuto ++;
Si (minuto > = 60) minuto = 0;
rotura;
}
}
rotura;
caso 2: {while(program==2)}
{Switch(show_key())}
caso 0: romper;
caso 1: programa = 0;
rotura;
caso 2: programa = 3;
rotura;
caso 3: delayed_hour ++;
Si (delayed_hour > = 25) delayed_hour = 0;
rotura;
caso 4: delayed_minute ++;
Si (delayed_minute > = 60) delayed_minute = 0;
rotura;
}
}
rotura;
caso 3: {while(program==3)}
{Switch(show_key())}
caso 0: romper;
caso 1: programa = 0;
rotura;
caso 2: programa = 4;
rotura;
caso 3: count_bit ++;
Si (count_bit > = 7) count_bit = 0;
rotura;
caso 4: {switch(count_bit)}
caso 0: count_second += 1;
rotura;
caso 1: count_second += 10;
rotura;
caso 2: count_minute += 1;
rotura;
caso 3: count_minute += 10;
rotura;
caso 4: count_hour += 1;
rotura;
caso 5: count_hour += 10;
rotura;
caso 6: romper;
}
Si (count_hour > = 100) count_hour-= 100;
Si (count_minute > = 60) count_minute-= 60;
Si (count_second > = 60) count_second-= 60;
rotura;
}
if(count_bit==6) countdown_mark = 1;
Else countdown_mark = 0;
}
rotura;
caso 4: count_hour = 0;
count_minute = 0;
count_second = 0;
{while(Program==4)}
{Switch(show_key())}
caso 0: romper;
caso 1: programa = 0;
rotura;
caso 2: programa = 5;
rotura;
caso 3: stopwatch_mark = ~ stopwatch_mark;
rotura;
caso 4: {if(stopwatch_mark==0)}
count_hour = 0;
count_minute = 0;
count_second = 0;
}
rotura;
}
}
rotura;
caso 5: count_hour = 0;
count_minute = 0;
count_second = 0;
{while(Program==5)}
{Switch(show_key())}
caso 0: romper;
caso 1: programa = 0;
rotura;
caso 2: programa = 0;
rotura;
caso 3: count_second ++;
Si (count_second > = 100) {}
count_second = 0;
count_minute ++;
Si (count_minute > = 100) {}
count_minute = 0;
count_hour ++;
Si (count_hour > = 100) count_hour = 0;
}
}
rotura;
caso 4: count_hour = 0;
count_minute = 0;
count_second = 0;
rotura;
}
{if(P3_7==0)}
show_key() de while(P3_7==0);
count_second ++;
Si (count_second > = 100) {}
count_second = 0;
count_minute ++;
Si (count_minute > = 100) {}
count_minute = 0;

Artículos Relacionados

Cómo hacer un reloj Digital de Arduino

Cómo hacer un reloj Digital de Arduino

Relojes digitales son uno de la gran invención en el campo de la ciencia.Te has preguntado "¿cómo hacer su propio reloj digital, al igual que en el cine!"???Así que también he pasado, mi infancia en un sueño para construir mi propio reloj digita
Reloj Digital DIY

Reloj Digital DIY

¿Has sido realmente aburrido y necesitaba diversión proyecto DIY para hacer? Bien, ¿has pensado en hacer un reloj digital, impresionante y super que usted realmente puede decir la hora con? Así que realmente debe seguir estos pasos impresionantes. ¡Q
Gran reloj Digital 7 segmentos

Gran reloj Digital 7 segmentos

usando sólo 2 condensadores, resistencias de 3, 4 gran Display de siete segmentos, 1 xtal, 2 interruptores y 1 microcontrolador PIC, se puede construir este circuito Reloj Digital Led.puede utilizar ánodo común o display de cátodo común, sólo tienes
Reloj digital de números romanos

Reloj digital de números romanos

Un reloj Digital de números romanosVerlo en acción en las películas de quicktime adjunto!Hay muchas maneras de visualizar el tiempo en análogo y digital, pero uno nunca visto por la mayoría es un reloj digital de números romanos. He creado uno con la
Reloj Digital de Arduino (con Charlieplexing LEDs, Displays de 7 segmentos)

Reloj Digital de Arduino (con Charlieplexing LEDs, Displays de 7 segmentos)

este es mi segundo instructable. Acabo de tener un estado de ánimo de hacer un reloj digital. Pero quería hacer un proceso de aprendizaje. Ya tuve un sanguino podría haber fácilmente utilizado eso Atmega644 chip. hubiera sido más que suficiente.  Per
Completo reloj Digital con Sensor de presencia (RTC - alarma - PIR - temperatura - humedad - punto de rocío)

Completo reloj Digital con Sensor de presencia (RTC - alarma - PIR - temperatura - humedad - punto de rocío)

HolaYa he hecho algunos proyectos de relojes digitales con Arduino como pantallas LED y LCD, pero este es más especial porque he introducido una novedad con un sensor de movimiento (PIR).Ver VIDEOCaracterísticas principalesPIR (Sensor infrarrojo de p
Marquetería del laser de un kit de madera Digital

Marquetería del laser de un kit de madera Digital

yo soy un artista que se especializa en madera láser.  Tengo Mostrar mi trabajo en galerías y un montón de solicitudes de productos, por lo que este año empecé a hacer y vender kits para crear madera marquetería.Diseño y corte las piezas en la máquin
Nintendo Game Boy se convirtió en un reloj Digital

Nintendo Game Boy se convirtió en un reloj Digital

En este instructable te voy a mostrar cómo hice mi propio reloj digital temática de videojuegos retro de un viejo roto a Nintendo Game Boy.Lo que necesita; Un viejo roto Nintendo Game Boy no le importa cortar, barato reloj despertador digital sobre e
Reloj digital Numechron

Reloj digital Numechron

Mi diseño de reloj Digital Numechron fue inspirado por el reloj digital Pennwood modelo 1364. Relojes de este tipo se originaron en la década de 1930 y fueron construidas hace muchos años por las empresas Pennwood y Lawson en muchos diversa madera, m
¿Nuevo reloj digital de tiempo de tierra (red) en caso de retro-moderno reciclado

¿Nuevo reloj digital de tiempo de tierra (red) en caso de retro-moderno reciclado

nunca se confunda por GMT y sólo deseo que tenía una manera más de tiempo?  Construir un reloj de Tiempo de la nueva tierra !  Utilizando un microcontrolador PIC, un código y un par piezas discretas, también puede tener un dispositivo de cronometraje
Reloj digital!

Reloj digital!

Voy a mostrar cómo hacer un reloj digital con un arduino.Paso 1: materiales Arduino uno r3cables de puente clasificadosBatería de 5v USBCable USBdisplay digital de siete seg (SMA420564)Box/Caja para proejectsin soldadura breadboardswithces de empujeP
Reloj Digital de madera maciza

Reloj Digital de madera maciza

cómo construir un reloj digital de madera accionado por un atmega168 (arduino) con un detector incorporado y juegos.Primero pensé en hacer esto cuando vi un reloj LED cubierto por una chapa de madera. Me gustó cuando lo vi, hasta que vi el precio. Es
Reloj Digital casera de TTL circuito 24 horas

Reloj Digital casera de TTL circuito 24 horas

después de tomar una clase de intro-nivel EE en mi local community college me decidí a hacer un reloj digital con ICs básicas y displays de 7 segmentos. Las imágenes anteriores muestran el proceso de elaboración a lo largo de un mes.Fácilmente se pue
Caja del tejido y Reloj Digital Mash-Up!

Caja del tejido y Reloj Digital Mash-Up!

Bueno, aquí es una digital caja de reloj y tejido... PURÉ PARA ARRIBA!!!!!!* dun dun dun!!!!!! *de todos modos...Tengo un reloj digital en destino para $5,00 (+ IVA por supuesto), y lo tuve por mucho tiempo.Pero muchos Instructables me inspiró para h