Grafikus LCD

Hogyha sikeresen O/PLED illetve hagyományos alfanumerikus - esetleg tán grafikus kijelzővel gyűlik meg a baja valakinek:)
Robert-

Hozzászólás Szerző: Robert- »

Negativ 0...-24V, de a jellemzo az -5...-1V (MAX232-rol leveheto).
A sugoban a bgf kiterjesztesre keress rá, ill a showpic parancsra.

Most írom a GraphLCD fejezetet (is), saját logó, kör, különféle fontok már mennek)))

Éna KS0108-as chipsetet és a T6963C chipet használtam eddig.
Ha kérdés van, írj:) A SED chip kipróba alatt van.
Avatar
Masterfoxx
DrótVégénSzéndarab
Hozzászólások: 37
Csatlakozott: 2006. január 4. szerda, 7:00

Hozzászólás Szerző: Masterfoxx »

Most rendeltem meg a kijelzőt a chipcad-től. A fekete-fehéret (zöldet) csak 2,5 hónap múlva tudnák kiszállítani, ekkor meg már vége lenne a nyáriszünetnek, amikor foglalkoznék vele. Hát "sajnos" meg kellett rendelnem a kék-fehér változatot :) , Legalább dizájnos lesz a szkóp!

Ez a showpic + a bgf fájl kezelés nem is bonyolult ránézésre!
Nehezebbnek gondoltam. Akkor megrajzolom paintbe a menürenszert, mint valami mobiltelefonon, aztán csak egy keretet kell az ikonok körül mozgatni, amire van a rectangle parancs ha jól tudom .
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Itt is van kijelző:) amit teszteltem az 64*128-as zöldessárga háttérrel. A KS0108-ban és a T6963Cről tudok nyilatkozni. A fontot vedd vissza, ami nem használt karakter van, azt vedd ki belőle. 1 betű 8 byte méret!

A legtöbb kijelzőn ott a negatív tápfesz generátor.
Avatar
Masterfoxx
DrótVégénSzéndarab
Hozzászólások: 37
Csatlakozott: 2006. január 4. szerda, 7:00

Hozzászólás Szerző: Masterfoxx »

Szia!
Megjött a kijelző, Összeraktam breadboardon, rádobtam a Bascom-os tesztprogramot, átírtam 240*128-ra...
De az eredmény: egy nagy fehér kijelző... valamit biztos elrontottam...
Mindegy, kísérletezek vele...

Kód: Egész kijelölése

'First we define that we use a graphic LCD
Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8
'The dataport is the portname that is connected to the data lines of the LCD
'The controlport is the portname which pins are used to control the lcd
'CE, CD etc. are the pin number of the CONTROLPORT.
' For example CE =2 because it is connected to PORTC.2


'Dim variables (y not used)
Dim X As Byte , Y As Byte


'Clear the screen will both clear text and graph display
Cls
'Other options are :
' CLS TEXT   to clear only the text display
' CLS GRAPH  to clear only the graphical part

'locate works like the normal LCD locate statement
' LOCATE LINE,COLUMN LINE can be 1-8 and column 0-30
Locate 1 , 1

'Show some text
Lcd "MCS Electronics"
'And some othe text on line 2
Locate 2 , 1 : Lcd "T6963c support"

'wait 1 sec
Wait 1


' draw a line using PSET X,Y, ON/OFF
' PSET on.off param is 0 to clear a pixel and any other value to turn it on
For X = 0 To 140
   Pset X , 20 , 255                                        ' set the pixel
Next

Wait 1


'Now it is time to show a picture
'SHOWPIC X,Y,label
'The label points to a label that holds the image data
'Showpic 0 , 0 , Plaatje

Wait 1
'Cls Text
                                                   ' clear the text
Do

Loop
End

Robert-

Hozzászólás Szerző: Robert- »

A CLS hiányzik.
A DATA lábakat nem kötötted be fordítva?
InitLCD hiányzik.

A M16 panelhez való mintapropgi kupacot töltsd le. Ott van a KS0108-ashoz, de csak a tiedhez való MODE illetve Config LCD sort kell módosítani.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Na megkerestem a kodot:

Nalam ez megy. Szepen lepesenkint. a kep a TavIR LOGO, de azt nem rakom ide (binary file), de az egeszet a Letöltésekből ( http://avr.tavir.hu/modules.php?name=Do ... load&cid=4 ) a 803. projekt alól letöltheted.

Kód: Egész kijelölése

'********************************************************************
'* Program nev: Mega16-16.bas                                       *
'* Fordito    : BASCOM AVR, (V.1.11.8.1)                            *
'* Datum      : 2006-03-10                                          *
'* Honlap     : http://avr.tavir.hu                                 *
'*                                                                  *
'* Irta       : Cseh Róbert                                         *
'* E-mail     : csehrobert @ tavir.hu                                 *
'********************************************************************
'ATMEGA16 mintapanel kiegeszito program Mega Board v3:
'Graph LCD.
'Fuse: External Xtal: 1111:1111
'      JTAG         : Disable
'

$regfile = "m16def.dat"                                     ' specify the used micro
$crystal = 14745600                                         ' used crystal frequency
$baud = 9600                                                ' use baud rate

'some routines to control the display are in the glcdKS108.lib file
'$lib "glcdKS108.lib"
$lib "glcdKS108.lbx"
'we need to include the font files
'Notice that this is a testfont with only numbers defined !
$include "smallfont8x8.font"
'$include "font8x8.font"
'$include "font16x16.font"

Config Pind.4 = Output                                      'LCD háttérvilágítás
Portd.4 = 1

Print "Cnf";                                                ' printing will still work as only the receiver pin is disabled

'First we define that we use a graphic LCD
Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Porta , Ce = 1 , Ce2 = 2 , Cd = 5 , Rd = 4 , Reset = 0 , Enable = 3

'The dataport is the portname that is connected to the data lines of the LCD
'The controlport is the portname which pins are used to control the lcd
'CE =CS1  Chip select
'CE2=CS2  Chip select second chip
'CD=Data/instruction
'RD=Read
'RESET = reset
'ENABLE= Chip Enable

'Dim variables (y not used)
Dim X As Byte , Y As Byte

Print "-Cls";
Cls

Wait 1

'specify the font we want to use
Setfont Font8x8

Print "-1";
'You can use locate but the columns have a range from 1-128
'When you want to show somthing on the LCD, use the LDAT command
'LCDAT Y , COL, value
Lcdat 1 , 1 , "123"

'lcdat accepts an additional param for inversing the text
Lcdat 2 , 1 , "123" , 1                                     ' will inverse the text

'Now use a different font
'Setfont Font8x8
'since the 16*16 font uses 2 rows, show on row 3
'Lcdat 1 , 1 , "2345"
'Lcdat 2 , 56 , "2345656"
Print "-Gr";
Wait 1
Line(0 , 0) -(127 , 64) , 1                                 'make line
Wait 2
Line(0 , 0) -(127 , 64) , 0                                 'remove line

For Y = 1 To 20
   Circle(30 , 30) , Y , 1
   Waitms 100
Next

Wait 1
Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2                         ' both displays off
Wait 1
Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2                         'both on
'GLCDCMD accepts an additional param to select the chip
'With multiple, GLCDCMD statements, it is best to specify the chip only the first time

Print "-Pic"
Showpic 0 , 0 , Plaatje                                     'show a comnpressed picture
End                                                         'end program


Plaatje:
'include the picture data
$bgf "tavir.bgf"
A hozzászólást 1 alkalommal szerkesztették, utoljára Robert 2008. július 11. péntek, 13:49-kor.
Avatar
Masterfoxx
DrótVégénSzéndarab
Hozzászólások: 37
Csatlakozott: 2006. január 4. szerda, 7:00

Hozzászólás Szerző: Masterfoxx »

Még mindig nem jó :(
Ha berakok initlcd-t akkor meg hibaüzenet ad.
Az LCD-nek van egy MD2 nevezetű lába: Columns select : "H" 32 columns, "L" 40 columns,
én ezt gnd re kötöttem, de ha H ra rakom akkor se megy...
A bascom jelölései: és az LCD jelölései ahogy én kötöttem
Ce - /CE
Cd - C//D
Wr -R//W
Rd -/RD
Reset -/Reset
Fs -FS

Amit mondtál, hogy töltsek le azzal sajnos nem mentem messzire :(
Ez T6963C IC-s,
Itt nálam nem kell megadni fontokat?

Kód: Egész kijelölése

 


$regfile = "m16def.dat"
Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8


Cls

Locate 1 , 1

Lcd "EW24D31BMW-test"

Wait 1


Showpic 0 , 0 , Plaatje

Wait 1
Cls Text


Do
Wait 1
Loop

End

Plaatje:
$bgf "test.bgf"
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A bekötés a lábmegfeleltetés szerint OK.
az MD csak a belső _fix_ betűkészlet használatakor kell, hogy hányszor hányas betűket használjon. Így Neked a $font nem szükséges.


Nálad a bekötés:

IClab(port ).........LCDláb
PortA.0...7 ......... dataport az LCD-n 0..7
PortC.2 ............. CE (Chip Enable)
PortC.3 ............. Command/Data (C/D)

(a köv kettőt lehet hogy meg kell cserélni!)
PortC.0 ............. Wr/Rd (read/Write?)
PortC.1 .............. Rd

PortC.4 .............. Reset
PortC.5 ............. Font Select

Hülye kérdés: Kontrasztot jól kötötted be? A modul Vee láb és a GND közt a trimmerpoti két vége és a leágazás a V0-ra?
A Vee lábon ott van a -12...24V ?


Én kimérném a lábakat is...


Bascom 1.11.7.4 súgó:



Kód: Egész kijelölése

'-----------------------------------------------------------------
'                     (c) 2001-2003 MCS Electronics
'                 T6963C graphic display support demo 240 * 128
'-----------------------------------------------------------------

'The connections of the LCD used in this demo
'LCD pin                  connected to
' 1        GND            GND
 '2        GND            GND
 '3        +5V            +5V
 '4        -9V            -9V potmeter
 '5        /WR            PORTC.0
 '6        /RD            PORTC.1
 '7        /CE            PORTC.2
 '8        C/D            PORTC.3
 '9        NC             not conneted
 '10       RESET          PORTC.4
 '11-18    D0-D7           PA
 '19       FS             PORTC.5
 '20       NC             not connected

$crystal = 8000000
'First we define that we use a graphic LCD
' Only 240*64 supported yet
Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8
'The dataport is the portname that is connected to the data lines of the LCD
'The controlport is the portname which pins are used to control the lcd
'CE, CD etc. are the pin number of the CONTROLPORT.
' For example CE =2 because it is connected to PORTC.2
'mode 8 gives 240 / 8 = 30 columns , mode=6 gives 240 / 6 = 40 columns

'Dim variables (y not used)
Dim X As Byte , Y As Byte


'Clear the screen will both clear text and graph display
Cls
'Other options are :
' CLS TEXT   to clear only the text display
' CLS GRAPH  to clear only the graphical part

Cursor Off

Wait 1
'locate works like the normal LCD locate statement
' LOCATE LINE,COLUMN LINE can be 1-8 and column 0-30


Locate 1 , 1

'Show some text
Lcd "MCS Electronics"
'And some othe text on line 2
Locate 2 , 1 : Lcd "T6963c support"
Locate 3 , 1 : Lcd "1234567890123456789012345678901234567890"
Locate 16 , 1 : Lcd "write this to the lower line"

Wait 2

Cls Text


'use the new LINE statement to create a box
'LINE(X0,Y0) - (X1,Y1), on/off
Line(0 , 0) -(239 , 127) , 255                              ' diagonal line
Line(0 , 127) -(239 , 0) , 255                              ' diagonal line
Line(0 , 0) -(240 , 0) , 255                                ' horizontal upper line
Line(0 , 127) -(239 , 127) , 255                            'horizontal lower line
Line(0 , 0) -(0 , 127) , 255                                ' vertical left line
Line(239 , 0) -(239 , 127) , 255                            ' vertical right line


Wait 2
' draw a line using PSET X,Y, ON/OFF
' PSET on.off param is 0 to clear a pixel and any other value to turn it on
For X = 0 To 140
   Pset X , 20 , 255                                        ' set the pixel
Next

For X = 0 To 140
   Pset X , 127 , 255                                       ' set the pixel
Next

Wait 2

'circle time
'circle(X,Y), radius, color
'X,y is the middle of the circle,color must be 255 to show a pixel and 0 to clear a pixel
For X = 1 To 10
  Circle(20 , 20) , 20 , 255                                ' show circle
  Wait 1
  Circle(20 , 20) , 20 , 0                                  'remove circle
  Wait 1
Next

Wait 2

'Now it is time to show a picture
'SHOWPIC X,Y,label
'The label points to a label that holds the image data
Showpic 0 , 0 , Plaatje
Showpic 0 , 64 , Plaatje                                    ' show 2 since we have a big display
Wait 2
Cls Text                                                    ' clear the text
End



'This label holds the mage data
Plaatje:
'$BGF will put the bitmap into the program at this location
$bgf "mcs.bgf"

'You could insert other picture data here



ConfigLCD parancs súgó:

Config GRAPHLCD = type , DATAPORT = port, CONTROLPORT=port , CE = pin , CD = pin , WR = pin, RD=pin, RESET= pin, FS=pin, MODE = mode

Remarks

Type This must be 240 * 64, 128* 128, 128 * 64 , 160 * 48 or 240 * 128. For SED displays use 128 * 64sed or 120* 64SED
Dataport This is the name of the port that is used to put the data on the LCD data pins db0-db7.
PORTA for example.
Controlport This is the name of the port that is used to control the LCD control pins. PORTC for example
Ce The pin number that is used to enable the chip on the LCD.
Cd The pin number that is used to control the CD pin of the display.
WR The pin number that is used to control the /WR pin of the display.
RD The pin number that is used to control the /RD pin of the display.
FS The pin number that is used to control the FS pin of the display.Not needed for SED based displays.
RESET The pin number that is used to control the RESET pin of the display.
MODE The number of columns for use as text display. Use 8 for X-pixels / 8 = 30 columns for a 240 pixel screen. When you specify 6, 240 / 6 = 40 columns can be used.

The following connections were used:

PORTA.0 to PORTA.7 to DB0-DB7 of the LCD
PORTC.5 to FS, font select of LCD
PORTC.2 to CE, chip enable of LCD
PORTC.3 to CD, code/data select of LCD
PORTC.0 to WR of LCD, write
PORTC.1 to RD of LCD, read
PORTC.4 to RESET of LCD, reset LCD
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Én beraknék mindan egyes grafuikus LCDre menő utasítás után valami visszajelzést, így tudod hol jár a progi. Én az RS232 kimeneten visszaíroma sor számát holvagyok. Így látom hogy az init, a config, vagy valami más hibázik. Rossz config esetén a CLSbe belehal, és ott mintha lefagyna a program. Ekkor a CE láb szokott elkötve lenni (nálam legalábbis az volt).
Avatar
Masterfoxx
DrótVégénSzéndarab
Hozzászólások: 37
Csatlakozott: 2006. január 4. szerda, 7:00

Hozzászólás Szerző: Masterfoxx »

"Rossz konfig esetén a cls-be belehal"
Tehát közben azért ellenőrzi a program hogy van-e kapcsolat az LCDvel?

Holnap majd kipróbálom ezt az RS232 megoldást, már kicsit kifáradtam a kísérletezéssel... Meg elmúlt 10 óra is... :D
Közben sikerült kiakasztani a kijelzőt egy resettel, hogy összevissza (kínai) karaktereket rajzolgatott ki, és néhány villogott... Legalább be sikerült állítani a kontrasztot, és megnyugodtam, hogy valószínűleg működőképes...
Azelőtt azt hittem hogy alapból bekapcsolás után minden szegmense világít (fehéren), ezért ütközésig feltekertem a kontraszt potit, ekkor kifehéredett teljesen. Késöbb lejebb hajtottam, és amikor kiakadt akkor vettem észre, hogy ez a helyes beállítás 8O
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Nálam legalábbis ha rossz bekötés volt nem ment tovább.
A grafikus alapsw minden kijelzőre azonos, csak plusz LIBet használ a SED/KS0108/T6963 kijelzőkhöz.

Ott szerintem két adatvonalad összeér és ezért őrul meg félig a kijelző...
Avatar
Masterfoxx
DrótVégénSzéndarab
Hozzászólások: 37
Csatlakozott: 2006. január 4. szerda, 7:00

Hozzászólás Szerző: Masterfoxx »

Szia Róbert!
Köszi a segítséget!
ELINDULT A KIJELZŐ!!! :D :D :D
Végső elkeseredésemben átböngésztem figyelmesen a T6963C adatlapját, és ott megtaláltam a reset áramkört, amit ajánlanak hozzá. Ez egy kondiból meg egy ellenállásból áll. Ráraktam, bekapcsolom, és lesett az állam.
Az elején valamilyen szemcsés kép van, mint a tv-n, aztán cls, aztán jött a szöveg. Késöbb beraktam egy bmpt. Az mondjuk széét volt esve, ekkor a config LCD sorban a mode után nálam 6 volt írva, átírtam vissza 8-ra,
Tökéletesen működik!! :)
Itt van egy kép róla
>>kép<<
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Gratula!
Tök jól néz ki....

Ezt a resetes tippet még nem olvastam sehol...
A szemcsés krix-krax az inicializálás hiánya miatt van, ezt a CLS teszi meg (ugyanúgy mint a karakteres kijelzőnél).
Avatar
Pavel
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2006. március 22. szerda, 7:00

Hozzászólás Szerző: Pavel »

Sziasztok!!

Én c programnyelven próbálom életrekelteni a GLCD - met! Végülis sikerült! Letöltöttem hozzá forrásfájlokat, és azok működnek is, kivéve egy függvényt mégpedig amivel pozicionálni lehetne ( GotoXY :) ), a kérdésem az lenne, hogy a GLCD - t az y tengelyen csak "Laponként" lehet címezni vagy soronként(1 "lap" 8 sor :) )?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Bascom alól a GotoXY létezik....
Válasz küldése