CGRAM'e karakter kaydetme ve gösterme

Başlatan ziyaretci, 30 Temmuz 2013, 16:59:17

ziyaretci

 Merhaba,

Aşağıdaki CCS C kütüphanesinde bulunan lcd.c dosyasına birkaç ekleme yaparak cgram e Türkçe karakter kaydetmek istedim, fakat bu işlemi yapıp uygulamaya geçtiğimde örneğin "Ş" karakterini lcd ye yazıdırmak istediğimde "Ş" karakterinin olduğu matrixde piksellerden görsel alamıyorum.

  Yardım eder misiniz?
void lcd_putc(char c,int i=0)
{  
 int adres_0,adres_0_dizi[8]={14,17,16,16,16,21,14,0};
 int adres_1,adres_1_dizi[8]={14,0,15,16,19,17,15,0};
 int adres_2,adres_2_dizi[8]={4,0,4,4,4,4,4,0};
 int adres_3,adres_3_dizi[8]={10,0,14,17,17,17,14,0};
 int adres_4,adres_4_dizi[8]={14,17,16,14,1,21,14,0};
 int adres_5,adres_5_dizi[8]={10,0,17,17,17,17,14,0};
 int adres_6,adres_6_dizi[8]={4,4,4,4,4,4,4,0};

  switch (c)
   {  

      
      
      case 'Ç'   :  for(adres_0=0x40;adres_0<0x48;adres_0++)
                    {lcd_send_byte(adres_0,adres_0_dizi[i]); i++;} i=0; 
                     delay_ms(2);
                     break;
     
     case 'Ğ'   :  for(adres_1=0x48;adres_1<0x50;adres_1++)
                    {lcd_send_byte(adres_1,adres_1_dizi[i]); i++;} i=0; 
                     delay_ms(2);
                     break;              
     
     case 'İ'   :  for(adres_2=0x50;adres_2<0x58;adres_2++)
                    {lcd_send_byte(adres_2,adres_2_dizi[i]); i++;} i=0; 
                     delay_ms(2);
                     break;
      case 'Ö'   : for(adres_3=0x58;adres_3<0x60;adres_3++)
                    {lcd_send_byte(adres_3,adres_3_dizi[i]); i++;} i=0; 
                     delay_ms(2);
                     break;
                     
      case 'Ş'   :  for(adres_4=0x60;adres_4<0x68;adres_4++)
                    {lcd_send_byte(adres_4,adres_4_dizi[i]); i++;} i=0; 
                     delay_ms(2);
                     break;
                     
      case 'Ü'   :  for(adres_5=0x68;adres_5<0x70;adres_5++)
                    {lcd_send_byte(adres_5,adres_5_dizi[i]); i++;} i=0; 
                     delay_ms(2);
                     break;
                     
      case 'I'   :  for(adres_6=0x70;adres_6<0x78;adres_6++)
                    {lcd_send_byte(adres_6,adres_6_dizi[i]); i++;} i=0; 
                     delay_ms(2);
                     break;
                     
               
      case '\f'   :  lcd_send_byte(0,1);
                     delay_ms(2);
                     break;
                     
      case '\n'   : lcd_gotoxy(1,2);        break;
     
      case '\b'   : lcd_send_byte(0,0x10);  break;
     
      default     : lcd_send_byte(1,c);     break;
   }
}

mehmet

Case komutundan sonraki karakter karşılaştırmasının yerine rakamsal karşılaştırma yapmanız daha iyi olur düşüncesindeyim. Derleyici doğru karakter dönüşümü yapamıyor olabilir...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

ziyaretci