SSD1289 TFT çalışmaları

Başlatan musaak, 29 Haziran 2014, 18:13:06

musaak

merhaba arkadaşlar TFT lcd'lerle yeni yeni çalışmaya başladım.Hazır kütüphaneleri  inceleyerek anlamaya çalışıyorum.(ssd1289 ve stm discovery)

//tft için font
#define   MS_GOTHIC_8X16   1
static unsigned char const MS_GOTHIC_8x16_table[95][16] = {

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/

{0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x18,0x18,0x00,0x00},/*"!",1*/
.........

//font ayarlama fonksiyonu

void GetAsciiCode(unsigned char *buffer,unsigned char ASCII,unsigned char Font)
{

   switch(Font)
	 {	  
		    case MS_GOTHIC_8X16:
			  memcpy(buffer,MS_GOTHIC_8x16_table[(ASCII-32)],16);
				break;
				default:
				break;
	 }
}


memcpy(buffer,MS_GOTHIC_8x16_table[(ASCII-32)],16); 
burda  MS_GOTHIC_8x16_table[(ASCII-32)] ifadesinde  ASCII den neden 32 sayısı çıkartılıyor yardımcı olabilirmisiniz.

musaak

merhaba arkadaşlar

#define DISP_ORIENTATION      90

void SSD1289_SetCursor( uint16_t Xpos, uint16_t Ypos )
{
    #if  ( DISP_ORIENTATION == 90 ) || ( DISP_ORIENTATION == 270 )

      uint16_t temp;
      Ypos = ( MAX_Y - 1 ) - Ypos;
      temp = Ypos;
      Ypos = Xpos;
      Xpos = temp;

   #elif  ( DISP_ORIENTATION == 0 ) || ( DISP_ORIENTATION == 180 )

      Ypos = ( MAX_Y - 1 ) - Ypos;
         
   #endif
}

burda DISP_ORIENTATION 90 değerine göre  Xpos ile Ypos neden yer değiştiriliyor bilgisi olan varmı?

minicihazlar

Neden 32 çıkartıyor sorusunun yanıtı aslında kod içerisinde var. Şöyleki MS_GOTHIC_8x16_table tablosunun ilk satırına bakarsak şöyle yazıyor:

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/

Yani parantez içerisindeki yoruma göre ilk karakter boşluk karakteri. İkinci satırda ise /*"!",1*/ ünlem karakteri var. Yani font tablosuna ASCII tablosundaki boşluk ile başlamış. Şimdi ASCII tablosunun ilgili kısmına bakarsak:



32 sayısının boşluğa karşılık geldiğini görürüz. Dolayısıyla burda yapılan font tablosunda ilgili karakteri bulabilmek için 32 olan ofset değerini çıkartmaktan ibaret.

minicihazlar

DISP_ORIENTATION demek ekran oryantasyonu demek, yani sağa (90) veya sola (270) yatık durumda eksenler değişecektir. Ekrana çizme işlemini değiştirmemek için koordinat sistemini değiştirmek daha kolay.