05 Aralık 2020, 17:03:32

Haberler:

Picproje Facebook Sayfası:  https://bit.ly/2pUitll


TM1627 CCS C

Başlatan yakup1890, 09 Ağustos 2020, 03: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=0onlar=0,yuzler=0,binler=0,sayi=0
float sicaklik,nem;

long a=0;

unsigned char digits[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};

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 segmentunsigned char nDigit);
void displayValues(unsigned char segment0unsigned char segment1unsigned char segment2unsigned 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=0usecondsi++) 
      
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=0i<8i++)
   {
     
     
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 segmentunsigned 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 segment0unsigned char segment1unsigned 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.