- HEMS Solar Speicher Tutorial    Werbung      
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

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

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.07.2008
    Beiträge
    96
    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. #2
    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. #3
    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 Bild  ….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 ). Bild   Bild  



    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. #4
    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 Bild  

    Lg micha

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.277
    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. #6
    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 Bild  ).
    ...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

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

    Werbung      Solar Speicher und Akkus Tests