Tamam, kusuruma bakmayın, yanlışlıkla üzerime alınmışım.
 

Evet güzel valla küçük ayrıntılarda boğulmuşum güzel yaklaşım tebrik ederim

Peki 6 haneli hex sayısını mesela FFAA00

R = FF
G = AA
B = 00

olarak 2 hanelere nasıl bölerim ?
 
Bir şeyi merak ettim, ben de durumu kavrarsam, benim açımdan çok iyi olur.
Tuş takımından girilen FF bilgisini, değişkene direkt olarak nasıl atıyorsunuz?
 
Bir şeyi merak ettim, ben de durumu kavrarsam, benim açımdan çok iyi olur.
Tuş takımından girilen FF bilgisini, değişkene direkt olarak nasıl atıyorsunuz?

Abi yanlış anlama sana lafımız yok ama ben zaten direk girmek istemiyorum. Tuış takımından giricem LCD ekrandan görücem yanlış yazmamışsam enter tuşuna basıcam değişkenlere gidicek
 
Yanlış anlama filan yok.
Sadece merak ettim.
Tuş takımından A tuşuna basıldığında, bir değişkene direkt 0x0A olarak girme varsa, öğrenmek istiyorum.
 
4*4 keypadlar HEX girilebilecek yapıda tasarlanmıştır. Aksi durumda 3*4 keypad yeterli olur.
 
Ben onu demek istemiyorum.
Sen dedin ya, desimal girmek yerine niye direkt hexa olarak girmiyorsun diye.
İşte o yüzden sordum.
 
Sonunda bitti.
ricetyx farkettiysen, beni sürekli uğraştırıyorsun.
Proteus'taki KeyPad, koduma uymadığı için biraz değişik oldu tuş takımı.
Zaten devre üzerinde, tuş takımının haritasını yazdım.
LCD'deki yönergeleri de bilerek İngilizce yazdım.
Türkçe karakterleri değiştirmeyi sevmiyorum.
Aşağıda, çalışır haldeyken birkaç ekran görüntüsü var devrenin.
Kodu incele bakalım, kolay mı zor mu görürsün.
Ufak tefek hatalar ya da mantık hataları olabilir.




Kod:
#include <16f877.h>
#INCLUDE <stdlib.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use fast_io(b)
#use fast_io(d)
#define use_portb_lcd TRUE
#include <lcd.c>

char str[2];

#define CONVERT PIN_C0
#define ROW0 PIN_C4
#define ROW1 PIN_C5
#define ROW2 PIN_C6
#define ROW3 PIN_C7
#define COL0 PIN_D4
#define COL1 PIN_D5
#define COL2 PIN_D6
#define COL3 PIN_D7

char const KEYS[4][4] =
{{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'F','0','E','D'}};

#define KBD_DEBOUNCE_FACTOR 33

short int ROW_HIGH()
{
    if(input (ROW0) || input (ROW1) || input (ROW2) || input (ROW3))
        return (1);
    else
       {
        return (0);
    }
}

char kbd_getc()
{
    static byte kbd_call_count;
    static short int kbd_down;
    static char last_key;
    static byte col;

    byte kchar;
    byte row;

    kchar='\0';

if(++kbd_call_count>KBD_DEBOUNCE_FACTOR)
{
   switch (col)
      {
         case 0:
         output_high(col0);
         output_low(col1);
         output_low(col2);
         output_low(col3);
         break;
       
         case 1:
         output_low(col0);
         output_high(col1);
         output_low(col2);
         output_low(col3);
         break;
       
         case 2:
         output_low(col0);
         output_low(col1);
         output_high(col2);
         output_low(col3);
         break;

         case 3:
         output_low(col0);
         output_low(col1);
         output_low(col2);
         output_high(col3);
         break;
      }

   if(kbd_down)
   {
      if(!ROW_HIGH())
         {
            kbd_down=false;
            kchar=last_key;
            last_key='\0';
         }
   }
   else
   {
      if(ROW_HIGH())
      {
         if(input (row0))
            row=0;
         else if(input (row1))
            row=1;
         else if(input (row2))
            row=2;
         else if(input (row3))
            row=3;
         last_key = KEYS[row][col];
         kbd_down = true;
      }
       else
         {
            ++col;
            if(col==4)
            col=0;
         }
     }
   kbd_call_count=0;
  }
return(kchar);
}

int8 HEXtoDEC()
{
    int8 result;;
    char *ptr;
    result=strtol(str,&ptr,16);
  
    return(result);
}

void SetLCD()
{
    printf(lcd_putc,"\f");
    lcd_gotoxy(1,1);
    printf(lcd_putc,"Put HEX Code");
    lcd_gotoxy(1,2);
    printf(lcd_putc,"#");
}

void main()
{
    char string[6], sout[6], red[2], green[2], blue[2];
    int8 iRed, iGreen, iBlue = 0;
    int cnt = 0;
  
    setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
    setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
    setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
    setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
    setup_adc(ADC_OFF);             // ADC birimi devre dışı
    set_tris_b(0x00);   // PORTB çıkış
    set_tris_c(0xFF);   // PORTD giriş
    set_tris_d(0x00);   // PORTD çıkış
    lcd_init();   // LCD hazırlanıyor
    SetLCD();
  
    while(1)
    {
        char k=0;
        k=kbd_getc();
        if(k!=0)
        {          
            if(cnt<6)
            {
                string[cnt] = k;
                printf(lcd_putc,"%c",string[cnt]);
                cnt++;
            }
              
            if(cnt==6)
            {
                lcd_gotoxy(1,1);
                printf(lcd_putc,"Press Convert   ");
                while(!input(CONVERT));
                printf(lcd_putc,"\f");
                lcd_gotoxy(1,1);
                printf(lcd_putc,"Press Restart");
              
                red[0] = string[0];
                red[1] = string[1];
                green[0] = string[2];
                green[1] = string[3];
                blue[0] = string[4];
                blue[1] = string[5];
                  
                str[0] = red[0];
                str[1] = red[1];
                iRed = HEXtoDEC();
                str[0] = green[0];
                str[1] = green[1];
                iGreen = HEXtoDEC();
                str[0] = blue[0];
                str[1] = blue[1];
                iBlue = HEXtoDEC();
              
                lcd_gotoxy(1,2);
                printf(lcd_putc,"R%u G%u B%u", iRed, iGreen, iBlue);
                delay_ms(500);
                while(!input(CONVERT));
                cnt = 0;
                SetLCD();
            }
        }
    }
}
 




Yani yalakalık malakalık değil ama hakketten sen bu işi biliyorsun. Çok teşekküre ederim abi olayıda anladım valla.. dile benden ne dilersen
 
YARARMAN abi birde PWM ilen LED lerde olsaymış dahada güzel olurmuş.
Burada babyiğit adam olduğunu gösterdin
Biz seyirci kalıyoz kusurumuza bakma baba.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…