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.
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.
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.
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.
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.
Fig. 5: Imagen típica del IC RTC DS1307
Código fuente del proyecto
### #incluirbits 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 #incluirbits 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 |