3 buton ile GLCD de resim geçişleri yapmak istiyorum yani â b c butonlarının hangisine basarsam onun resmini gostersin ekranda.
128x64 kullanacağım.
Hangi pic i kullanmam lazım.
Hangi programı kullanarak resmin hex kodunu çıkarmalıyız.nasıl bir şema kullanmam lazım.şimdiden tesekkur ederim pic basic ile de yapabilirim.
Hazır kod istemiyorum yol gösterin yeterlidir bana
Ben birşeyler cizerim yanlisim olursa sizlerden yardım isterim yeniden.
mesaj birleştirme:: 07 Nisan 2016, 11:47:43
https://320volt.com/18f452-ile-glcd-resimli-menu-kronometre/ (https://320volt.com/18f452-ile-glcd-resimli-menu-kronometre/)
Suradaki program ile resimlerin hex dosyasını oluştururum.
3 etiketli bir program yazarak(pic basic için konuştum) her etikete farklı resmin hex kodlarını koyarim ve etiketin başına LCD nin silinmesi için kodu yazarım. İf porta.=1 then A şeklinde kodlar kullanarak etiketler arasi geçiş sağlarım. Ekranda resimler gorunmus olur.
Şimdi ilk defa glcd kullanacağım daha önce 2x16 LCD kullandım. Bu biraz farklı sanırım.
Özellikle pic basic ile bunu nasıl yaparım pic basic i biraz daha iyi biliyorum diğer dillere gore.
biraz araştırdım sanırım proton ile daha rahat olacak gibi. ama yinede ihtiyacım var. inclulde dosytası olusturarak yapmam gerekiyor sanırsam. ama 3 resim olusturacağım bunun için geçiş yapmam gerekiyor. bir butonda bir inclulde dosyasını diğer butonda ekranı silip diğer inclulde dosytasını acması mi gerekecek?
once tek bir resmi ekrana bastir sonrasi kolay hangi yzilim ile yaparsan yap hic sorun degil.
include dosyasina gelince gosterilecek grafik dosyasinin hex kodlari sayfada cok yer kapladigi icin ayrica bir dosyaya kaydedilip programa include edilir.yani include dosyasi kullanip kullanmamak onemli diil.
basic bilmiyorum ama mantigi anlatmak icin
basit olarak sunu yapabilirsin.
'resim_goster' adinda bir degisken tanimlasan.
İf porta.=1 then resim_goster = 1
İf porta.=2 then resim_goster = 2
İf porta.=3 then resim_goster = 3
İf resim_goster = 1 then 1.resimi yaz
İf resim_goster = 2 then 2.resimi yaz
İf resim_goster = 3 then 3.resimi yaz
gibi hangi pici kullanacaginiza gelince 128x64 lcdye tam ekran veri atacak isen 128 / 8 = 16. 16*8 = 1024 yani bir kerellik tam ekran icin 1024 byte lik bir alana ihtiyac var. 3 resim icin 3072 byte lik bir alana ihtiyacin var birde yazacagin programi ekle 3 resim icin en az 4k bir islemci lazim 16f877 yeter.
Hocam mantığı az çok anladım gibi. Ama o resim yaz kodları nasıl olacak orada takikdim şuan.
hocam kullandigin derleyicinin kutuphanesi yok mu yada bir arastirman gerek basic'i iyi bilmedigini bildigim icin kendin yaz diyemiyorum.malesef basic bende de yok.
Alıntı yapılan: dursuncemal - 08 Nisan 2016, 10:28:02
hocam kullandigin derleyicinin kutuphanesi yok mu yada bir arastirman gerek basic'i iyi bilmedigini bildigim icin kendin yaz diyemiyorum.malesef basic bende de yok.
Basic ile değilde sanırım proton ile yapacağım. Onunla bir kaç örnek gordum tek resimlik . ben bunu buton kontrolü ve geçiş ekleyecegim. Tavsiye edeceğiniz standart bir Glcd var mıdır bugün sipariş vereceğim de direnç netten özellikle pin bağlantıları farkı farklı olunca iş uzayıp gidiyor 😁
ne ile yazarsan yaz ekrana bir resim atmayi basarirsan gerisi kolay. t6963 islemcili olanini secersen cokca ornek bulabilirsin.glcdyi cok az kullandim sen tam olarak ne yapmak istiyorsun amac ogrenmek mi yoksa yapman gereken bir projen mi var.?
Alıntı yapılan: dursuncemal - 08 Nisan 2016, 13:11:18
ne ile yazarsan yaz ekrana bir resim atmayi basarirsan gerisi kolay. t6963 islemcili olanini secersen cokca ornek bulabilirsin.glcdyi cok az kullandim sen tam olarak ne yapmak istiyorsun amac ogrenmek mi yoksa yapman gereken bir projen mi var.?
Bir proje hocam.
3 tane trafik levhası olacak resim olarak.
A b c butonları ile değişmiş olacak.
128x64 şeklinde paint ile cizdim. GLCD ve pic slip deneyecegim. Daha önce dediğim gibi 2x16 LCD kullandım yazı animasyonları filan yaptım. Ama ilk defa resim yazdıracagim.
Ozaman bana lazım olan pic16f877 ve bir adet GLCD .
Dediğiniz modele bakıyorum hemen
sadece uc resim ise evet 876.877 olur.
Alıntı yapılan: dursuncemal - 08 Nisan 2016, 16:39:20
sadece uc resim ise evet 876.877 olur.
Sipariş verdim kargoda ikiside şuan. Modelini bilmiyor larmis 128x64 ve 877 verdim sipariş olarak. Pazartesi ne kadar isis te deneme yapayım
gelen kargodaki glcd de cs2 cs1 pinleri yerine NC ve PSB pinleri mevcut. isiste kodlarımı simüle ediyorum sıkınıt yok ama görüntü alamıyorum.
kodlarım şu şekilde. bağlantı olarak PSB pinini +5 yada 0 da deniyorum görüntü gelmiyor kontrsastta sıkıntı yok .
nasıl bir değişiklik ile kullanabilrim bu lcd yi acaba. sadece 12864b v.2 yazıyor arkasında başka hiçbir kod yok
Device = 16F877
Config HS_OSC,WDT_OFF,PWRTE_ON,BODEN_ON,LVP_OFF,DEBUG_OFF,CP_OFF
Xtal = 20
All_Digital= TRUE 'ADC PORTLARININ TAMAMI DİJİTAL GİRİŞ VEYA ÇIKIŞ
LCD_DTPort = PORTD 'GLCD DATA PORTLARI PORTB'YE BAĞLI
LCD_RSPin = PORTC.5 'GLCD RS PİNİ PORTC.5 BAĞLI
LCD_ENPin = PORTC.1 'GLCD ENABLE PİNİ PORTC.1 BAĞLI
LCD_RWPin = PORTC.4 'GLCD RW PİNİ PORTC.4 BAĞLI
LCD_CS1Pin = PORTC.2 'GLCD CS1 PİNİ PORTC.2 BAĞLI
LCD_CS2Pin = PORTC.3 'GLCD CS2 PİNİ PORTC.3 BAĞLI
LCD_Type Samsung
Internal_Font = On
Font_Addr = 0
GLCD_CS_Invert On
Cls
DelayMS 500
Dim Xpos As Byte
Dim Ypos As Byte
Dim Addr As Word
Dim char As Byte
If PORTA.0=1 Then arabalar1
If PORTA.1=1 Then dikkat2
If PORTA.2=1 Then kamyon
arabalar1:
Cls
DelayMS 100
arabalar2:
For Ypos = 0 To 7
For Xpos = 0 To 127
Addr = (Ypos*128)+Xpos
char = CRead arabalar+Addr
LCDWrite Ypos,Xpos,[char]
Next
Next
If PORTA.0=1 Then arabalar1
If PORTA.1=1 Then dikkat2
If PORTA.2=1 Then kamyon
DelayMS 100
GoTo arabalar2
dikkat2:
Cls
DelayMS 100
dikkat3:
For Ypos = 0 To 7
For Xpos = 0 To 127
Addr = (Ypos*128)+Xpos
char = CRead dikkat+Addr
LCDWrite Ypos,Xpos,[char]
Next
Next
If PORTA.0=1 Then arabalar1
If PORTA.1=1 Then dikkat2
If PORTA.2=1 Then kamyon
DelayMS 100
GoTo dikkat3
kamyon:
Cls
DelayMS 100
kamyon2:
For Ypos = 0 To 7
For Xpos = 0 To 127
Addr = (Ypos*128)+Xpos
char = CRead kamyonaraba+Addr
LCDWrite Ypos,Xpos,[char]
Next
Next
If PORTA.0=1 Then arabalar1
If PORTA.1=1 Then dikkat2
If PORTA.2=1 Then kamyon
DelayMS 100
GoTo kamyon2
Include "kamyonaraba.inc"
Include "arabalar.inc"
Include "dikkat.inc"
uzerindeki islemci ye baktimi hangisi diye?
üzerinde üretim tarihi ve 12864b v2.0 dan başka bilgi yok hocam. damla tip 3 tane işlemci var u1 u2 u3 yazıyor sadece.
entegreyi denedim calısıyor data cıkıslarına led bağladım yanıp ynaıp sönüyor cıkıs var yani. bağlantı sorunum var şuan 5 saattir uğraşıyorum:(
mesaj birleştirme:: 12 Nisan 2016, 01:26:38
(http://s18.postimg.cc/bjnhyu3ut/pinout.jpg) (http://postimg.cc/image/bjnhyu3ut/)
pinler aynen bu şekilde
hocam bir sekilde datasheet ini bulmalisin zira bazi urunlerde reset değil olabiliyor yani birinde + ise bazilarinda - olabilir clr uzerinde cizgi olabilir
bu arada suraya bir goz gezdirirmisin sanki senin islemcin bu gibi.
https://www.ccsinfo.com/forum/viewtopic.php?p=169706 (https://www.ccsinfo.com/forum/viewtopic.php?p=169706)
hocam sanırım dediğiniz gibi işlemci o olsa gerek.
şimdi okuduklarım ile birkaç şey öğrendim
normalde standart olanlarda cs1 cs2 pinleri lcd nin sağ sol tarafını seçmek için kullanılıyormuş
bendeki psb pini ise lcdnin paralel yada seri bağlantısına göre +5 yada eksiye çekiliyor anladığım kadarıyla.
şimdi benim aklımda 2 soru oluştu..
1. soru= lcdnin paralel yada seri bağlantısı nasıl yapılır kodda nasıl yazılır?
2. soru= başka bir lcd daha sipariş verdim cs1 cs2 pinleri olan, ben yukarıdaki verdiğim kod ile tam ekranın ortasında görüntü alamaz mıyım?
teşekkürler
cok uzun suredir kullandigim bir urun olmadigi icin vede islemciye kendim baglamadan ezberden bir sey soyleyip yonunu bozmak istemiyorum. paralel seri icin data sheet'e bir bakmak lazim sen benim gonderdigim link teki kodlari ve baglanti sekillerini inceledin mi.?
Hocam inceledim fakat farklı dille yazıldığı için daha doğrusu benim ccs.c diline daha da yabancı olduğum için fazla birşey anlamadım.
cs1 cs2 pinlerinin bulunduğu lcdl geldi bugün gerektiği gibi bağlantı yapınca gayet temiz bir görüntü elde ettim.
ufak tefek sorunlarım kaldı onuda halledemezsem yazarım buradan yeniden :)
hadi gozun aydin ama oburunude calistirmalisin.
Onu ardiuno ile kullanmayı düşünüyorum genelde onunla ilgili projeler gordum internette de ondan dolayı. Şimdilik bunu yaptım. Simdi aklımda resim sayısını çoğaltmak var. Suan 4resim ekli ama bunu 12 filan yapmak istiyorum yeterli gelir mi acaba 16f877 yeterli gelecek midir
derlemeyi yaptiktan sonra kalan yere bakarsan anlarsin 12 adet tam resim ise sadece resimler 1024 * 12 = 12288 byte yapar 877 yetmez.
Anladım hocam ozaman aynı bağlantı ile belleği daha fazla olan bir işlemci kullanırız.
Peki şunu nasıl yapabilirim.
Etiket içinde butona basınca başka etikete gidiyor ama ben etiketin sonuna koyuyorum bu if then komutunu. Sıra oraya gelmeden butona basınca buton işlev yapmıyor. Etiket içerisinde hangi sırada olursa olsun butona basınca yani porta.1=1 olunca başka bir etikete yönelmesini nasıl yaparım
hocam malesef basic bilmiyorum.fakat eger etiketin icine kocaman bir bekleme koyarsan tabiki o sure bitmeden program oradan cikmaz , istedigin zaman cikmaz.mutlaka o gecikmeyi yerine getirir buda sana uzun bir sure gibi gelir.
bunun icin mumkun oldugu kadar etiketlerin icine gecikme yazmamalisin.yapiyi ve isleyis tavrini bilemedigim icin senide yaniltmamak amaci ile sudurr diyemiyorum sadece tahmin ediyorum.yani inteerup kullanmayi ogren derim sana tus okumalarini yapacagin en mantikli yer interruptur.cunku sen programin neresinde olursan ol eger kullanirsan periyodik olarak program seni interrupta goturur.orada yapacagin tus okumalari veya daha baska zamanlamali isleri cok daha rahat edersin.
Şuan bilgisayar başında olmadığını için deneyemiyorum. Kodlarım şu şekilde
Device = 16F877
Config HS_OSC,WDT_OFF,PWRTE_ON,BODEN_ON,LVP_OFF,DEBUG_OFF,CP_OFF
Xtal = 20
All_Digital= TRUE 'ADC PORTLARININ TAMAMI DİJİTAL GİRİŞ VEYA ÇIKIŞ
LCD_DTPort = PORTD 'GLCD DATA PORTLARI PORTB'YE BAĞLI
LCD_RSPin = PORTC.5 'GLCD RS PİNİ PORTC.5 BAĞLI
LCD_ENPin = PORTC.1 'GLCD ENABLE PİNİ PORTC.1 BAĞLI
LCD_RWPin = PORTC.4 'GLCD RW PİNİ PORTC.4 BAĞLI
LCD_CS1Pin = PORTC.2 'GLCD CS1 PİNİ PORTC.2 BAĞLI
LCD_CS2Pin = PORTC.3 'GLCD CS2 PİNİ PORTC.3 BAĞLI
LCD_Type Samsung
Internal_Font = On
Font_Addr = 0
GLCD_CS_Invert On
Cls
DelayMS 500
Dim Xpos As Byte
Dim Ypos As Byte
Dim Addr As Word
Dim char As Byte
If PORTA.0=1 Then arabalar1
If PORTA.1=1 Then dikkat2
If PORTA.2=1 Then kamyon
arabalar1:
Cls
DelayMS 100
arabalar2:
For Ypos = 0 To 7
For Xpos = 0 To 127
Addr = (Ypos*128)+Xpos
char = CRead arabalar+Addr
LCDWrite Ypos,Xpos,[char]
Next
Next
If PORTA.0=1 Then arabalar1
If PORTA.1=1 Then dikkat2
If PORTA.2=1 Then kamyon
DelayMS 100
GoTo arabalar2
dikkat2:
Cls
DelayMS 100
dikkat3:
For Ypos = 0 To 7
For Xpos = 0 To 127
Addr = (Ypos*128)+Xpos
char = CRead dikkat+Addr
LCDWrite Ypos,Xpos,[char]
Next
Next
If PORTA.0=1 Then arabalar1
If PORTA.1=1 Then dikkat2
If PORTA.2=1 Then kamyon
DelayMS 100
GoTo dikkat3
kamyon:
Cls
DelayMS 100
kamyon2:
For Ypos = 0 To 7
For Xpos = 0 To 127
Addr = (Ypos*128)+Xpos
char = CRead kamyonaraba+Addr
LCDWrite Ypos,Xpos,[char]
Next
Next
If PORTA.0=1 Then arabalar1
If PORTA.1=1 Then dikkat2
If PORTA.2=1 Then kamyon
DelayMS 100
GoTo kamyon2
Include "kamyonaraba.inc"
Include "arabalar.inc"
Include "dikkat.inc"
Buradaki if then komutlarını for next içinde mi kullansam daha mı iyi olur acaba diye düşündüm. Akşam deneyecegim
Alıntı yapılan: dursuncemal - 13 Nisan 2016, 22:37:35
hocam malesef basic bilmiyorum.fakat eger etiketin icine kocaman bir bekleme koyarsan tabiki o sure bitmeden program oradan cikmaz , istedigin zaman cikmaz.mutlaka o gecikmeyi yerine getirir buda sana uzun bir sure gibi gelir.
bunun icin mumkun oldugu kadar etiketlerin icine gecikme yazmamalisin.yapiyi ve isleyis tavrini bilemedigim icin senide yaniltmamak amaci ile sudurr diyemiyorum sadece tahmin ediyorum.yani inteerup kullanmayi ogren derim sana tus okumalarini yapacagin en mantikli yer interruptur.cunku sen programin neresinde olursan ol eger kullanirsan periyodik olarak program seni interrupta goturur.orada yapacagin tus okumalari veya daha baska zamanlamali isleri cok daha rahat edersin.
Hocam peki bazen ekranın yarısı çıkmıyor resimlerim tam ortadan yarım çıkıyordu dedim sanırım cs1 cs2 pinleri breadboard da tam oturmuyor bundan mıdır çünkü biraz sağlam tutunca tam ekran çıkıyor.
Birde ilk açılışta son görüntünün pixelleri gorunuyor tam olmamakla beraber rastgele şekilde bunu önlemek için ne yapabilirim yani ilk açılışta data portlarini sıfıra cekmek ise yarar mı acaba. İlk açılışta CLS komutu ile ekranı silmesi gerekli ama yinede pixel kalıntıları oluyor yinede
Bu iki sorunun cevabı yine sizde saklıdır biliyorum :)
Bu arada tesekkur ederim ilginiz için
evet cs1 cs2 pinlleri zanedersem moduldeki 2 cipe ayit ekranin yarisi 1 i obur yarisi 2. cip ile suruluyor olabilir.data sheete bir bakmak lazim.
eger ekranda aktif piksel kaliyor ise kesin senin cls fonksiyonun calismiyorsur.sana amelece bir cozun ureteyim hemen beyaz bir zeminden bir tablo yap silmek istediginde ekrana onu yazdir.biraz kaba oldu ama bunu yapabilecegini biliyorum.zira ben basic bilmiyorum.:=)
Toplamda 10 resim kullanmayı dusunuyorum artık.
Bunun için 16f877 yerine 18f452 kullanirsam direk kodlardaki tanımlamayı ayarlayarak sorun olur mu acaba. Port pinleri aynı sonuçta .sadece kod içindeki tanımlamalar değişecek gerisi aynı kalacak. 32k hafıza bana hayli hayli yeterli gelecek 10 resim için . 877 nin 8k hafızası var yetmiyor