7 segmenti parlaklık için en uygun direnç (Termometre)

Başlatan baran123, 23 Aralık 2014, 19:34:03

Kabil ATICI

@Baran Ekrem
Gerçek devrede sıkıntı olmuyor.  Sanırım olay İsis'in transistör modellemesi ile ilgili.

switch(sayac)
   {
      case 0:
      output_low(DIGIT_1);
      output_b(0x39);
      output_high(DIGIT_4);
      break;
      
      case 1:
      output_low(DIGIT_4);
      output_b(0x63);
      output_high(DIGIT_3);
      break;
      
      case 2:
      output_low(DIGIT_3);
      yuzler = temp % 10; //istenirse burası ölçüm sonrasına taşınabilir
      output_b(digit[yuzler]);
      output_high(DIGIT_2);
      break;
      
      case 3:
      output_low(DIGIT_2);
      binler = temp / 10; //istenirse burası ölçüm sonrasına taşınabilir
      output_b(digit[binler]);
      output_high(DIGIT_1);
      break;
   }

satırlarını değiştirildiğine emin isen sıkıntı olmaması gerekir.
ambar7

baran123

#16
@akineton, tabi fırsat bulduğumda paylaşıcam

mesaj birleştirme:: 24 Aralık 2014, 21:55:17

@akineton Dosyalar burada : https://onedrive.live.com/redir?resid=900F4CF5DAB8DEF5!924&authkey=!AKpAzT113-vRYEo&ithint=file%2crar

@ambar hocam kod su sekılde, pull down direnclerini dijital yapınca ekranda sapıtma oluyor
#INCLUDE <16F628A.h>
#FUSES XT, NOWDT, NOMCLR, NOBROWNOUT
#USE DELAY(CRYSTAL = 4M)

#include <DS18B20.c>

#define DIGIT_1  pin_A1
#define DIGIT_2  pin_A2
#define DIGIT_3  pin_A3
#define DIGIT_4  pin_A4

signed int temp;
unsigned int counter,binler,yuzler;
const int digit[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x6F}; 

#INT_TIMER0
void Timer0_INT(void) 
{
   disable_interrupts(INT_TIMER0);
   set_timer0(6);
   
   temp = ds1820_read();
   
   yuzler = temp % 10;
   binler = temp / 10;
   
   if((temp < 100) &&  (temp > 9))
   {
      switch(counter)
      {
         case 0:
         output_high(DIGIT_1);
         output_b(0x39);
         output_low(DIGIT_4);
         break;
         
         case 1:
         output_high(DIGIT_4);
         output_b(0x63);
         output_low(DIGIT_3);
         break;
         
         case 2:
         output_high(DIGIT_3);
         output_b(digit[yuzler]);
         output_low(DIGIT_2);
         break;
         
         case 3:
         output_high(DIGIT_2); 
         output_b(digit[binler]);
         output_low(DIGIT_1);
         break;
      }
   }
   
   else if((temp < 10) && (temp >= 0))
   {
      switch(counter)
      {
         case 0:
         output_high(DIGIT_1);
         output_b(0x39);
         output_low(DIGIT_4);
         break;
         
         case 1:
         output_high(DIGIT_4);
         output_b(0x63);
         output_low(DIGIT_3);
         break;
         
         case 2:
         output_high(DIGIT_3);
         yuzler = temp % 10;
         output_b(digit[yuzler]);
         output_low(DIGIT_2);
         break;
         
         case 3:
         output_high(DIGIT_2);
         output_b(0x00);
         output_low(DIGIT_1);
         break;
      }
   }
   
   else if((temp < 0) && (temp > -10))
   {
      switch(counter)
      {
         case 0:
         output_high(DIGIT_1);
         output_b(0x39);
         output_low(DIGIT_4);
         break;
         
         case 1:
         output_high(DIGIT_4);
         output_b(0x63);
         output_low(DIGIT_3);
         break;
         
         case 2:
         output_high(DIGIT_3);
         yuzler = temp % 10;
         output_b(digit[yuzler]);
         output_low(DIGIT_2);
         break;
         
         case 3:
         output_high(DIGIT_2);
         output_b(0x40);
         output_low(DIGIT_1);
         break;
      }
   }
   
   else
   {
      switch(counter)
      {
         case 0:
         output_high(DIGIT_1);
         output_b(0x77);
         output_low(DIGIT_4);
         break;
         
         case 1:
         output_high(DIGIT_4);
         output_b(0x78);
         output_low(DIGIT_3);
         break;
         
         case 2:
         output_high(DIGIT_3);
         output_b(0x77);
         output_low(DIGIT_2);
         break;
         
         case 3:
         output_high(DIGIT_2);
         output_b(0x76);
         output_low(DIGIT_1);
         break;
      }
   }
   
   counter++;
   
   if(counter > 3)
   {
      counter = 0;
   }
   enable_interrupts(INT_TIMER0);
}

void main(void)
{
   setup_timer_0(T0_INTERNAL | T0_DIV_16 );
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_CCP1(CCP_OFF);
   set_timer0(6);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   
   set_tris_a(0x00);
   set_tris_b(0x80);
   
   while(TRUE);
}

akineton

#17
saol hoam teşekkür ederim ...  :)

mesaj birleştirme:: 25 Aralık 2014, 01:02:43

baran hocam bunun aresi var mı acaba elinizde ???

baran123

Aresi yok PCB ile uğraşmıyorum delikli plakete kuruyorum devreleri