Hallo
Also habe da mal kurz nachgeschaut, du hast da ein 128 x 64 Dot Grafikdisplay.
Da wirst du auf die Schnelle keine Freude haben damit.
Die Ansteuerung ist etwas kompliziert. Es sei denn du hast eine Library dafür.
Druckbare Version
Hallo
Also habe da mal kurz nachgeschaut, du hast da ein 128 x 64 Dot Grafikdisplay.
Da wirst du auf die Schnelle keine Freude haben damit.
Die Ansteuerung ist etwas kompliziert. Es sei denn du hast eine Library dafür.
So, war im Urlaub und nun beschäftige ich mich wieder mit meiner Elektronik.
Für das Grafik Display will ich eine Library verwenden wenn ich es erstmal zum laufen bekomme 8-[
Habe nämlich ein Problem den Poti einzubauen. Das Display flackert nur kurz wenn ich es an den Strom hänge und mehr auch nicht.
Der Poti (22k) hat ja 3 Beine, welches Bein (1; 2; 3) muss ich denn bei meiner Skizze an A; E; S anschließen?
Bild hier
Bild hier
Bild hier
Danke!
A, E (Anfang, Ende) wird bei 1 bzw 2 angeschlossen. Das ist egal, es ändert nur die Richtung, in die man drehen muss wenn man z.B. heller drehen will.
Der Schleifer (S) ist dan 3.
Wenn du ein Ohmmeter (Multimeter) hast musst du zwischen 1 und 2 immer den Nennwiderstand des Potis (bei 22k +/- Toleranz) messen. Wenn du den Schleifer drehst muss sich der Widerstand zwischen 1 und 3 bzw 2 und 3 ändern.
Wenn du das Poti ganz links drehst musst du zw. 1 und 3 0R messen und zw. 2 und 3 22k. Wenn du das Poti ganz rechts drehst ist es genau umgekehrt.
MfG Hannes
hmmm danke für die Hilfe, dann habe ich den Poti wohl doch richtig angeschlossen, wenn ich Ihn bis zum Ende drehe sehe ich das es etwas heller wird, aber wirklich hell bzw. an sieht das LCD nicht aus obwohl am Display 5V anliegen. Verstehe ich jetzt zwar nicht ganz, aber ich gehe nochmal die Verkabelung durch ob ich was falsch gemacht habe.
Komme beim Poti immer nur auf 18K obwohl der laut Beschriftung 22k hat.
Gruß
So habe den Fehler gefunden, laut gefundenem Datenblatt war Pin19+20 nicht angeschlossen, jedoch ist das die Hintergrundbeleuchtung ](*,)
Nun stehe ich aber vor dem nächsten Problem, die Ansteuerung. Ich habe nun etliche Codes ausprobiert und modifiziert jedoch bleibt mein LCD leer.
Irgendwie habe ich das Gefühl, das der uC die Schleife nicht durchläuft. Ich habe das mal simple getesetet indem ich die Hintergrundbeleuchtung beim Start EIN / AUS schalten lassen wollte, jedoch schaltet er nur EIN und geht dann nicht weiter.
Hier mal mein Quelltext:
Den Reset Port habe ich nicht am uC liegen (geht direkt über einen R an V+), jedoch steht er mit in der Definition. Ist das ein Problem? Denn sobald ich ihn herausnehme gibt es Fehler beim compilen.Code:'-----------------------------------------------------------------------------------------
' Info: Programm für KS108 kompatibles LCD mit AT-MEGA168
' Autor: Thilo Sauer DL9NBJ
' Homepage: www.darc-coburg.de
'-----------------------------------------------------------------------------------------
$regfile = "m128def.dat"
$baud = 9600
Config Portd.7 = Output 'LCD Hintergrundbeleuchtung
Licht Alias Portd.7 'Hintergrundbeleuchtung
Aus Alias 1
Ein Alias 0
Licht = Aus
Declare Sub Blinken 'Unterprogramm
$lib "glcdKS108.lib" 'Bibliothek für LCD
'$include "smallfont8x8.font" ' nur Zahlen
$include "font8x8.font" ' kleine Schrift
'$include "font8x8TT.font"
$include "font16x16.font"
Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Porta , Ce = 6 , Ce2 = 7 , Rd = 4 , Reset = 2 , Cd = 3 , Enable = 5
'*** INFO ***
'CE =CS1 Chip select
'CE2=CS2 Chip select second chip
'CD=Data/instruction
'RD=Read
'RESET = reset
'ENABLE= Chip Enable
Dim X As Integer
Do
Licht = Ein
Waitms 300
Licht = Aus
Waitms 300
Licht = Ein
'*** TEXT ***
Cls
Setfont Font16x16
Lcdat 1 , 1 , "PG12864A" , 1
Setfont Font8x8
Lcdat 4 , 1 , "Graphic LCD"
Wait 1
Lcdat 5 , 1 , "128x64 Pixel"
Wait 1
Lcdat 6 , 1 , "KS108 Controller"
Wait 1
Lcdat 8 , 1 , "+Ub = 5 VOLT "
Wait 3
Gosub Blinken
'*** Linie ***
Cls
Wait 1
Line(0 , 0) -(127 , 0) , 1
Line(127 , 0) -(127 , 63) , 1
Line(127 , 63) -(0 , 63) , 1
Line(0 , 63) -(0 , 0) , 1
Line(0 , 0) -(127 , 63) , 1
Line(0 , 63) -(127 , 0) , 1
Wait 2
Gosub Blinken
'*** Kreis ***
Cls
Circle(63 , 31) , 30 , 1
Wait 2
Gosub Blinken
Loop
' Unterprogramm
Sub Blinken
For X = 0 To 3
Licht = Aus
Waitms 200
Licht = Ein
Waitms 200
Next X
X = 0
End Sub
End
Als Dataport ist Port C angegeben, aber es werden niergens die einzelnen Ports DB4-DB7 definiert, muss man das nicht? In meinem Fall wäre das nämlich PortC.4 = DB4 usw.
1 ist A
2 ist E
3 ist S
Hallo, habe nun das LCD nochmals komplett neu angeschlossen und beim programmieren gemerkt, dass wenn ich "CONFIG GRAPHLCD" in den Quellcode mit aufnehme läuft der Atmega die Schleife nicht mehr durch. Woran kann das liegen? Ich bin langsam am verzweifeln.
Ohne den Config graphlcd blinkt die LED, so sehe ich das der Atmega läuft und mit config graph lcd leuchtet sie dauerhaft.
Code:'#### Prozessordaten definieren
$regfile = "m128def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600
'#### Alias für Port Namen
Led Alias Porte.2
'#### Port definieren (inp/out)
Config Led = Output
'#### include von Daten & Lib's
$lib "glcdKS108.lib"
$include "font8x8.font"
Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Porta , Ce = 7 , Ce2 = 6 , Cd = 4 , Rd = 3 , Enable = 2 , Reset = 5 , Mode = 8
'*** INFO ***
'CE =CS1 Chip select
'CE2=CS2 Chip select second chip
'CD=Data/instruction
'RD=Read
'RESET = reset
'ENABLE= Chip Enable
'#### Programmablauf in einer Schleife
'#### Port Status: 1 = aus (0V); 0 = an (5V)
Do
Cls
'#### Status LED zum prüfen des Programmablaufs
Toggle Led
Waitms 50
Loop
End
Ich bin mir auch nicht so sicher was die Port Zuweisung betrifft, ich finde stehts unterschiedliche Meinungen :-(
Ich habe es wie folgt angeschlossen:
PortC = DB0-DB7
PortA.2 = E
PortA.3 = RW
PortA.4 = DI
PortA.5 = RST
PortA.6 = CS1
PortA.7 = CS2
Dann müsste die config graplcd doch so aussehen, oder!??!
Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Porta , Ce = 7 , Ce2 = 6 , Cd = 4 , Rd = 3 , Enable = 2 , Reset = 5 , Mode = 8
Bild hier
Kann mir jemand weiter helfen??
Hallo, da mir leider keiner mit dem GraphLCD weiterhelfen konnte, habe ich mir ein 16x4 LCD (http://www.produktinfo.conrad.com/da..._LED_de_en.pdf) gekauft um damit weiter zu testen.
Unter meinem Atmega8515 habe ich es zum laufen bekommen, jedoch unter dem Atmega128 nicht. Nur diesen brauche ich wegen den AD Eingängen.
Bei mir ist die 1. und 3. Zeile des Displays mit schwarzen Kästchen gefüllt. Die 2. und 4. Zeile ist leer.
Habe das Gefühl als würde es nicht richtig initialisieren, nur wieso weiß ich nicht.
Mein Code ist für den 8515 und 128er der selbe, nur die Ports halt angepasst.
Woran kann das liegen? Meine Test LED wie im Code beschrieben zeigt auch keine Reaktion.
Code:'#### Prozessordaten definieren
$regfile = "m128def.dat"
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
$crystal = 800000
$baud = 9600
'#### Alias für Port Namen
Led Alias Portb.0
'#### Port definieren (inp/out)
Config Led = Output
'#### Port Status: 1 = aus (0V); 0 = an (5V)
Led = 0
'Meine Konfig
'NC = Db.0
'NC = Db.1
'NC = Db.2
'NC = Db.3
'Porte.4 = Db.4
'Porte.5 = Db.5
'Porte.7 = Db.6
'Porte.6 = Db.7
'Porte.3 = E
'Porte.2 = Reset
'GND = R/W
'#### LCD einrichten
Initlcd
Config Lcdpin = Pin , Rs = Porte.2 , E = Porte.3 , Db4 = Porte.4 , Db5 = Porte.5 , Db6 = Porte.7 , Db7 = Porte.6
Config Lcd = 16 * 4
Config Lcdbus = 4
Cursor Off Noblink
Wait 1
Do
Wait 1
Led = 1
Wait 1
Led = 0
Wait 10
Dim Initcounter As Byte
Dim Bt As Byte
Dim S As String * 2
Do
For Initcounter = 1 To 36
'LCD löschen
Cls
'Haupttext der ersten Zeile anzeigen
Locate 1 , 1
Lcd "...Zeile1..."
'Haupttext der zweiten Zeile anzeigen
Locate 2 , 1
Lcd " ...Zeile2..."
'Jede Sekunde um 1 hochzählen und neuen Wert anzeigen
For Bt = 1 To 99
'Neuen Wert in einen Text umwandeln
S = Str(bt)
S = Format(s , "00")
'Neuen Wert in der ersten Zeile ab Spalte 15 anzeigen
Locate 3 , 8
Lcd S
Locate 3 , 5
Lcd ">>>"
Locate 3 , 10
Lcd "<<<"
'Neuen Wert in der zweiten Zeile ab Spalte 15 anzeigen
Locate 4 , 8
Lcd S
'Eine Sekunde warten
'Goto Led12
Wait 1
Next Bt
'Das LCD nach ca. einer Stunden neu initialisieren
If Initcounter = 36 Then
Initlcd
End If
Next Initcounter
Loop
Loop
End