Proton GLCD Sorunu

Başlatan erdogan2734, 12 Haziran 2016, 22:11:40

erdogan2734

Merhaba Arkadaşlar
Proton ile GLCD çalışması yapmak istiyorum. Simülasyonda herşey onnumara çalışıyor ancak normalde devreyi kurduğumda sacma sapan kareler yazılar bı gozukuyor bı gozukmuyor vb seyler oluyor. Net bir görüntü alamadım. Yazılım aşağıda, bu arada winstar WG12864B kullanıyorum. Vo ucu potun orta ucunda Vee ucu potun bir ucunda diğer ucu ise ekside. Bağlantılar tamam hiç bir eksiklik yok dediğim gibi proteusda çalışan kod reel de çalışmıyor.
Yardımcı olursanız sevinirim.
İyi Ramazanlar.
;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these setting
 Config XT_OSC,WDT_OFF,PWRTE_ON,BODEN_ON,LVP_OFF,DEBUG_OFF,CP_ALL  
TRISD=0
TRISC=0
TRISB=0
PORTC=0
PORTD=0
PORTB=0

Device = 16F877A           'MCU 16F877A
Xtal = 4                     'KRİSTAL 4MHZ


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







BASLA:
Print At 0,0,"000000000000" 
DelayMS 1000                    
Print At 1,0,"111111111111"
DelayMS 200
Print At 2,0,"222222222222"
DelayMS 1000
Print At 3,0,"333333333333"
DelayMS 1000
Print At 4,0,"444444444444"
DelayMS 1000
Print At 5,0,"555555555555"
DelayMS 1000
Print At 6,0,"666666666666"
DelayMS 1000
Print At 7,0,"777777777777"
DelayMS 2000
Cls


GoTo BASLA

End
Include "font.inc"
Bildiğim tek şey henüz hiç bir şey bilmediğim...

serkan_esk

Include u basa alip denesen

GT-I9500 cihazımdan Tapatalk kullanılarak gönderildi


erdogan2734

Alıntı yapılan: serkan_esk - 12 Haziran 2016, 22:58:45
Include u basa alip denesen

GT-I9500 cihazımdan Tapatalk kullanılarak gönderildi



Mrb
Denedim olumsuz hocam. Hatta bazen ekrarnın bi yarısı gidiyor.
Bildiğim tek şey henüz hiç bir şey bilmediğim...

Z80

Deklarasyonlara bir de bunu ekleyip dene.

"DECLARE GLCD_CS_INVERT  =   ON"

bu satırları da deklerasyonlardan sonraya koy.
TRISD=0
TRISC=0
TRISB=0
PORTC=0
PORTD=0
PORTB=0

erdogan2734

Alıntı yapılan: pkelle - 12 Haziran 2016, 23:22:07
Deklarasyonlara bir de bunu ekleyip dene.

"DECLARE GLCD_CS_INVERT  =   ON"

bu satırları da deklerasyonlardan sonraya koy.
TRISD=0
TRISC=0
TRISB=0
PORTC=0
PORTD=0
PORTB=0

Mrb Hocam bunuda denedim yine olmadı.
Hatta cs2 pinini farklı bir porttan aldım yine olmadı.
cs1 kısmı yazıyor ancak ekranın ikinci yarısında saçma saçma şeyler çıkıyor.
Bildiğim tek şey henüz hiç bir şey bilmediğim...

Z80

Reset pinini 100 ms low'a çek sonra high yap, 100 ms bekle,
CLS ile ekrani temizle 200 ms bekle sonra yazma işlemlerini yap.

erdogan2734

;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these setting

 Config XT_OSC,WDT_Off,PWRTE_ON,BODEN_ON,LVP_OFF,DEBUG_OFF,CP_ALL  


Device = 16F877A           'MCU 16F877A
Xtal = 4                  'KRİSTAL 4MHZ


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


TRISD=0
TRISC=0
TRISB=0
PORTC=0
PORTD=0
PORTB=0
'GLCD_EXTERNAL_PRINT = PPRINT
Dim  Xpos    As Byte
Dim  Ypos    As Byte
Dim  Addr    As Word
Dim  Char    As Byte





Clear
PORTC.6=0
DelayMS 500
PORTC.6=1
Cls

BASLA:
Print At 0,0,"erdogan 11111" 
DelayMS 1000                    
Print At 1,0,"erdogan 22222"
DelayMS 1000
Print At 2,0,"erdogan 33333"
DelayMS 1000
Print At 3,0,"erdogan 44444"
DelayMS 1000
Print At 4,0,"erdogan 55555"
DelayMS 1000
Print At 5,0,"erdogan 66666"
DelayMS 1000
Print At 6,0,"erdogan 77777"
DelayMS 1000
Print At 7,0,"777777888888hhhh"
DelayMS 2000

Clear
PORTC.6=0
DelayMS 500
PORTC.6=1
Cls

GoTo BASLA
Include "font.inc"
End


bu sekılde yaptım yıne aynı.
baska bır sıkıntı olmalı.
Bildiğim tek şey henüz hiç bir şey bilmediğim...

yas

#7
Yüksek ihtimalle pin sıralaması tutmuyordur, lcd datasheet den tekrar kontrol et, hata bulur da düzeltirsen fakat çıkan görüntüde yazdırdıklarını karışık görüyorsan yukarıda belirttikleri gibi "glcd_cd_invert" i on yaparak denemelisin.

Düzeltme: ekranın ilk yarısının çalıştığını söyledin mesajı okumamışım, o zaman cs2 doğru yerinde ise başka pine taşıdığında da aynı sorun oluyorsa lcd de arıza olabilir.


yas

Bazı glcd modellerinde data portlarındaki empedansın yüksekliğinden ötürü buna benzer sorunlar olabiliyor. Portb nin pullup dirençlerini devre dışı bırakıp deneyebilirmisin? OPTION_REG registerini 7. biti yani başla: etiketinden sonra OPTION_REG.7=1 yada "Declare Portb_Pullups=off" şeklinde.

erdogan2734

#10
;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these setting

 Config XT_OSC,WDT_Off,PWRTE_ON,BODEN_ON,LVP_OFF,DEBUG_OFF,CP_ALL  


Device = 16F877A           'MCU 16F877A
Xtal = 4                  'KRİSTAL 4MHZ


All_Digital= TRUE         'ADC PORTLARININ TAMAMI DİJİTAL GİRİŞ VEYA ÇIKIŞ
Declare LCD_DTPort = PORTB      'GLCD DATA PORTLARI PORTB'YE BAĞLI
Declare LCD_ENPin =  PORTC.1        'GLCD ENABLE PİNİ PORTC.1 BAĞLI
Declare LCD_CS1Pin = PORTC.2       'GLCD CS1 PİNİ PORTC.2 BAĞLI
Declare LCD_CS2Pin = PORTC.3       'GLCD CS2 PİNİ PORTC.3 BAĞLI
Declare LCD_RSTPin=  PORTC.4   'GLCD RESET PİNİ PORTC.6 BAĞLI
Declare LCD_RWPin =  PORTC.5       'GLCD RW PİNİ PORTC.4 BAĞLI
Declare LCD_RSPin =  PORTC.6        'GLCD RS PİNİ PORTC.5 BAĞLI
Declare LCD_Type =  GRAPHIC      'GLCD TİPİ GRAFİK KS0108 128*64B WİNSTAR
Declare Internal_Font = On                 
Declare Font_Addr = 0
Declare GLCD_Strobe_Delay 50
Declare GLCD_Read_Delay 50
'DECLARE GLCD_CS_INVERT  =   ON
Declare PortB_Pullups=off


TRISD=0
TRISC=0
TRISB=0
PORTC=0
PORTD=0
PORTB=0
'GLCD_EXTERNAL_PRINT = PPRINT
Dim  Xpos    As Byte
Dim  Ypos    As Byte
Dim  Addr    As Word
Dim  Char    As Byte
Clear
PORTC.4=0
DelayMS 500
PORTC.4=1
Cls



GIRIS:
            For Ypos = 0 To 7
            For Xpos = 0 To 127
            Addr = (Ypos*128)+Xpos
            Char = CRead bmap2+Addr
            LCDWrite Ypos,Xpos,[Char]
            Next
            Next
            DelayMS 100
 
Clear
PORTC.4=0
DelayMS 500
PORTC.4=1
Cls

BASLA:
Print At 0,0,"erdogan hallac" 
DelayMS 1000                    
Print At 1,0,"erdogan hallac"
DelayMS 1000
Print At 2,0,"erdogan hallac"
DelayMS 1000
Print At 3,0,"erdogan hallac"
DelayMS 1000
Print At 4,0,"erdogan hallac"
DelayMS 1000
Print At 5,0,"erdogan hallac"
DelayMS 1000
Print At 6,0,"erdogan hallac"
DelayMS 1000
Print At 7,0,"777777888888hhhh"
DelayMS 2000

Clear
PORTC.4=0
DelayMS 500
PORTC.4=1
Cls

GoTo BASLA
Include "font.inc"
Include  "bmap2.inc"
End





Kodun son hali yukarıdaki gibidir.
Bu sekılde yaptıgımda yazı karısıklıgı ortadan kalktı.
Bazen net yazıyor bazen ekranın yarısı yazmıyor.
Resimleri ekledim.
Yinede bu şekilde sıkıntı var yardımcı olacak arkadaşlara şimdiden teşekkür ederim.
Bildiğim tek şey henüz hiç bir şey bilmediğim...

yas

Bence

PORTC.4=0
DelayMS 500
PORTC.4=1


kısmını kardır. Her defasında lcd yi resetlemene gerek yok

BASLA: etiketinden sonra option_reg.7=0 ekleyip dener misin?

erdogan2734

#12
Alıntı yapılan: yas - 13 Haziran 2016, 15:22:37
Bence

PORTC.4=0
DelayMS 500
PORTC.4=1


kısmını kardır. Her defasında lcd yi resetlemene gerek yok

BASLA: etiketinden sonra option_reg.7=0 ekleyip dener misin?

Hocam Merhaba
Reset olayını kaldırdım.
Diğer dedğiniz komutu ekledim.
İlk başlangıçta koydugum fotonun sağtarafı gayet düzgün iken sol tarafı kötü çıkıyor.
Onun dışında herşey düzeldi.
Bildiğim tek şey henüz hiç bir şey bilmediğim...

erdogan2734

;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these setting

 Config XT_OSC,WDT_Off,PWRTE_ON,BODEN_ON,LVP_OFF,DEBUG_OFF,CP_ALL  


Device = 16F877A           'MCU 16F877A
Xtal = 4                 'KRİSTAL 4MHZ


All_Digital= TRUE         'ADC PORTLARININ TAMAMI DİJİTAL GİRİŞ VEYA ÇIKIŞ
Declare LCD_DTPort = PORTB      'GLCD DATA PORTLARI PORTB'YE BAĞLI
Declare LCD_ENPin =  PORTC.7        'GLCD ENABLE PİNİ PORTC.1 BAĞLI
Declare LCD_CS1Pin = PORTC.2       'GLCD CS1 PİNİ PORTC.2 BAĞLI
Declare LCD_CS2Pin = PORTC.3       'GLCD CS2 PİNİ PORTC.3 BAĞLI
Declare LCD_RSTPin=  PORTC.4   'GLCD RESET PİNİ PORTC.6 BAĞLI
Declare LCD_RWPin =  PORTC.5       'GLCD RW PİNİ PORTC.4 BAĞLI
Declare LCD_RSPin =  PORTC.6        'GLCD RS PİNİ PORTC.5 BAĞLI
Declare LCD_Type =  GRAPHIC      'GLCD TİPİ GRAFİK KS0108 128*64B WİNSTAR
Declare Internal_Font = On                 
Declare Font_Addr = 0
Declare GLCD_Strobe_Delay 150
Declare GLCD_Read_Delay 150
Declare PortB_Pullups= 0
'Declare GLCD_CS_Invert = 0


TRISD=0
TRISC=0
TRISB=0
PORTC=0
PORTD=0
PORTB=0
'GLCD_EXTERNAL_PRINT = PPRINT
Dim  Xpos    As Byte
Dim  Ypos    As Byte
Dim  Addr    As Word
Dim  Char    As Byte
Clear
PORTC.4=0
DelayMS 500
PORTC.4=1
Cls

   start:

 
     For Ypos = 0 To 7
         For Xpos = 0 To 127
 
             Addr = (Ypos*128)+Xpos
             Char = CRead AAAA+Addr
             LCDWrite Ypos,Xpos,[Char]
         Next
     Next
 
     DelayMS 2000
 
    
 
Clear
PORTC.4=0
DelayMS 500
PORTC.4=1
Cls

BASLA:
Print At 0,0,"erdogan hallac" 
DelayMS 1000                  
Print At 1,0,"DENEME"
DelayMS 1000
Print At 2,0,"OOOO DENEDIK COK IYI"
DelayMS 100
Print At 3,0,"BEYNIM GITTI"
DelayMS 1000
Print At 4,0,"YAPMALIYIM"
DelayMS 1000
Print At 5,0,"GALATASARAY"
DelayMS 1000
Print At 6,0,"SAYGILARRRRR"
DelayMS 1000
Print At 7,0,"123456789101111213"
DelayMS 2000

Cls


GoTo BASLA
Include "font.inc"
Include  "AAAA.inc"
End


Programın son hali.
Ekranda resim bastığımda yada yazı yazdığımda sağ ve sol kısım aynı anda çalışmıyor.
Fotodaki gibi bir görüntü oluşuyor.

Ayrıca
GLCD_EXTERNAL_PRINT = PPRINT

bu kodu ben kullanamıyorum.
Derleme yapmıyor program bu konudada bilgi verirsen sevinirim.
Hayırlı iftarlar.
Bildiğim tek şey henüz hiç bir şey bilmediğim...

Z80

CS1 ve CS2 pinlerinin yerini değiştir. Yani CS1 pinine CS2, CS2 pinine CS1 i bağla...