avatar_Mucit23

I2C Eeprom kullanarak 128X64 GLCD'ye Resim Basma

Başlatan Mucit23, 21 Kasım 2011, 20:49:40

Mucit23

Merhaba Arkadaşlar.

   Bu aralar Uğraştığım  I2C eepromlarlar Resim Basma uygulamamı toparlayıp sizlere sunmak istiyorum.
Aslında I2C eepromlar(24C16,24C32,24C64,24C128) bu işte biraz yavaş kalıyorlar. Gerçekte görüntünün tamamının ekrana basılması tahminimce 300-400 ms Sürüyor. Resim Basılmasını göz görebiliyor.(Yani Birden Ekranda Belirmiyor).

   Kullandığım İşlemci 18F452, 20Mhz de çalıştırıyorum. İşlemci Frekansını Yükseltmem bi sonuç Vermedi. 32 Ve 40 Mhz de denedim böyle olunca eepromdan okunan Resim Dataları bozulmaya başlıyor. Kısacası Sapıtıyor :D

   Eğer PC yazılım dillerinden birini bilseydim Resimleri Bin dosyası olarak kaydedip Direk Pickit2 İle eeproma yükleyebilirdim. Fakat Böyle bir imkanım  olmadığı İçin FxDev 'in de Tavsiyesi ile Bu işi De Pice yaptırdım. :D

   Toplamda 28 Tane Resim gösterdim GLCD de Resimleri 3 adet 24C64 ve 1 adette 24C32 ye yazdım. Eeprom Sayısı arttırılarak veya Daha yüksek Hafızalı eepromlar kullanılarak Dahada Fazla resim gösterilebilir. Fakat Eepromları Resim datalarıyla doldurmak için Resimleri 18F452 nin program hafızasına yüklemek gerekiyor. 18F452 'nin içine 28 Tane Resim sığdırabildim. Zaten işlemcinin Hafızasının doluluk oranı %99,16 :D Ağzına kadar dolu..
Daha çok Resim istiyorsanız İlk Önce Eepromları programlamak için Daha yüksek Hafızalı Bir pic seçilebilir. Okumak için ise 16F877 bile yeter.

Ben ilk Başta 18F452 ye Eeproma yükleme yazılımını yükleyip, eepromları programlıyordum. Yükleme işlemi bitince 18452 ye okuma yazılımını yükleyip, eepromdan dataları okuyup GLCD ye postalıyordum :D
   Yükleme işlemi epeyce sürüyor. Kronometreyle ölçtüğümde yaklaşık 10dk da tüm resimleri yazmış oldu.

Devre şeması aşağıdaki gibidir

hosting images
Resime bakarsanız 3 adet 24C64ve 1 adette 24C32 kullanmışım. Eepromaların A0, A1, A2 Bacaklarını kullanarak Farklı farklı  adresledim. Bu sayede tekbir Hattan tüm eepromalara veri yükleyip okuyabildim. Yine Resimlere Bakarsanız Eepromlara ait Yazma ve okuma adreslerini görebilirsiniz.

Yazma işlemi bu şekilde

upload images
Buda yazma işleminin bitmiş hali

png image hosting
Bunları Gerçekte çekmek isterdim ama fotoğraf makinamın makro özelliği berbat. Yazılar iç içe giriyor.

Resimleri Düzenlemek İçin FastLCD Programını kullandım. Bu program ile resimleri düzenleyip Bitmap olarak kaydediyorum. Sonra Pixelv1.2 programı ile Bu resim dosyalarını .inc dosyası haline getiriyorum. Yazılımda ise bu .inc dosyalarını programa dahil edip yazma sırsı geldiğinde sırasıyla dataları okuyup eeproma yazıyorum.

Eepromları programlamak için hazırladığım yazılım;
Device 18F452

Config_Start
   OSC = HS ; HS osc
   OSCS = OFF ; Disabled
   PWRT = On ; Enabled
   BOR = OFF ; Disabled
   WDT = OFF ; Disabled
   STVR = OFF ; Disabled
   LVP = OFF ; Disabled
   Debug = OFF ; Disabled
Config_End

Xtal 20

TRISA=%00000000
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000

PORTA=0:PORTB=0
PORTC=0:PORTD=0
    PORTE=0

PORTB.5=1                          'GLCD RESET=1
All_Digital= TRUE                  'ADC PORTLARININ TAMAMI DİJİTAL GİRİŞ VEYA ÇIKIŞ
LCD_DTPort = PORTD                 'GLCD DATA PORTLARI PORTD'YE BAĞLI
LCD_RSPin = PORTB.0                'GLCD RS PİNİ PORTB.0 BAĞLI
LCD_ENPin = PORTB.2                'GLCD ENABLE PİNİ PORTB.2 BAĞLI
LCD_RWPin = PORTB.1                'GLCD RW PİNİ PORTB.1 BAĞLI
LCD_CS1Pin = PORTB.4               'GLCD CS1 PİNİ PORTB.4 BAĞLI
LCD_CS2Pin = PORTB.3               'GLCD CS2 PİNİ PORTB.3 BAĞLI
LCD_Type =  Samsung                'GLCD TİPİ GRAFİK KS0108 128*64B WİNSTAR
Declare Internal_Font = On
Declare Font_Addr = 0
Declare GLCD_STROBE_DELAY = 5
Declare Optimiser_Level 3
;GLCD_EXTERNAL_PRINT = PPRINT

    Declare SCL_Pin = PORTC.3
    Declare SDA_Pin = PORTC.4
    Declare Slow_Bus On
   
    Symbol WRITE_LED=PORTB.7

Dim ADDR     As Word
Dim ADRS     As Word
Dim YPOS     As Byte
Dim XPOS     As Byte
Dim CHAR     As Byte
Dim KONT     As Byte
Dim RESIM      As Byte
Cls
Print At 1,1,"LUTFEN BEKLEYiNiZ"
Print At 2,1,"KAYDEDiliYOR..."
DelayMS 100
BASLA:WRITE_LED=1
KONT=$A0:RESIM=1
For ADDR = 0 To 1023
  CHAR = CRead RESIM1+ADDR
  ADRS=ADDR:GoSub I2C_YAZ
Next
RESIM=2
For ADDR=0 To 1023
  CHAR = CRead RESIM2+ADDR
  ADRS=1024+ADDR:GoSub I2C_YAZ
Next
RESIM=3
For ADDR = 0 To 1023
  CHAR = CRead RESIM3+ADDR
  ADRS=2048+ADDR:GoSub I2C_YAZ
Next
RESIM=4
For ADDR = 0 To 1023
  CHAR = CRead RESIM4+ADDR
  ADRS=3072+ADDR:GoSub I2C_YAZ
Next
RESIM=5
For ADDR = 0 To 1023
  CHAR = CRead RESIM5+ADDR
  ADRS=4096+ADDR:GoSub I2C_YAZ
Next
RESIM=6
For ADDR = 0 To 1023
  CHAR = CRead RESIM6+ADDR
  ADRS=5120+ADDR:GoSub I2C_YAZ
Next
RESIM=7
For ADDR = 0 To 1023
  CHAR = CRead RESIM7+ADDR
  ADRS=6144+ADDR:GoSub I2C_YAZ
Next
RESIM=8
For ADDR = 0 To 1023
  CHAR = CRead RESIM8+ADDR
  ADRS=7168+ADDR:GoSub I2C_YAZ
Next
KONT=$A2:RESIM=9
For ADDR = 0 To 1023
  CHAR = CRead RESIM9+ADDR
  ADRS=0+ADDR:GoSub I2C_YAZ
Next
RESIM=10
For ADDR = 0 To 1023
  CHAR = CRead RESIM10+ADDR
  ADRS=1024+ADDR:GoSub I2C_YAZ
Next
RESIM=11
For ADDR = 0 To 1023
  CHAR = CRead RESIM11+ADDR
  ADRS=2048+ADDR:GoSub I2C_YAZ
Next
RESIM=12
For ADDR = 0 To 1023
  CHAR = CRead RESIM12+ADDR
  ADRS=3072+ADDR:GoSub I2C_YAZ
Next
RESIM=13
For ADDR = 0 To 1023
  CHAR = CRead RESIM13+ADDR
  ADRS=4096+ADDR:GoSub I2C_YAZ
Next
RESIM=14
For ADDR = 0 To 1023
  CHAR = CRead RESIM14+ADDR
  ADRS=5120+ADDR:GoSub I2C_YAZ
Next
RESIM=15
For ADDR = 0 To 1023
  CHAR = CRead RESIM15+ADDR
  ADRS=6144+ADDR:GoSub I2C_YAZ
Next
RESIM=16
For ADDR = 0 To 1023
  CHAR = CRead RESIM16+ADDR
  ADRS=7168+ADDR:GoSub I2C_YAZ
Next
KONT=$A4:RESIM=17
For ADDR = 0 To 1023
  CHAR = CRead RESIM17+ADDR
  ADRS=0+ADDR:GoSub I2C_YAZ
Next
RESIM=18
For ADDR = 0 To 1023
  CHAR = CRead RESIM18+ADDR
  ADRS=1024+ADDR:GoSub I2C_YAZ
Next
RESIM=19
For ADDR = 0 To 1023
  CHAR = CRead RESIM19+ADDR
  ADRS=2048+ADDR:GoSub I2C_YAZ
Next
RESIM=20
For ADDR = 0 To 1023
  CHAR = CRead RESIM20+ADDR
  ADRS=3072+ADDR:GoSub I2C_YAZ
Next
RESIM=21
For ADDR = 0 To 1023
  CHAR = CRead RESIM21+ADDR
  ADRS=4096+ADDR:GoSub I2C_YAZ
Next
RESIM=22
For ADDR = 0 To 1023
  CHAR = CRead RESIM22+ADDR
  ADRS=5120+ADDR:GoSub I2C_YAZ
Next
RESIM=23
For ADDR = 0 To 1023
  CHAR = CRead RESIM23+ADDR
  ADRS=6144+ADDR:GoSub I2C_YAZ
Next
RESIM=24
For ADDR = 0 To 1023
  CHAR = CRead RESIM24+ADDR
  ADRS=7168+ADDR:GoSub I2C_YAZ
Next
KONT=$A6:RESIM=25
For ADDR = 0 To 1023
  CHAR = CRead RESIM25+ADDR
  ADRS=0+ADDR:GoSub I2C_YAZ
Next
RESIM=26
For ADDR = 0 To 1023
  CHAR = CRead RESIM26+ADDR
  ADRS=1024+ADDR:GoSub I2C_YAZ
Next
RESIM=27
For ADDR = 0 To 1023
  CHAR = CRead RESIM27+ADDR
  ADRS=2048+ADDR:GoSub I2C_YAZ
Next
RESIM=28
For ADDR = 0 To 1023
  CHAR = CRead RESIM28+ADDR
  ADRS=3072+ADDR:GoSub I2C_YAZ
Next
Cls
Print At 3,4,"YAZMA iSLEMi"
Print At 4,3,"TAMAMLANMISTIR.."
WRITE_LED=0
Stop

I2C_YAZ:
Print At 3,1,"DATA $",Hex2 CHAR
Print At 4,1,"ADRES = ",Dec4 ADRS
Print At 5,1,Dec RESIM,". RESIM YAZILIYOR"
Print At 6,1,"DEVICE ADRES = $",Hex2 KONT
BusOut KONT,ADRS,[CHAR]:DelayMS 10
Return

Include "RESIM1.inc"
Include "RESIM2.inc"
Include "RESIM3.inc"
Include "RESIM4.inc"
Include "RESIM5.inc"
Include "RESIM6.inc"
Include "RESIM7.inc"
Include "RESIM8.inc"
Include "RESIM9.inc"
Include "RESIM10.inc"
Include "RESIM11.inc"
Include "RESIM12.inc"
Include "RESIM13.inc"
Include "RESIM14.inc"
Include "RESIM15.inc"
Include "RESIM16.inc"
Include "RESIM17.inc"
Include "RESIM18.inc"
Include "RESIM19.inc"
Include "RESIM20.inc"
Include "RESIM21.inc"
Include "RESIM22.inc"
Include "RESIM23.inc"
Include "RESIM24.inc"
Include "RESIM25.inc"
Include "RESIM26.inc"
Include "RESIM27.inc"
Include "RESIM28.inc"
Include "FONT.inc"
End


Eepromaları okuma işlemi ise benzer bir şekilde oluyor. Her bir eeprom için her bir resmin bir başlangıç adresi vardır. Bir resim 1023 byten tan oluştuğu için okumalar Başlangıc adresi + resim data adresi şeklinde oluyor.

Eeprom okuma programı ise budur.
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : FERHAT YOL                                        *
'*  Notice  : Copyright (c) 2011 KULUÇKA KONTROL CİHAZI         *
'*          : All Rights Reserved                               *
'*  Date    : 20.11.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   : 4 adet eeprom kullanılmıştır.(3x26C64,1x24C32)    *
'*          : Toplamda 28adet resim ekranda gösteriliyor. Eeprom*
'           : Sayısı arttırılarak Resim sayısı arttırılabilir.  *
'           : Resimler 4 farklı efektle ekranda gösterilir      *
'****************************************************************
Device 18F452

Config_Start
   OSC = HS ; HS osc
   OSCS = OFF ; Disabled
   PWRT = On ; Enabled
   BOR = OFF ; Disabled
   WDT = OFF ; Disabled
   STVR = OFF ; Disabled
   LVP = OFF ; Disabled
   Debug = OFF ; Disabled
Config_End

Xtal 20

TRISA=%00000000
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000

PORTA=0:PORTB=0
PORTC=0:PORTD=0
    PORTE=0

PORTB.5=1                          'GLCD RESET=1
All_Digital= TRUE                  'ADC PORTLARININ TAMAMI DİJİTAL GİRİŞ VEYA ÇIKIŞ
LCD_DTPort = PORTD                 'GLCD DATA PORTLARI PORTD'YE BAĞLI
LCD_RSPin = PORTB.0                'GLCD RS PİNİ PORTB.0 BAĞLI
LCD_ENPin = PORTB.2                'GLCD ENABLE PİNİ PORTB.2 BAĞLI
LCD_RWPin = PORTB.1                'GLCD RW PİNİ PORTB.1 BAĞLI
LCD_CS1Pin = PORTB.4               'GLCD CS1 PİNİ PORTB.4 BAĞLI
LCD_CS2Pin = PORTB.3               'GLCD CS2 PİNİ PORTB.3 BAĞLI
LCD_Type =  Samsung                'GLCD TİPİ GRAFİK KS0108 128*64B WİNSTAR
Declare Internal_Font = On
Declare Font_Addr = 0
Declare GLCD_STROBE_DELAY = 5                                                                     
;GLCD_EXTERNAL_PRINT = PPRINT

    Declare SCL_Pin = PORTC.3
    Declare SDA_Pin = PORTC.4
    Declare Slow_Bus On
    Declare Optimiser_Level 2 
    Symbol READ_LED=PORTB.6

Dim ADDR     As Word
Dim ADRS     As Word
Dim YPOS     As Byte
Dim XPOS     As Byte
Dim CHAR     As Byte
Dim KONT     As Byte
Dim X        As Byte

DelayMS 200
Cls
READ_LED=1   ;Okuma yapılıyor.
BASLA:

KONT=$A1     ;1. Eeprom seçildi(24C64)
  For X=0 To 7
    Select Case X
       Case 0
         ADRS=0:GoSub YATAY_D       ;1.Resmin Başlangıc adresi $0000h
       Case 1
         ADRS=1024:GoSub YATAY_T    ;2.Resmin Başlangıc adresi $0400h
       Case 2
         ADRS=2048:GoSub DIKEY_T    ;3.Resmin Başlangıc adresi $0800h
       Case 3
         ADRS=3072:GoSub DIKEY_D    ;4.Resmin Başlangıc adresi $0C00h
       Case 4
         ADRS=4096:GoSub YATAY_T    ;5.Resmin Başlangıc adresi $1000h
       Case 5
         ADRS=5120:GoSub YATAY_D    ;6.Resmin Başlangıc adresi $1400h
       Case 6
         ADRS=6144:GoSub DIKEY_D    ;7.Resmin Başlangıc adresi $1800h
       Case 7
         ADRS=7168:GoSub DIKEY_T    ;8.Resmin Başlangıc adresi $1C00h
    EndSelect
  DelayMS 1800    ;Resım arası bekleme süresi
  Next
KONT=$A3          ;ikinci eprom seçildi(24C64)
  For X=0 To 7
    Select Case X
       Case 0
         ADRS=0:GoSub DIKEY_D        ;1.Resmin Başlangıc adresi $0000h
       Case 1
         ADRS=1024:GoSub YATAY_T     ;2.Resmin Başlangıc adresi $0400h
       Case 2
         ADRS=2048:GoSub DIKEY_T     ;3.Resmin Başlangıc adresi $0800h
       Case 3
         ADRS=3072:GoSub YATAY_D     ;4.Resmin Başlangıc adresi $0C00h
       Case 4
         ADRS=4096:GoSub YATAY_T     ;5.Resmin Başlangıc adresi $1000h
       Case 5
         ADRS=5120:GoSub DIKEY_D     ;6.Resmin Başlangıc adresi $1400h
       Case 6
         ADRS=6144:GoSub YATAY_D     ;7.Resmin Başlangıc adresi $1800h
       Case 7
         ADRS=7168:GoSub DIKEY_T     ;8.Resmin Başlangıc adresi $1C00h
    EndSelect
  DelayMS 1800    ;Resım arası bekleme süresi
  Next
KONT=$A5          ;3. Eeprom seçildi(24C64)
  For X=0 To 7
    Select Case X
       Case 0
         ADRS=0:GoSub DIKEY_D        ;1.Resmin Başlangıc adresi $0000h
       Case 1
         ADRS=1024:GoSub YATAY_D     ;2.Resmin Başlangıc adresi $0400h
       Case 2
         ADRS=2048:GoSub DIKEY_D     ;3.Resmin Başlangıc adresi $0800h
       Case 3
         ADRS=3072:GoSub YATAY_T     ;4.Resmin Başlangıc adresi $0C00h
       Case 4
         ADRS=4096:GoSub DIKEY_D     ;5.Resmin Başlangıc adresi $1000h
       Case 5
         ADRS=5120:GoSub DIKEY_T     ;6.Resmin Başlangıc adresi $1400h
       Case 6
         ADRS=6144:GoSub YATAY_D     ;7.Resmin Başlangıc adresi $1800h
       Case 7
         ADRS=7168:GoSub DIKEY_T     ;8.Resmin Başlangıc adresi $1C00h
    EndSelect
  DelayMS 1800    ;Resım arası bekleme süresi
  Next
KONT=$A7          ;4.Eeprom seçildi(24C32)
  For X=0 To 3
    Select Case X
       Case 0
         ADRS=0:GoSub YATAY_T        ;1.Resmin Başlangıc adresi $0000h
       Case 1
         ADRS=1024:GoSub YATAY_D     ;2.Resmin Başlangıc adresi $0400h
       Case 2
         ADRS=2048:GoSub DIKEY_T     ;3.Resmin Başlangıc adresi $0800h
       Case 3
         ADRS=3072:GoSub YATAY_T     ;4.Resmin Başlangıc adresi $0C00h
    EndSelect
  DelayMS 1800    ;Resım arası bekleme süresi
  Next

GoTo BASLA

YATAY_D: ; Yukarıdan aşağıya doğru döşe
       For YPOS = 0 To 7
         For XPOS = 0 To 127
             ADDR = (Ypos*128)+XPOS
             ADDR = ADRS + ADDR
             GoSub I2C_OKU
             LCDWrite YPOS,XPOS,[CHAR]
         Next
       Next
Return

YATAY_T: ; Aşağıdan yukarıya doğru döşe
       For YPOS = 7 To 0 Step - 1
         For XPOS = 0 To 127
             ADDR = (Ypos*128)+XPOS
             ADDR = ADRS + ADDR
             GoSub I2C_OKU
             LCDWrite YPOS,XPOS,[CHAR]
         Next
       Next
Return

DIKEY_D:  ; Soldan Sağa doğru döşe
       For XPOS = 0 To 127
         For YPOS = 0 To 7
           ADDR = (Ypos*128)+XPOS
           ADDR = ADRS + ADDR
           GoSub I2C_OKU
           LCDWrite YPOS,XPOS,[CHAR]
         Next
       Next
Return

DIKEY_T: ;Sağdan sola doğru Döşe
       For XPOS = 127 To 0 Step - 1
         For YPOS = 0 To 7
           ADDR = (Ypos*128)+XPOS
           ADDR = ADRS + ADDR
           GoSub I2C_OKU
           LCDWrite YPOS,XPOS,[CHAR]
         Next
       Next
Return

I2C_OKU:
   CHAR = BusIn KONT,ADDR  ;Eeprom oku
Return

End



Aslında menü uygulamaları için eeprom un yavaş çalışması sorun olabilir ama ben burada bu sorundan faydalandım biraz. Resimleri birkaç efektlerle basıyorum. (Sağdan sola,Soldan sağa, Yukarıdan aşağı gibi). Resim geçişleri bu şekilde oluyor.

Buradan videosunu izleyebilirsiniz.

http://www.youtube.com/watch?v=aHJk2zQfaeY&feature=feedu

Video pekde iyi değil malesef. Artık idare edin :D

Devreyi denediği kit ise Expkits in EX8B2 Deney setidir. Bu deney seti üzerinde deniyorum.
Seri birkaç tane eeprom olduğu için eeprom devresini board üzerine kurup deney seti ile header kablosu üzerinden bağlantıyı yaptım.

  Artık Bu tip eepromlarla işim bitti Daha yüksek hızlı eepromlar alıp birkaç deneme daha yapacağım :)

Dosyaları buradan indirebilirsiniz.

I2C Resim basma
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

toys-23

Tebrikler güzel çalışma bizim içinde bir örnek oldu..Her ne kadar proton bilmesekte :)

F®T

Mucit23 yine çok güzel bir çalışma yapmışın eline sağlık.tebrikler.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Mucit23

Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ali

paylaşımın için teşekkürler mucit.yine güzel bir çalışma yapmışsın.eline sağlık.çalışmalarının devamını dilerim..

Mucit23

Teşekkür ederim.

Şimdi birde animasyon çalışması yaptım.Fakat bu işte hız ön planda olduğu için şimdilik eepromları bir kenera bıraktım.
Pic18F452 'yi 40Mhz de çalıştırıyorum. Toplamda 19 adet gif resmi ard arda glcdye basılıyor.

http://www.youtube.com/watch?v=qp0h_ZSVMRs&feature=feedu
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

3mZ

mucit 23
320*240 glcd üzerinde çok kapsamlı programlar yazmam gerekli protonu önceden kullanıyordum gerekirse bunun için bilgilerimi tazelerim benim için çok önemli bana animasyon felan okadar  önemli değil menü oluşturmam gerek bazı şeyler tanımlamam gerek projelerim var sizden ricam nerden başlamam lazım bunu öğrenebilmem için nasıl pekiştirebilirim görüşleriniz nelerdir saygılar
3mZ

Mucit23

Protonda 240x128 GLCD desteği var fakat 320x240 malesef yok. Bu yüzden 1. olarak konksiyonlarını kendin hazırlamalı ve ne yapacağına bağlı olarak kendine bu işin altından kalkabilecek iyi bir işlemci seçmelisin. Menüleri sende resimler kullanrak tasarlarsın büyük ihtimal. Ama şuna dikkat etmen gereken bir nokta var. 128x64 bir monochrome bir resim 1Kb tutmakta. 320x240 bi lcd bunu 3-4 katı tutabilir Bu yüzden resimleri kesinlikle eeproma gömmelisin. Ben GLCD resim basmak için 3-4 çeşit hızlı eepromlar sipariş ettim. Onlar gelince denemelerime devam edeceğim.
İlk Önce Kendi fonksiyonlarını yazmayla başla işe. Aç SED1335'in dataseedini çip nasıl çalışıyor onu öğren. Winstarın 320x240 glcd leri SED1335 çipsetini kullanıyor. Yanlız dolarında takviyesiyle birlikte son iki ayda lcd dahada pahalanmış.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Powered by EzPortal