Zadatak: Napisati program za GLCD

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

kolega,nemoj se opterecivati previse time,polako ima vremena da isprobamo.Bolje se naspavaj nego da trosis vrijeme na to danas.Idem se ja malo s time igrat mozda nesto prokuzim.Ako sam dobro shvatio test program bi trebao prikazivati sat na GLCD-u.Sve postavke za za glcd se nalaze u GLCD_pbp fajlu a za pic bi trebao natipkat u TEST fajlu.to sve izkompajlirat i to bi trebalo raditi.
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: Zadatak: Napisati program za GLCD

Post by Maki »

Pozdrav !
Evo jako dugo sam trazio bas ovo i sad ko iz neba dode . Pedja ti si CAR . Hvala ti na ovom , probat cu nesto iskemijat kad uhvatim vremena . Svaka cast na trudu. Jel jos uvijek vrijedi nagrada ? :)
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Zadatak: Napisati program za GLCD

Post by pedja089 »

Code: Select all

include "glcd_pbp.pbp"

define osc 4

pause 1000

Start:
@ PrintStr 0,0," Test Clock"
@ PrintStr 0,1," 128 x 64"
END
to treba da ispise taj text. Sad vidim to nije moje, to je neki spanac(valjda) uzeo moju nedovrsenu biblioteku, pa je dopravljao. Inace bio je samo problem sto nece da ispisuje word promenljive. Al koliko vidim on je to elegantno resio tako sto je izbacio :D
U include ovo treba dirati samo:

Code: Select all

symbol RW=portb.3
symbol RS = portb.2
symbol E = portb.4
symbol CS1 = portb.0
symbol CS2 = portb.1
symbol RST = portb.5
Symbol LCD_DATA=portb
LCD_DATA=0
TRISb=0
Podesiti prema tvojoj ploci.
Ovo bi trebalo da je za easypic

Code: Select all

symbol RW=portb.3
symbol RS = portb.2
symbol E = portb.4
symbol CS1 = portb.0
symbol CS2 = portb.1
symbol RST = portb.5
Symbol LCD_DATA=portd
LCD_DATA=0
TRISD=0
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

promjenio u include fajlu kao si napisao,probao test izkompajlirati,ne javlja nikakvu gresku ali i ne pise nista na ekranu.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Zadatak: Napisati program za GLCD

Post by pedja089 »

Ne znam sad ovako napamet nista...
Mislim a je najbolje da se probas poigrati sa onim smajlijima, pa vidi koji raspored pinova na njima radi, pa ga prepisi...
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

mislim da je greska u include fajlu jer kad u njemu u labeli :
lcd int stavim da su mi svi CS=0 onda dobim nekakve znakove zivota na ekranu

Code: Select all

include "glcd_pbp.pbp"

define osc 4
     TRISA = $00     'Postavi sve pinove porta A kao IZLAZNI  
   TRISB = $00   'Postavi sve pinove porta B kao ulazne  
   TRISC = $00     'Postavi sve pinove porta C kao IZLAZNI 
   TRISD = $00     'Postavi sve pinove porta D kao izlazne 
   TRISE = $00    'Postavi sve pinove porta E kao ulazne
   ADCON1 = 7	   ' PORTA i PORTE su digitalni  ISKLJUCI KOMPARATORE I ANALOGNE ULAZE 
    
Hour var Word

pause 1000

Start:
hour = 48
@ PrintVar 40,10,_Hour
ENDASM
GOTO START

end
onda mi na ekranu napise 44 mada je hour=48

a ako napisem @ PrintStr 20,20, "test" onda mi izbaci gresku u kompajliranju
Program word too large . Truncated to core size
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Zadatak: Napisati program za GLCD

Post by pedja089 »

Mozes i bez makroa da pises po LCD...

Code: Select all

  PosX = 0            ' move to position 0 of 83 (char best viewed at spacing of 6)
  PosY = 1            ' move to second line of 6
  Lcd_SetX
  Lcd_SetY 
  Lcd_Data = "H"      ' Note byte size single char.
   Gosub Lcd_SendChar
Ili ovo stavi u petlju, pa readcode zameni sa lookup, kao sto sam ja sa smajlijem

Code: Select all

GLCD_StringOut:
    Readcode GLCD_Addr, GLCD_Char           ' Get a character
    if GLCD_Char = 0 then GLCD_StringDone   ' Look for Null char, Stop if found
       
    if glcd_x=> 123 then             ' If end of line, cycle to next line
        PosY = PosY + 1           
        glcd_x=GLCD_SX
    endif
    
    If glcd_x<64 then
     lcd_data=0
     cs1=0
     cs2=1
     posx=glcd_x
    else 
     lcd_data=0
     cs1=1
     cs2=0
     posx=glcd_x-64  
    endif   
    
    Gosub Lcd_SetX
    gosub Lcd_SetY 
    gosub Lcd_SendChar            ' puttext
    
    GLCD_Addr = GLCD_Addr + 1               ' Point to next character
    glcd_x=glcd_x + 1
    goto GLCD_StringOut                ' Continue with rest of the string
  GLCD_StringDone:
Najveci mi je problem sto se ja ne secam toga 90%....
Mozda je to radjeno i za 18F4550... Pa zato nece da se upisuje string u kod...
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

Za sada nemam srece s GLCD-om.Nece da radi ,a trenutno nemam ideju kako da prepravim onaj kod s smajlicima da ispisava brojeve ili slova.Moram malo bolje da zgrijem stolicu u ove zimske dane pa mozda se nesto i rodi iz toga.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Zadatak: Napisati program za GLCD

Post by pedja089 »

Cek, polako, jesi natero smajlice da rade :?:
Ako jesi, daj mi portove iskopiraj na forum.
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

Jesam, misa im maloga ,smiju mi se cijeli :D :D :D

evo koda

Code: Select all

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 9.12.2012                                         *
'*  Version : 1.0                                               *
'*  Notes   :   PIC16F877A                                                *
'*          :                                                   *
'****************************************************************
    
    TRISA = $00     'Postavi sve pinove porta A kao IZLAZNI  
   TRISB = $00   'Postavi sve pinove porta B kao izlazni
   TRISC = $00     'Postavi sve pinove porta C kao IZLAZNI 
   TRISD = $00     'Postavi sve pinove porta D kao izlazne 
   TRISE = $00    'Postavi sve pinove porta E kao izlazni
   ADCON1 = 7	   ' PORTA i PORTE su digitalni  ISKLJUCI KOMPARATORE I ANALOGNE ULAZE 
    
    
    symbol RW  =   portb.3
    symbol RS  =   portb.2
    symbol E   =   portb.4
    symbol CS1 =   portb.0 ' oba kontrolera omogucena
    symbol CS2 =   portb.1
    symbol RST =   portb.5
    symbol LCDDATA = PORTD

    output rw
    output rs
    output e
    output cs1
    output cs2
    output rst
    output lcddata

    X VAR BYTE
    Y VAR BYTE
    I VAR BYTE



    Init: 'inicijalizacija displeja
     x=0 
     y=0 
     rw=0   
     cs1=0 ' AKO JE 1 ONDA NEMA SLIKE
     cs2=0 ' AKO JE 1 ONDA NEMA SLIKE    
     e=1   
     LCDDATA=0
     rst=0
     pause 1
     rst=1
     cs1=0    ' AKO JE 1 ONDA NEMA SLIKE
     cs2=0    ' AKO JE 1 ONDA NEMA SLIKE
     call dispon
     LCDDATA=192 'postavi prvi red memorije na prvi red glcd-a
     gosub kom
    gosub clr
     x=15  'AKO OVO PROMJENIM MJENJA SE POZIJA SMAJLICA
     y=35  'AKO OVO PROMJENIM MJENJA SE POZIJA SMAJLICA
     call setx
     call sety
  Main:
LCDDATA = %00000000
gosub pod
LCDDATA = %01000010
gosub pod
LCDDATA = %00000000
gosub pod
LCDDATA = %00011000
gosub pod
LCDDATA = %00011000
gosub pod
LCDDATA = %10000001
gosub pod
LCDDATA = %01000010
gosub pod
LCDDATA = %00100100
gosub pod
LCDDATA = %00011000
gosub pod
LCDDATA = %00000000
gosub pod
LCDDATA = %00000000

end
     

     

     
    return

    Pod:
     rs=1
     e=0
     pauseus 1
     e=1
    return

    Kom:   '
     rs = 0
     e = 0
     pauseus 1
     e = 1
    return

SetX:   'postavi x kursor
    LCDDATA=184+x
    gosub Kom
return

SetY:  'postavi y kursor
 LCDDATA = 64 + y
 gosub Kom
return

    Clr:   'ocisti ekran
     for x=0 to 7
     gosub  setx
      y=0
     gosub sety
     LCDDATA=0
     for i=0 to 63
     gosub pod
     next i
     next x
    return

    DispOff:  'Gasenje lcd
     LCDDATA = 62
     gosub kom
    return

    DispOn:    'palenje lcd
     LCDDATA=63
    gosub kom
    return
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Zadatak: Napisati program za GLCD

Post by pedja089 »

Nadjoh sad... To je pisano za 18F4550. Zato stringovi ne rade. Ali promenljive bi trebale raditi...
Sad vidim, ima tu dosta da se doradjuje...
Evo ti jedan test, i moj include bez ispravki.

Code: Select all

include "glcd.pbp"
z var byte
z=12

pocetak:
@ PrintVar 1,1, _z
end
Vidi jel radi...
A za text bi trebao probati ovako nesto

Code: Select all

include "glcd.pbp"
i var byte
  PosX = 0         
  PosY = 0         
  Lcd_SetX
  Lcd_SetY 
FOR i = 0 TO 5 ' Count from 0 to 5
  LOOKUP i,["Hello!"],Lcd_Data 
   Gosub Lcd_SendChar
  PosX = PosX +1                 
  Lcd_SetX
NEXT i
Nisam siguran da li treba ovo
PosX = PosX +1
Lcd_SetX
Zaboravih dal sam uvecava, ili treba rucno...
Attachments
glcd.rar
(3.33 KiB) Downloaded 367 times
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

Code: Select all

    include "glcd.pbp"
    z var byte
    z=12

    pocetak:
    @ PrintVar 1,1, _z
    end
ovo radi, ali ispisiva duplo na displeju,u istoj ravnini na pocetku lijeve strane i na sredini opet isto.
mozda je do kontrolera na displeju.Displej je kupljen u mikroelektronici u beogradu i ima oznaku
Winstar WDG0151-TMI-V#N00 128x64 GLCD display.


uglavnom u include fajlu moram ovo prepraviti da bi dobio sliku na LCD-u.Vjerojatno ima jos negdje nesto da se prepravi da bi to bilo kak se spada da ne ispisava duplo.

Code: Select all

Lcd_Init:
 posx=0
 posy=0
 rw=0
 cs1=0
 cs2=0
 e=1
 LCD_DATA=0
 rst=0
 pause 1
 rst=1
 cs1=0 'iz 1 prepravim u 0   onda ima slike
 cs2=0 ''iz 1 prepravim u 0  onda ima slike 
 gosub Lcd_On
 LCD_DATA=192
 gosub Lcd_Kom
 gosub Lcd_clr
return
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Zadatak: Napisati program za GLCD

Post by pedja089 »

Da... Negde sam nesto zajebo...
cs1=0
cs2=0
Sa tim palis polovine displeja. To je prakticno 2displeja 64x64 piksela, samo su im pinovi spojeni zajedno...
Desna polovina
cs1=1
cs2=0
Leva
cs1=0
cs2=1
A tekst radi li?
EDIT:
Nisam zajebo, tako je bilo i zamisljeno, da posle inicijalizacije displeja, on onemoguci ulaze na oba kontrolera. Pa da ti onda sam biras koji ce kontroler da pise...
A mislio sam da sam napravio da x ide od 0-128, pa da on sam bira kontrolere, ali ocigledno ne pase sve...
To ti moze posluziti dobro za pocetak...
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

text ne radi samo neki hijeroglifi po ekranu
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

text ne radi
javlja mi gresku u ovim linijama
include "glcd.pbp"
i var byte
PosX = 0
PosY = 0
Lcd_SetX +++redefinition of LABEL lcd_setx+++++ dok napisem ispred gosub onda nema greske
Lcd_SetY +++redefinition of LABEL lcd_setx+++++ dok napisem ispred gosub onda nema greske
FOR i = 0 TO 5 ' Count from 0 to 5
LOOKUP i,["Hello!"],Lcd_Data
Gosub Lcd_SendChar
PosX = PosX +1
Lcd_SetX
NEXT i

budem se jos malo igrao pa da vidim sto ce da ispane od toga
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Zadatak: Napisati program za GLCD

Post by pedja089 »

A kad sam budala... Fali GOSUB :ohno:
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

radiiiii !!!!!
Imam ispis slova i brojki na GLCD-u.
EasyPic 5 ploca ---PIC18F4550---kristal 20mhz---i Winstar WDG0151-TMI-V#N00 128x64 GLCD display.

sve radi super po PEDJINOM kodu.HVALA Pedja

Code: Select all

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 14.12.2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
  @ ERRORLEVEL -306 ; turn off crossing page boundary message
  
  include "glcd.pbp"

    DEFINE OSC  20
    
       TRISA = $00     'Postavi sve pinove porta A kao IZLAZNI  
   TRISB = %00000000  'Postavi sve pinove porta B kao izlazni 
   TRISC = $00     'Postavi sve pinove porta C kao IZLAZNI 
   TRISD = $00     'Postavi sve pinove porta D kao izlazne 
   TRISE = %000    'Postavi sve pinove porta E kao izlazni
   ADCON1 = 7	   ' PORTA i PORTE su digitalni  ISKLJUCI KOMPARATORE I ANALOGNE ULAZE
    pause 1000
  
     
    Start:
    @ PrintStr 0,0,"*********************"
    @ PrintStr 0,1,"*   Test Clock      *"
    @ PrintStr 0,2,"*    128 x 64       *"
    @ PrintStr 0,3,"*DIGITAL ELECTRONIC *"
    @ PrintStr 0,4,"*  33405 PITOMACA   *"
    @ PrintStr 0,5,"*   ZELJKO FERIC    *"
    @ PrintStr 0,6,"*PEDJA-089 Software *"
    @ PrintStr 0,7,"*********************"
    END
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

Stringovi rade super s PIC18F4550 .
,ali ne rade varijable--brljavi ,pise nepovezane brojke s PIC18F4550 , dok s PIC16F877A rade varijable a ne rade stringovi i jos s PIC16F877 ne moze se pomagnuti ispis varijable po X osi vec samo po Y osi.
Ima li tko kakvu ideju gdje fulam u pisanju.Da li se jos netko igra s GLCD kodom od pedje pa da ima isti problem kao i ja ,da probamo rjesenje naci steta bi bilo neusavrsit kod do kraja.


Code: Select all

  @ ERRORLEVEL -306 ; turn off crossing page boundary message

  'ovo radi na pic16F877 a ne radi na PIC18F4550


  include "glcd.pbp"


    
       TRISA = $00     'Postavi sve pinove porta A kao IZLAZNI  
   TRISB = %00000000  'Postavi sve pinove porta B kao ulazne  
   TRISC = $00     'Postavi sve pinove porta C kao IZLAZNI 
   TRISD = $00     'Postavi sve pinove porta D kao izlazne 
   TRISE = %000    'Postavi sve pinove porta E kao ulazne
   ADCON1 = 7	   ' PORTA i PORTE su digitalni  ISKLJUCI KOMPARATORE I ANALOGNE ULAZE
    z var byte
   
   START:
  z= z+1
  if z = 255 then z = 0
  gosub lcd_clr
    @ PrintVar 2,3, _z
    pause 1000
    goto start
    END
febo26
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 12-08-2008, 19:58

Re: Zadatak: Napisati program za GLCD

Post by febo26 »

greska nadjena varijabla mora biti word velicine a ne byte

z var word 'je ispravno i ne brljavi s brojevima dok broji
z var byte 'neispravno pise brojke bez nekog reda
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Zadatak: Napisati program za GLCD

Post by pedja089 »

Drago mi je da si to resio. Sad radim na komandi GLCDOUT :)
Post Reply