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.
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![]()
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
Lesezeichen