Os cuento, estoy diseñando un reloj Nixie. Primero lo estoy simulando con el Proteus, utilizo un PIC 16F876A, un DS1307 y una pantalla LCD 16x2. Me funciona a la perfección me muestra la hora y la fecha.
Vale el problema es que tengo el código para una pantalla LCD pero claro los tubos Nixie no es una LCD, por eso debo cambiar la pantalla LCD.
Me gustaría que me dijeran exactamente como conectar el PIC a los tubos Nixie, ya que voy a multiplexar.
Respecto el código decidme un ejemplo de como sacar la informacion del DS1307 y mandarla a los tubos. Solo quiero un ejemplo.
Yo hago esto pero la mando a la pantalla LCD con un printf y claro no sera lo mismo para los tubos
Muchísimas gracias.
#include <16F876A.h>
#fuses XT,NOWDT,NOLVP,NOPROTECT
#use delay (clock=4000000)
#use i2c (Master, sda=PIN_C4, scl=PIN_C3)
#define use_portb_lcd TRUE
#include <lcd.c>
int ano,mes,dia,dia_set,hor,min,sec;
/******************************************************************************
DS1307
******************************************************************************/
int BCDaBIN(int bcd) //Conversion a BCD a Binario
{
int varia;
varia = bcd;
varia >>= 1;
varia &= 0x78;
return (varia + (varia >> 2) + (bcd & 0x0f));
}
void tiempo (byte &ano, byte &mes, byte &dia, byte &dia_set, byte &hor, byte &min, byte &sec)
{
i2c_start(); //Escritura
i2c_write(0xD0); //Código de escritura
i2c_write(0x00); //Puntero a la primera dirección
i2c_start(); //Lectura
i2c_write(0xD1); //Código de lectura
sec = BCDaBIN (i2c_read()&0x7f); //Lectura de los 7 bits de los segundos
min = BCDaBIN (i2c_read()&0x7f); //Lectura de los 7 bits de los minutos
hor = BCDaBIN (i2c_read()&0x3f); //Lectura de los 6 bits de los horas
dia_set=BCDaBIN (i2c_read()&0x7); //Lectura de los 3 bits de los dias
dia = BCDaBIN (i2c_read()&0x7f); //Lectura de los 6 bits de los dias
mes = BCDaBIN (i2c_read()&0x1f); //Lectura de los 5 bits de los meses
ano = BCDaBIN (i2c_read(0)&0xff); //Lectura de los 8 bits de los años
i2c_stop();
}
/******************************************************************************
PROGRAMA PRINCIPAL
******************************************************************************/
void main()
{
lcd_init();
while(1)
{
tiempo(ano,mes,dia,dia_set,hor,min,sec); //Lee tiempo del DS1307
lcd_gotoxy(1,1);
printf(lcd_putc,"%2u/%2u/%2u",dia,mes,ano);
lcd_gotoxy(1,2);
printf(lcd_putc,"%2u:%2u:%2u",hor,min,sec); //Visualiza la hora
}
}