ds1307 y pic 16f877

#1
Hola a todos. Estoy tratando de montar un reloj de tiempo real con el DS1307 y el pic 16F877 y mostrarlo en un LCD 2x16 pero no me está funcionando solo veo ceros.
Si alguien tiene un código asm y me lo pueda postear se los agradezco.

Además necesito saber en que formato se mandan los datos del reloj o del pic al LCD. Si por ejemplo en el registro de minutos está en 56 minutos, en que formato se lo debo mandar al LCD para que si muestre 56 y no otra cosa? que conversion se hace desde el registro en el pic para pasarlo al LCD.

Siempre trabajé con display 7 segmentos y con los LCD no se como hacerlo.

GRACIAS POR SU AYUDA.
 
#2
Hola! Mra, en Destacados sale algo con relación a ese tema. Léete ben el Datasheet del DS1307, ya que allí sale todo lo que necesitas saber sobre el formato de hora, y todo eso.
Disculpa que te mande para allá, pero es allí donde yo aprendí a hacer funcionar el DS1302 con un 16F84. Tengo publicado el ASM, pero no te sirve tanto, ya que ese está hecho para simular un puerto SPI y no I2C como el que creo que tiene el DS1307.
Ssuertee!
 
#3
gracias por tu colaboración, miraré a ver si encuentro respuesta a mi interrogante.


ELIUSM dijo:
Hola! Mra, en Destacados sale algo con relación a ese tema. Léete ben el Datasheet del DS1307, ya que allí sale todo lo que necesitas saber sobre el formato de hora, y todo eso.
Disculpa que te mande para allá, pero es allí donde yo aprendí a hacer funcionar el DS1302 con un 16F84. Tengo publicado el ASM, pero no te sirve tanto, ya que ese está hecho para simular un puerto SPI y no I2C como el que creo que tiene el DS1307.
Ssuertee!
 
#4
hola amigos foreros, les solicito ayuda con mostrar datos tanto por la lcd como serialmente de un reloj en tiempo real ds1307, estoy trabajando con el 16f877a.
Lo simulo en proteus y en la ventana clock me aparece bien la fecha y hora pero mando esos datos a la lcd y manda solo 45:85:85 solo eso.

Agradezco cualquier ayuda.
 
#7
Ya resolvi el problema con el reloj, era solo un error con la configuracion de los pines en la libreria.

Meta el libro esta muy bueno, hay alguna forma de descargar mas información sobre el?
 
#9
Al libro completo te lo podes descargar completo de internet + CD con aplicaciones y ejemplo

Vale la pena comprarlo , es mucho más práctico para aprender y su precio tampoco es de locura u$ 35
 
#12
Moyano Jonathan dijo:
A vos cuanto te salió meta, a mi me salió 15 euros mas o menos para que te des una idea
Lo compré a unos 34 € por ahí. Y estoy contento de ello. El autor del libro, me dio entender que quizás salga uno con el lenguaje en C y que podría tardar años en salir. Eso fue hace un año y ese libro no aparece.
 
#14
Hola gente queria hacerles una consulta sobre el DS1307 porque vi en otros foro que lo pudieron hacer andar. les cuento mi problema yo estoy trabajando con MikroC y simulando con Proteus y el pic que utilizo es el 877. El tema es el siguiente, cuando utilizo una función que lea todos los registros del DS1307 hace cualquier cosa pero cuando hago funciones separadas funciona correctamente pero no me convence hacer tantas funciones (osea para segundos, minutos, hora, dia, fecha, etc). La función que hace todo junto es la siguiente:

unsigned short Leer_DS1307(void){
I2C_Init(10000);
I2C_Start();
I2C_Wr(00);
I2C_Wr(0);
I2C_Repeated_Start();
I2C_Wr(0xd1);
segundos=I2C_Rd(0x01); //segundos
minutos=I2C_Rd(0x01);
hora=I2C_Rd(0x01);
dia=I2C_Rd(0x01);
fecha=I2C_Rd(0x01);
mes=I2C_Rd(0x01);
ano=I2C_Rd(0x01);
I2C_Rd(0);
I2C_Stop();
}

supuestamente me tendria que guardar el contenido de todos los registros en las distintas variables pero no lo hace, parece que es problema de tiempos porque algunas variables las lee bien y otras no. Cualquier ayuda se agradece!
 
#15
hola q tal estoy con el mismo proyecto del reloj del reloj de tiempo real ds 1307 y en pic 16f84 pero ala hora de leer leo siempre puros unos y el leed q debiera parpadear no lo hace ya revise la libreria y no doy con el problema alguien me podrian ayudar se los agradeceria buen dia
 
#16
Hola! Mra, en Destacados sale algo con relación a ese tema. Léete ben el Datasheet del DS1307, ya que allí sale todo lo que necesitas saber sobre el formato de hora, y todo eso.
Disculpa que te mande para allá, pero es allí donde yo aprendí a hacer funcionar el DS1302 con un 16F84. Tengo publicado el ASM, pero no te sirve tanto, ya que ese está hecho para simular un puerto SPI y no I2C como el que creo que tiene el DS1307.
Ssuertee!
¿donde lo publicaste?:)
 
#17
Hola parceros miren yo no les puedo ayudar pero les agradeceria si me dieran la pauta para iniciar a programar en miKro c la comunicacion con el pic 18f45550 y realizar una aplicacion con este rtc si pueden envien algun codigo en este lenguaje ..........espero pronto sus ayudas
 
Última edición:
#18
Saludos
Espero no llegar tarde al tema pero para hacer una comunicacion i2c en cualquier microchip solo tienes q hacerle un cambio pequeno a la configuracion de los registros del micro a usar. xq de ahi sentencias, rutinas y funciones te sirven de igual
te adjunto una funcion q te puede servir mucho aunq esta escho en mikrobasic pro

' leemos la direccion en memoria del rtc
sub function read_ds1307(dim address as byte) as byte
I2C1_Start() ' iniciamos la comunicacion i2c
I2C1_Wr(0xd0) ' Control de formato de byte control
I2C1_Wr(address) ' direccion que se va a leer en ds1307
I2C1_Repeated_Start()
I2C1_Wr(0xd1) ' Control de formato de byte control + 1bit de lectura
v_dato=I2C1_Rd(0) ' devuelve el valor buscado en ds1307
I2C1_Stop() ' finalizamos la comunicacion i2c
result = v_dato
end sub

' escribimos en el ds1307 recive como parametro direccion y el dato a cargar
sub procedure DS1307_Write(dim Addr, Dato as byte)
I2C1_Start() ' iniciamos la comunicacion i2c
I2C1_Wr(0xd0) ' Control de formato de byte
I2C1_Wr(Addr) ' direccion que se va a leer
I2C1_Wr(Dato) ' dato que se va a escribir en el ds1307
I2C1_Stop() ' finalizamos la comunicacion i2c
end sub
claro que previamente sugiero q le des una leida al datasheet al ds1307
 
Última edición por un moderador:
#19
saludos gracias pero ya presente el proyecto y si me resulto aunque queria igualar la hora y no sabia como eso es la duda para cuando se me de la oportunidad de hacer algo parecido ayudame con eso de como puedo igualar la hora
 
#20
Saludos

Sigue siendo mas facil, usando las funciones anteriores, pero como dije anteriormente debes dar una ojeada a la hoja de datos del DS1307

' Seteamos la hora
sub procedure set_rtc()
DS1307_Write(0, $00) ' asignamos los segundos
DS1307_Write(1, $33) ' asignamos los minutos
DS1307_Write(2, $16) ' asignamos los horas
DS1307_Write(4, $05) ' asignamos los dia
DS1307_Write(5, $05) ' asignamos los mes
DS1307_Write(6, $11) ' asignamos los ano
end sub

y luego lo leemos la hora ajustada, pero hay un problema????

Cada vez q inicies el micro va a ajustar siempre la hora, como sulucionar esto !!! dame tu idea y luego te doy la mia
 
Última edición por un moderador:
Arriba