Programación C de microcontroladores (C515C)
Descripción de la función
Función void RTC_INIT(void)
La inicialización de RTC DS1307 se hace necesaria después de cambiar de batería de
apoyo. El siguiente proceso se encuentra implementado en la función:
IIC_SEND(0x00);
IIC_SEND(0x00);
IIC_SEND(0x00);
IIC_SEND(0x02);
IIC_SEND(0x01);
IIC_SEND(0x01);
IIC_SEND(0x02);
IIC_SEND(0x93);
Figura 16: Proceso de la inicialización_ RTC (
Funciones para leer las disintas áreas de memoria de RTC DS1307
Para leer las distintas secciones de información de los registros de RTC se implementó una
función respectivamente. Estas funciones son del tipo unsigned char porque envian un valor
de retorno rtc_data del tipo unsigned char.
Funciones para la visualización compatible con la LCD de I²C de la información de
RTC
Para poder visualizar los datos de RTC en la unidad indicadora de LCD, éstos deben ser
convertidos en un formato compatible con la LCD. A ese fin se pueden utilizar las funciones
de visualización disponibles. Las funciones son del tipo void porque no se envía un valor de
retorno. Para la transferencia de datos se utiliza una variable data_out del tipo unsigned
char. Ésta se convierte según decenas y unidades y se visualiza en la unidad indicadora
LCD. Una particularidad presenta la función para la visualización del día de la semana,
porque dentro de la RTC, a estos días están asignados valores numéricos entre 1 .. 7 =
Lunes .. Domingo. Para la visualización de la abreviatura del día se incorpora un campo de
texto en el Flash del microcontrolador y un correspondiente puntero.
Ejemplos para llamadas a la función:
unsigned char minute;
min
MIN_OUT(minute);
Las respectivas posiciones de los datos de tiempo en la LCD están fijadas mediante la
función LCD_gotoXY dentro de la correspondiente función de indicación. El usuario puede
modificarlas. A ese fin se deben introducir, en la correspondiente llamada a la función
LCD_gotoXY, otros valores para line y column.
36
// Segundos = 00, reloj conect.
// Minutos = 00
// Horas = 00, modo de 24h
// Día de la semana = 2
// Días = 01
// Meses = 01
// Años = 02
// Respuesta conectada
DS1307.pdf)
= MIN_IN();
CMC 5
// Variable para rtc
// Minutos de RTC
// Minutos hacia LCD
(registro RTC 0x00)
(registro RTC 0x01)
(registro RTC 0x02)
(registro RTC 0x03)
(registro RTC 0x04)
(registro RTC 0x05)
(registro RTC 0x06)
(registro RTC 0x07)
Introducción CMC 5