Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

TM1627 CCS C

Başlatan yakup1890, 09 Ağustos 2020, 00:38:58

yakup1890

Merhaba Arkadaşlar
TM1627 ile saat termometre yapmak istiyorum bir türlü süremedim
c ile yazılmış bir kod buldum düzenledim olmadı
yardımcı olurmusunuz

#include <tm1637_pic.h>

#include "DS1302.C"
#include "DHT11.C"
#include  "TM1637-BOLT.h"
#define bright MAX_BRIGHT

byte saniye,dakika,saat,gun,ay,yil,haftanin_gunu;
unsigned int  i=0;
char birler=0, onlar=0,yuzler=0,binler=0,sayi=0; 
float sicaklik,nem;

long a=0;

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

void main()
{
   //port_a_pullups(0x0C);
   rtc_init();
 InitTM1637();



//displayValues(0,0,0,0);

output_high(pin_a3);
delay_ms(500);
output_low(pin_a3);






   while(TRUE)
   {

for(a=1;a<9999;a++)
{ 

displayValues(digits[(a/1000)%10], digits[(a/100)%10], digits[(a/10)%10], 
            digits[a%10]);

delay_ms(250);

 }


/*
      displayValues(0,0,0,0);
      
displayValues(digits[(saat/10)%10], digits[saat%10] | 0x80, digits[(dakika/10)%10], 
                 digits[dakika%10]);
      delay_ms(500);   
     writeRawDigit(digits[saat%10],1);
     
 */    
   }

}




//TM1637.H
#define CLK pin_a0
#define DIO pin_a1


//#define CLK_HIGH  pin_a1
//#define DIO_HIGH TRISCbits.TRISC1 = 1

#define LOW_BRIGHT 0X00
#define MID_BRIGHT 0X02
#define MAX_BRIGHT 0X07

void InitTM1637(unsigned char BRIGHT);
void Delay_us(unsigned int useconds);
void start(void);
void ask(void);
void stop(void);
void writeByte(unsigned char oneByte);
void writeRawDigit(unsigned char segment, unsigned char nDigit);
void displayValues(unsigned char segment0, unsigned char segment1, unsigned char segment2, unsigned char segment3);

//
//   Inicializa y ajusta el brillo del display TM1637
//
void InitTM1637()
{
   start();
   writeByte(0x88 | 0X07);
   ask();
   stop();
}

//
//   Función de retardos ajustada a los requerimientos de la comunicación con el display TM1637
//
void Delay_us(unsigned int useconds)
{
   unsigned int i;
   for(i=0; i < useconds; i++) 
      Delay_us(20);
}

//
//   Función que inicia la comunicación en el display TM1637
//
void start(void)
{
   output_high(clk);
   output_high(dio);
   Delay_us(2);
   output_low(dio);
}

//
//   Función que permite saber si el dato o comando enviado al display TM1637 ha sido recibido y
//   procesado correctamente
//
void ask(void)
{
    output_high(dio);
    output_low(clk);
   Delay_us(5);
   while(dio==0);
   output_high(dio);
   Delay_us(2);
  output_low(dio);
   output_low(clk);
}

//
//   Secuencia de paro, necesaria para el correcto funcionamiento del protocolo de comunicación
//   con el display TM1637
//
void stop(void)
{
     output_low(clk);
   Delay_us(2);
  output_low(dio);
   Delay_us(2);
   output_high(clk);
   Delay_us(2);
   output_high(dio);
}

//
//   Envia por el pin DIO los bits de un byte, envia serialmente los datos
//
void writeByte(unsigned char oneByte)
{
   unsigned char i;
   for(i=0; i<8; i++)
   {
     
     output_low(clk);
      if(oneByte & 0x01)
         output_high(dio);
      else
         output_low(dio);
      Delay_us(3);
      oneByte = oneByte >> 1;
      output_high(clk);
      Delay_us(3);
   }
}

//
//   Esta función envía al módulo TM1637 un byte con la representación en 7 segmentos en la
//   posción nDigit
//
void writeRawDigit(unsigned char segment, unsigned char nDigit)
{
   start();
   writeByte(0x44);
   ask();
   stop();
   start();
   writeByte(0xC0 | (nDigit & 0x07));
   ask();
   writeByte(segment);
   ask();
   stop();
}

//
//   Envía 4 caracteres al módulo TM1637 desde la posición 0 hasta la 4 de los segmentos
//
void displayValues(unsigned char segment0, unsigned char segment1, unsigned char segment2, 
               unsigned char segment3)
{
   start();
   writeByte(0x40);
   ask();
   stop();
   start();
   writeByte(0xC0);
   ask();
   writeByte(segment0);
   ask();
   writeByte(segment1);
   ask();
   writeByte(segment2);
   ask();
   writeByte(segment3);
   ask();
   stop();
}








isa_olcer

TM1629A için bende uğraşıyorum çözersem paylaşırım.