Autor Tema: pregunta display tm1637  (Leído 109 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
pregunta display tm1637
« en: 13 de Junio de 2018, 09:56:08 »
hola a todos consegui una libreria para ese display pero no se como mostrar los dos puntos en el display, aqui la libreria.
Código: [Seleccionar]
////////////////////////////////////////////////////////////////////////////
//  Libreria simple para el uno del modulo con display tm1637            ///
//  Programador Adrian A                                                 ///
//  codigo probado en pic12f629                                          ///
////////////////////////////////////////////////////////////////////////////   
//            Primero en el programa principal se debe definir los pines
//            de salia para CLK y DIO ejemplo PIC12F629
//            #define CLK PIN_A0
//            #define DIO PIN_A1
//            el display 0 es el primero de la izquierda
//
//
//            Luego la funcion  init_tm1637(unsigned char BRIGHT) se debe
//            ejecutar luego de enviar los bytes al display
//            y con distintos valore de BRIGHT se cambia el brillo
//            cuyo valor va de  0x01  a  0x07   
//            si quieren controlar los dos puntitos centrale del display

unsigned char valores[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};


void start(void)

   output_high(CLK);
   output_high(DIO);
   delay_us(TIEMPO);
   output_low(DIO);

}

void stop(void)
{
   output_low(CLK);
   delay_us(TIEMPO);
   output_low(DIO);
   delay_us(TIEMPO);
   output_high(CLK);
   delay_us(TIEMPO);
   output_high(DIO);
   
}

void writebyte(unsigned char value)  //bit por bit
{
   unsigned char i, ack;

   for (i = 0; i < 8; ++i, value >>= 1)
   {
      output_low(CLK);
      delay_us(TIEMPO);
      if(value & 0x01)
         output_high(DIO);
      else
         output_low(DIO);
     
      output_high(CLK);
      delay_us(TIEMPO);
   }

   output_low(CLK);
   delay_us(TIEMPO);
   ack = input_state(DIO);
   if (ack)
      output_low(DIO);
   
   delay_us(TIEMPO);

   output_high(CLK);
   delay_us(TIEMPO);

   output_low(CLK);
   delay_us(TIEMPO);
 
}

void init_tm1637(unsigned char BRIGHT)
{
   start();
   writebyte(0x88 | BRIGHT);
   stop();


}

void write_full_display(unsigned char valor0,unsigned char valor1, unsigned char valor2, unsigned char valor3)
{

start();
writebyte(0x40);
stop();

start();
writebyte(0xc0);

writebyte(0x80|valores[valor1]);///esto es para supuestamente mostrar los dos puntos
writebyte(valores[valor0]);
writebyte(valores[valor1]);
writebyte(valores[valor2]);
writebyte(valores[valor3]);



stop();










}

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6912
Re:pregunta display tm1637
« Respuesta #1 en: 13 de Junio de 2018, 12:55:59 »
El TM1637 es simplemente un driver de Leds, sin informacion sobre la placa no creo que sea posible saber como controlar los 2 o 1 led que manejan los 2 puntos.

La unica es encontrar una libreria exacta para la placa que estas usando si es que no tenes informacion sobre que pines manejan los 2 puntos.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:pregunta display tm1637
« Respuesta #2 en: 13 de Junio de 2018, 17:28:07 »
la placa del display se maneja por protocolo serial y lo que no se es que comando tengo que mandar para activar los dos puntos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6912
Re:pregunta display tm1637
« Respuesta #3 en: 13 de Junio de 2018, 21:06:56 »
Esa no es la informacion que uno necesita para saber que comando es el que hay que enviar...

Solo necesito el esquematico de la placa que tiene el TM1637, y te digo que comando debes enviar.
La otra es buscar que es lo envian las demas librerias, pero viendo que hay miles de fabricantes no se si todos son iguales las placas.
« Última modificación: 13 de Junio de 2018, 21:14:58 por KILLERJC »


 

anything