GLCD için ARRAY tipli SABİT tanımlama

Başlatan kasif, 11 Nisan 2006, 23:12:37

kasif

Merhabalar,

Başlık istediğim gibi olmadı, ama arama sonuçları için yeterli olur herhalde.

Bicbasic pro ile 128 x 64 GLCD kullanmayı başardım, yani istediğim pikseli istediğim hale getiriyorum, fakat bir resmi 16F877 nin içine koymakta zorlanıyorum.

Aşağıdaki örnek, microbasic (mikroelektronika) için hazırlanmıştır.

Bir resmi böyle tanımlamak veya sıra ile GLCD ye yazdırmak sorun değil ama bunu sabit olarak pic e nasıl sabit(con) olarak kaydedebilirim(PicBasic Pro).

Sonrada
 PORTD=bank_bmp(AA)
gibi bir komut ile ekrana göndermeye başlayacağım.



' ------------------------------------------------------  
' GLCD Picture name: bank.bmp            
' GLCD Model: KS0108 128x64            
' ------------------------------------------------------  

const bank_bmp as byte[1024] = (
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,  0, 64,128,  0, 
  98, 68,  8, 16,  0,128, 72,132,  0,  0, 96, 32,  0,192, 64,  0, 
 128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,128, 16,132,121,  4,  3,  1,128,  0, 
   0,  0,  0,  0,  0,  0, 24, 23, 16,  0,  0,  0, 32, 32, 64,128, 
 128,  1, 34,156,112,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,  0,  0,  0,  0,128,  0, 64,192,  0, 96, 64, 
  16, 64, 96, 32,128, 64,  0,128,  0,  0,  0,  0,  0,  0, 32, 16, 
   0,  0,  0,  4,  0,  0,  0,  3,  0,  3,  0,  4,  4,  6,  8, 16, 
 112,192,  0,  0,  0,  0,  0,  0,  0,  0,128, 32,  0,  0,  8,  1, 
   7,  6,  4,  6,  4,  7,  4,  4,  0,  8,  8, 16,112,192,  0,  0, 
   0,  0,  0,  0,  0,  0,240,  0,  0,122,122,  0, 64,  0,  2,  0, 
   4,248,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,128,128,  0, 64,128,  0, 96,128, 48, 96, 24, 24, 
  32, 12, 20, 18,  6, 12,  3,  7,  4,  3,  3, 26,  1, 31,125, 60, 
  60, 60,125, 25,  6,  2,  3,  5,  4,  2,  9, 12,  6, 18, 10, 36, 
  48, 64, 96, 48,192,192, 32,160,192, 64, 16,144,  0,  8,  8,  4, 
   6,  1,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0, 
   0,  0, 32, 32, 32, 32, 32,  0, 16, 16,  8, 12,  6,  3,128,128, 
 128,  0,  0,192,192,128,255,  0,  0,  7, 69,  8,192,135,  0,  0, 
 128,255,  8,224,240,240,224,192,192,128,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  1,  1,  1,129,  1, 63, 33, 33, 33, 33,123, 63, 37, 
  37, 37, 63,187, 33, 33, 33, 57, 37, 35,163, 39, 47, 61, 57, 49, 
  33, 35, 63, 39, 37, 45, 57, 57, 63, 63, 33, 33, 59,127, 63, 37, 
  37, 37, 47, 59, 57, 49,225, 33, 33, 33, 33, 63, 33,  1,192,  0, 
 224, 32, 32,  0,  0,  0, 48, 48, 32,  0,136,152,152, 16,128,140, 
  76, 72, 64,  0,198,230, 36, 32,  0,  3,227,242, 16, 16,  1,  1, 
   9,248,248,  0,  0,  4,255,  0,  0,141,136,152,144, 61,  1,  0, 
 218,255,  0,255,255,255,255,255,255,255,255,255,254,252,252,248, 
   0,  0,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0,255, 86,  0, 
   0,  0,  0,255,  0,  0,  0,  0,255,255, 16,172,244, 62, 37, 39, 
  35, 34, 34,226, 34, 34, 34, 35, 37, 38, 58,228,248,  0,255,255, 
   0,  0,  0,255,255,  0,  0,255,  0,  0,  0,  0,  0,  0,  0,  0, 
 255,  2,  0,  0,127, 65, 65,  0, 63, 63,  0,  0, 32, 32, 63, 63, 
   0,128,128,128,159,159,144,144,128,128,143,143,136,  8, 72, 72, 
  64,199, 71,192,192,  4, 15,  0, 16,  5, 33, 34, 38, 32, 48,  0, 
  15,  6,  0,255,255,255,255,255,255,255,255,255,255,255,255,255, 
   0,  0,  0,  0,  0,  0, 64, 64,127, 64, 64, 64, 64,127,107, 64, 
  64, 64, 64,127, 64, 64, 64, 64,127,127, 64, 84,127, 64, 64, 64, 
  64, 64, 64,127, 64, 64, 64, 64, 64, 64, 64,127,127, 64,127,127, 
  64, 64, 64,127,127, 64, 64,127, 64, 64, 64, 64, 64, 64, 64,240, 
 255,  0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,  0,  0,255, 64,255,255,  0, 16, 16, 16, 16, 16, 16, 
  16,255,  0,255,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
   0,  0,  0,255, 63,255, 15,255,255,255,255,255,255,255,255,255, 
   0,  0,  0,  0,  0,  0,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 
   6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 
   6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 
   6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  0,  0,  0,  0,  0, 63, 
  43, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 
  40, 40, 40, 40, 40, 47, 32, 63, 63, 32, 32, 32, 32, 32, 32, 32, 
  32, 63, 32, 47, 47, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 
  40, 40, 40, 63, 32, 32, 32, 47, 63, 47, 47, 63, 63, 63, 63, 63 
)


Teşekkürler,

Klein

soruyu tam anlayamadım. zaten yapmışsın. ama eğer soru bir resmi bu hale nasıl kolay getiririm ise , çeşitli programlar mevcut. bmp2asm.exe isimli bi programı kullanıyorum ben. asm formatına çeviriyor. birkaç küçük düzenlemeden sonra C ile kullanabiliyorum.

eğer soru bu değil de ,  devre çalışırken bunu nasıl yaparım, bu kodu nasıl gömerim ise ;
Önerim : dışarıdan bir eeprom'a kaydedip oradan okuman olur. PIC'in programı ram'e atıp orada çalıştırarak kendi  kendini programlayabildiğini zannetmiyorum.

kasif

yok yukarıdaki kod microbasic için, bana picbasic pro lazım.

CaFFeiNe

CDATA, CREAD, CWRITE komutlarını incele 877,452 gibi kod belleğini değiştirebilen çiplerde kullanılıyor

GLCD kullandığına göre sanırım bunlar gibi bir PIC kullanmışsındır zaten

CDATA ile kod belleğinde sabit datalar oluşturuyorsun CREAD ile okuyup CWRITE ile yazabiliyorsun

azıcık ilgilenmiştim bi ara örnek kod isteme sakın basic sayfamı kapattım :)

kasif

CDATA, CREAD, CWRITE  değilde bunların C sizi var(DATA READ WRITE, onları deneyeyim. eprom yazma için.

Ayrıca symbol diye birşey daha buldum onları da denemem lazım.

ya bunun basiti falan yok mu ?

kasif

Öncelikle
PIC16F877 nin datasheet ine bakılır.
   Görülürki ne ram nede eeprom da 1kilobyte lık yer yok.
   Demekki datasheete bakılmadan düşünmemek gerekiyormuş.

Galiba sabit te olsa bu işi yapamayacağım.
Şimdi bir eeprom veya flash almak içinde karaköye gidilmez.

Yolum düşünce artık.

kasif

Birkaç saat önce bir PIC16F877 ye 3 tane 128x64 x siyah beyaz olmak üzere 3 resmi Pic ,basic Pro ile yerleştirmeyi başardım. Tabi program hafızasında pek boş yer kalmadı.

Picbasic Pro + GLCD + PIC18F877 li bir projeniz var ise mutlaka harici hafızalardan yararlanın. Yoksa sadece resim çizmiş olursunuz. Birde font tanımlama gelince hafıza hiç yetmez.

hakankurt

Yazdığınız kodlar ile ilgili bana bilgi verirmisiniz bende GLCD ile uğraşıyorum.

Teşekkürler.