PG 320x240 GLCD - Sed1335 - Uygulama [ ÇALIŞTI ]

Başlatan mustafa_cmbz, 04 Ekim 2012, 16:35:13

mustafa_cmbz







Lcd'nin fotoları bunlar...Sağolsun forumdan bir abimiz hediye etti..kendisine ayrıca çook teşekkür ederim...


şimdi arkadaşlar nette araştırdım proton 320x240 glcd için özel komutlar vs. yok.Bu yüzden oturup kendi kodumuzu kendimiz yazmamız lasım..

Forumdan ahmet hocam logan hocam "basic" ve  "C" dilinde bişiler paylaşmış...Bende bu paylaşılanları alıp protona ufak bir revize ile dönüştürdüm...(kodlar alıntıdır)

Bunun ile beraber deneme amaçlı minik 16f877 li bir pcb  tasarlayıp lcd'yi çalıştırana kadar bu kart ile çalışmalarıma devam edeceğim lcd'nin bağlantıları olsun kodları olsun vs. vs . vs. diğer herşeyi test edip denemek istiyorum...

Daha deneyemediğim PROTON'a çevirdiğim kod:

DEVICE = 16F877A
XTAL = 20
TRISE=0
TRISB=0
PORTB=0
ADCON1	= 7

SYMBOL PIN_DATA  =   PORTD          
SYMBOL PIN_WR    =   PORTC.2       
SYMBOL PIN_RD    =   PORTC.1         
SYMBOL PIN_CS    =   PORTB.0      
SYMBOL PIN_A0    =   PORTC.3 
SYMBOL PIN_RST   =   PORTB.1
        
SYMBOL PIN_LED   =   PORTB.3
      
      
        TRISD   = 0
        TRISB.0 = 0
        TRISB.1 = 0
        TRISB.2 = 0
        TRISB.4 = 0
        TRISB.5 = 0
        TRISB.3 = 0
        
conSet		        con	$40
conScroll	        con	$44
conCursorForm	    con	$5d
conCursorAddress	con	$46
conCursorRight	    con	$4c
conOverlay	        con	$5b
conWrite	        con	$42
conDisplayON	    con	$59
conDisplayOFF	    con	$58
conCharPerLine		con	$28 	' 40  karakter / satir

DIM varCommand	AS  BYTE
DIM varCursor   AS  BYTE
DIM varByte		AS	BYTE
DIM varLoop1	AS	BYTE
DIM varLoop2	AS	BYTE
DIM varAddress	AS	WORD

        PIN_RD  = 1
    	PIN_WR  = 1
        PIN_CS  = 0
        PIN_RST = 0
        DELAYMS   1
        PIN_RST = 1
        DELAYMS   100

        GOTO MAIN



' ------------------------------- ANA program --------------------------------

MAIN:

GOSUB InitDisplay

    PIN_LED = 1

  	varAddress = 0
   	varCursor  = conCursorRight
   	GOSUB SetAddress	

   	FOR varLoop1 = 0 TO 39
   	LOOKUPL varLoop1,["www.picproje.org @ahmet2004 320x240 Glcd"],varByte  ' L KONULDU
    GOSUB SendData
    NEXT varLoop1

   	varAddress = 29 * conCharPerLine
   	varCursor  = conCursorRight
   	GOSUB SetAddress	

   	FOR varLoop1 = 0 TO 39
   	LOOKUPL varLoop1,["************www.picproje.org************"],varByte    ' L KONULDU
    GOSUB SendData
    NEXT varLoop1
    
    
    
    DELAYMS  5000
    GOTO MAIN
    
    
    ' --------------------------- AltProgramlar --------------------------

SendData:
    PIN_A0	= 0
    PIN_DATA = varByte
    PIN_WR	= 0
'	@ nop
    PIN_WR	= 1
RETURN

SendCommand:
    PIN_A0	= 1
    PIN_DATA = varCommand
    PIN_WR	= 0
'	@ nop
    PIN_WR	= 1
RETURN

ClearGraphic:
    varCommand = conCursorAddress
    GOSUB SendCommand
    varByte = $00
    GOSUB SendData
    varByte = $10
    GOSUB SendData

    varCommand = conCursorRight
    GOSUB SendCommand

    varCommand = conWrite
    GOSUB SendCommand
    varByte = %00000000            ' 1 byte = 8 bits = 8 pixels wide
    FOR varLoop1 = 1 TO 240        ' 240 pixels high
    FOR varLoop2 = 1 TO 40      ' 40 bytes = 320 bits = 320 pixels wide
    GOSUB SendData
    NEXT varLoop2
    NEXT varLoop1
    RETURN

ClearText:
    varCommand = conCursorAddress
    GOSUB SendCommand
    varByte = $00
    GOSUB SendData
    varByte = $00
    GOSUB SendData

    varCommand = conCursorRight
    GOSUB SendCommand

    varCommand = conWrite
    GOSUB SendCommand
    varByte = " "
    FOR varLoop1 = 1 TO 30
    FOR varLoop2 = 1 TO 40
    GOSUB SendData
    NEXT varLoop2
    NEXT varLoop1
    RETURN

    InitDisplay:
    varCommand = conSet
    GOSUB SendCommand
    FOR varLoop1 = 0 TO 7
    LOOKUPL varLoop1,[$32,$87,$07,$27,$2B,$EF,$28,$00],varByte  ' L KONULDU
    GOSUB SendData
    NEXT varLoop1

    varCommand = conScroll
    GOSUB SendCommand
    FOR varLoop1 = 0 TO 5
    LOOKUPL varLoop1,[$00,$00,$EF,$00,$10,$EF],varByte   ' L KONULDU
    GOSUB SendData
    NEXT varLoop1

    varCommand = conOverlay
    GOSUB SendCommand
    varByte = %00000001
    GOSUB SendData

    varCommand =conDisplayOFF
    GOSUB SendCommand
    varByte = %00000000
    GOSUB SendData
    
    GOSUB ClearText
    GOSUB ClearGraphic

    varCommand = conDisplayON
    GOSUB SendCommand
    varByte = %00010100
    GOSUB SendData

    varCommand = conCursorAddress
    GOSUB SendCommand
    varByte = $0
    GOSUB SendData
    varByte = $0
    GOSUB SendData

    varCommand =conCursorForm
    GOSUB SendCommand
    varByte = $04
    GOSUB SendData
    varByte = $86
    GOSUB SendData
    RETURN

    SetAddress:
    varCommand = conCursorAddress
    GOSUB SendCommand
    varByte = varAddress.BYTE0
    GOSUB SendData
    varByte = varAddress.BYTE1
    GOSUB SendData

    varCommand = varCursor
    GOSUB SendCommand

   	varCommand = conWrite
   	GOSUB SendCommand
    RETURN

     

Şema:



pcb:



Rica etsem şemada ve pcb de bir terslik var mı?  bağlantılar ile ilgili gözünüze bişiler ilişiyor mu bir bakabilirmisiniz acaba?

iyi çalışmalar...

mustafa_cmbz

#1


*  ıCSP bağlantısı çalışır vaziyete getirildi test edildi denendi sorunsuz şekilde Delap d149bc Programlayıcısı ile çalışmakta...

*  LCD beslemesi ilk denemelerde 7805 üzerinden beslendiği için 7805 i yakıyordu.Kart deney kartı olduğu için pratik olarak harici bir besleme ucu çıkartıldı ( 6v  2 a lik adaptör ile denemeler yapılıcak)

*  Kontrast potu eklendi...(lcd üzerinde var fakat yinede es geçilmedi daha denenmedi )

*  FG ucu metal çerçevenin topraklamasıymış ben direkt pic'e girmiştim oda düzeltildi...


http://bilmiyorsanogren.com/userfiles/mustafa/PCB/

pcb güncellendi...

mustafa_cmbz

#2






lcd çalıştı arkadaşlar...


kod:

CONFIG XT_OSC, WDT_OFF,PWRTE_ON, BODEN_OFF, LVP_OFF, DEBUG_OFF
DEVICE = 16F877A
XTAL = 4
TRISE=0
TRISB=0
PORTB=0
PORTC=0
ADCON1	= 7

SYMBOL PIN_DATA  =   PORTD          
SYMBOL PIN_WR    =   PORTC.2       
SYMBOL PIN_RD    =   PORTC.1         
SYMBOL PIN_CS    =   PORTB.0      
SYMBOL PIN_A0    =   PORTC.3 
SYMBOL PIN_RST   =   PORTB.1
        
SYMBOL PIN_LED   =   PORTB.3
      
      
        TRISD   = 0
        TRISB.0 = 0
        TRISB.1 = 0
        TRISB.2 = 0
        TRISB.4 = 0
        TRISB.5 = 0
        TRISB.3 = 0
        TRISC   = 0
        
conSet		        con	$40
conScroll	        con	$44
conCursorForm	    con	$5d
conCursorAddress	con	$46
conCursorRight	    con	$4c
conOverlay	        con	$5b
conWrite	        con	$42
conDisplayON	    con	$59
conDisplayOFF	    con	$58
conCharPerLine		con	$28 	' 40  karakter / satir

DIM varCommand	AS  BYTE
DIM varCursor   AS  BYTE
DIM varByte		AS	BYTE
DIM varLoop1	AS	BYTE
DIM varLoop2	AS	BYTE
DIM varAddress	AS	WORD

        PIN_RD  = 1
    	PIN_WR  = 1
        PIN_CS  = 0
        PIN_RST = 0
        DELAYMS   1
        PIN_RST = 1
        DELAYMS   100

        GOTO MAIN



' ------------------------------- ANA program --------------------------------

MAIN:
HIGH PIN_LED
GOSUB InitDisplay

    

  	varAddress = 240  '0  Değiştirilebilinir en üst yazmaya başlanacak adres 
   	varCursor  = conCursorRight
   	GOSUB SetAddress	

   	FOR varLoop1 = 0 TO 39 '39  lcd'ye yatay  olarak basılan karakter sayısı
   	LOOKUPL varLoop1,["TEKDAĞ ELEKTRONİK - MUSTAFA CAMBAZ  "],varByte  ' L KONULDU
    GOSUB SendData
    NEXT varLoop1

   	varAddress = 29 * conCharPerLine     '29   Değiştirilebilinir en alt yazmaya başlanacak adres 
   	varCursor  = conCursorRight
   	GOSUB SetAddress	

   	FOR varLoop1 = 0 TO 39 '39  lcd'ye yatay  olarak basılan karakter sayısı
   	LOOKUPL varLoop1,["************www.picproje.org************"],varByte    ' L KONULDU
    GOSUB SendData
    NEXT varLoop1
    
    
 DELAYMS 20000
    
    GOTO MAIN
    
    
    ' --------------------------- AltProgramlar --------------------------

SendData:
    PIN_A0	= 0
    PIN_DATA = varByte
    PIN_WR	= 0
     DELAYMS   1
    PIN_WR	= 1
RETURN

SendCommand:
    PIN_A0	= 1
    PIN_DATA = varCommand
    PIN_WR	= 0
     DELAYMS   1
    PIN_WR	= 1
RETURN

ClearGraphic:
    varCommand = conCursorAddress
    GOSUB SendCommand
    varByte = $00
    GOSUB SendData
    varByte = $10
    GOSUB SendData

    varCommand = conCursorRight
    GOSUB SendCommand

    varCommand = conWrite
    GOSUB SendCommand
    varByte = %00000000            ' 1 byte = 8 bits = 8 pixels wide
    FOR varLoop1 = 1 TO 240        ' 240 pixels high
    FOR varLoop2 = 1 TO 40      ' 40 bytes = 320 bits = 320 pixels wide
    GOSUB SendData
    NEXT varLoop2
    NEXT varLoop1
    RETURN

ClearText:
    varCommand = conCursorAddress
    GOSUB SendCommand
    varByte = $00
    GOSUB SendData
    varByte = $00
    GOSUB SendData

    varCommand = conCursorRight
    GOSUB SendCommand

    varCommand = conWrite
    GOSUB SendCommand
    varByte = " "
    FOR varLoop1 = 1 TO 30
    FOR varLoop2 = 1 TO 40
    GOSUB SendData
    NEXT varLoop2
    NEXT varLoop1
    RETURN

    InitDisplay:
    varCommand = conSet
    GOSUB SendCommand
    FOR varLoop1 = 0 TO 7
    LOOKUPL varLoop1,[$32,$87,$07,$27,$2B,$EF,$28,$00],varByte  ' L KONULDU
    GOSUB SendData
    NEXT varLoop1

    varCommand = conScroll
    GOSUB SendCommand
    FOR varLoop1 = 0 TO 5
    LOOKUPL varLoop1,[$00,$00,$EF,$00,$10,$EF],varByte   ' L KONULDU
    GOSUB SendData
    NEXT varLoop1

    varCommand = conOverlay
    GOSUB SendCommand
    varByte = %00000001
    GOSUB SendData

    varCommand =conDisplayOFF
    GOSUB SendCommand
    varByte = %00000000
    GOSUB SendData
    
    GOSUB ClearText
    GOSUB ClearGraphic

    varCommand = conDisplayON
    GOSUB SendCommand
    varByte = %00010100
    GOSUB SendData

    varCommand = conCursorAddress
    GOSUB SendCommand
    varByte = $0
    GOSUB SendData
    varByte = $0
    GOSUB SendData

    varCommand =conCursorForm
    GOSUB SendCommand
    varByte = $04
    GOSUB SendData
    varByte = $86
    GOSUB SendData
    RETURN

    SetAddress:
    varCommand = conCursorAddress
    GOSUB SendCommand
    varByte = varAddress.BYTE0
    GOSUB SendData
    varByte = varAddress.BYTE1
    GOSUB SendData

    varCommand = varCursor
    GOSUB SendCommand

   	varCommand = conWrite
   	GOSUB SendCommand
    RETURN


4mhz kristal ile çok yavaş çalışıyor bilginize....Protonda kod örneği bulamayanlar için bir örnek olsun...Gerçi fiyatları bakımından pek tercih sebebi değiller ama olsun yinede gün gelir lasım olur...

Kartı bastığım pcb çok dandik çıktı birde kaç gündür evde tadilat var kart bir ordna bir oraya tepili ne tiner var ne fırça yollar koptukça kopuyor...Zaten test için yaptığım bir devre olduğu için sıkıntı yok :D yarın sökecem
     

Murat Mert

S.A. Eline sağlık Mustafa kardeş. Kolay gelsin.
mert07

tövbekar

Teşekkürler Mustafa Cambaz.
Fakat, bir de PROTON'da piksel yakıp-söndürme nasıl yapılacak gösterebilir misin?
Resim yükleme tamam ama yazı için font büyüklüğü nasıl ayarlanacak, daire ve kare
şekil çizimi nasıl yapılacak? Cevaplarsan sevinirim...

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.


OG

http://bilmiyorsanogren.com/userfiles/mustafa/face.jpg


Burada
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.