Relógio em tempo real com opção de alarme usando AT89S52 e DS1307 IC

Reloj en tiempo real con opción de alarma usando AT89S52 y DS1307 IC

El reloj en tiempo real es un reloj digital que muestra la hora real en una pantalla LCD de 16×2. Aquí en este circuito también podemos configurar la alarma y la hora. El reloj serie en tiempo real (RTC) DS1307 es un reloj/calendario decimal completo con codificación binaria (BCD) de baja potencia más 56 bytes de NV SRAM. La dirección y los datos se transfieren en serie a través de un bus I²C bidireccional. ck/calendar proporciona información sobre segundos, minutos, horas, día, fecha, mes y año. La fecha de fin de mes se ajusta automáticamente para los meses con menos de 31 días, incluidas las correcciones para los años bisiestos. El reloj funciona en formato de 24 o 12 horas con indicador AM/PM. El DS1307 tiene un circuito de detección de energía incorporado que detecta fallas de energía y cambia automáticamente a la fuente de respaldo. La operación de sincronización continúa mientras la pieza opera desde la fuente de respaldo.

Diagrama de circuito do microcontrolador 8051 e relógio de tempo real baseado em IC DS1307

Fig. 1: Diagrama de circuito del microcontrolador 8051 y reloj en tiempo real basado en IC DS1307

Figura 1.1: Circuito Proteus de reloj digital en tiempo real

Descripción:-

En este circuito, el puerto 2 del microcontrolador está conectado a los pines de datos de la pantalla LCD de 16 × 2 y los bits P3^0 y P3^1 del puerto 3 están conectados al pin de comando de la pantalla LCD de 16 × 2 rs y en respectivamente. Y los datos seriales SDA y el pin de reloj SCL de ds1307 conectados a P1^0 y P1^1 del microcontrolador respectivamente. 4 interruptores/botones también se utilizan para configurar la hora y la alarma. Los bits P3^2, P3^3,P3^4 y P1^2 se configuran como dígito de incremento, valor de incremento, configuración de hora y configuración de alarma respectivamente. Y un LED indicador de alarma también conectado a P1^3 para indicar alarma. Cuando la hora de la alarma coincida con la hora real del reloj , se activará el LED. En este reloj, RTC se utiliza en modo de 24 horas, lo que proporciona la hora exacta y se puede mostrar en la pantalla LCD a través del microcontrolador. El microcontrolador lee continuamente datos del RTC. El programa lee continuamente datos del ds1307 y los muestra en la pantalla. El bit P3^4 se activa en nivel bajo cuando llega una señal baja a las llamadas del programa, la función de configuración de hora y los bits P3^2 y P3^3 también se activan en nivel bajo para configurar la hora/fecha/día, así como la hora de la alarma después de presionar el botón P1^2 bits.

Visão geral do microcontrolador 8051 e do relógio de tempo real baseado em IC DS1307

Fig. 2: Descripción general del microcontrolador 8051 y el reloj en tiempo real basado en IC DS1307

Figura 1.3: Diagrama del circuito RTC

Componente utilizado

Componente utilizado: –

Microcontrolador 89S52

Un microcontrolador es una pequeña computadora en un único circuito integrado que contiene un núcleo de procesador, memoria y periféricos de entrada/salida programables. La memoria de programa en forma de NOR flash o OTP ROM también suele incluirse en el chip, así como una pequeña cantidad de RAM. Los microcontroladores están diseñados para aplicaciones integradas, a diferencia de los microprocesadores utilizados en computadoras personales u otras aplicaciones de propósito general.

Imagem típica do microcontrolador AT89S52 8051

Fig. 3: Imagen típica del microcontrolador AT89S52 8051

LCD 16×2

La pantalla LCD (pantalla de cristal líquido) es un módulo de visualización electrónico y encuentra una amplia gama de aplicaciones. Una pantalla LCD de 16×2 es un módulo muy básico y muy utilizado en diversos dispositivos y circuitos. Estos módulos se prefieren a los LED de siete segmentos y otros LED de múltiples segmentos. Las razones son: las pantallas LCD son económicas; fácilmente programable; No tiene limitación para mostrar caracteres especiales e incluso personalizados (a diferencia de siete segmentos), animaciones, etc.

Una pantalla LCD de 16×2 significa que puede mostrar 16 caracteres por línea y hay 2 de esas líneas. En esta pantalla LCD, cada carácter se muestra en una matriz de 5×7 píxeles. Esta pantalla LCD tiene dos registros: comando y datos.

El registro de comando almacena las instrucciones de comando dadas a la pantalla LCD. Un comando es una instrucción dada a la pantalla LCD para realizar una tarea predefinida, como inicializarla, borrar la pantalla, configurar la posición del cursor, controlar la pantalla, etc.

El registro de datos almacena los datos que se mostrarán en la pantalla LCD. Los datos son el valor ASCII del carácter que se mostrará en la pantalla LCD. Haga clic para obtener más información sobre la estructura interna de una pantalla LCD.

Diagrama de pinos do LCD de caracteres 16X2

Fig. 4: Diagrama de pines del LCD de 16X2 caracteres

DS1307

El reloj serie en tiempo real (RTC) DS1307 es un reloj/calendario decimal completo con codificación binaria (BCD) de baja potencia más 56 bytes de NV SRAM. La dirección y los datos se transfieren en serie a través de un bus I²C bidireccional. El reloj/calendario proporciona información sobre segundos, minutos, horas, día, fecha, mes y año. La fecha de fin de mes se ajusta automáticamente para los meses con menos de 31 días, incluidas las correcciones para los años bisiestos. El reloj funciona en formato de 24 o 12 horas con indicador AM/PM. El DS1307 tiene un circuito de detección de energía incorporado que detecta fallas de energía y cambia automáticamente a la fuente de respaldo. La operación de sincronización continúa mientras la pieza opera desde la fuente de respaldo.

Imagem típica do DS1307 RTC IC

Fig. 5: Imagen típica del IC RTC DS1307

Código fuente del proyecto

 ###

 #incluir
 bits rs=P3^0;
 sbit en=P3^1;  
poco SDA=P1^0; //pin de datos para ds1307 bit bidireccional
 poco SCL=P1^1; // pin de reloj para ds1307 bit de salida
 conjunto de alarma de bit = P1 ^ 2; //establecer el bit de entrada de alarma
 bit alarm_beep=P1^3; //bit de salida del indicador de alarma
 poco siguiente=P3^2; //aumentar dígito
 sbit inc=P3^3; //aumentar valor bit de entrada
 conjunto de bits=P3^4; //establecer el bit de entrada de tiempo
 anular set_time; //función de configuración de hora/fecha/día
 visualización de vacío; //función de visualización de hora/fecha/día
 alarma nula; //función de configuración de alarma
 carbón; 
día de carbón sin firmar1 = 1;
 carácter sin firmar k,x;
 unsigned int fecha=1, lunes=1, año=0x14, hora=0, min=0, seg=0;
 unsigned int alarma_min, alarma_hora;
 anular I2CStart
 {
 SDA=1;SCL=1,SDA=0,SCL=0;
 } //función "inicio" para comunicarse con ds1307 RTC
 anular I2CStop
 {
 SDA=0,SCL=1,SDA=1;
 } //función "detener" para comunicarse con ds1307 RTC
 carácter sin firmar I2CSend (datos de carácter sin firmar) //enviar datos a ds1307
 {
 carácter i;
 bit estático ack_bit;
 para(i=0;i<8;i++)
 {
 si(Datos y 0x80) SDA=1;
 de lo contrario SDA=0;
 LSC=1;
 Fecha<<=1;
 SCL=0;
 }
 ADE=1,SCL=1;
 reconocimiento_bit=SDA;
 SCL=0;
 devolver reconocimiento_bit;
 }
 carácter sin firmar I2CRead (confirmación de carácter) //recibimos datos de ds1307
 {
 carácter sin firmar i, datos = 0;
 ADE=1;
 para(i=0;i<8;i++)
 {
 Fecha<<=1;
 hacer{SCL=1;}
 mientras(SCL==0);
 si(SDA) Datos =1;
 SCL=0;
 }
 si(ack)SDA=0;
 de lo contrario SDA=1;
 LSC=1;
 SCL=0;
 ADE=1;
 Fecha de regreso;
 } 
retraso nulo (tiempo int sin firmar) // función de retraso
 {
 sin firmar int i,j;
 para(i=0;yo
 //sin hora ni alarma configuradas

 #incluir
 bits rs=P3^0;
 sbit en=P3^1;
 poco SDA=P1^0;
 poco SCL=P1^1;
 carbón;
 matriz de caracteres (7);
 anular I2CStart {SDA=1;SCL=1,SDA=0,SCL=0;}
 anular I2CStop {SDA=0,SCL=1,SDA=1;}
 carácter sin firmar I2CSend (datos de carácter sin firmar)
 {
 carácter i;
 bit estático ack_bit;
 para(i=0;i<8;i++)
 {
 si(Datos y 0x80) SDA=1;
 de lo contrario SDA=0;
 LSC=1;
 Fecha<<=1;
 SCL=0;
 }
 ADE=1,SCL=1;
 reconocimiento_bit=SDA;
 SCL=0;
 devolver reconocimiento_bit;
 }
 carácter sin firmar I2CRead (confirmación de carácter)
 {
 carácter sin firmar i, datos = 0;
 ADE=1;
 para(i=0;i<8;i++)
 {
 Fecha<<=1;
 hacer{SCL=1;}
 mientras(SCL==0);
 si(SDA) Datos =1;
 SCL=0;
 }
 si(ack)SDA=0;
 de lo contrario SDA=1;
 LSC=1;
 SCL=0;
 ADE=1;
 Fecha de regreso;
 }
 retraso nulo (tiempo int)
 {int sin signo i,j;
 para(i=0;yo 

Diagramas de circuito

Diagrama de circuito-8051-Microcontrolador-DS1307-Reloj en tiempo real basado en IC
Diagrama de circuito-8051-Microcontrolador-DS1307-Reloj en tiempo real basado en IC

Vídeo del proyecto

https://www.youtube.com/watch?v=I5kWgN_wW1I

Conteúdo Relacionado

En cada vehículo hay una red de sensores integrada...
El controlador del motor es uno de los componentes...
ESP32-CAM es un módulo de cámara compacto que combina...
La evolución de los estándares USB ha sido fundamental...
SCHURTER anuncia una mejora de su popular serie SWZ...
Visual Communications Company (VCC) ha anunciado sus nuevos tubos...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Probablemente se haya encontrado con el término " resistencia...
Probablemente tenga un aislante de soporte si ha notado...
Probablemente haya visto un aislante colocado en postes de...
Probablemente hayas visto aisladores de grillete entronizados en postes...
Probablemente hayas experimentado situaciones en las que controlar un...
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.