-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Nokia display linien zeichnen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.05.2012
    Beiträge
    20

    Nokia display linien zeichnen

    Anzeige

    Hi
    ich habe mir ein nokia 3310 display zugelegt, zeichensatz in groß und klein erstellt - Textausgabe klappt wunderbar.
    nun möchte ich auch linien zeichnen können.

    könnte mir jemand sagen wie das geht? (bascom )
    hier mein programm(von mkprojekt.de ) : (textausgabe weggelassen)

    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Portb = Output
    
    Declare Sub Ukommando(byval Wert As Byte)
    Declare Sub Udata(byval Wert As Byte)
    Declare Sub Initialisierung
    Declare Sub Lcdloeschen
    
    Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4
    
    Dc Alias Portb.0
    Ce Alias Portb.2
    Re Alias Portb.1
    
    
    
    Re = 0                                                      'Reset
    Waitus 250
    Re = 1
    
    Spiinit                                                     'Initialisierung der SPI-Schnittstelle
    Initialisierung
    Lcdloeschen
    
    Do
    
    
    
    Loop
    
    
    Sub Initialisierung
       Ukommando &H21                                           'Erweiterter Kommando-Mode
       Ukommando &HC8
       Ukommando &H06
       Ukommando &H13
       Ukommando &H20                                           'Wieder in den normalen Kommando-Mode
       Ukommando &H0C
    End Sub
    
    Sub Lcdloeschen
    Local I As Word
       Ukommando &H20                                           'Normaler Kommando-Mode
       Ukommando &H0C                                           'Normaler Bildschirm
      Ukommando &H80                                   'setze RAM-Adresse (x) auf 0      
       Ukommando &H40                                'Setze RAM-Adresse (y) auf 0
       Dc = 1                                                   'Sicherstellen, dass man im Daten-Mode ist
       For I = 0 To 503
          Udata &H00
       Next
    End Sub
    
    
    '------------------------------------------------------------------------------
    
    Sub Ukommando(byval Wert As Byte)
       Dc = 0                                                   'in den Kommando-Mode
       Spiout Wert , 1
       Dc = 1                                                   'zurück in den Daten-Mode
    End Sub
    
    Sub Udata(byval Wert As Byte)
       Dc = 1                                                   'um sicher zu gehen, dass man auch wirklich im Datenmode ist
       Ce = 0
       Spiout Wert , 1
       Ce = 1
    End Sub

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Gibt es keinen Befehl für das Setzen von einzelnen Pixel?
    Grüße
    Thomas

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von debegr92
    Registriert seit
    16.10.2011
    Alter
    25
    Beiträge
    104
    Blog-Einträge
    3
    Also du sagst die Initialisierung und die Ausgabe von Zeichen klappt wunderbar, dann kann der Rest nur noch eine Kleinigkeit sein.
    Für die Ausgabe eines Zeichens brauchst du zum einen ja die Adressierung für den Bereich und zum anderen deine Pixel, welche gesetzt werden sollen. Angenommen du schreibst dir ein Unterprogramm welches nur einen Pixel adressiert und setzt diesen dann auch, dann kannst du einen Pixel zeichnen. Diese Funktion sollte vorhanden sein um eine Linie zeichnen zu können. Denn für die Linie (sofern es keine Horizontale oder Vertikale ist) brauchst du den Bresenham-Algorithmus. Diesen findest du schon fix und fertig bei Wikipedia.
    Der Algorithmus berechnet immer den Fehleranteil und gibt dir die X- und Y-Koordinate für den nächsten Pixel. Diese Werte übergibst du dann deiner Funktion.

    In C ist das ganze natürlich viel einfacher, aber in ASM auch durchaus möglich und evtl. schneller.


    Code:
    Sub LcdSetPixel
       Ukommando &H20                   'Normaler Kommando-Mode
       Ukommando &H0C                   'Normaler Bildschirm
       Ukommando XWERT                'setze RAM-Adresse (x) auf 0      
       Ukommando YWERT                'Setze RAM-Adresse (y) auf 0
       Dc = 1                                 'Sicherstellen, dass man im Daten-Mode ist
       Udata &H00                          'Set Pixel
    End Sub
    So Beispielsweise
    Geändert von debegr92 (20.06.2012 um 22:36 Uhr) Grund: Code hinzugefügt
    Besucht doch auch meinen Blog über unser gemeinsames Hobby www.greguhn.de
    Roboter über das Smartphone steuern? Na klar! µBt Communication

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    29.05.2012
    Beiträge
    20
    und wie setzt man jetzt einzelne pixel ? so setzt man ja nur den cursor an eine bestimmte stelle...

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von debegr92
    Registriert seit
    16.10.2011
    Alter
    25
    Beiträge
    104
    Blog-Einträge
    3
    Zitat Zitat von seseb Beitrag anzeigen
    Hi
    ich habe mir ein nokia 3310 display zugelegt, zeichensatz in groß und klein erstellt - Textausgabe klappt wunderbar.
    nun möchte ich auch linien zeichnen können.
    Jetzt erzähl mir nicht, dass du Zeichen ausgeben kannst, aber dafür keine Pixel... Überleg doch mal.
    Das kommt meistens dabei raus wenn man sich Code im Internet zusammen sucht, diesen aber nicht durchblickt. Ich mein das kann man ja machen, doch sollte man sich trotzdem mit dem Code beschäftigen, ihn durchblicken, evtl. Kommentare hinterlassen usw...
    Besucht doch auch meinen Blog über unser gemeinsames Hobby www.greguhn.de
    Roboter über das Smartphone steuern? Na klar! µBt Communication

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    29.05.2012
    Beiträge
    20
    sei ruhig du hast doch keine ahnung !
    auserdem:
    das mit der textausgabe hab ich nochmal komplett überarbeitet weil das so n sh** war mit der zeichentabelle

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von seseb Beitrag anzeigen
    sei ruhig du hast doch keine ahnung !
    Erstens: Deine Umschalttaste ist anscheinend kaputt.
    Zweitens: Dieser Ton ist nicht angebracht, du bist nicht eimal auf die Ausführungen von debegr92 eingegangen.

    Übrigens bin ich auch der Meinung, dass du Pixel setzen kannst, wenn du es geschafft hast einen Zeichensatz auszugeben. Zeig uns mal deine überarbeitete Textausgabe, vielleicht bist du damit bereits nah dran und merkst es nicht. Könnte ja sein.
    Grüße
    Thomas

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied Avatar von debegr92
    Registriert seit
    16.10.2011
    Alter
    25
    Beiträge
    104
    Blog-Einträge
    3
    Zitat Zitat von Thomas E. Beitrag anzeigen
    Erstens: Deine Umschalttaste ist anscheinend kaputt.
    Zweitens: Dieser Ton ist nicht angebracht, du bist nicht eimal auf die Ausführungen von debegr92 eingegangen.
    Danke Thomas...

    Zitat Zitat von Thomas E. Beitrag anzeigen
    Übrigens bin ich auch der Meinung, dass du Pixel setzen kannst, wenn du es geschafft hast einen Zeichensatz auszugeben. Zeig uns mal deine überarbeitete Textausgabe, vielleicht bist du damit bereits nah dran und merkst es nicht. Könnte ja sein.
    Naja eigentlich ist es auch so, wenn man ein LCD Programmiert. ZUerst die Initialisierung, dann die Pixel, Farben und dann die Geometrie und der Text. Wenn man einen Text schreibt, dann nimmt man Bitfolgen meist aus einem Array und gibt diese dann aus. Da du das, wie du uns geschrieben hast, schon kannst, wäre dieser Abschnitt des Codes sehr interessant, da wir so dann die Funktionen analysieren können und die Funktion für die Pixel quasie erraten könnten.

    Grüße
    Dennis

    P.S.: Klar hab ich keine Ahnung, kommt nur drauf an von was...
    Besucht doch auch meinen Blog über unser gemeinsames Hobby www.greguhn.de
    Roboter über das Smartphone steuern? Na klar! µBt Communication

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.05.2012
    Beiträge
    20
    als erstes mal sorry für alles bin am ende

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Das ist natürlich doof, wenn du am Ende bist. Selbst wenn du keine einzelnen Pixel setzen kannst, kann man sich auch Zeichen definieren. Auf der von dir angegebenen Seite ist erklärt wie man sich nen Zeichensatz zusammenbaut.
    Ist zwar nicht so cool wie Pixel zu zeichnen und spätestens bei Kreisen trifft man da auf Probleme, aber für das Erste würde das funktionieren.

    EIDT: ein bisschen Info über das Display nach 30 Sekunden Googeln

    http://ladyada.net/products/nokia5110/

    In der Lib von Adafruit findet man eine entsprechende C-Funktion :

    Code:
    void Adafruit_PCD8544::drawPixel(int16_t x, int16_t y, uint16_t color) {
      if ((x < 0) || (x >= LCDWIDTH) || (y < 0) || (y >= LCDHEIGHT))
        return;
    
    
      // x is which column
      if (color) 
        pcd8544_buffer[x+ (y/8)*LCDWIDTH] |= _BV(y%8);  
      else
        pcd8544_buffer[x+ (y/8)*LCDWIDTH] &= ~_BV(y%8); 
    
    
      updateBoundingBox(x,y,x,y);
    }
    Grüße,
    Daniel

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Verschenke Display vom Nokia 3410
    Von bebop im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 1
    Letzter Beitrag: 24.01.2012, 20:39
  2. Nokia 3510 Display verwendbar?
    Von Robin1508 im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 18.05.2008, 20:31
  3. Nokia 7250 Display ansteuern
    Von CaptainKiwi im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 13.10.2007, 11:51
  4. pegelwandler für avr => nokia 3310 display
    Von dnmvna im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 07.09.2007, 21:44
  5. [ERLEDIGT] Nokia 3310/3330 Display für µC
    Von PICture im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 21.10.2005, 19:14

Berechtigungen

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