ili9325 stm32f100

Başlatan muhittin_kaplan, 21 Mart 2013, 10:36:25

bocek

#15
Alıntı yapılan: Mucit23 - 21 Mart 2013, 22:38:53
%90 ekrana verdiğimiz renk bilgisi sadece 1 bit için.

Anlamadığım nokta ise 8 bitlik karakter bilgisi gönderilirken ekrana adres kordinat felan verilmiyor sadece renk gönderiliyor. O halde bir sonraki adrese nasıl geçiyor?  Burası düşündürüyor..
evet ekrana verdiğimiz renk bilgisi sadece 1 bit piksel için.
ekrana 8 bitlik karakter bilgisi verilmiyor. basılacak font 16x8 olduğundan (16px satır, 8px kolon)
setwindow ile işlem yapılacak alan belirleniyor. işin püf noktası da şurada:
LCD_WR_REG8(0x22)

bu komut bazı lcd kodlardaLCD_WriteRAM_Prepare isimli bir fonksiyon içerisine alınıp öyle kullanılıyor. Şöyle:
/**
 * \brief Prepare to write GRAM data.
 */
extern void LCD_WriteRAM_Prepare( void )
{
    LCD_WR_REG(0); // bu satır olmasa da oluyor.
    LCD_WR_REG(ILI9325_R22H) ; /* Write Data to GRAM (R22h)  */
}

Burdan anladığımız kadarıyla, bu komutu yazdığımız zaman lcd'ye; "GRAM'i hazırla, bundan sonra gönderdiğim renk bilgisini, ayırdığım pencere içerisine direkt ve sırayla bas" demiş oluyoruz.
1 ya da 0. işte 'bit'ün mesele..

muhittin_kaplan

Evet Hepimiz Aynı Noktadayız. DOğru Yorumlamışız.

Şimdi bize font hazırlayacak  bir program lazım. ben birkaç deneme ile olayın (büyük font) gerçekleştiğini gördüm.

Örneklerde rekler için aşağıdaki sistemi kullanmış.
Bunu gönderirken
mavi: 0x001F
kırmızı:0xF800
Yeşil:0x07C0 yapmış

buradan şunu Çıkarttım RRRRRGGGGG0BBBBB

Neden böyle yapılmış anlam veremedim. 18bitlik renk olması geremiyormu ?

M_B

Alıntı yapılan: muhittin_kaplan - 22 Mart 2013, 16:02:28
Evet Hepimiz Aynı Noktadayız. DOğru Yorumlamışız.

Şimdi bize font hazırlayacak  bir program lazım. ben birkaç deneme ile olayın (büyük font) gerçekleştiğini gördüm.

Örneklerde rekler için aşağıdaki sistemi kullanmış.
Bunu gönderirken
mavi: 0x001F
kırmızı:0xF800
Yeşil:0x07C0 yapmış

buradan şunu Çıkarttım RRRRRGGGGG0BBBBB

Neden böyle yapılmış anlam veremedim. 18bitlik renk olması geremiyormu ?

Hocam Ekranızın Driver Entegresi ile alakalı.
Ornek olarak resimdeki SSD1963 icin gecerli tablo.
Ama genel olarak hepsi boyledir diyebiliriz. Cunku SSD1289 chip setli Ekranımında renk tablosu bu şekilde.

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

bocek

Alıntı yapılan: muhittin_kaplan - 22 Mart 2013, 16:02:28
Şimdi bize font hazırlayacak  bir program lazım. ben birkaç deneme ile olayın (büyük font) gerçekleştiğini gördüm.
Fon teditörü olarak (başka bir konuda yine vermiştim) şunu öneririm:
sayfa: http://www.circuitidea.com/dev-board/BL-TFT240320PLUS-V2.html]
doğrudan link : Font editor written by H. Reddmann

Çok güzel bir font editörü. Seçtiğiniz herhangi bir windows fontunu import ediyorsunuz, sonra da istemediğiniz karakterleri silip datayı ufaltıyorsunuz.
Font datasını sıkıştırma özelliği de var ama ben beceremedim.
Sayfa sahibinin yazdığı kütüphane ile, bahsedilen font editöründe hazırlanmış bir fontu ölçekleyerek ekrana basma özelliği de var. ölçekleyince font biraz bozuluyor ama kullanılabilir. Böylece aynı font datası ile farklı boyutlarda yazı yazılabiliyor ve bellekten tasarruf ediliyor.
1 ya da 0. işte 'bit'ün mesele..

muhittin_kaplan

#19
file not found diyor linkte.

mesaj birleştirme:: 22 Mart 2013, 19:03:31

microelectronika nın visual tft si varmış.

Mucit23

#20
Bu TFT lerde renk kodları nasıl belirliyoruz.

mesela kullandığım kütüphanede sabit renkler tanımlanmış.

/* GLCD RGB color definitions                                                 */
#define Black           0x0000      /*   0,   0,   0 */
#define Navy            0x000F      /*   0,   0, 128 */
#define DarkGreen       0x03E0      /*   0, 128,   0 */
#define DarkCyan        0x03EF      /*   0, 128, 128 */
#define Maroon          0x7800      /* 128,   0,   0 */
#define Purple          0x780F      /* 128,   0, 128 */
#define Olive           0x7BE0      /* 128, 128,   0 */
#define LightGrey       0xC618      /* 192, 192, 192 */
#define DarkGrey        0x7BEF      /* 128, 128, 128 */
#define Blue            0x001F      /*   0,   0, 255 */
#define Green           0x07E0      /*   0, 255,   0 */
#define Cyan            0x07FF      /*   0, 255, 255 */
#define Red             0xF800      /* 255,   0,   0 */
#define Magenta         0xF81F      /* 255,   0, 255 */
#define Yellow          0xFFE0      /* 255, 255, 0   */
#define White           0xFFFF      /* 255, 255, 255 */


Ben farklı renkler oluşturacağım. Diyelim Windows un renk seçim kutusundan renk datalarını aldım. 127, 52, 200 gibi 3adet 8 bitlik renk datası var. Toplamda 24 bit eder fakat burada 16 bit var.

Renk dataları 6 bit olsa 18 bit eder. Yine 16 bite sığmaz . Buradaki mantık nasıl?

Edit;
M_B nin verdiği tabloyu yeni gördüm.

Bu 565 formatı nedir.

Ben hangi formata göre kodumu ayarlamam gerekir?


M_B

Alıntı YapBu 565 formatı nedir.
Mucit23 hocam;
565 formatı demek
RRRRR GGGGGG BBBBB : 5 Bit Kırmızı 6 bit Yesil 5 Bit mavi 
Tabloya dikkatle bakarsanız gorursunuz.
Alıntı YapBen hangi formata göre kodumu ayarlamam gerekir?
Hocam bizim kullandıgımız Lcd lerin veri yolu 16 bit tir. D0 dan D15 'e kadar. Bir kerede veri gondermek için ideal. 24 bit veriyi 16 bit veri yolundan bir kerede nasıl gonderecegiz bolmeden ?

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Mucit23

Hocam Ben elimdeki renk kodlarını binarye çevirdim. Sanırım 565 kullanılmış.

Visual TFT ile uğraşıyorum.  Bu programda resim kutusu içerisine dışarıdan resim ekleyemiyorum. Acaba lisansız olduğu içinmi?

M_B

hocam;
gerbay hoca forumda bir dll dosyası paylaşmıştı. o dosya m.e nin visual tft programı icinde gecerli
ben denemiştim. Şu an ilgili linki hatırlamıyorum.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Mucit23

Hocam var bende yaptım ama olmadı. Not registered diyor.

M_B

#25
hocam ilgili link
https://www.picproje.org/index.php/topic,45065.0.html

mesaj birleştirme:: 23 Mart 2013, 00:06:31

Alıntı yapılan: Mucit23 - 23 Mart 2013, 00:04:42
Hocam var bende yaptım ama olmadı. Not registered diyor.
Ben iş yerinde denemiştim olmuştu.  Ama programı detaylı kullanmadım.
Hatta diot hoca demişti. Visual TFT de de işe yarıyor.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Burak B

#26
RGB565 (31,63,31) 16bitte max değerleriniz bunlar olacak şekilde seçtiğiniz herhangi bir rengi dönüştürebilirsiniz. Bu iş için makro kullanabilirsiniz.

RGB->RGB565
#define RGB16(r,g,b) (uint16_t)((((r * 31) / 255) << 11) | (((g * 63) / 255) << 5) | ((b * 31) / 255))


18Bitlik kullanımda aynı veri yoluna iki kez veri yazmanız gerekir. 16+8 bit olarak.

Bigfont olayı öncede söylediğim gibi çok bellek isteyen bir durum. Bir pencere açıp oluşturduğunuz bitmap bilgisini içine boşaltmanız yeterli. Pencere boyu ile bigfontunuzun ebatları aynı sayıda pixel içeriyorsa hiçbir sorun çıkmadan ekranda görüntülenecektir. Aksi halde bir sorun varsa fontunuz ekranda düzgün çizilmez. Basitçe şunu söylemek gerek bitmap basarsanız fontta basarsınız.

"... a healthy dose of paranoia leads to better systems." Jack Ganssle

muhittin_kaplan

#27
Hocam İnceledim. Mantık AYnı Ha BMP ha Font. Aynı Yöntemi kullanağız.

şimdi hesap kısmındayız.

240x320x16=1228800 bit yapar (oda 150KByte)
Yani bir img dosyası 150KByte ediyor Doğrumuyum?

mesaj birleştirme:: 23 Mart 2013, 10:07:56

visual tft, verilen dongle dll ile olmuyor.

mesaj birleştirme:: 23 Mart 2013, 10:10:18

Olsada işimize yararmı meçhul. Keza Kodları Kendi derleyicisine göre (ki kütüphanesi kapalı malum) ayarlanıyordur.

bocek

evet verdiğim font  editörü linki çalışmıyor. kusura bakmayın kontrol etmemiştim.
şurdan indirdiğimiz rar içinde hem örnek kodlar hem de font editörü var.
http://www.circuitidea.com/images/column_1259887831/CID.rar
1 ya da 0. işte 'bit'ün mesele..

Mucit23

Hocam aynen o dll visual tft de ise yaramıyor.

Gerçi ben arayüz hazırlamak için kullanıyorum. Sonradan bmp olarak alıp resim basacam.

Visual tft nin bazı özellikleri işimi kolaylaştırıyor. yoksa paint le de yaparım