1,5" 132*132 TFT LCD ile Projeler

Başlatan aYe, 08 Şubat 2006, 01:46:09

mp3dragon

Evet sonunda çalıştırdım.
proteus'ta similasyon yapınca alakasız portlarda alakasız pinler konum değiştirip duruyordu. Ekranı doldurma haricindeki fonksiyonları iptal edince sorun düzeldi.Göstericilerle ilgili bir problem olabilir. Kodun çalıştırabildiğim halini aşağıda verdim.
http://www.hemenpaylas.com/download/252134/LCD_DENEME.zip.html
Derleyici: Keil 8051 uVision2
mpu:AT89C51ED2
Xtal:22,184 mhz

@tatlısukurnazı hocam,

Dediğin gibi 5 volt girişlerde LCD sorun çıkarmıyor. :)
Yavaşlığa gelince evet bende ekranın dolmasını bekliyorum ama 1.8 mips de, 10 kat hızlı bir mpu da sadece kırpışma gibi görünmesi lazım gibi geliyor. Ya 8051 çekirdeği avantajı var yada Keil derleyici optimizasyonu iyi çalışıyor.(X2 modda çalıştırınca yani 3.66 mipste yaklaşık 1 - 1,5 saniye sürüyor) Tabi video oynatılmaz ama menü oluşturmak için bence yeterli en azından 10 mips pic için.

Kodun veri gönderme kısımlarını asm de yazıp hızlandırılabilinirde belki(yavaş mpu lar için)
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

aYe

Selam mp3dragon,

Hocam LCD'yi çalıştırmanıza çok sevindim, 1.8mips'de ki hız sizi gerçekten tatmin etti mi?

Ben 16 mips M16C ile ekranda kağnı gördüm :(

Bu lcd mi yavaş ben mi hata yaptım kafam karıştı şimdi... :roll:  :roll:  :roll:

İyi çalışmalar...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

mp3dragon

@tatlısukurnazı,

Evet artık resimde attım içine (tabii 256 renkte) ;)
Resim olunca tablo okuduğu için biraz daha yavaşlıyor.
Kodun veri gönderme kısmında biraz düzenleme yaptım. Önceki mesajımda belirttiğim gibi kod gönderim kısmını asm de maksimum hız için yazmaya çalışacağım. (döngüleri kaldırıp alt alta 9 adet gönderim bloğu yapmayı düşünüyorum, nasıl olsa performans önemli, hafıza değil)
Tahminim 10 mips ve üzerinde bayağı iyi olur.

Nette LCD seri iletişimi için 6,5 mhz diyor ama 8 mhz de sorunsuz çalıştırabilmişler.
Buna göre;

130*130*9 =152.100 bit/sn
1 bit gönderimi 10 komut saykılı olsa

10 mips/10= 1 mips

1 mips/152.100 bit/sn = 6.5 frame/sn

yani saniyede 6.5 kez ekran doldurulabilir. hiç fena değil
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

aYe

@mp3dragon

Desene bizimkisi ekran değil kova  :lol:  :lol:  :lol:

Bir frame 5sn de anca doluyor :D

Demekki ben bir yerde hata yaptım.

Boş bir vakitte tekrar el atmak lazim.

İyi çalışmalar...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

ahmetu

Alıntı yapılan: "ahmetu"
PCF8833 datasheet'inde sayfa 76/Figür 49 fcy~6.2Mhz, S1D15G10 datasheet'inde sayfa 45/Figür 11.3 Cycle time=8Mhz

Epson tamamda Philips 8 Mhz'de zor çalışır. Birde ekrana gönderilecek verinin hazırlanması için gereken süre varki bu da ayrı konu. Mesela benim uygulamada MCU 60 Mips falan olsa şahane iş çıkardı doğrusu.

mp3dragon

Ahmetu hocanın resimleri gibi değil ama olsun 256 renk derinliğinde anca bu kadar :lol:




            Click Me

Kodun normal 3.66 mips ile çalışması
Aşağıda hızı ile ilgili örnek video var (1.8 mb);

Kodun normal 3.66 mips ile çalışması
http://rapidshare.de/files/14907724/Mvi_3465.avi.html

Videoyu çektikten sonra hızlandırmak için veri gönderim bloğundaki tüm döngü, bit karşılaştırma, bit kaydırma işlemlerini kaldırdım. Komik oldu ama bayağı fark etti. Şu an videodakinden yaklaşık 2,5 kat daha hızlı :lol:  (full ekran boyama 0,4 sn, full resim 1 sn altı)

void glcdSendData(unsigned char fdata){

nok_cs = 0;
	P0 = fdata;
    nok_sda_out = 1;  
    nok_clk = 1;
    nok_clk = 0;
	 nok_sda_out = P0_7;
	//nok_sda_out = (fdata & 0x80) ? 1 : 0; 
 	nok_clk = 1;
	//fdata= fdata << 1;     
    nok_clk = 0;
	
	nok_sda_out = P0_6;
 	nok_clk = 1;
	//fdata= fdata << 1;     
    nok_clk = 0;

nok_sda_out = P0_5;
 	nok_clk = 1;
	//fdata= fdata << 1;     
    nok_clk = 0;

nok_sda_out = P0_4;
 	nok_clk = 1;
	//fdata= fdata << 1;     
    nok_clk = 0;

nok_sda_out = P0_3;
 	nok_clk = 1;
	//fdata= fdata << 1;     
    nok_clk = 0;

nok_sda_out = P0_2;
 	nok_clk = 1;
	//fdata= fdata << 1;     
    nok_clk = 0;

nok_sda_out = P0_1;
 	nok_clk = 1;
	//fdata= fdata << 1;     
    nok_clk = 0;


nok_sda_out = P0_0;
 	nok_clk = 1;
	//fdata= fdata << 1;     
    nok_clk = 0;
	
 nok_cs = 1;
}
[code]
Alıntı Yap
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

Ahmetu hocam haklısınız, eğer datayı MMC, SD veya EEprom gibi harici bir kaynaktan alıyorsanız birde bu süreler var. Ama Harici bir ram kullanıp data orada tutulabilir.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

aYe

Selam,

@mp3dragon
Hocam şuna benzer bir yapı da kullanabilirsiniz;

union{
        unsigned char f;
struct {
        unsigned  bit0 : 1; 
        unsigned  bit1 : 1;
        unsigned  bit2 : 1; 
        unsigned  bit3 : 1;     
        unsigned  bit4 : 1; 
        unsigned  bit5 : 1;
        unsigned  bit6 : 1; 
        unsigned  bit7 : 1;     
        }Bit;
}Data;
        Data.f=fdata;
        nok_clk = 1; 
        nok_sda_out=Data.Bit.bit7;
        nok_clk = 0;
        nok_clk = 1; 
        nok_sda_out=Data.Bit.bit6;
        nok_clk = 0;
        nok_clk = 1; 
        nok_sda_out=Data.Bit.bit5;
        nok_clk = 0;
        nok_clk = 1; 
        nok_sda_out=Data.Bit.bit4;
        nok_clk = 0;
        nok_clk = 1; 
        nok_sda_out=Data.Bit.bit3;
        nok_clk = 0;
        nok_clk = 1; 
        nok_sda_out=Data.Bit.bit2;
        nok_clk = 0;
        nok_clk = 1; 
        nok_sda_out=Data.Bit.bit1;
        nok_clk = 0;
        nok_clk = 1; 
        nok_sda_out=Data.Bit.bit0;
        nok_clk = 0;


Aklima geldiği kadarıyla yazdım yanlış yerleri olabilir.
Sonucun ASM karşılığına bakmak lazim, sizinkinden hızlıdır diyemem ama sonuçta bir alternatif.

İyi çalışmalar.
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

mp3dragon

@tatlısukurnazı,

Akşam bir an önce denemek için aceleye yazdım tabii senin söylediğin gibi olması lazım, Teşekkürler.


Önemli birşey daha, Ahmetu hocanın verdiği kodda 12 bit (4096 renk) için ayarlı. Bu sebeple 1 pixel yazmak için 2 kere data göndermek gerekiyor. (glcdSetOrientation();)

1. BYTE = 1111-1111
                 R      G
2. BYTE = xxxx - 1111
                            B


EPSON 256 renk için kullandığım init fonksiyonu;


void glcdDisplayInit(void)
{
   int i;
          for (i = 0; i < 2; i++){ // !!!nedense kontrast için tekrarlamalı
   nok_cs = 1;
   nok_res = 0;
   delay(100);
   nok_res = 1;
   delay(1000);// gecikmeyi ne kadar artırsamda tekrar etmeden olmuyor !!!
      
      glcdDisplaySend(LCD_CMD_DISCTL_EPS, 1);
      glcdDisplaySend(0x0C, 0);
      glcdDisplaySend(0x20, 0);
      glcdDisplaySend(0x11, 0);
      glcdDisplaySend(0x01, 0);
 glcdDisplaySend(LCD_CMD_COMSCN_EPS, 1);
      glcdDisplaySend(0x01, 0);
 glcdDisplaySend(LCD_CMD_BSTRON_EPS, 1);
      glcdDisplaySend(LCD_CMD_SLEEPOUT_EPS, 1);
     
  
   	  	delay(1000);   
     
      
      glcdContrast(DEFAULT_CONTRAST_EPS);
                                delay(3000);  
      glcdDisplaySend(LCD_CMD_PWRCTRL_EPS, 1);
      glcdDisplaySend(0x0F, 0);
      glcdDisplaySend(LCD_CMD_INVON_EPS, 1);
      glcdDisplaySend(LCD_CMD_DATCTL_EPS, 1);
      glcdDisplaySend(0x00, 0);   // Normal display
      glcdDisplaySend(0x00, 0);   // RGB arrangement <RGBRGB...RGB>
      glcdDisplaySend(0x01, 0);   // Select TYPE B for 16 gray scaling   <0x02 = TYPE A (4096 color)>

	  
	  glcdDisplaySend(LCD_CMD_RGBSET8_EPS,1);
	  glcdDisplaySend(0,0);
	  glcdDisplaySend(2,0);
	  glcdDisplaySend(4,0);
	  glcdDisplaySend(6,0);
	  glcdDisplaySend(8,0);
	  glcdDisplaySend(10,0);
	  glcdDisplaySend(12,0);
	  glcdDisplaySend(15,0);
	  
	  glcdDisplaySend(0,0);
	  glcdDisplaySend(2,0);
	  glcdDisplaySend(4,0);
	  glcdDisplaySend(6,0);
	  glcdDisplaySend(8,0);
	  glcdDisplaySend(10,0);
	  glcdDisplaySend(12,0);
	  glcdDisplaySend(15,0);

 	  glcdDisplaySend(0,0);
	  glcdDisplaySend(4,0);	 
	  glcdDisplaySend(9,0);
	  glcdDisplaySend(15,0);
	  glcdDisplaySend(LCD_CMD_NOP_EPS,1);	
	 
    }
}
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

Alıntı yapılan: "tatlisukurnazi"Hocam bu lcd'lerin soketleri kadıköyde gani gani

Hocam bu soketlerden bir ara 3 -5 tane alıp bana gönderme imkanın olur mu? burda bulamıyorum da
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

aYe

@mp3dragon

Merhaba hocam,

Verdiğim resimlerde gördüğün üzere bende 0,15'lik telleri lehimleyerek deneme yapmıştım.
Zira kadıköye pek sık gitmiyorum, gidemiyorum.
Ama ilk geçtiğimde ilgilenirim.

İyi çalışmalar.
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

mp3dragon

@tatlısukurnazı
@ahmetu

bu akşam iş çıkışı bir tamircide philips TFT buldum :lol:

bu gece olmaz ama hafta sonuna kadar denerim

philips'i bulduğum yerde soket de var ama tanesine 4 YTL fiyat çekince almadım.

hızda maksimuma ulaştım sanırım. Kullandığım işlemcide bundan ötesi zor. resim yüklerken Dison/disoff yapınca çok rahatsız etmiyor gibi. Televizyonda (uydu)bile kanal geçişleri daha hızlı değil.
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

aYe

Selam mp3dragon hocam,

Eğer bir makara almayacaksanız 4ytl fiyat çok uygun, fazla irdelememek lazim.

Philips'in farkı ne olacak hız mı renk kalitesi mi?

Renk benim pek umrumda değil ama hız iki katına çıkıyor felan derseniz, gözlerimin içi parlayabilir  :lol:

İyi çalışmalar.
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

mp3dragon

@tatlısukurnazı,

O zaman yarın gidip soketten bir iki tane alayım. Yedek bulunsun lehimlerken veya lcd'yi sökerken bozulma ihtimali yüksek. Tez zamanda hızlı bir mcu da  deneyeceğim sonucu size bildiririm. Elimde ARM de var ama daha deneme boardı yok. Ayarları filan derken gecikir. Şimdilik pic18f452 deneyeyim 3 kat hızlı en azından. Hatta onda asm bile yazıp limitlerde uçurabilirim.

Philips sadece renk derinliği için. 16 bit renk gönderdiğinizden epson'a göre 2 kat daha yavaş. 8 bit renkte aynı. Ancak ahmetu hocanın dediği gibi philips 6,5 mhz - epson 8 mhz.

Bu arada iki kat hız derken verdiğim veri gönderme bloğunda hızı yaklaşık 3 kat arttırmayı başardım. şu an kamera yanımda yok ama yarın akşam videosunu çeker gönderirim.

yardımlarınız için teşekkürler
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.

mp3dragon

nokia 6610 için font ve resim konvertörü

http://rapidshare.de/files/15028773/GCLCD.exe.html

dili İspanyolca ama öğrenmesi kolay.Bi öğrenmediğimiz İspanyolca kalmıştı zaten  :lol:
İyilik Yap, Denize At, Balık Bilmezse, Halik Bilir.