- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Problem mit Grafik Display( EA DOGM132-5 )

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96
    Anzeige

    LiFePo4 Akku selber bauen - Video
    hey
    des bringt mich alles nicht so recht weiter wie @TomEdl wie hast du das gelernt ich hab gestern ziemlich lange nach informationen gesucht wie ich mein grafik display anschließ und wie ich des mit der programmierung mach aber da gibts einfch keine anleitungen kann mir da niemand helfen wie ich das oben genannte display anschließ und ansteuer

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628
    Zitat Zitat von Asuro91
    hey
    des bringt mich alles nicht so recht weiter wie @TomEdl wie hast du das gelernt ich hab gestern ziemlich lange nach informationen gesucht wie ich mein grafik display anschließ und wie ich des mit der programmierung mach aber da gibts einfch keine anleitungen kann mir da niemand helfen wie ich das oben genannte display anschließ und ansteuer
    Such doch einfach mal nach SPI-Interface und sieh in der Bascom-Hilfe nach, wie man Seriell Daten asugibt.

    Grüße
    Thomas

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96
    Hallo alle zusammen,
    Ich hab letzt in meiner Bastel Kiste das Display gefunden und nachdem ich jetzt schon mit Textbasierenden Displays gearbeitet hab möchte ich es jetzt noch mal probieren mit diesem Grafikdisplay
    …..
    Ich versuche wie oben schon in der Überschrift zu lesen ist mit einen mega32 das Grafikdisplay EA DOGM132-5 anzusteuern. Das ganze funktioniert über SPI.
    Mein erstes Frage ist, da ich das Controllerbord 1.4 von Robotik-Hardware für den Testaufbau verwenden will und meinen Mikrokontroller mit USB ISP sind die Pins für den Hardware SPI schon belegt durch die ISP ….ich werde dann wohl die Software SPI nehmen. Hat es irgendwelche Nachteil wenn ich die Software SPI nehm? Der Vorteil ist ja das ich die Pins selbst bestimmen kann.
    Zum zweiten Problem der Initialisierung. Ich will in Bascom programmieren. Ich hab schon einige Threads gelesen und die Bascom Hilfe durchgeschaut doch mir ist noch nicht alles so klar.
    Ich benutze bei dem Display die Low Power Schaltung.


    http://www.lcd-module.de/deu/pdf/grafik/dogm132-5.pdf


    In dem Fall sieht die Initialisierung folgendermaßen aus (siehe auch Seite 6).
    Code:
    A0       |            Hex
       -------------------
       0          |           $40
       0          |           $A1
       0          |           $C0
       0          |           $A6
       0          |           $A2
       0          |           $2F
       0          |           $F8
       0          |           $00
       0          |           $23
       0          |           $81
       0          |           $1F
       0          |           $AC
       0          |           $00
       0          |           $AF

    Nun weiß ich nicht so recht wie ich die einzelnen Bytes zum Display schieb.
    Mach ich das mit dem Befehl spimove oder spiout oder ist das egal

    Mein Initialisierungsprogramm würde dann so aussehen (ich weiß das es falsch ist ich will es nur posten das ihr mir alle sagen könnt was ich falsch gemacht hab ).



    Code:
     $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    
    
    
    'Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 16 , Noss = 0
    Config Spi = Soft , Din = Pinc.7 , Dout = Pinc.6 , Ss = Non , Clock = Pinc.5
    
    Config Portc.4 = Output
    Lcdreset Alias Portc.4
    
    Config Portc.3 = Output
    A0 Alias Portc.3
    
    
    
    Dim Y As Byte
    
    
    Dim 1command As Byte
    Dim 2command As Byte
    Dim 3command As Byte
    Dim 4command As Byte
    Dim 5command As Byte
    Dim 6command As Byte
    Dim 7command As Byte
    Dim 8command As Byte
    Dim 9command As Byte
    Dim 10command As Byte
    Dim 11command As Byte
    Dim 12command As Byte
    Dim 13command As Byte
    Dim 14command As Byte
    
    
    Dim Lcdon As Byte
    Dim Lcdoff As Byte
    
    1command = &H40
    2command = &HA1
    3command = &HCO
    4command = &HA6
    5command = &HA2
    6command = &H2F
    7command = &HF8
    8command = &H00
    9command = &H23
    10command = &H81
    11command = &H1F
    12command = &HAC
    13command = &H00
    14command = &HAF
    
    Lcdon = &HAF
    Lcdoff = &HAE
    
    
    Lcdreset = 1
    Waitms 40
    Lcdreset = 0
    Waitms 40
    Lcdreset = 1
    
    
    A0 = 0
    
    
    Spiinit
    
    Y = Spimove(1command)
    Y = Spimove(2command)
    Y = Spimove(3command)
    Y = Spimove(4command)
    Y = Spimove(5command)
    Y = Spimove(6command)
    Y = Spimove(7command)
    Y = Spimove(8command)
    Y = Spimove(9command)
    Y = Spimove(10command)
    Y = Spimove(11command)
    Y = Spimove(12command)
    Y = Spimove(13command)
    Y = Spimove(14command)
    
    
    A0 = 1
    Y = Spimove(lcdon)
    
    Wait 3
    
    Y = Spimove(lcdoff)
    
    
    
    
    End

    Ich hoffe ihr helft mir auch wenn ich mich en bissel dumm anstelle.


    Lg Micha

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96

    Byte ausgeben

    Hey Leute,
    hat gar niemand ne Ahnung oder will mir niemand helfen. Ich hab jetzt selbst noch mal en bissel rum probiert und den Code verändert leider weiß ich nicht wirklich wie das mit dem Array funktioniert (und hab auch nirgends was gefunden wo es gescheit erklärt war) ich wäre euch echt dankbar wenn ihr mir sagen könntet wie ich die Bytes mit der SPI ausgeb damit ich mein Lcd-Display initialisiert wird.


    Code:
      
    
    
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    
    Dim Commandbefehl(14) As Byte
    
    
    
    Commandbefehl(1) = &H40
    Commandbefehl(2) = &HA1
    Commandbefehl(3) = &HCO
    Commandbefehl(4) = &HA6
    Commandbefehl(5) = &HA2
    Commandbefehl(6) = &H2F
    Commandbefehl(7) = &HF8
    Commandbefehl(8) = &H00
    Commandbefehl(9) = &H23
    Commandbefehl(10) = &H81
    Commandbefehl(11) = &H1F
    Commandbefehl(12) = &HAC
    Commandbefehl(13) = &H00
    Commandbefehl(14) = &HAF
    
    
    
    Config Spi = Soft , Din = Pinc.7 , Dout = Pinc.6 , Ss = Non , Clock = Pinc.5
    
    
    
    Spiinit
    
    Spiout Commandbefeh(1) , 14
    
    
    
    End
    Bitte Bitte

    Lg micha

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.188
    Leider progge ich selber nicht in Bascom, kann Dir aber zu deinen Fragen eventuell ein paar Antworten geben.
    Üblicherweise läuft eine SPI so ab.
    Zuerst wird das CE ( SS ) Signal des entsprechenden Zielchips vom Controller aus aktiviert.
    Dann wird das erste zu übertragende Bit auf MOSI ( D-OUT vom Controller ) gelegt.
    Nun wird ein CLK Impuls erzeugt.
    Dann kommt das nächste Bit, ein CLK usw. Das ganze Spielchen geht so lange, bis alle gewünschten Bits für ein komplettes Komando übertragen sind.
    Dann wird das CE wieder deaktiviert.
    Ob die Pegel nun High oder Low aktiv sein müssen, sollte im Datenblatt deines Displays stehen.

    Ich hab nun nicht das Datenblatt deines Displays gewälzt, aber üblicherweise muß so ein Display Initialisiert werden. Ausserdem wird es Steuersequenzen geben, die z.B. die Adresse des aktuellen Pixels aus zu wählen.
    Alle diese Informationen müssen über SPI übertragen werden.
    Die SPI ist in Bascom anscheinend schon implementiert, das Problem also gelöst.

    Üblicherweise hat so ein Display auch keinen eingebauten Zeichensatz.
    Das bedeutet, Du musst zumindest einen Zeichensatz programmieren.
    In diesem Zeichensatz werden dann die aktiven Pixel für jedes gewünschte Zeichen abgespeichert.
    Sinnvollerweise orientiert man sich dabei am ASCII Zeichensatz.
    Bei manchen deutschen Umlauten ist das manchmal etwas schwierig ( verschiedene Codepages ).
    Im Hauptprogramm wird dann die Startadresse ( Also das gewünschte Zeichen ) dieses Tabelenabschnittes übergeben und eine ( Library- ) Routine überträgt dann alle nötigen Bytes an das Display.

    Auch die Funktionen für Kreise, Linien und Rechtecke braucht man noch.

    Alle diese Funktionen schreibt man dann in eine sog. Library, die man dann bequem von der Hauptroutine aus ansteuern kann.
    z.B. write_char('A',0,16) würde den Buchstaben A, ganz links in die 16 Zeile schreiben ( C-Syntax! ).
    Ich würde an Deiner Stelle versuchen eine fertige Library für das von dir verwendete Display für Bascom zu kriegen ( Andere Projekte, Bascom Forum ?!? ).
    Eventuell ist da ja auch was passendes in der neuesten Bascom Version drin?
    Wenn Du so eine Library selber schreiben willst, wird etwa 50% der Zeit für das Projekt dafür drauf gehen.
    Für die Konvertierung von Zeichensätzen aus dem PC gibt es kleine Hilfsprogramme, die aber üblicherweise Code für AVR GCC generieren.
    Die Zeichentabellen selber sollten aber auch für Bascom brauchbar sein.
    Die Syntax und die Präprozessor Direktiven müssten halt angepasst werden.

    Ich denk nicht, das sich jemand hier die Zeit nehmen wird eine komplette Library zu proggen, wenn er diese nicht selber braucht.

    Noch was... Gib mal die Suchbegriffe EA DOGM132 Bascom library bei Google ein. Da kommen ein paar Vierversprechende Ergebnisse raus.

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96
    hey
    danke für die Antwort....
    ja wie ich die Spi in Bascom konfiguriere weiß ich und das ich um Texte auszugeben des am besten mit einer library schreibt auch ( die umsetztung wird da auch noch mal anderst aussehen ).
    ...Ich hab auch schon danach gesucht da gibst en paar Sachen mein Problem ist noch bei der Initialisierung und ich hoffe mir kann da einer helfen der in Bascom programmiert. Ich hab die Befehle für die Initialisierung, nur wie oben genannt weiß ich nicht wie ich die 14 Befehle ( ein Byte nach einander ) an das Display sende also wie das im Befehl aussieht. Ich hab ja im obigen Beispielprogramm die Initialisierung drin also die einzelnen Bytes. Mein Problem ist, dass ich nicht richtig weiß wie ich des mit spiout ausgeb. Könnte mir vieleicht einer nur en Tipp geben in Bascom??
    Danke
    lg Micha

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96
    Hey alle zusammen wollt nur mal Bescheid geben. Ich denk ich habs jetzt hin bekommen, zumindest tauchten schon mal auf dem Display viele Pixel auf . Ich hab mal testweise einfach alle Pixel gesetzt und wieder ausgemacht. Den Befehl dazu hab ich vom Datenblatt. Alle Pixel auszustellen geht auch einwandfrei nur bei alle Pixel setzten werden nicht alle angezeigt sondern nur immer mal wieder welche es sieht so aus wie bei einem fernsehe wenn er kein empfang hat. Hat jemand von euch ne Ahnung woran des liegen könnte? Weil der befehl is aus der Befehlstabelle vom Datenblatt oder is des en Anzeichen dafür das des Display nicht richtig initialisiert wurde.
    MFG Micha



    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    
    
    
    'Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 16 , Noss = 0
    Config Spi = Soft , Din = Pinc.7 , Dout = Pinc.6 , Ss = Pinc.5 , Clock = Pinc.4
    
    Config Portc.3 = Output
    Lcdreset Alias Portc.3
    
    Config Portc.2 = Output
    A0 Alias Portc.2
    
    
    
    Dim Command1 As Byte
    Dim Command2 As Byte
    Dim Command3 As Byte
    Dim Command4 As Byte
    Dim Command5 As Byte
    Dim Command6 As Byte
    Dim Command7 As Byte
    Dim Command8 As Byte
    Dim Command9 As Byte
    Dim Command10 As Byte
    Dim Command11 As Byte
    Dim Command12 As Byte
    Dim Command13 As Byte
    Dim Command14 As Byte
    
    
    
    
    Dim Lcdon As Byte
    Dim Lcdoff As Byte
    Dim Setall As Byte
    Dim Alloff As Byte
    
    
    Command1 = &H40
    Command2 = &HA1
    Command3 = &HCO
    Command4 = &HA6
    Command5 = &HA2
    Command6 = &H2F
    Command7 = &HF8
    Command8 = &H00
    Command9 = &H23
    Command10 = &H81
    Command11 = &H1F
    Command12 = &HAC
    Command13 = &H00
    Command14 = &HAF
    
    Lcdon = &HAF
    Lcdoff = &HAE
    
    Setall = &HA4
    Alloff = &HA5
    
    
    Spiinit
    
    Lcdreset = 1
    Waitms 100
    Lcdreset = 0
    Waitms 100
    Lcdreset = 1
    
    A0 = 0
    
    
    Spiinit
    
    Spiout Command1 , 1
    Spiout Command2 , 1
    Spiout Command3 , 1
    Spiout Command4 , 1
    Spiout Command5 , 1
    Spiout Command6 , 1
    Spiout Command7 , 1
    Spiout Command8 , 1
    Spiout Command9 , 1
    Spiout Command10 , 1
    Spiout Command11 , 1
    Spiout Command12 , 1
    Spiout Command13 , 1
    Spiout Command14 , 1
    
    
    Do
    
    
    Wait 1
    
    Spiout Alloff , 1
    
    
    Wait 2
    
    Spiout Setall , 1
    
    Loop
    
    
    
    End

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen