# ds1307 y pic 16f877



## juankah72 (Nov 4, 2007)

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.


----------



## ELIUSM (Nov 4, 2007)

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!


----------



## juankah72 (Nov 4, 2007)

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!


----------



## jaiser (Oct 29, 2008)

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.


----------



## Meta (Oct 29, 2008)

http://www.pic16f84a.org/index.php?...w=article&id=66&Itemid=87#Proteus_Capitulo_24


----------



## jaiser (Oct 29, 2008)

gracias meta, por tu rapida respuesta voy a realizar los cambios en el hardware y cualquier cosa aviso.


----------



## jaiser (Nov 2, 2008)

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?


----------



## jaiser (Nov 2, 2008)

Por cierto trate de bajar los archivos pero la clave no es correcta, alguien sabe cual es la clave correcta?


----------



## Moyano Jonathan (Nov 2, 2008)

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


----------



## Meta (Nov 2, 2008)

Es tan bueno que lo compré. AL principio dudaba si valía la pena, ahora como se lo que hay, está buenísimo.
http://www.pic16f84a.org/index.php?option=com_wrapper&view=wrapper&Itemid=98

Puedes comprarlo aquí.
http://www.ra-ma.es/libros/0001779.htm


----------



## Moyano Jonathan (Nov 2, 2008)

A vos cuanto te salió meta, a mi me salió 15 euros mas o menos para que te des una idea


----------



## Meta (Nov 2, 2008)

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.


----------



## Moyano Jonathan (Nov 3, 2008)

Habrá que darle tiempo , el libro que  sacó en ASM para el pic16f84a no es ninguna jodita le debe haber llevado su tiempo . Quizas habrá que esperar nomás


----------



## ing82 (May 4, 2009)

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!


----------



## eleman (Feb 28, 2010)

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


----------



## morfalibro (Nov 8, 2010)

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!



¿donde lo publicaste?


----------



## lusho (Ene 22, 2011)

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


----------



## mbenavides (Jun 28, 2011)

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


----------



## lusho (Jun 28, 2011)

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


----------



## mbenavides (Jun 28, 2011)

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


----------



## gzuz (Ago 25, 2011)

Para que no te de la hora cada vez que inicies tu micro solo tienes que grabarlo una vez y luego comentas la funcion que setea la hora y lo vuelves a grabar


----------



## borodelostoldos (Ene 4, 2012)

jaiser dijo:


> 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?



Porfa decime cual es el error de PINES que hay en la librería, tengo el mismo problema y no lo puedo ver!! Gracias!

45:85:85 lo agarro con un martilloooooooooooooooo!!



Uff! Listo, se me pisaba la declaracion de los pines de la USART con los del I2C. 
Saludos a todos!


----------



## Franc0ff (Mar 5, 2012)

cual es el problema? a mi me pasa lo mismo, por fa dime!


----------



## borodelostoldos (Mar 5, 2012)

Fijate que no tengas declarados los pines que usas para I2C para su uso con otro periférico, a mi se me pisaban con los de la USART. Cheka como están triseados, y dales exclusividad. 
Saludos!


----------



## Yeey (Mar 8, 2012)

Tengo unos .pdf sobre este tema pero no se como subirlos :s


----------



## COSMICO (Mar 9, 2012)

Hola amigos.
Veo que este tema esta quieto desde hace tiempo, espero se active de nuevo.
Lo que necesito saber sobre este tema, es. Como cambiar de formato de hora
sin corromperlo 
Cuando escribo i2c_write (0x40), para cambiar a formato americano
se me borra el reg horas, y me queda (00; ¿se puede conservar la hora
o es necesario reescribirla?
Saludo cordial.


----------

