Forum: Mikrocontroller und Digitale Elektronik Bascom GrafikLCD Hilfe


von Andy M. (xaero5)


Lesenswert?

Hallo,

Ich sollte dringend mal jemand haben der mir mal ein kleines Beispiel
zeigen kann, wie ich mit Bascom ein Grafik-LCD ansteuer. Ich hab nun
schon soviel gelesen und probiert aber nichts hat funktioniert.
So, ich hab Bascom 1.11.7.4, STK200, nen mega32, und an 128x64pix
Grafik LCD drann hängen. Ich weiß von dem Grafik-LCD das es wie folgt
am mega hängt.
PA3 - /WR
PA4 - /RD
PA5 - /CE
PA6 - /CTRL(1)/DATA(0)
PA7 - /Reset
PC0 - DB7
PC1 - DB6
...
PC7 - DB0

^^ Hat mir da irgend jemand an schönes beispiel? oder könnte irgend
jemand mir kurz ein "Hello world" schreiben? Ich hab leider noch
keine erfahrung mit bascom, von daher würde das mein einstieg mal
deutlich vereinfachen. ;-)

DANKE schonmal im vorraus
Xaero5

von Andy M. (xaero5)


Lesenswert?

... ups, ganz vergessen, das LCD hat den "standart" T6963C
Controller...

von dirk (Gast)


Lesenswert?

Solle in der Hilfe von Bascom stehen -> PSET, Config LCD

von Ingo Sauerland (Gast)


Lesenswert?

So mache ich es!

'LCD pin
' 1        GND            GND
 '2        GND            GND
 '3        +5V            +5V
 '4        -9V            Pin 5 Max 32 -C2
 '5        /WR            PORTC.0
 '6        /RD            PORTC.1
 '7        /CE            PORTC.2
 '8        C/D            PORTC.3
 '9        RESET          PORTC.4
 '10-17    D0-D7          PORTD.0-7
 '18       FS             PORTC.5
 '19       LEDK           -
 '20       LEDA           -

$regfile = "m8def.dat"
$crystal = 3686400

Dim X As Byte, Y As Byte

Config Graphlcd = 128 * 64, Dataport = Portd, Controlport = Portc, Ce =
2, Cd = 3, Wr = 0, Rd = 1, Reset = 4, Fs = 5, Mode = 8


'mode = 8 ergibt 128 / 8 = 16 spalten


Cls                                                         'Display
löschen
Cursor Off                                                  'Cursor
aus

'*********************************************************************** 
********
'* Schreibt Text in Zeile 1-8
        *
'*********************************************************************** 
********

Locate 1, 1: Lcd "Zeile 1"
Locate 2, 1: Lcd "Zeile 2"
Locate 3, 1: Lcd "Zeile 3"
Locate 4, 1: Lcd "Zeile 4"
Locate 5, 1: Lcd "Zeile 5"
Locate 6, 1: Lcd "Zeile 6"
Locate 7, 1: Lcd "Zeile 7"
Locate 8, 1: Lcd "Zeile 8"

Wait 5                                                      '5
Sekunden warten
Cls                                                          'Display
löschen

'*********************************************************************** 
********
'* Steuert alle Pixel des Displays an
        *
'*********************************************************************** 
********
For Y = 0 To 63
   For X = 0 To 127
      Pset X , Y , 255                                      ' setzt
pixel
   Next X
Next Y

Wait 5                                                      '5
Sekunden warten
Cls                                                          'Display
löschen

'*********************************************************************** 
********
'* Zieht Linien
        *
'*********************************************************************** 
********

Line (0, 127)-(127, 0), 255
Line (0, 0)-(127, 0), 255
Line (0, 1)-(127, 1), 255
Line (0, 60)-(127, 60), 255
Line (0, 0)-(0, 63), 255
Line (127, 0)-(127, 63), 255

Wait 5                                                      '5
Sekunden warten
Cls                                                          'Display
löschen

'*********************************************************************** 
********
'* Zeichnet Kreise
        *
'*********************************************************************** 
********

For X = 1 To 10
   Circle (20, 20), 20, 255                                 ' zeichnet
kreis
   Wait 1
   Circle (20, 20), 20, 0                                   'löscht
kreis
   Wait 1
Next X

End

von Andreas K. (andi_k)


Lesenswert?

Hast Du den Datenbus wirklich so angeschlossen?
PC0 - DB7
PC1 - DB6
...
PC7 - DB0

Einfacher und schneller wäre es so:
PC0 - DB0
PC1 - DB1
...
PC7 - DB7

Ich mache eigentlich nichts mit BASCOM, nur gelegentlich kleine Dinge,
aber eine Bibliothek für ein T6963-LCD müßte enthalten sein.

MfG
Andi

von Andreas K. (andi_k)


Lesenswert?

Ach ja, hast Du JTAG deaktiviert?
Wenn nicht, sind 4 Pins als I/O des PortC am Mega32 nicht zu
gebrauchen.
Muß man per Fuse-Bit abschalten (JTAGEN = 1 (unprogrammed)).

MfG
Andi

von pebisoft (Gast)


Lesenswert?

mit was für einer sprache proggst du sonst dein stk.
mfg pebisoft

von Andy M. (xaero5)


Lesenswert?

Also, ich hab das nun so mal probiert..... Das Display bleibt aber
leer... :-(

Config Graphlcd = 128 * 64 , Dataport = Portc , Controlport = Porta ,
Ce = 5 , Cd = 6 , Wr = 3 , Rd = 4 , Reset = 7 , Mode = 8
Cls
Locate 1 , 1
Lcd "Hello World"
End

Denke mal das das daran lieg das der Dataport "invertiert" ist...
also die Pins vertauscht... Wie dreh ich die?
@ Andi_K: Was für ein Ding?  ;-) Sorry, bin total neu in der materie.

Grüßle Xaero5

von Andreas K. (andi_k)


Lesenswert?

Na JTAGEN.
Werkseinstellung ist JTAG aktiviert.
Mußt Du per Fuses deaktivieren (siehe oben).
Aber informiere dich vorher in der Docu (Hilfe) zu Deiner
Programmer-Software über das setzen der Fuse-Bits. Im Zweifelfall
vorher die Fuse-Bits einlesen, JTAGEN auf 1 und schreiben.

MfG
Andi

von Andreas K. (andi_k)


Lesenswert?

Ach ja, noch mal zu Deiner Pin-Belegung des LCD-Datenports.
Meintest Du das ernst mit
PC0 = DB7
...
PC7 = DB0
???
Bascom kann zwar die Bits tauschen (denke ich mal), aber kostet unnötig
Rechenzeit.

MfG
Andi

von pebisoft (Gast)


Lesenswert?

lade dir die basocdemo runter und installiere diese, damit kannst du
übersichtlich die fusebits einstellen.
mfg pebisoft

von pebisoft (Gast)


Lesenswert?

die datenbits darfst du nicht vertauschen. db0 muss an pin0 usw.
ausser du änderst die lib und compilierset diese neu und bindest die
lib dann in bascom ein. ansonsten ist es erstmal in basocm
unveränderlich vorgegeben. weil über die datenports auch
einstellungsdaten gesendet werden.
mfg pebisoft

von Andreas K. (andi_k)


Lesenswert?

Dann geht das nur bei Character-LCDs in BASCOM?
Hatte mir mal eine Bascom-LIB angesehen und da war Bitweiser
Einzelzugriff mit "SBI, SBIS und CBI" etc. oder so ähnlich.
Klar, kostet nur unnötig Zeit.

MfG
Andi

von pebisoft (Gast)


Lesenswert?

ja, nur bei character-lcd.
du kannst die lib aber ändern.
mfg pebisoft

von pebisoft (Gast)


Lesenswert?

also so eng darst du zeit nicht nehmen, ob du einmal sbi mher machst
oder weniger. wichtig ist nur das timing was der controller verlangt.
mfg pebisoft

von Andy M. (xaero5)


Lesenswert?

Also... Programm sieht immernoch so aus... aber ich hab nun mal die
datenpins gedreht... hatte die aus bequemlichkeit beim aufbau anders...
jetzt passen die aber also
PC0 = DB0
...
PC7 = DB7

was mir noch aufgefallen ist ist das ingo und in der hilfe von bascom
ein FS pin deklariert wird... ich hab aber solch einen pin nicht...

so... nun tut sich auch was auf dem display... aber es kommt kein
"hello world" sonder nur wirre zeichen/symbole usw.

Config Graphlcd = 128 * 64 , Dataport = Portc , Controlport = Porta ,
Ce = 5 , Cd = 6 , Wr = 3 , Rd = 4 , Reset = 7 , Mode = 8
Cls
Locate 1 , 1
Lcd "Hello World"
End

????  ratlos....

von Andreas K. (andi_k)


Lesenswert?

Wie schon gesagt, JTAG deaktivieren, ansosnten geht der PortC nur zur
Hälfte, oder an Port D oder A (eigentlich blödsinn, wegen ADC)
anschliessen!
Auszug aus dem Mega32-PDF:
"If the JTAG interface is left unconnected, the JTAGEN fuse should if
possible be disabled. This to avoid static current at the TDO pin in
the JTAG interface."

MfG
Andi

von Andy M. (xaero5)


Lesenswert?

JTAG ist deaktiviert....
trotzdem nur wirre zeichen/symbole...

von avrler (Gast)


Lesenswert?

Hallo zusammen

wie sieht das den mit Bitmaps und dem GraphikLCD aus? Kann ich eine
Bitmap in einem Grafik Programm erstellen und diese quasie als
Hintergrund für die Anzeige benutzen!?

gruß avrler

von pebisoft (Gast)


Lesenswert?

hallo, fs musst du mit im programm angeben, brauchste aber nicht
anklemmen, so sieht es die syntax vor.
mfg pebisoft

von pebisoft (Gast)


Lesenswert?

geh mal mit: mode=6 und "fs auch setzen.
mfg pebisoft

von Andreas K. (andi_k)


Lesenswert?

@avrler: Klar geht das.
Einfach ab der zuvor definierten Grafikhome-Adresse per Auto Write +
Inkrement an das T6963C-LCD senden.

MfG
Andi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.