GLCD + pic18f4520 Güzel bir soru

Başlatan yolcu27, 25 Nisan 2016, 09:34:12

yolcu27

arkadaşlar şimdi ben 8 buton kontrolü ile resimler arası geçiş sağlayan bir devre ve kod tasarladım  bir ufak sorunum var birde olabilirse sorum var.

Sorunum:   GLCD açılışta yarım saniyeden daha az bir sürede olsa ekranda son kalan resimin pixel kalıntılarını gösteriyor. ben açılışta "Cls" komutu kullanmama rağman bu komuta gelene kadar sanırım bu görüntüyü veriyor. hatta bir arkadaşın tavsiyesi ile boş ekran yazdırıyorum artık ama yinede azda olsa ilk açıkışta boş ekran yerine son ekran görüntüsünün ölü pixellerini görmekteyim. bunu nasıl halledebilirm giriş kodları aşağıdadır.


Sorum:     ilk açıkışta 2 sn içinde 3 resim ile selamlama yaptırıyorum LCD ye. Amacım telvizyonlardaki gibi ekran kapanırken bir gülen yüz ve bye bye yazısı yazdırmak ve sonrasında GLCD nin ekran ışığının kesilmesi lazım. Bunu nasıl yapabilirm?  aklıma picin bir pininden anotu beslemek geliyor ve ona buton ile kapatma emri verince görüntü yazdırıp 2 sn sonra o pinden çıkan +5 i 0 a çekmek geliyor . yada şöyle olsa daha güzel olur devrenin enerjisi kesildiğinde kondansatörler sayesinde 2 3 sn ekranda görüntü oluşsa ve sonrasında kapansa.

sizin fikirleriniz çözüm önerileriniz nelerdir


Device = 18F4520
Config_Start
    OSC = xt ; xtOscillator
	FCMEN = off ; Failsafe Clock Monitor Disabled
	IESO = OFF ; Int/Ext Oscillator Switch Over Disabled 
	PWRT = On ; Power Up Timer Enabled
	BOREN = OFF ; Brownout Reset Disabled
	WDT = OFF ; Watchdog Timer Disabled
	MCLRE = On ; MCLR enabled
	LPT1OSC = OFF ; T1 Oscillator Disabled 
	CCP2MX = PORTC ; CCP2 Mux Muxed with RC1
	STVREN = On ; Stack Overflow Reset Enabled
	LVP = OFF ; Low Voltage ICSP Disabled 
	XINST = OFF ; XINST Disabled
	PBADEN = OFF; PORTB(4:0) as digital i/o
	Debug = OFF ; Background Debugger Disabled 
	CP0 = OFF ; Code Protection Block 0 Disabled 
	CP1 = OFF ; Code Protection Block 1 Disabled 
	CP2 = OFF ; Code Protection Block 2 Disabled 
	CP3 = OFF ; Code Protection Block 3 Disabled 
	CPB = OFF ; Boot Block Code Protection Disabled 
	CPD = OFF ; Data EEPROM Code Protection Disabled 
	WRT0 = OFF ; Write Protection Block 0 Disabled 
	WRT1 = OFF ; Write Protection Block 1Disabled 
	WRT2 = OFF ; Write Protection Block 2 Disabled 
	WRT3 = OFF ; Write Protection Block 3 Disabled 
	WRTB = OFF ; Boot Block Write Protection Disabled 
	WRTC = OFF ; Configuration Register Write Protection Disabled 
	WRTD = OFF ; Data EEPROM Write Protection Disabled 
	EBTR0 = OFF ; Table Read Protection Block 0 Disabled 
	EBTR1 = OFF ; Table Read Protection Block 1 Disabled 
	EBTR2 = OFF ; Table Read Protection Block 2 Disabled 
	EBTR3 = OFF ; Table Read Protection Block 3 Disabled 
	EBTRB = OFF ; Boot Block Table Read Protection Disabled
Config_End
Xtal = 4
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 = PORTB.4                'GLCD RS PİNİ PORTC.5 BAĞLI
LCD_ENPin = PORTB.2                'GLCD ENABLE PİNİ PORTC.1 BAĞLI
LCD_RWPin = PORTB.3                'GLCD RW PİNİ PORTC.4 BAĞLI
LCD_CS1Pin = PORTB.1    'GLCD CS1 PİNİ PORTC.2 BAĞLI
LCD_CS2Pin = PORTB.0    'GLCD CS2 PİNİ PORTC.3 BAĞLI

LCD_Type   GRAPHIC  
Internal_Font = On                 
Font_Addr = 0

  
 
Dim  Xpos    As Byte
Dim  Ypos    As Byte
Dim  Addr    As Word
Dim  char    As Byte

  bos1:
       For Ypos = 0 To 7
         For Xpos = 0 To 127
 
             Addr = (Ypos*128)+Xpos
             char = CRead bos+Addr
             LCDWrite Ypos,Xpos,[char]
         Next
     Next
         Cls
DelayMS 500	  
  
damla1:

     For Ypos = 0 To 7
         For Xpos = 0 To 127
 
             Addr = (Ypos*128)+Xpos
             char = CRead damla+Addr
             LCDWrite Ypos,Xpos,[char]
         Next
     Next
     DelayMS 1500



kodun giriş kısmı bu şekilde ilk etikette damla resmi 1500 ms görünüyor. daha sonra buton ile değişebilen resimlere geçiyoruz.

buradaki ilk açılıştaki kalıntı pixellerin gitmesi için ne yapabilirim?

Maxim

1- lcd nin reset ucu var, ilk açılışta o ucu resette tutabilirsiniz

2- icd nin backlight ışığını pic üzerinden kontrol edeceksiniz
google>"lcd backlight pwm" yazıp görsellere tıklayınız

yolcu27

#2
Alıntı yapılan: Maxim - 25 Nisan 2016, 10:49:31
1- lcd nin reset ucu var, ilk açılışta o ucu resette tutabilirsiniz

2- icd nin backlight ışığını pic üzerinden kontrol edeceksiniz
google>"lcd backlight pwm" yazıp görsellere tıklayınız

Hocam mclr pinini reset pini oluyor sanırım. Bu 4.7k ile +5v de bağlı.

Edit : farketmedim LCD nin demişsiniz . bu reset ucunu gnd yemi artiya  mi baglayayim

Sigorta ayarlarında mclre on yazmaktadır.

LCD arka ışığını direk ozaozan pinden aldığım bir sinyal ile NPN sureyim NPN ile de LCD nin katotunu sureyim. Kapat butonuna basınca LCD de önce bye bye yazısı sonrasında da katotun bağlı olduğu pin sıfır çıkış verecek şekilde ayarlayayim. Ama bu seferde sadcee LCD kapanmış olacak . yani devre hala işliyor olacak. Benim istediğim enerji kesilince mesela beslemedeki kondansatörler 1 2 saniye devreyi açık tutacak ama bu surede de ekrana bye bye yazısı gelecek. Bu sanki olmaz gibi geliyor.

Yada girişteki enerjinin kesilmesini anlayıp ona göre kod içinde bunu anlayarak ekrana yazı yazması gerek buda beni aşıyor sanki.

Maxim

birkaç grafik ekrana baktım hepsinde reset pini yokmuş
o zaman başka yollara başvurabilirsiniz sizdekinde de yoksa
mesela açılışta birkaç tane arka arkaya cls komutu
gene ilk açılışta biraz daha uzun bekleme
veya basit bir döngü ile tüm ekranı tarayarak silme komutu vs vs

yolcu27

Alıntı yapılan: Maxim - 26 Nisan 2016, 08:24:44
birkaç grafik ekrana baktım hepsinde reset pini yokmuş
o zaman başka yollara başvurabilirsiniz sizdekinde de yoksa
mesela açılışta birkaç tane arka arkaya cls komutu
gene ilk açılışta biraz daha uzun bekleme
veya basit bir döngü ile tüm ekranı tarayarak silme komutu vs vs

18f4520 yı kısa devre ettim bacaklarını 12v ile yanlışlıkla . programlar ken sorun yok programı alıyor. Ama enerji verdiğimde ısınıyor el yakacak kadar nerdeyse. Bir led yakayım dedim ondada çok kısık şekilde yaktı .yeni sipariş verdim o gelsin dediğiniz gibi yapar denerim birde öyle. İsiste  sıkıntı yok ekranı temiz açıyor  :) ;D

Maxim

yanlız glcd için 2 konu açmışsınız
diğer konudaki ayak bağlantıları grafik lcd değil
sizin lcd grafik lcd mi eminmisiniz?

yolcu27

Alıntı yapılan: Maxim - 27 Nisan 2016, 10:38:38
yanlız glcd için 2 konu açmışsınız
diğer konudaki ayak bağlantıları grafik lcd değil
sizin lcd grafik lcd mi eminmisiniz?

Oda glcd diye geçiyor hocam. Hatta ardiuno ile ilgili bir çok çalışma buldum ama pic için uyarlayamadim seri paralel bağlantı şekline gore kodlarda değişiklik bağlantılarda değişiklik gerektiriyor sanırım. bende yeni sipariş verdim cs1 cs2 bacakları olan . istediklerimi yaptım ama ufak tefek sorunlar var işte bu konuda bahsettiğim.

Özellikle şu açılışta çok az da olsa görünen kalıntı pixelleri halletmek lazım

Maxim

o lcd nin marka/model nedir?
yani karakter bağlantı ayakları olan ama grafik diye satılan?
hatta resmi falan varmı?

proton+ derleyicisinin kendinden tanıdığı 2 tip grafik lcd desteği vardır
birisi 128x64 pixel, chip seti KS0108 olan (cs1 ve cs2 pinli)
diğeride 240x64 veya 240x128 pixel olan, T6963 chip setli (wd,rd,e,rs gibi pinleri olan) 

yolcu27

Alıntı yapılan: Maxim - 27 Nisan 2016, 11:05:30
o lcd nin marka/model nedir?
yani karakter bağlantı ayakları olan ama grafik diye satılan?
hatta resmi falan varmı?

proton+ derleyicisinin kendinden tanıdığı 2 tip grafik lcd desteği vardır
birisi 128x64 pixel, chip seti KS0108 olan (cs1 ve cs2 pinli)
diğeride 240x64 veya 240x128 pixel olan, T6963 chip setli (wd,rd,e,rs gibi pinleri olan)
GND - VCC- VO- RS- RW- E- DB0-DB1-DB2-DB3-DB4-DB5-DB6-DB7-PSB-NC-RST-VOUT-ANOT -KATOT
Pin bağlantıları bu şekilde. Farklı olarak psb ve nc pinleri var.
Resmi şuan disaridayim atamiyorum

ipek

senin GLCD Arduino'cuların Proton desteği yok,ST7920 Driver chip set'li......

yolcu27

Alıntı yapılan: ipek - 27 Nisan 2016, 13:11:30
senin GLCD Arduino'cuların Proton desteği yok,ST7920 Driver chip set'li......

Ozaman ccs ile bir çalışma da kullanabilir miyim. Mesela termometre için

Maxim

evet protona uymaz o
uymaz derken, örnek kod yok, kimse uğraşmamış.

ama picbasic için birşey buldum
http://www.picbasic.co.uk/forum/showthread.php?t=19842

yolcu27

Alıntı yapılan: Maxim - 27 Nisan 2016, 14:17:56
evet protona uymaz o
uymaz derken, örnek kod yok, kimse uğraşmamış.

ama picbasic için birşey buldum
http://www.picbasic.co.uk/forum/showthread.php?t=19842

Bu kodları .c uzantılı şekilde driver olarak kaydedip driverlarin bulunduğu dizine atıp. Program başlangıcında bu dosyayı çağırıp kodlayayim ozaman pic basic de. Önce portlari ve pinleri ayarlarım sonra bu ayarlara gore şemayı cizerim. Bir boş zamanda ugrasayim barı. 20 TL ye aldık boşa gitmesin .elimde lm35 16f877 de var bir proje cikartiyim diyorum boş durmasinlar